Geração de fluxos de veículos no SUMO
A definição veículo-a-veículo nas rotas é uma atividade custosa, tanto no momento de especificar os veículos, quanto em alguma modificação que precise ser feita na quantidade de veículos, já que normalmente a simulação contará com um grande número deles. Para facilitar a especificação de muitos veículos, existe a opção de especificar um fluxo (flow) para a rota.
A duas maneiras disponíveis para especificar um fluxo são a elaboração de um arquivo adicional e a especificação na própria rota.
Especificação na própria rota
A definição de um fluxo irá realizar a repetitividade de carros em uma determinada rota. Sua especificação é simples, sendo realizada no lugar da especificação do veículo (vehicle), no arquivo de rotas, conforme exemplificado a seguir.
<flow begin="0" end= "200" period="20" color="1,1,0" type="BUS" id="type1" route="from1" />
É preciso definir o momento da simulação quando o primeiro veículo partirá e quando será o momento final de geração dos veículos. A quantidade de veículos é regulada por algum dos seguintes parâmetros:
- number (número): um número inteiro que indica o total de veículos que deverá ser adicionada ao fluxo, de maneira linearmente espaçada. Se o intervalo entre início e fim do fluxo for de 100 segundos e o número for 50, será gerado um carro a cada 2 segundos.
- period (período): define quanto tempo (em segundos) deve ser deixado entre um veículo e outro em sua geração. O valor pode ser especificado como decimal. Se for especificado um tempo de 5 segundos em uma fluxo com duração de 100 segundos, 20 veículos irão surgir na rota, com um intervalo de tempo entre eles de 5 segundos.
- vehsPerHour (veículos por hora): também um valor decimal, esse parâmetro indica quantos veículos por hora devem ser gerados, sendo esses também linearmente espaçados.
- probability (probabilidade): um valor decimal dentro do intervalo entre zero e 1. A cada segundo é realizado um “sorteio” que define, juntamente com a probabilidade estipulada, se será gerado um carro.
Além desses elementos próprios do flow, também é possível adicionar algumas caracterizações próprias do veículos, como cor (color) e o tipo (type). Também é preciso especificar uma identificação única, assim como em outros elementos, e o nome da rota (identificador da rota) onde o fluxo deve ser associado.
Observe que, como é possível especificar o início e o fim do fluxo, adicionando-se outro fluxo na rota é possível simular mudanças de movimento dependendo do horário. Por exemplo, poderia ser feito um fluxo representando o horário da meia noite até sete horas, colocando uma probabilidade baixa de gerar um veículo. Um fluxo das sete até as oito horas com uma grande probabilidade de gerar um veículo e depois reduzir novamente a probabilidade para o horário seguinte. O exemplo abaixo ilustra essa configuração no exemplo.
A especificação abaixo mostra a inclusão de dois fluxos de veículo, um para cada rota e utilizando um tipo de veículo em cada fluxo.
<routes>
<vType accel="2" decel="4" maxSpeed="20" id="Car" length="5" />
<vType accel="2" decel="4" maxSpeed="20" id="Taxi" sigma="1" length="5" color="1,0,0" />
<route id="rota0" edges="1to2 2to3" />
<route id="rota1" edges="1to2 2to3 3to2 2to1" />
<flow id="f1" type="Car" route="rota0" begin="0" end="900" period="30"/>
<flow id="f2" type="Taxi" route="rota1" begin="0" end="900" period="30"/>
</routes>
Na especificação a seguir são adicionados outros 2 fluxos, sendo que esses geram veículos do tipo “Bus” para ser mais fácil visualizar. O fluxo identificado como “f3” é similar ao identificado por “f2”, diferenciando-se apenas com um aumento no número de veículos gerados. Observe que quando acaba (propriedade end) o fluxo “f2”, o fluxo “f3” inicia e esse tem um período de espera em gerar um veículo menor, fazendo com que mais veículos sejam criados (no caso, 6 vezes maior).
O quarto fluxo (f4) é baseado em probabilidade, sendo que a cada segundo existe 10% de chance de ser gerado um veículo e esse foi configurado para ser mostrado na cor verde, sendo o valor especificado no parâmetro “color“, conforme pode ser visto na linha 10.
<routes>
<vType accel="2" decel="4" maxSpeed="20" id="Car" length="5" />
<vType accel="2" decel="4" maxSpeed="20" id="Taxi" sigma="1" length="5" color="1,0,0" />
<vType accel="1" decel="3" maxSpeed="16" id="Bus" length="10" />
<route id="rota0" edges="1to2 2to3"/>
<route id="rota1" edges="1to2 2to3 3to2 2to1"/>
<flow id="f1" type="Car" route="rota0" begin="0" end="900" period="30" />
<flow id="f2" type="Taxi" route="rota1" begin="0" end="300" period="60" />
<flow id="f3" type="Bus" route="rota1" begin="301" end="600" period="10" />
<flow id="f4" type="Bus" route="rota0" begin="601" end="900" probability="0.1" color="0,1,0" />
</routes>
A definição de fluxos é bastante útil para reduzir a dimensão do arquivo de rotas e ainda permite que veículos individuais sejam definidos. Além disso, a distribuição por probabilidade gera uma simulação de trânsito mais realística, sendo o comportamento não ficará sempre exatamente igual quando repetida a simulação.