Conhecimento Fratar
Aprimorando as simulações do Aimsun Next com a Interface Avançada de Programação (API)
Publicado
Atualizado
AssuntoAimsun · Notas Técnicas Aimsun
Nota Técnica #65
Por Dimitris Triantafyllos
Dezembro 2021
O que é o API Aimsun Next?
O Aimsun Next API é uma coleção de funções, em Python ou C++, que permitem ler informações e realizar ações durante uma simulação mesoscópica, microscópica ou híbrida mesoscópica e microscópica. Com a API, você pode fazer alterações enquanto a simulação está sendo executada, enquanto que com o scripting, você tem que fazer quaisquer alterações antes de iniciar a simulação.
Você também pode usar a API para conectar uma aplicação externa à simulação. Internamente, dentro do Aimsun Next, o API pode se comunicar com o mecanismo de simulação, e externamente, com a aplicação externa.

Onde usar o Aimsun Next API?
A aplicação mais comum do Aimsun Next API é emular aplicações de Sistemas Inteligentes de Transporte (ITS), Sistemas Avançados de Assistência ao Motorista (ADAS) e Veículos Conectados (CV): por exemplo, implementar prioridade de semáforo personalizado e algoritmos adaptativos de controle de tráfego; aplicar gerenciamento de tráfego dinamicamente/em tempo de execução; controlar parâmetros de comportamento de direção de veículos, etc. A funcionalidade que a API fornece depende do mecanismo de simulação:
Tanto em simulações mesoscópicas como microscópicas, você pode:
- Leia as estatísticas de saída,
- Leia o estado dos semáforos,
- Mudar o estado dos semáforos.
Em uma simulação microscópica (ou na área microscópica de uma simulação híbrida meso-micro), você pode:
- Ler os dados do detector,
- Ler o estado de cada veículo (origem, destino, parâmetros comportamentais, caminho atual, posição, velocidade, aceleração, etc.),
- Introduzir novos veículos,
- Assumir o controle dos veículos (definir posição e velocidade, mudar seu destino ou seu caminho),
- Acionar ações de gerenciamento de tráfego.
Em uma simulação mesoscópica, você pode:
- Ler o estado de cada veículo (origem, destino, seção atual ou movimento, horário de entrada, horário de saída)
- Introduzir novos veículos.
Exemplo: implemente uma aplicação Connected Vehicle controlando os veículos via API
No exemplo a seguir, usaremos o API para controlar a velocidade e a faixa dos veículos que se aproximam de uma junção. Isto representa uma implementação muito simples (provavelmente simplista) de uma aplicação cooperativa de merge para Veículos Conectados.
no callback AAPIEnterVehicleSection
int AKIVehSetAsTracked(int aidVeh)int AKIVehStateGetNbVehiclesSection(int aidSec, bool considerAllSegments)int AKIVehStateGetVehicleInfSection(int aidSec, int indexveh)Passo 4: Em seguida, modificamos a velocidade dos veículos a montante do merge com
CopiarSyntax Highlighterint AKIVehTrackedModifySpeed(int aidVeh, double newSpeed)
Note que esta função só permite definir uma velocidade inferior à velocidade calculada pelo modelo de seguimento veicular (car-following). Se você não quiser ser limitado pela velocidade de seguimento veicular, você pode usar em vez disso a seguinte função:
int AKIVehTrackedForceSpeed (int aidVeh, double newSpeed)Passo 5: Na seção da junção, definimos a faixa mais à esquerda como faixa de destino, chamando
AKIVehTrackedModifyLane (int aidVeh, int nextLane)Passo 6: Quando os veículos saem da seção da junção, nós colocamos os veículos de volta em não rastreados, chamando
int AKIVehSetAsNoTracked(int aidVeh)no callback AAPIExitVehicleSection
Executando a API de amostra
- Baixe os arquivos de amostra abaixo e certifique-se de que todos os arquivos estejam localizados no mesmo diretório:
- Aimsun file controlling-vehicles.ang
- API file controlling-vehicles.py
- Copiar-colar o arquivo py de Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro OR Meso/AAPI.py no mesmo diretório onde o arquivo controlling-vehicles.py é armazenado.
Nota: Lembre-se de que o arquivo Aimsun AAPI deve ser consistente com a versão Aimsun atualmente em uso. Você pode recuperá-lo aqui:
Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro/AAPI.py
- Procedimento:
- Inicie o Aimsun e depois abra o arquivo controlling-vehicles.ang fornecido
- Executar a Replicação. Consulte a janela Log para obter informações detalhadas sobre o funcionamento do CACC
A extensão Aimsun Next Application Programming Interface (API) pode ser implementada usando um script Python. Esse script Python é um arquivo ASCII (com extensão .py), que pode ser editado em qualquer editor de texto, e é fornecido com o Aimsun Next na pasta de instalação.
- Copie o arquivo sample.py de Aimsun_Next_installation_folder/programming/Aimsun Next API/python/samples/Micro OR Meso/sample.py para o diretório de trabalho; recomenda-se colocá-lo no mesmo diretório do arquivo ANG para que o Aimsun Next reconheça caminhos relativos caso o projeto seja movido.
- Copie o arquivo AAPI.py de Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro OR Meso/AAPI.py para o mesmo diretório onde sample.py está armazenado.
- Você pode salvar o arquivo Python (.py) com o nome de sua preferência. Mantenha sample.py como backup caso precise codificar outra API.
- Abra o script Python renomeado. Na parte superior, o módulo AAPI é importado para permitir a interpretação das funções de C++ para Python. O módulo AAPI funciona como interface entre o script Python e o Aimsun Next.
- Consulte no Manual do Aimsun Next a lista completa de funções para gerenciar planos de controle e aplicar alterações em simulações microscópicas ou mesoscópicas, bem como as instruções passo a passo e exemplos de API.
Para testar o código, carregue a API no Aimsun Next e abra um Cenário Dinâmico.
- Acesse a aba Aimsun Next APIs.
- Adicione o arquivo .py em Aimsun Next APIs e selecione-o.
- Pressione OK e clique com o botão direito na Replicação > Run Animated Simulation (para simulação microscópica). Observe as mensagens impressas pelo código na janela Log (Main Menu > Window > Windows > Log).
Licença: Note que você precisa de uma licença API para executar este exemplo. Para maiores informações, favor contatar [email protected]
