API do Aimsun Next: Gerenciamento de Transporte Público¶
Funções relacionadas ao Gerenciamento de Transporte Público¶
Ler número de Linhas de Transporte Público¶
Em C++ e Python¶
Explicação¶
Ler o número de linhas de transporte público carregadas.
Formato¶
int AKIPTGetNumberLines()
Parâmetros¶
Nenhum.
Saída¶
- ≥ 0: Número de linhas de transporte público.
- < 0: Error.
Ler o identificador de uma Linha de Transporte Público¶
Em C++ e Python¶
Explicação¶
Ler o identificador de uma linha de transporte público.
Formato¶
int AKIPTGetIdLine(int elem);
Parâmetros¶
- elem: O número da linha de transporte público no intervalo 0 ≤ elem < Número de Linhas -1.
Saída¶
- ≥ 0: Identificador da linha de transporte público.
- < 0: Error.
Ler o número de veículos em uma Linha de Transporte Público¶
Em C++ e Python¶
Explicação¶
Lê o número de veículos que estão atualmente seguindo a rota de uma linha de transporte público.
Formato¶
int AKIGetNbVehiclesFollowingPTLine (int lineId)
Parâmetros¶
- lineId: O identificador da linha de transporte público.
Saída¶
- ≥ 0: Número de veículos na rota da linha de transporte público.
- < 0: Error.
Ler o identificador de um veículo em uma Linha de Transporte Coletivo¶
Em C++ e Python¶
Explicação¶
Lê o identificador do veículo do n-ésimo veículo em uma rota de linha de transporte público.
Formato¶
int AKIGetVehicleFollowingPTLine(int lineId, int vehPos);
Parâmetros¶
- lineId: O identificador da linha de transporte público.
- vehPos: A posição do veículo na linha. Ela deve estar no intervalo 0 ≤ vehPost < AKIGetNbVehiclesFollowingPTLine.
Saída¶
- ≥ 0: Identificador do veículo na rota da linha de transporte coletivo.
- < 0: Error.
Ler o número de seções em uma Linha de Transporte Público¶
Em C++ e Python¶
Explicação¶
Ler o número de seções que definem a rota de uma linha de transporte público.
Formato¶
int AKIPTGetNumberSectionsInLine (int lineId)
Parâmetros¶
- lineId: O identificador da linha de transporte público.
Saída¶
- ≥ 0: Número de seções que definem a rota da linha de transporte público.
- < 0: Error.
Ler o identificador de uma seção em uma Linha de Transporte Coletivo¶
Em C++ e Python¶
Explicação¶
Lê o identificador da seção da n-ésima seção em uma rota de linha de transporte público.
Formato¶
int AKIPTGetIdSectionInLine(int lineId, int elem);
Parâmetros¶
- lineId: O identificador da linha de transporte público.
- elem: O índice da seção. Deve estar no intervalo 0 ≤ elem < Number of Sections -1.
Saída¶
- ≥ 0: Identificador da seção elem-th na rota da linha de transporte público.
- < 0: Error.
Ler o número de paradas em uma Linha de Transporte Público¶
Em C++ e Python¶
Explicação¶
Ler o número de paradas em uma linha de transporte público.
Formato¶
int AKIPTGetNumberStopsInLine(int lineId)
Parâmetros¶
- lineId: O identificador da linha de transporte público.
Saída¶
- ≥ 0: Número de paradas na linha de transporte público com ID lineId.
- < 0: Error.
Ler o identificador de uma parada em uma Linha de Transporte Coletivo¶
Em C++ e Python¶
Explicação¶
Ler o identificador da parada em uma linha de transporte público.
Formato¶
int AKIPTGetIdStopsInLine(int lineId, int elem);
Parâmetros¶
- lineId: O identificador da linha de transporte público.
- elem: A posição da parada na lista de paradas da linha entre 0 e AKIPTGetNumberStopsInLine(for the transit line).
Saída¶
- ≥ 0: Identificador da parada elem-ésima na linha de transporte público.
- < 0: Error.
Introduzir um Veículo de Transporte Público¶
Em C++ e Python¶
Explicação¶
Introduzir um veículo de transporte público no sistema.
Formato¶
int AKIPTEnterVeh (int lineId, int vehTypePos, bool tracked);
Parâmetros¶
- lineId: O identificador da linha de transporte público.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. Deve ser usado um valor de 1 a AKIVehGetNbVehTypes().
- rastreamento: False quando o veículo não deve ser rastreado; true caso contrário.
Saída¶
- ≥ 0: identificador do veículo para o veículo inserido.
- 0: Erro.
Ler o Tempo de Parada de um Veículo de Transporte Público¶
Em C++ e Python¶
Explicação¶
Ler o tempo de parada de um veículo.
Formato¶
double AKIPTGetServiceTimeStopsInLine (int aidVeh, int nstop)
Parâmetros¶
- aidVeh: O identificador do veículo de transporte público.
- nstop: Posição da parada para modificar seu tempo de parada na lista de paradas da linha. O valor vai de 0 a AKIPTGetNumberStopsInLine( para a linha de transporte coletivo do veículo).
Saída¶
- > = 0: Tempo de Parada.
- < 0: Error.
Modificar um Tempo de Parada de um Veículo de Transporte Público¶
Em C++ e Python¶
Explicação¶
Modifique o tempo de parada de um veículo. Quando o novo tempo de parada é definido como zero, a parada será ignorada pelo veículo.
Formato¶
int AKIPTVehModifyStopTime (int aidVeh, int nstop, double stopTime);
Parâmetros¶
- aidVeh: O identificador do veículo de transporte público.
- nstop: Posição da parada para modificar seu tempo de parada na lista de paradas da linha. Entre 0 e AKIPTGetNumberStopsInLine( para a linha de transporte público do veículo) .
- stopTime: O novo tempo de parada do veículo na parada (em segundos).
Saída¶
- = 0: Nenhum erro ocorreu.
- < 0: Error.
Ler as informações de um Veículo de Transporte Público¶
Em C++ e Python¶
Explicação¶
Ler as informações de um veículo de transporte público.
Formato¶
InfPTVeh AKIPTVehGetInf(int aidVeh)
Parâmetros¶
- aidVeh: Identificador do veículo.
Saída¶
struct InfPTVeh{
int report;
int idVeh;
int type;
// Information in Vehicle when it is in a section
int idSection;
int segment;
int numberLane;
// Information in Vehicle when it is in a node
int idJunction;
int idSectionFrom;
int idLaneFrom;
int idSectionTo;
int idLaneTo;
double CurrentPos;
double distance2End;
double xCurrentPos, yCurrentPos, zCurrentPos;
double xCurrentPosBack, yCurrentPosBack, zCurrentPosBack;
double CurrentSpeed, PreviousSpeed;
double TotalDistance;
double SystemGenerationT;
double SystemEntranceT;
double SectionEntranceT;
double CurrentStopTime;
bool stopped;
uint mNbLostTurnings;
double theoreticalGenerationTime;
int nbStopsDone;
double observedLastStopTime;
double observedLastInitialStopTime;
int nextStopId;
double offsetInNextStop;
double distanceNextStop;
double nextServiceTime;
double currentStoppedTmeInBusStop;
int currentLoad;
double energyState;
bool isLost;
};
em que:
- relatório: 0, OK, caso contrário, um código de erro.
- idVeh: O identificador do veículo.
- type: O tipo de veículo (carro, ônibus, caminhão etc.).
- idSection: O identificador da seção, quando o veículo está em uma seção.
- numberLane: Número da faixa, quando o veículo está em uma seção.
- idSectionFrom: Identificador da seção de origem.
- idLaneFrom: Faixa da seção de origem pela qual o veículo entra no cruzamento. 1 sendo a faixa mais à direita e N a faixa mais à esquerda, sendo N o número de faixas na seção de origem.
- idSectionTo: Identificador da seção de destino.
- idLaneTo: Faixa da seção de destino pela qual o veículo sai do cruzamento. 1 sendo a faixa mais à direita e N a faixa mais à esquerda, sendo N o número de faixas na seção de destino.
- CurrentPos: Posição dentro da seção dada pela distância (metros ou pés, dependendo das unidades definidas na rede) a partir do início da seção, ou posição dentro do entroncamento dada pela distância desde a entrada do entroncamento.
- distance2End: Distância até o fim da seção (metros ou pés, dependendo das unidades definidas na rede) quando o veículo está localizado em uma seção, ou a distância até o fim do movimento de conversão quando o veículo está em uma junção.
- xCurrentPos, yCurrentPos, zCurrentPos: Coordenadas globais do ponto médio do para-choque dianteiro do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: Coordenadas globais do ponto médio do para-choque traseiro do veículo.
- CurrentSpeed: A velocidade atual (em km/h ou mph, dependendo das unidades definidas na rede.
- PreviousSpeed: A velocidade na etapa de simulação anterior (em km/h ou mph, dependendo das unidades definidas na rede.
- TotalDistance: A distância total percorrida (metros ou pés).
- SystemGenerationT: O tempo absoluto de geração do veículo no sistema. Se nenhuma fila virtual estava presente em sua seção de entrada, será igual ao SystemEntranceT.
- SystemEntranceT: O tempo absoluto de entrada do veículo no sistema, ou seja, em sua seção de entrada. Se nenhuma fila virtual for encontrada na seção de entrada, será igual ao SystemGenerationT.
- SectionEntranceT: O tempo absoluto de entrada do veículo na seção atual.
- CurrentStopTime: O tempo de parada atual.
- parado: True se o veículo permanecer parado.
- mNbLostTurnings O número de movimentos de conversão perdidos.
- theoreticalGenerationTime: O tempo teórico de geração de acordo com a tabela de horários.
- nbStopsDone: O número de paradas concluídas.
- observedLastStopTime: A duração total da última parada.
- observedLastInitialStopTime: O tempo inicial da última parada.
- nextStopId: Identificador da próxima parada se o veículo não estiver atualmente parando em uma parada, ou o identificador da parada atual quando ele estiver na parada.
- offsetInNextStop: Defasagem atribuída à próxima parada
- distanceNextStop: Distância até a próxima parada (metros ou pés).
- nextServiceTime: Se o veículo estiver em uma parada: o tempo de parada atual. Se o veículo não estiver em uma parada; o tempo de parada planejado na próxima parada(segundos)
- currentStoppedTimeInBusStop: O tempo de parada até agora na parada atual (segundos).
- currentLoad: Número atual de pessoas dentro do veículo de transporte público.
- energyState Nível atual do tanque de combustível em veículos a combustão (l) ou Estado de Carga atual da bateria em veículos elétricos (kW)
- isLost Verdadeiro se o veículo estiver perdido e não puder alcançar seu destino.
Ler as Informações Estáticas de um Veículo de Transporte Coletivo¶
Em C++ e Python¶
Explicação¶
Lê as informações estáticas de um veículo de transporte público. Informações estáticas significam as características do veículo que foram definidas quando o veículo entrou no sistema.
Formato¶
StaticInfPTVeh AKIPTVehGetStaticInf(int aidVeh);
Parâmetros¶
- aidVeh: identificador do veículo.
Saída¶
struct StaticInfPTVeh{
int report;
int idVeh;
int type;
double length;
double width;
double maxDesiredSpeed;
double maxAcceleration;
double normalDeceleration;
double maxDeceleration;
double speedAcceptance;
double minDistanceVeh;
double giveWayTime;
double guidanceAcceptance;
int enrouted;
int equipped;
int tracked;
bool keepfastLane;
double safetyMarginFactor;
double headwayMin;
double sensitivityFactor;
double reactionTime;
double reactionTimeAtStop;
double reactionTimeAtTrafficLight;
bool laneChangingCooperation;
double laneChangingAggressivenessLevel;
double distanceZoneFactor;
int maxCapacity;
int idLine;
int engineTypeId;
int EUEmissionId;
double energyCapacity;
};
em que:
- relatório: 0, OK, caso contrário, um código de erro.
- idVeh: Identificador do veículo.
- type: O tipo de veículo (carro, ônibus, caminhão etc.).
- length: Comprimento do veículo (m ou pés, dependendo das unidades definidas na rede).
- width: Largura do veículo (m ou pés, dependendo das unidades definidas na rede).
- maxDesiredSpeed: Velocidade máxima desejada do veículo (km/h ou mph, dependendo das unidades definidas na rede).
- maxAcceleration: Aceleração máxima do veículo (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- normalDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições normais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- maxDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições especiais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- speedAcceptance: Grau de aceitação dos limites de velocidade.
- minDistanceVeh: Distância que o veículo mantém entre si e o veículo precedente (metros ou pés, dependendo das unidades definidas na rede).
- giveWayTime: O tempo após o qual o veículo se torna mais agressivo em situações de cedência de passagem (segundos).
- guidanceAcceptance: O nível de conformidade do veículo com as indicações de orientação.
- em rota: 0: o veículo não atualizará o caminho em rota. 1: o veículo mudará o caminho em rota. Isso depende da porcentagem de veículos que atualizam o caminho em rota definida para o tipo de veículo.
- equipados: 0: veículo não está equipado. 1: veículo está equipado.
- rastreados: 0: o veículo não é rastreado. 1 significa que o veículo é rastreado.
- keepfastLane: O veículo permanece na faixa rápida durante a ultrapassagem.
- safetyMarginFactor: Fator de margem de segurança.
- headwayMin: Headway mínimo a manter em relação ao seu líder.
- sensitivityFactor: Fator de estimativa da aceleração do líder.
- reactionTime: Tempo de reação do veículo.
- reactionTimeAtStop: Tempo de reação do veículo quando parado.
- reactionTimeAtTrafficLight: Tempo de reação do veículo quando ele é o primeiro na fila em um semáforo.
- laneChangingCooperation:
- laneChangingAggressivenessLevel:
- distanceZoneFactor:
- maxCapacity: Número máximo de pessoas dentro de um veículo de transporte público.
- idLine: Identificador da linha de transporte público.
- engineTypeId: Identificador do tipo de motor do veículo (modelos de emissão, consumo e aceleração MFC), em que: None = 0, Petrol = 1, Diesel = 2, Electric = 3, LPG = 4.
- EUEmissionId: Identificador Standard Emission para LEM. Null= 0, Zero = 1, Euro 0 = 2, Euro 1 = 3, Euro 2 = 4, Euro 3= 5, Euro 4 = 6, Euro 5 = 7, Euro 6 = 8, Euro 6c = 9 (Light Duty vehicles (car, taxi, van) ), Euro I = 10, Euro II = 11, Euro III = 12, Euro IV = 13, Euro IV EGR = 14, Euro V = 15, Euro V EGR = 16, Euro V SCR = 17, Euro VI = 18 (Heavy Duty vehicles (LGV, HGV, Bus, Coach) ).
- energyCapacity: Capacidade Total do tanque (l) ou da bateria (kW)
Modificar as Informações Estáticas de um Veículo de Transporte Coletivo¶
Em C++ e Python¶
Explicação¶
Modifique alguns parâmetros estáticos de um veículo de transporte público. Parâmetros estáticos significam as características do veículo que foram definidas quando o veículo entrou no sistema. Os parâmetros estáticos que podem ser alterados são: type, length, width, maxDesiredSpeed, maxAcceleration, normalDeceleration, maxDeceleration, speedAcceptance, minDistanceVeh, giveWayTime, guidanceAcceptance, em rota, equipados, rastreados, keepfastLane, safetyMarginFactor, headwayMin, sensitivityFactor, reactionTime, reactionTimeAtStop, e reactionTimeAtTrafficLight. O Aimsun Next não armazena os valores anteriores, portanto não pode recuperá-los posteriormente.
Formato¶
int AKIPTVehSetStaticInf(int aidVeh, StaticInfPTVeh staticinfVeh)
Parâmetros¶
- aidVeh: Identificador do veículo.
- staticinfVeh: Novos parâmetros estáticos a serem atribuídos.
Saída¶
- = 0: Sem erro.
- < 0: Error.
Modificar a carga atual do veículo¶
Em C++ e Python¶
Explicação¶
Modifique o número de pessoas dentro do veículo de transporte público. O novo valor não pode ser maior que a capacidade máxima.
Formato¶
int AKIPTVehSetCurrentLoad (int aidVeh, int currentLoad);
Parâmetros¶
- aidVeh: O identificador do veículo de transporte público.
- currentLoad: A nova carga do veículo de transporte público.
Saída¶
- = 0: Nenhum erro ocorreu.
- < 0: Error.
Modificar a rota atual do veículo¶
Em C++ e Python¶
Explicação¶
Modifica a rota do veículo de transporte público. Isso fará com que um veículo especificado se desvie de sua rota prescrita, atenda pontos de ônibus nesse desvio e retorne à sua rota original ao final do desvio. Essa função destina-se ao uso no tratamento de incidentes para desviar temporariamente veículos de transporte público ou na modelagem de interações dinâmicas entre ônibus e passageiros com desvios sob demanda.
Formato¶
int AKIPTVehReroute(int aidVeh, int nbsections, int *aSections, int *aNewstops, double *aDwellTime, double *aOffset);
Parâmetros¶
- aidVeh: O identificador do veículo de transporte público.
- nbsections: Número de seções fornecidas. Também usado para informar o tamanho dos novos arrays de paradas, tempo de permanência e offset.
- aSections: Array contendo os identificadores de seção atribuídos à nova rota. A primeira seção e a última seção devem fazer parte da linha de transporte público original.
- aNewstops: Array contendo os identificadores de paradas atribuídos a cada nova seção da rota. Se não houver parada nessa seção, defina o valor como 0.
- aDwellTime: Array contendo o tempo de parada atribuído à parada em cada nova seção da rota. Se não houver parada nessa seção, defina o valor como 0.
- aOffset: Array contendo o valor de deslocamento que fornece o horário de partida atribuído à parada em cada nova seção da rota. Se não houver parada nessa seção, defina o valor como 0.
Saída¶
- = 0: Nenhum erro ocorreu.
- < 0: Error.
Modificar a rota atual de transporte público¶
Em C++ e Python¶
Explicação¶
Modificar a rota de uma linha de transporte público. Isso adicionará à rota um novo conjunto de seções após uma seção de divergência designada. A proporção de veículos de transporte público que então usam este segmento de rota pode ser especificada. Ao final do subcaminho, a rota retorna à rota original da linha de transporte público.
Uma aplicação desta função seria em uma parada em uma linha de bonde quando há múltiplas plataformas para o mesmo destino e o requisito é selecionar uma delas. Os múltiplos caminhos que podem ser adicionados são mostrados abaixo.

Formato¶
int AKIActionAddNextSubPathPTAction(int ang_sectionId, int nbSections, int * aSections, int idline, int VehType, double acomplianceLevel, double visibilityDistance);
Parâmetros¶
- ang_sectionId: O identificador da última seção antes do desvio.
- nbSections: O número de seções subsequentes fornecidas.
- aSections: Um array contendo os identificadores das novas seções atribuídas à nova rota. A última seção no subcaminho também deve ser uma seção na rota de transporte público.
- idline: Identificador da linha de transporte coletivo. Somente veículos de transporte coletivo seguindo esta linha serão afetados.
- VehType: Tipo de veículo de transporte público. Somente veículos de transporte público deste tipo serão afetados. Um valor de 0 implica todos os tipos de veículos de transporte público que seguem a linha de transporte público.
- acomplianceLevel: A proporção de veículos de transporte coletivo que seguirá a nova rota no intervalo 0 - 1.
- visibilityDistance: A distância em metros onde os veículos começam a ver a ação.
Saída¶
- Ponteiro de referência da ação.
- NULL/None: Erro
Modificar a rota de transporte coletivo atual e as paradas de transporte coletivo associadas¶
Em C++ e Python¶
Explicação¶
Modificar a rota de uma linha de transporte público adicionando novas seções com paradas de transporte público associadas.
Formato¶
int AKIActionAddNextSubPathAndStopsPTAction(int ang_sectionId, int nbSections, int * aSections, int *aStops, double *aDwellTime, double *aOffset, int idline, int VehType, double acomplianceLevel, double , double visibilityDistance);
Parâmetros¶
- ang_sectionId: O identificador da última seção antes do desvio.
- nbSections: O número de seções subsequentes fornecidas. Isso também fornece o tamanho dos arrays de novas paradas, tempo de permanência e deslocamento.
- aSections: Um array contendo os identificadores das novas seções atribuídas à nova rota. A última seção no subcaminho também deve ser uma seção na rota de transporte público.
- aStops: Um array contendo os identificadores das paradas atribuídas em cada nova seção da rota. Onde nenhuma parada estiver definida, é definido um valor zero.
- aDwellTime: Um array contendo o tempo de permanência atribuído à parada em cada nova seção da rota. Se não houver parada nessa seção, defina o valor como 0..
- aOffset: Uma matriz contendo o valor de offset que fornece o horário de partida atribuído à parada em cada nova seção da rota. Se não houver parada nessa seção, defina o valor como 0..
- idline: Identificador da linha de transporte público. Somente veículos de transporte público que seguem esta linha de transporte público são afetados.
- VehType: Tipo de veículo de transporte público. 0 significa que afeta qualquer tipo de veículo que siga a Linha de transporte público.
- acomplianceLevel: A proporção de veículos que seguirão a nova rota no intervalo 0 - 1.
- visibilityDistance: distância em metros a partir da qual os veículos começam a ver a ação.
Saída¶
- Ponteiro de referência da ação.
- NULL/None: Erro