Pular para o conteúdo

Entrada/Saída de Veículos da API do Aimsun Next (Meso)

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))
o filtro normalOut é usado porque, quando o veículo é removido usando esta função, o callback MesoAPIFinishVehicleNetwork também é chamado com normalOut definido como False.
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