Entrada/Saída de Veículos da API do Aimsun Next (Meso)¶
Funções relacionadas à Entrada de Veículos¶
Desativar Geração Normal de Veículos¶
Em C++ e Python¶
Explicação¶
Desativar a geração baseada na demanda de tráfego. Todos os veículos simulados devem ser adicionados usando um processo de entrada externo, por exemplo, usando as funções da API.
Formato¶
void AMesoDisableGeneration (void * simhandler)
Parâmetros¶
- simhandler: manipulador do simulador
Finalizar geração de demanda definida pelo usuário¶
Em C++ e Python¶
Explicação¶
Esta função deve ser chamada depois que todos os veículos tiverem 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 ao 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
- tempo: tempo de entrada
- originId: identificador do centroide de origem
- destinationId: identificador do centroide 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 de 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
- tempo: tempo de entrada
- originIndex: índice do centroide de origem, de 0 a AMesoGetNumberOriginCentroids -1
- destinationIndex: índice do centroide 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 de veículo correto
- < 0: Erro
Atualizar o horário de entrada do veículo¶
Em C++ e Python¶
Explicação¶
Atualiza o tempo 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
- tempo: tempo 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 coletivo usando uma linha de transporte coletivo 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 pôde 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. Há algumas restrições ao usar esta função: - Esta função não pode ser chamada nos seguintes callbacks: MesoAPINewVehicleSystem, MesoAPINewVehicleNetwork, MesoAPIFinishVehicleNetwork, MesoAPIEnterVehicleSection, MesoAPIExitVehicleSection, MesoAPIVehicleReadyForSection. Ou seja, em qualquer função em que o manipulador do veículo faça parte dos parâmetros de entrada. - Somente veículos que estão dentro da rede podem ser removidos. Veículos dentro de uma fila virtual não podem ser removidos. - Somente os veículos que estão em posição para avançar (estão na frente da fila) podem ser removidos. E, finalmente, quando o veículo está em uma seção, ele só pode ser removido quando o veículo deve ser considerado em fila. Isso significa que seu tempo de viagem na seção é maior que o tempo de chegada em fila pré-calculado.
Cabe ao usuário manter o parâmetro de entrada do manipulador de veículo dentro da api. Por exemplo, ele 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 de veículo
Saída¶
- ≥ True: o veículo foi removido
- < False: o 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 vai da seção para outra seção. A outra seção também pode ser a seção de origem.
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 pela qual o veículo sairá da rede
Saída¶
- 0 quando o veículo não pôde ser inserido, >0 será o id do veículo