Aimsun Next API Entrada/Saída de Veículos (Meso)¶
Funções relacionadas à Entrada de Veículos¶
Desabilitar Geração Normal de Veículos¶
Em C++ e Python¶
Explicação¶
Desabilita a geração com base na demanda de trânsito. Todos os veículos simulados devem ser adicionados usando um processo de entrada externo, por exemplo, utilizando as funções da API.
Formato¶
void AMesoDisableGeneration (void * simhandler)
Parâmetros¶
- simhandler: manipulador do simulador
Finalizar a geração de demanda definida pelo usuário¶
Em C++ e Python¶
Explicação¶
Esta função deve ser chamada uma vez que todos os veículos tenham sido inseridos no modelo.
Formato¶
int AMesoFinishTripsConfiguration (void * simhandler)
Parâmetros¶
- simhandler: manipulador do simulador
Saídas¶
- Número de viagens na demanda
Adicionar um Veículo na Simulação¶
Em C++ e Python¶
Explicação¶
Adiciona um novo veículo na simulação. Esta função pode ser usada ao adicionar um pequeno número de veículos ou adicionar um veículo durante a simulação.
Formato¶
int AMesoAddVehicle(void * simhandler, int vehTypePos, double time, int originId, int destinationId, int generationSeed, int selectionSeed)
Parâmetros¶
- simhandler: manipulador do simulador
- vehTypePos: índice do tipo de veículo, de 0 a AMesoNumberVehicles()-1
- time: horário de entrada
- originId: identificador do centróide de origem
- destinationId: identificador do centróide de destino
- generationSeed: semente usada para criar propriedades do veículo, com -1 uma semente automática é criada
- selectionSeed: semente usada para selecionar o caminho, com -1 uma semente automática é criada
Saída¶
- > 0: ID do veículo correto
- < 0: Erro
Adicionar um Veículo em uma Simulação DUE¶
Em C++ e Python¶
Explicação¶
Adiciona um novo veículo na simulação. É uma versão otimizada da função acima e pode ser usada para adicionar um grande número de veículos desde o início ou no meio da simulação.
Formato¶
int AMesoAddTrip (void * simhandler, int vehTypePos, double time, int originIndex, int destinationIndex, int generationSeed, int selectionSeed, double valueOfTime)
Parâmetros¶
- simhandler: manipulador do simulador
- vehTypePos: índice do tipo de veículo, de 0 a AMesoNumberVehicles()-1
- time: horário de entrada
- originIndex: índice do centróide de origem, de 0 a AMesoGetNumberOriginCentroids -1
- destinationIndex: índice do centróide de destino, de 0 a AMesoGetNumberDestinationCentroids -1
- generationSeed: semente usada para criar propriedades do veículo, com -1 uma semente automática é criada
- selectionSeed: semente usada para selecionar o caminho, com -1 uma semente automática é criada
- valueOfTime: valor do tempo usado por este veículo
Saída¶
- > 0: ID do veículo correto
- < 0: Erro
Atualizar horário de entrada do veículo¶
Em C++ e Python¶
Explicação¶
Atualiza o horário de entrada do veículo
Formato¶
int AMesoUpdateTripTime (void * simhandler, int id, double time)
Parâmetros¶
- simhandler: manipulador do simulador
- id: identificador do veículo
- time: horário de entrada
Saída¶
- ≥ 0: Correto
- < 0: Erro
Inserir um novo veículo de transporte público¶
Em C++ e Python¶
Explicação¶
Insere um novo veículo de transporte público usando uma linha de transporte público e localização predefinidas
Formato¶
unsigned int AMesoAddVehicleAsInitialStatePT(void * simhandler, int vehType, int idline, int currentSectionid)
Parâmetros¶
- simhandler: manipulador do simulador
- vehType: índice do tipo de veículo, de 0 a AMesoNumberVehicles()-1
- idline: identificador da linha de transporte público
- currentSectionid: identificador da seção
Saída¶
- 0 quando o veículo não pode ser inserido, >0 será o ID do veículo
Remover veículo da rede¶
Em C++ e Python¶
Explicação¶
Remove um veículo existente da rede. Existem algumas restrições ao usar esta função: - Esta função não pode ser chamada nas seguintes chamadas de retorno: MesoAPINewVehicleSystem, MesoAPINewVehicleNetwork, MesoAPIFinishVehicleNetwork, MesoAPIEnterVehicleSection, MesoAPIExitVehicleSection, MesoAPIVehicleReadyForSection. Portanto, em qualquer função em que o manipulador do veículo seja parte dos parâmetros de entrada. - Apenas veículos que estão dentro da rede podem ser removidos. Aqueles veículos dentro de uma fila virtual não podem ser removidos. - Somente aqueles veículos que estão prontos para seguir em frente (estão na frente da fila) podem ser removidos. E finalmente, quando o veículo está em uma seção, ele pode ser removido apenas quando o veículo deve ser considerado na fila. Isso significa que seu tempo de viagem na seção é maior que o tempo de chegada em fila pré-calculado.
O parâmetro de entrada do manipulador de veículos é de responsabilidade do usuário mantê-lo dentro da API. Por exemplo, pode declarar um dicionário vehicles = dict() e então gerenciar esse dicionário quando o veículo for inserido na rede usando MesoAPINewVehicleNetwork (vehicles[AMesoGetVehicleID(vehhandler)] = vehhandler) e quando o veículo sair da rede, MesoAPIFinishVehicleNetwork.
if normalOut and AMesoGetVehicleID(vehhandler) in vehicles:
vehicles.pop(AMesoGetVehicleID(vehhandler))
Formato¶
bool AMesoRemoveVehicle(void * simhandler, void * vehhandler)
Parâmetros¶
- simhandler: manipulador do simulador
- vehhandler: manipulador do veículo
Saída¶
- ≥ Verdadeiro: veículo foi removido
- < Falso: veículo não foi removido
Inserir um novo veículo em uma seção¶
Em C++ e Python¶
Explicação¶
Insere um novo veículo em uma seção. O caminho é de uma seção para outra seção. A outra seção pode ser a seção de origem também.
Formato¶
unsigned int AMesoAddVehicleInSection(void* simhandler, int vehType, int fromSection, int toSection)
Parâmetros¶
- simhandler: manipulador do simulador
- vehType: índice do tipo de veículo, de 0 a AMesoNumberVehicles()-1
- fromSection id da seção onde o veículo é inserido
- toSection id da seção onde o veículo irá sair da rede
Saída¶
- 0 quando o veículo não puder ser inserido, >0 será o ID do veículo