Antes de passar à explicação do algoritmo implementado é necessário entender como é que os dados podem numa rede de transportes. Como já foi referido anteriormente, uma rede de trans- portes públicos é constituída por um conjunto de paragens (representadas pelas estações presentes na rede de transportes), por um conjunto de linhas e por um conjunto de viagens. A diferença principal entre uma viagem e uma linha é que a uma viagem está sempre associado um tempo específico do dia, isto é, numa viagem um veículo percorre as estações de uma linha numa certa hora do dia (Tabela3.1).
Para se modelar uma rede de transportes de uma maneira mais correta as viagens devem ser subdivididas em partes que correspondem às secções em que um veículo não pára. Para cada secção está associada uma origem e um destino e a respetiva hora de partida e hora de chegada. Estas secções geralmente são denominadas de conexões elementares. Logo aqui se pode inferir que uma condição que está associada às redes de transportes públicos é que estas são sempre tempo-dependentes, já que uma viagem só pode ser percorrida em determinadas horas do dia. Dessa maneira, um dos primeiro desafios ao modelar uma rede de transportes públicos prende-se com o desenho correto dos calendários de modo a que seja possível calcular rotas eficientes e ótimas dentro destas redes.
Tipicamente existem duas maneiras principais para se modelar este tipo de redes tendo em conta os horários. São designadas como modelo tempo-dependente e modelo tempo-expandido. De seguida será feita uma breve introdução a cada um destes modelos.
3.2.1 Modelo tempo-expandido
A ideia do modelo tempo-expandido é construir uma rede composta por eventos. Neste mo- delo é criado um vértice para cada evento que faz parte dos horários da rede de transportes. Os eventos são conetados na ordem em que acontecem no tempo. Dessa forma, pode ser admitido que
Modelação do Problema
Tabela 3.1: Exemplo de horários para duas viagens distintos. Estação Evento Hora Estação Evento Hora CMP2 Partida 12:00 CSS3 Partida 11:40 PBSS2 Chegada Partida 12:05 12:07 HERD2 Chegada Partida 11:45 11:50 NDA1 Chegada Partida 12:15 12:17 CMP2 Chegada Partida 11:58 12:00 IPO5 Chegada Partida 12:30 12:32 CQ9 Chegada 12:20 CQ9 Chegada 12:50
trabalhamos com um modelo que representa as dimensões espaço e tempo. Neste modelo, quando aplicado a um grafo, para cada ligação entre duas paragens na mesma viagem é criado um vértice. Cada um destes vértices pode ser um vértice de partida ou um vértice de chegada. Assim, a cada vértice está associado um respetivo tempo de partida ou tempo de chegada. Entre vértices de parti- das e chegadas consecutivos é criada uma aresta com um peso associado, que neste caso é o tempo que um veículo leva a percorrer essa ligação. Nas redes de transportes públicos os transbordos devem ter sido sempre em conta. Para permitir transbordos entre veículos, todos os vértices numa estação são ligados por arestas de transbordo. Estas arestas significam que é possível fazer um transbordo entre as duas estações.
Numa situação real é necessário ter em conta o tempo mínimo de mudança entre duas viagens uma vez que um utente não pode caminhar entre duas estações instantaneamente. Por essa razão foi criado um novo modelo, o modelo realístico, que já tem em conta os tempos mínimos de mudança entre diferentes viagens. Este modelo introduz um vértice adicional para cada partida, o vértice de transbordo. Cada vértice de chegada é ligado a um vértice de transbordo. O vértice de transbordo escolhido é o primeiro que respeitar a restrição do tempo mínimo de mudança entre viagens. Este modelo está ilustrado na figura 3.1. A principal desvantagem do modelo tempo-expandido é o elevado número de vértices e arestas que são geradas, no entanto, a sua simplicidade é uma vantagem. Para se colmatar o eventual problema relacionado com o grande número de vértices criados foi inventado um modelo baseado neste, o modelo comprimido, que tem em conta uma propriedade inerente a quase todas as redes de transportes públicos: um horário sofre poucas alterações ao longo do ano e por isso em certos casos é desnecessário modelar todas as semanas, bastando apenas modelar uma semana e ter em consideração apenas esses horários.
3.2.2 Modelo tempo-dependente
Devido ao elevado número de vértices gerado no modelo tempo-expandido foi necessário criar um modelo capaz de representar a rede de transportes públicos num modelo mais compacto, sem no entanto, perder informação importante. Foi então criado o modelo tempo-dependente. Neste modelo cada vértice do grafo corresponde a uma estação. Entre dois vértices u e v do grafo é adicionada uma aresta se existir pelo menos uma linha a servir estas paragens pela ordem correta.
Modelação do Problema
Figura 3.1: Exemplificação do modelo realístico da versão tempo-expandido. As ligações a trace- jado correspondem às viagens, ou seja, os utilizadores terminaram uma viagem para iniciar outra. Os vértices vermelhos correspondem a eventos de chegada, os amarelos correspondem a vértices de transbordo e os verdes correspondem a vértices de partidas.
O valor que está associado a uma aresta entre dois vértices é uma função do tempo e geralmente indica o tempo que um veículo leva a percorrer a ligação.
Neste modelo também existe um modelo realístico, em que é possível ter em consideração o tempo mínimo de mudança entre viagens, adicionando ao grafo um vértice de linha entre cada pa- ragem p e cada linha que passa em p. Os vértices de linha na paragem p estão conectados ao vértice que representa a paragem p através de arestas que têm como valor o tempo mínimo de mudança p, tempo esse que é considerado constante. Uma viagem é modelada através dos vértices de linha que conetam vértices de paragens consecutivas. As viagens ao longo de um dia podem ser mode- ladas facilmente atribuindo ao valor das arestas que conetam paragens consecutivas uma função linear. Essa função retorna o tempo que uma ligação demora a ser percorrida numa determinada viagem ao longo do dia. Este modelo está exemplificado na figura3.2.
3.2.3 Modelo baseado em frequências
Este modelo introduzido em 2014 tenta tirar partido da periodicidade dos veículos nas redes de transportes públicos. Se durante um intervalo de tempo (por exemplo, das 15:00 às 19:00) é sabido que um transporte público efetua viagens de 15 em 15 minutos então é mais eficiente guardar o intervalo de tempo e a frequência do que guardar todos os eventos individualmente.
Neste modelo os vértices correspondem a paragens e entre duas paragens u e v é adicionada uma aresta se estas paragens fizerem parte de uma linha pela respetiva ordem. O valor atribuído às arestas não é o tempo que um veículo demora a percorrer a ligação, mas antes um conjunto de tuplos que consistem no tempo de partida dp, num intervalo de tempo ∆ e numa uma frequência f.
Modelação do Problema
Figura 3.2: Exemplificação do modelo realístico tempo-dependente. Os vértices amarelos cor- respondem a vértices de paragens e os vértices vermelhos correspondem a vértices de linhas. As arestas que ligam os vértices de paragens aos vértices de linha representam o tempo mínimo de mudança na paragem.
Através destes tuplos é possível comprimir um intervalo de tempo de viagens, tornando a pesquisa de viagens mais rápida e o programa mais eficiente em termos de consumo de memória. Com estes valores, todos os horários no intervalos de tempo definido podem ser facilmente construídos, calculando dp + fi, mas tendo em conta a restrição imposta pelo intervalo de tempo ∆ através da fórmula dp + fi ≤ dp + ∆.