Sumoplot

De Wiki-II

Sumoplot é uma ferramenta auxiliar que realiza um trabalho paralelamente ao simulador SUMO. Extraindo dados da simulação é possível gerar arquivos de saída para diversas categorias de informação. Atualmente as seguintes categorias estão disponíveis: arestas e veículos.

O Sumoplot está disponível no GitHub e pode ser acessado através do seguinte endereço:

https://github.com/maslab-ufrgs/sumoplot

Seu funcionamento pode ser feito em conjunto com outros scripts utilizando-se do TraCI_Hub.

Para sua utilização é necessária uma versão do Python compatível com a 2.7.* e o módulo numpy.


Uma sintaxe da chamada do programa é a seguinte (estando no diretório do sumoplot, e tendo iniciado o simulador SUMO):

python sumoplot.py --net <net file path> --edge-vehicle <edgeId1 edgeId2 edgeId3>

ou

python sumoplot.py -n <net file path> -ev <edgeId1 edgeId2 edgeId3>
Onde 
<net file path> é o arquivo com a rede a ser simulada;
<edgeId1 edgeId2 edgeId3> é uma lista de identificadores das arestas que se deseja obter informações. Essa lista pode ser vazia, e nesse caso todas as arestas da rede serão avaliadas.


Para uma extração completa da simulação, incluíndo todas as categorias disponíveis, utilize o comando abaixo:

python sumoplot.py --net <net file path> --full

ou

python sumoplot.py -n <net file path> -f

Observação: Tome cuidade ao utilizar esse comando sem limitar o número de iterações em uma rede muito grande.


Todos os parâmetros possuem uma versão de chamada minimalista à qual também é incluída nas caixas de exemplo e representa uma versão de chamada onde os parâmetros são encontrados em uma forma reduzida e prática.

Para obtenção de ajuda do programa utilize o comando abaixo:

python sumoplot.py --help

ou

python sumoplot.py -h


Tabela de conteúdo

Observação sobre as saídas

Por padrão, toda a execução para as categorias de informação permitidas gera, além daquilo que é pedido, um arquivo genérico que contém médias e desvios padrão dos elementos observados.


Controle de Iterações

É possível limitar o espaço de tempo das iterações que se deseja extrair informações, nesse caso existem 3 parâmetros configuráveis. Também é possível executar sem essa limitação.

Um exemplo de chamada com os 3 parâmetros é como abaixo:

python sumoplot.py --net <net file path> --edge-all --step-limit <number> --step-start <number> --step-end <number>

ou

python sumoplot.py -n <net file path> -ea -sl <number> -ss <number> -se <number>

Observação: Não esqueça de levar em conta o intervalo dos limites, em casos de intervalos errados o programa irá executar com sua configuração padrão.


Abaixo cada parâmetro de configuração é explicado.

Passo limite máximo

É um valor inteiro maior que zero, por padrão o programa utiliza 10000. Assim extrairá dados da simulação por dez mil iterações, mesmo que ele não sofra modificações, mas esteja rodando.

Sua chamada é como abaixo:

python sumoplot.py --net <net file path> --edge-all --step-limit <number>

ou

python sumoplot.py -n <net file path> -ea -sl <number>

Passo inicial

É um valor inteiro maior ou igual a zero, por padrão o programa utiliza 0. Assim iniciará a captação de dados da simulação a partir do valor indicado.

Sua chamada é como abaixo:

python sumoplot.py --net <net file path> --edge-all --step-start <number>

ou

python sumoplot.py -n <net file path> -ea -ss <number>

Passo final

É um valor inteiro maior que zero, por padrão o programa utiliza 10000 (igual ao Limite máximo). Assim irá encerrar a captação de dados da simulação no passo indicado.

Sua chamada é como abaixo:

python sumoplot.py --net <net file path> --edge-all --step-end <number>

ou

python sumoplot.py -n <net file path> -ea -se <number>

Passo ilimitado

Ao utilizar essa flag não haverá controle de parada pela ferramenta Sumoplot, isso ficará a cargo exclusivo do simulador SUMO. Dessa forma, é possivel a execução de simulações de alta dinamicidade que não necessariamente terão um controle de parada especificado.

Sua chamada é como abaixo:

python sumoplot.py --net <net file path> --edge-all --step-unbounded

ou

python sumoplot.py -n <net file path> -ea -su

Formatação da saída

Permitimos uma formatação prévia dos dados que são gerados na saída da simulação, podem ser escolhidos três tipos de formatação diferentes no momento. São elas: tab (caractere de tabulação '\t'), blank (espaço em branco ' ') e comma (uma vírgula ',').

Um exemplo de seu uso está abaixo:

python sumoplot.py --net <net file path> --vehicle-speed --separator comma

ou

python sumoplot.py -n <net file path> -vs -s comma
Onde 
--separator recebe a opção comma, e dessa forma os dados no arquivo de saída serão separados (incluindo cabeçalhos de identificação) por uma vírgula (',').


Porta de conexão

Através desse parâmetro é possível alterar a porta de conexão entre o simulador SUMO e outros scripts que estejam rodando simultaneamente. Seu padrão é a porta 8813.

Um exemplo de seu uso está abaixo:

python sumoplot.py --net <net file path> --vehicle-distance --port <number>

ou

python sumoplot.py -n <net file path> -vd -p <number>
Onde 
--port recebe a opção <number>, que pode ser qualquer número de porta válida e que esteja conectada ao SUMO, esse parâmetro será usado geralmente com o TraCI_Hub.


Extração completa

Corresponde a união de todas as chamadas para todas as categorias permitidas pela ferramenta.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --full

ou

python sumoplot.py -n <net file path> -f

O qual é convertido internamente para a seguinte chamada:

python sumoplot.py --net <net file path> \
    --edge-vehicle --edge-speed --edge-halting --edge-length --edge-occupation \
    --vehicle-speed --vehicle-route --vehicle-distance --vehicle-time \
    --tls-halting

Arestas (ruas, avenidas, etc.)

Arestas são as conexões entre os diversos nós em uma rede de tráfego. Através delas é possível avaliar o comportamento do fluxo de veículos na rede e obter informações úteis.

Um exemplo de chamada com alguns dos parâmetros é como abaixo:

python sumoplot.py --net <net file path> --edge-halting <edgeId1 edgeId3> --edge-vehicle <edgeId4 edgeId2 edgeId6>

ou

python sumoplot.py -n <net file path> -eh <edgeId1 edgeId3> -ev <edgeId4 edgeId2 edgeId6>
Onde 
<net file path> é o arquivo com a rede a ser simulada;
--edge-halting e --edge-vehicle são categorias possíveis de parâmetros e que estão explicados logo abaixo;
<edgeId1 edgeId3> e <edgeId4 edgeId2 edgeId6> são listas independentes de identificadores das arestas que se deseja obter informações. Essa lista pode ser vazia, e nesse caso todas as arestas da rede serão avaliadas.


Abaixo cada parâmetro de configuração das arestas é explicado.

Veículos em trânsito

Corresponde a captação de informações referentes aos veículos que trafegam sobre as arestas, uma análise a nível macroscópica onde são contabilizados à cada iteração da simulação o número de veículos que estiveram sobre a aresta.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --edge-vehicle <edgeId1 edgeId3>

ou

python sumoplot.py -n <net file path> -ev <edgeId1 edgeId3>

Velocidade média dos veículos

Corresponde a captação de informações referentes aos veículos que trafegam sobre as arestas, uma análise a nível macroscópica onde são contabilizados à cada iteração da simulação a velocidade média dos veículos que passaram pela a aresta.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --edge-speed <edgeId1 edgeId3>

ou

python sumoplot.py -n <net file path> -es <edgeId1 edgeId3>

Veículos engarrafados

Corresponde a captação de informações referentes aos veículos que trafegam sobre as arestas, uma análise a nível macroscópico onde são contabilizados à cada iteração da simulação o número de veículos que ficaram de alguma forma engarrafados (impedidos de se mover ou com velocidade inferior a 0.1 m/s) na aresta.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --edge-halting <edgeId1 edgeId3>

ou

python sumoplot.py -n <net file path> -eh <edgeId1 edgeId3>

Tamanho do engarrafamento

Corresponde a captação de informações referentes aos veículos que trafegam sobre as arestas, uma análise a nível macroscópica onde são contabilizados à cada iteração da simulação o comprimento do engarrafamento dos veículos que estão na aresta.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --edge-length <edgeId1 edgeId3>

ou

python sumoplot.py -n <net file path> -el <edgeId1 edgeId3>

Ocupação da aresta

Corresponde à porcentagem de ocupação de veículos em determinada aresta, levando em consideração o tamanho da mesma.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --edge-occupation <edgeId1 edgeId3>

ou

python sumoplot.py -n <net file path> -eo <edgeId1 edgeId3>

Completa

Corresponde a união de todas as chamadas anteriores para a categoria das arestas.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --edge-all <edgeId1 edgeId3>

ou

python sumoplot.py -n <net file path> -ea <edgeId1 edgeId3>

O qual é convertido internamente para a seguinte chamada:

python sumoplot.py --net <net file path> \
    --edge-vehicle <edgeId1 edgeId3> \
    --edge-speed <edgeId1 edgeId3> \
    --edge-halting <edgeId1 edgeId3> \
    --edge-length <edgeId1 edgeId3> \
    --edge-occupation <edgeId1 edgeId3>

Veículos

Veículos são agentes de tráfego que são usados nas simulações, de forma que possam ser testados comportamentos a nível macroscópico e microscópico.

Um exemplo de chamada com alguns dos parâmetros é como abaixo:

python sumoplot.py --net <net file path> --vehicle-speed <vehicleId1 vehicleId2> --vehicle-time <vehicleId9>

ou

python sumoplot.py -n <net file path> -vs <vehicleId1 vehicleId2> -vt <vehicleId9>
Onde 
<net file path> é o arquivo com a rede a ser simulada;
--vehicle-speed e --vehicle-time são categorias possíveis de parâmetros e que estão explicados logo abaixo;
<vehicleId1 vehicleId2> e <vehicleId9> são listas independentes de identificadores dos veículos que se deseja obter informações. Essa lista pode ser vazia, e nesse caso todos os veículos incluídos na rede serão avaliados.

Abaixo cada parâmetro de configuração dos veículos é explicado.

Velocidade média

Corresponde a captação de informações referentes aos veículos que trafegam sobre as arestas, uma análise a nível microscópico onde é calculada com base na distância percorrida, e no tempo de viagem do veículo, sua velocidade média.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --vehicle-speed <vehicleId1 vehicleId2>

ou

python sumoplot.py -n <net file path> -vs <vehicleId1 vehicleId2>

Distância percorrida

Corresponde a captação de informações referentes aos veículos que trafegam sobre as arestas, uma análise a nível microscópico onde é captada a distância percorrida pelo veículo durante a sua viagem. Essa informação muda quando uma rota é alterada, ou quando a simulação termina antes do veículo chegar a seu destino.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --vehicle-distance <vehicleId1 vehicleId2>

ou

python sumoplot.py -n <net file path> -vd <vehicleId1 vehicleId2>

Tempo de viagem

Corresponde a captação de informações referentes aos veículos que trafegam sobre as arestas, uma análise a nível microscópico onde é captado o tempo de viagem gasto pelo veículo durante a sua rota. A medida inicia a partir do momento em que o veículo é inserido na simulação e termina quando da sua remoção, ou do término da simulação medida.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --vehicle-time <vehicleId9>

ou

python sumoplot.py -n <net file path> -vt <vehicleId9>

Rota percorrida

Corresponde a captação de informações referentes aos veículos que trafegam sobre as arestas, uma análise a nível microscópico onde é captada a mudança ou não do comportamento de viagem do veículo. Essa informação muda quando sua rota é alterada, ou quando a simulação termina antes do veículo chegar a seu destino. A saída fornecida por esse parâmetro é uma lista contendo as arestas que formavam a última rota prevista para o veículo, e uma lista contendo todas as arestas pelas quais o veículo passou, na ordem início-fim.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --vehicle-route <vehicleId1 vehicleId2>

ou

python sumoplot.py -n <net file path> -vr <vehicleId1 vehicleId2>

Completa

Corresponde a união de todas as chamadas anteriores para a categoria dos veículos.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --vehicle-all  <vehicleId7 vehicleId15>

ou

python sumoplot.py -n <net file path> -va  <vehicleId7 vehicleId15>

O qual é convertido internamente para a seguinte chamada:

python sumoplot.py --net <net file path> \
    --vehicle-speed <vehicleId7 vehicleId15> \
    --vehicle-route <vehicleId7 vehicleId15> \
    --vehicle-distance <vehicleId7 vehicleId15> \
    --vehicle-time <vehicleId7 vehicleId15>


Semáforos

Semáforos, ou sinaleiras, são controladores de tráfego veicular incluídos nas junções de vias de trânsito. Através deles é possível analisar questões relacionadas às mudanças no fluxo, sobrecargas em determinadas regiões, etc.

Um exemplo de chamada com alguns dos parâmetros é como abaixo:

python sumoplot.py --net <net file path> --tls-halting <tlsId1 tlsId3>

ou

python sumoplot.py -n <net file path> -tlh <tlsId1 tlsId3>
Onde 
<net file path> é o arquivo com a rede a ser simulada;
--tls-halting é uma categoria possível de parâmetros e que está explicado logo abaixo;
<tlsId1 tlsId3> é uma lista de identificadores dos semáforos que se deseja obter informações. Essa lista pode ser vazia, e nesse caso todos os semáforos da rede serão avaliados.

Abaixo cada parâmetro de configuração dos semáforos é explicado.

Plano semafórico

Um plano semafórico consiste em um conjunto de regras de mudança dos sinais de um semáforo, alterando o comportamento do trânsito em determinadas vias. Basicamente é definido por 3 espaços de tempo, com cores indicativas próprias, onde os veículos devem: se mover livremente (cor verde); ter atenção e reduzir sua marcha pois logo haverá uma parada (cor amarela); parar (cor vermelha). Essa alternância permite aos veículos moverem-se nas diferentes direções das vias reduzindo a ocorrência de acidentes.

Veículos engarrafados

Corresponde a captação de informações referentes aos veículos que ficaram parados durante a mudança de fase do semáforo (de vermelho para verde), uma análise a nível macroscópico onde são contabilizados, à cada iteração da simulação, o número de veículos que ficaram de alguma forma engarrafados (impedidos de se mover ou com velocidade inferior a 0.1 m/s) em cada uma das vias controladas pelo semáforo.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --tls-halting <tlsId1 tlsId3>

ou

python sumoplot.py -n <net file path> -tlh <tlsId1 tlsId3>

Completa

Corresponde a união de todas as chamadas anteriores para a categoria dos semáforos.

Um exemplo de chamada com esse parâmetro é como abaixo:

python sumoplot.py --net <net file path> --tls-all  <tlsId7 tlsId15>

ou

python sumoplot.py -n <net file path> -tla  <tlsId7 tlsId15>

O qual é convertido internamente para a seguinte chamada:

python sumoplot.py --net <net file path> \
    --tls-halting <tlsId7 tlsId15>


Nós (Junções, Cruzamentos)

Em construção.

Ferramentas pessoais