• Nenhum resultado encontrado

Como estamos interessados em modelar uma situação real de compartilhamento de veículos, precisamos considerar a versão dinâmica do RSPMI. A versão dinâmica mantém todas as res- trições da versão estática e também a função objetivo (Seção 3.3).

O conjunto dinâmico de requisições de passageiros é denominado N e o conjunto dinâmico de veículos é chamado de M. N contém requisições que estão esperando para serem atendidas, tanto as que ainda não foram atribuídas a um veículo, quanto aquelas que já têm um veículo mas ainda não foram atendidas. No início, N está vazio. A cada instante de tempo poderemos ter novas requisições de passageiros, que serão adicionadas a N, e também requisições que serão removidas. Uma requisição será removida caso tenha seus passageiros embarcando no veículo, ou caso não haja mais tempo de chegar até o destino antes do horário máximo estipulado, ou ainda, em um caso de desistência.

Da mesma forma, M não é mais estático, podendo ser alterado a cada instante. Em um determinado instante de tempo, M contém todos os veículos que estão disponíveis no momento. Cada veículo k ∈ M, já tem uma rota pronta Rk, mesmo que seja uma rota vazia (uma rota

vazia contém apenas o ponto de origem k+e destino kdo veículo). O ponto de origem k+e o

horário mínimo de saída ekdo veículo são atributos dinâmicos, já que ek não pode ser inferior

ao horário atual e k+ deve sempre indicar a posição que o veículo se encontrará no instante e

k.

Se ekfor igual ao horário atual, k+será a posição atual do veículo.

Se a rota não estiver vazia, ela terá pontos de requisições que serão atendidos no futuro. Essa rota pode sofrer quaisquer modificações desde que mantenham a viabilidade da mesma, como por exemplo, inserções de novos pontos em quaisquer posições, mudanças na ordem relativa dos pontos já existentes, mudanças no horário de atendimento dos pontos, remoções de requisições, etc. No entanto, uma nova restrição é colocada, impedindo alterações que envolvam passageiros que já estão dentro do veículo. Uma requisição i, atribuída a um veículo, permanece em N até o

3.5. Versão Dinâmica 23

instante em que o seu ponto de origem i+seja atendido. No momento em que os passageiros de i entram no veículo, a requisição i é marcada como uma requisição atendida e é removida de N. A partir desse momento, a rota não poderá sofrer nenhuma modificação que envolva os pontos anteriores a i−. A Figura 3.2 exemplifica quando uma rota pode ou não ser modificada. Essa restrição é necessária para garantir uma melhor experiência para os passageiros, pois caso fosse permitido mudanças, poderia ocorrer um acréscimo no valor total a ser pago e no horário de chegada, mesmo estando dentro dos limites estabelecidos. Portanto, uma vez que os passageiros entrem no veículo, as informações a respeito da rota serão mantidas.

Figura 3.2: Exemplificação de quando uma rota pode ou não ser modificada. Quando o veículo está atendendo o ponto correspondente ao embarque da requisição verde, a rota não pode sofrer alteração em nenhum dos locais indicados.

A versão dinâmica do RSPMI também recebe como entrada um grafo G = (U, E) que representa o mapa da região. O conjunto U de vértices engloba todos os pontos de interesse da região. Já o conjunto E de arestas representa as ruas e avenidas que conectam tais pontos. Cada veículo k ∈ M define o tempo que leva para percorrer cada aresta e o quanto deseja receber pela travessia. Numa situação prática, o tempo de percurso de cada aresta pode ser calculado a partir da velocidade média do veículo ou da velocidade máxima permitida naquele trecho ou ainda, através de estatísticas coletadas a respeito do tempo de percurso do trecho, em cada momento do dia. Já o custo poderá ser definido como sendo proporcional à distância, bastando ao motorista indicar o preço do quilômetro rodado.

Método Proposto

Esse capítulo descreve o método proposto para resolver a versão dinâmica do RSPMI. A Seção 4.1 apresenta o método propriamente dito, que utiliza-se de heurísticas para o problema estático, e algoritmos eficientes para o problema de caminho mínimo entre vários pares de pontos. As heurísticas propostas são apresentadas na Seção 4.2.

4.1

Abordagem do Problema Dinâmico

Para lidar com a versão dinâmica do problema, o dia é dividido em períodos, cada um repre- sentando um intervalo de tempo de tamanho p. Seja t o instante de início de um novo período. No instante t, uma instância para o problema estático é criada, considerando os conjuntos N e M e o grafo G. Depois da construção da instância, uma heurística (Seção 4.2) é utilizada para resolvê-la. A heurística deve terminar sua execução antes do fim período (t + p). Utilizamos a solução gerada pela heurística para atualizarmos os conjuntos N e M.

O nosso método executa a heurística durante todo o período. Quanto maior o período, maior o tempo que a heurística tem para executar, tendo maior chance de gerar soluções melhores. No entanto, existe uma inconsistência, que se agrava a medida em que p é aumentado. Para ilustrar esse problema, considere a situação com um veículo k e uma requisição i, ambos com a mesma origem e mesmo horário de saída, que é igual ao instante t. Suponha que ao executarmos a heurística, ela atribui i a k, com horário Bik+ = t. O problema é que a heurística só irá reportar

essa solução no instante t + p. Só nesse instante que o veículo irá saber a respeito de i, porém ele já estará distante e mesmo se voltar para atender a requisição, ele não irá conseguir atendê-la no tempo estabelecido pela solução, podendo deixá-la inviável.

Nosso método apresenta uma solução para esse problema. Apesar de a heurística ser exe- cutada no instante t, devemos considerar, em sua execução, que o instante de tempo inicial é o instante t + p. Portanto, a instância criada deverá ser a respeito dos conjuntos N e M no instante t + p. Como não temos as informações dos conjuntos N e M no futuro, devemos fazer

4.1. Abordagem do Problema Dinâmico 25

uma previsão. Não podemos prever as requisições e veículos que serão adicionados, no entanto, podemos prever a situação das requisições e veículos que já se encontram nos conjuntos. Uma requisição i ∈ N não sofrerá nenhuma alteração nos seus dados, já que os dados são todos estáticos. No entanto, pode ser que no instante t + p, a requisição não consiga mais ser atendida dentro da janela de tempo por nenhum veículo. Nesse caso a requisição é removida. Após todas as remoções, o conjunto estático N será igual ao novo N.

Já um veículo k ∈ M tem dois atributos dinâmicos, que são a origem k+e o horário de saída ek. Se ek ≥ t + p então nada precisa ser feito e k é adicionado ao conjunto estático M . Caso

contrário, precisamos prever a posição do veículo. Isso é feito considerando a sua rota e o tempo de viagem entre os pontos da rota. Consideramos que o veículo entrará em movimento no tempo ek, saindo de k+ e se dirigindo ao próximo ponto da rota. Portanto, antes de adicionarmos k a

M , trocamos sua origem k+para ser a posição prevista e trocamos e

kpor t + p. Ainda assim,

poderá ser necessário realizar mais algumas modificações em k. Se a previsão indicar que o veículo estará com passageiros de uma requisição i a bordo no instante t + p, então o ponto de origem i+ da requisição será atendido antes de t + p. Nesse caso, k+ é trocado para ie e

k é

colocado como sendo o horário de início de serviço em i, que é Bik−. Ou seja, caso um veículo

tenha passageiros a bordo no momento t + p, trocamos a sua origem para ser o primeiro ponto da rota em que o mesmo volte a ficar vazio, trocando também o seu horário de saída. Isso é necessário devido à restrição imposta pela versão dinâmica, que impede modificações na rota que envolvam uma requisição i, caso os passageiros de i já estiverem a bordo.

Tendo os conjuntos N e M , temos também o conjunto W que contém todos os pontos de origem e destino tanto das requisições quanto dos veículos. Teoricamente, teremos uma matriz Tk e uma matriz Ck para cada veículo k ∈ M , de forma que cada matriz T e C tem o tempo e custo de viagem, respectivamente, entre todos os pares de pontos de V ∪ {k+, k−}. Na prática, dividimos os veículos em classes de forma que veículos da mesma classe tenham as mesmas matrizes. Sem perda de generalidade, iremos considerar que todos os veículos têm as mesmas matrizes. Cada ponto w ∈ W corresponde a um vértice u ∈ U do grafo G. Note que dois pontos podem corresponder ao mesmo vértice, mas mesmo assim eles são considerados pontos diferentes em W . Para computar T e C é necessário calcular o caminho mínimo entre quase todos os pares de W no grafo G (exceto o caminho entre pontos de diferentes veículos). Numa situação real, onde G representa uma grande cidade, o conjunto U tem milhões de vértices, mas W é um pequeno subconjunto de U . Na literatura, existem algoritmos que resolvem o Many to Many Shortest Path Problemeficientemente, como apontamos na Seção 1.2. No nosso método optamos por utilizar Contraction Hierarchies [7], já que tem ótimos resultados para o Shortest Path Problem entre dois vértices, quando se trata de rede rodoviária. E ainda, ele pode ser adaptado para resolver o Many to Many Shortest Path Problem, [21], usando o mesmo procedimento apresentado em [11] para Highway Hierarchies.

Documentos relacionados