Para simular o impacto de eventos pluviométricos na mobilidade, é fundamental modelar tanto o deslocamento padrão dos veículos quanto as alterações dinâmicas na malha viária, como a interdição de ruas. Esta seção detalha os mecanismos implementados no InterSCsimulator para essas duas funcionalidades.
Modelo de Movimentação de Veículos
A malha viária da cidade é representada como um dígrafo, onde as vias são as arestas e os cruzamentos são os vértices. O movimento dos veículos se baseia no cálculo de rotas e na atualização contínua de sua posição e velocidade.
Carros
O deslocamento de um carro entre um ponto de origem e um de destino segue as seguintes etapas:
- Cálculo de Rota: A rota é definida como uma lista de vértices que representa o menor caminho no dígrafo entre a origem e o destino.
- Ocupação da Via: Ao entrar em uma nova aresta (via), um contador que registra o número de veículos presentes nela é incrementado.
- Cálculo de Velocidade (m/s): A velocidade do veículo é calculada dinamicamente com base na ocupação da via. A fórmula considera o limite de velocidade da via, sua capacidade máxima e o número de veículos que nela trafegam.
- Fluxo Livre: Com a ocupação de até 30% da capacidade, os carros se movem na velocidade máxima permitida.
- Fluxo denso: Entre 30% e 100% da capacidade, a velocidade é progressivamente reduzida.
- Congestionamento: Ao atingir a capacidade máxima, a velocidade é drasticamente reduzida para um valor fixo (0,8 m/s), simulando uma condição de congestionamento.
- Agendamento: O simulador calcula o tempo que o veículo levará para percorrer a via e agenda sua próxima ação para o final desse período.
- Liberação da Via: Ao sair da via, o contador de ocupação é decrementado, e a velocidade dos veículos restantes é recalculada.
Ônibus
A lógica de movimentação para os ônibus é semelhante à dos carros, mas com ajustes que modelam o comportamento do transporte público:
- Cálculo de Rota: A rota não é calculada apenas entre a origem e o destino final, mas sim como uma sequência de menores caminhos entre cada um dos pontos de parada da linha.
- Peso de Ocupação: Ao contabilizar a ocupação da via, um ônibus possui peso 3, representando um impacto maior no tráfego em comparação com um carro.
- Paradas: Quando um vértice da rota corresponde a um ponto de ônibus, o simulador executa o gerenciamento de embarque e desembarque de passageiros.
Implementação de Interdição e Alteração de Vias
A simulação de alagamentos exige que a malha viária possa ser alterada dinamicamente. Essa funcionalidade foi implementada na dissertação de mestrado de Lucas Kanashiro, que introduz um gerenciador de eventos e de grafos.
Diferente da versão original do simulador, esta implementação conta com um gerenciador de grafo. Este agente é executado em um laço infinito, permitindo que outros processos enviem mensagens para adicionar ou remover vértices e arestas do dígrafo a qualquer momento.
Um novo agente, o gerenciador de eventos, é responsável por ler um arquivo de entrada (events.xml
) que descreve as alterações a serem aplicadas na malha viária durante a simulação.
Existem dois tipos principais de eventos:
Fechamento Total de Via
Esse evento instrui o gerenciador de grafo a remover a aresta correspondente à via interditada. O ID da aresta removida é inserido em uma tabela ETS com o status remove
. As tabelas ETS (Erlang Term Storage) são um recurso da linguagem Erlang que funciona como um banco de dados em memória, permitindo consultas e alterações, o que é ideal para gerenciar o estado dinâmico das vias em tempo de simulação.
Antes de acessar uma nova via, cada carro consulta essa tabela. Caso a próxima via de sua rota esteja marcada como removida, o carro recalcula seu trajeto a partir de sua posição atual, utilizando a versão mais recente do grafo.
Redução de Capacidade da Via
Este evento não remove a via, mas sim diminui sua capacidade, o que afeta diretamente o cálculo de velocidade dos veículos que passam por ela.
Para ambos os casos, o gerenciador de eventos agenda uma ação futura para reverter a alteração, seja reinserindo a aresta no grafo ou restaurando a capacidade original da via.