Aimsun Next API Gerenciando Transporte Público¶
Funções relacionadas a Gerenciar 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: Erro.
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 na faixa 0 ≤ elem < Número de Linhas -1.
Saída¶
- ≥ 0: Identificador da linha de transporte público.
- < 0: Erro.
Ler o número de veículos em uma Linha de Transporte Público¶
Em C++ e Python¶
Explicação¶
Ler o número de veículos que atualmente seguem 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: Erro.
Ler o identificador de um veículo em uma Linha de Transporte Público¶
Em C++ e Python¶
Explicação¶
Lê o identificador do veículo da n-ésima veículo na rota de uma 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. Deve estar na faixa 0 ≤ vehPost < AKIGetNbVehiclesFollowingPTLine.
Saída¶
- ≥ 0: Identificador do veículo na rota da linha de transporte público.
- < 0: Erro.
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: Erro.
Ler o identificador de uma seção em uma Linha de Transporte Público¶
Em C++ e Python¶
Explicação¶
Lê o identificador da seção da n-ésima seção na rota de uma 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 na faixa 0 ≤ elem < Número de Seções -1.
Saída¶
- ≥ 0: Identificador da seção elem-ésima na rota da linha de transporte público.
- < 0: Erro.
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: Erro.
Ler o identificador de uma parada em uma Linha de Transporte Público¶
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 a AKIPTGetNumberStopsInLine (para a linha de transporte público).
Saída¶
- ≥ 0: Identificador da parada elem-ésima na linha de transporte público.
- < 0: Erro.
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 sendo utilizados. Um valor de 1 a AKIVehGetNbVehTypes() deve ser usado.
- tracking: Falso quando o veículo não deve ser rastreado, verdadeiro caso contrário.
Saída¶
- ≥ 0: identificador do 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 está entre 0 a AKIPTGetNumberStopsInLine (para a linha de transporte público).
Saída¶
- > = 0: Tempo de Parada.
- < 0: Erro.
Modificar um Tempo de Parada de um Veículo de Transporte Público¶
Em C++ e Python¶
Explicação¶
Modificar 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 a AKIPTGetNumberStopsInLine (para a linha de transporte público).
- stopTime: O novo tempo de parada do veículo na parada (em segundos).
Saída¶
- = 0: Nenhum erro ocorreu.
- < 0: Erro.
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;
// Informações no Veículo quando está em uma seção
int idSection;
int segment;
int numberLane;
// Informações no Veículo quando está em um nó
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;
};
onde:
- report: 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 onde 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 onde 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) desde o início da seção, ou posição dentro do cruzamento dada pela distância da entrada do cruzamento.
- distance2End: Distância até o final 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 final da curva quando o veículo está em um cruzamento.
- xCurrentPos, yCurrentPos, zCurrentPos: Coordenadas do mundo do ponto médio do para-choque dianteiro do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: Coordenadas do mundo 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 no passo 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á o mesmo que o SystemEntranceT.
- SystemEntranceT: O tempo absoluto de entrada do veículo no sistema, significando em sua seção de entrada. Se nenhuma fila virtual for encontrada na seção de entrada, será o mesmo que o SystemGenerationT.
- SectionEntranceT: O tempo absoluto de entrada do veículo na seção atual.
- CurrentStopTime: O tempo de parada atual.
- stopped: Verdadeiro se o veículo permanece parado.
- mNbLostTurnings: O número de curvas perdidas.
- 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 parando atualmente em uma parada ou o identificador da parada atual quando ele está na parada.
- offsetInNextStop: Deslocamento atribuído à 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 de 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 chegar ao seu destino.
Ler as Informações Estáticas de um Veículo de Transporte Público¶
Em C++ e Python¶
Explicação¶
Ler 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;
};
onde:
- report: 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 yield (segundos).
- guidanceAcceptance: O nível de conformidade do veículo às indicações de orientação.
- enrouted: 0: o veículo não atualizará o caminho durante a rota. 1: o veículo mudará o caminho durante a rota. Isso depende da porcentagem de veículos que atualizam o caminho durante a rota definida para o tipo de veículo.
- equipped: 0: o veículo não está equipado. 1: o veículo está equipado.
- tracked: 0: o veículo não é rastreado. 1 significa que o veículo é rastreado.
- keepfastLane: O veículo mantém a faixa rápida durante a ultrapassagem.
- safetyMarginFactor: Fator de margem de segurança.
- headwayMin: Cabeça mínima a ser mantida com 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 é o primeiro da 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 (emissão, consumo, modelos de aceleração MFC), onde: Nenhum = 0, Gasolina = 1, Diesel = 2, Elétrico = 3, GLP = 4.
- EUEmissionId: Identificador do Padrão de Emissão para LEM. Nulo= 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 (Veículos Leves (carro, táxi, 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 (Veículos Pesados (LGV, HGV, Ônibus, Microônibus)).
- energyCapacity: Capacidade total do tanque (l) ou da bateria (kW).
Modificar as Informações Estáticas de um Veículo de Transporte Público¶
Em C++ e Python¶
Explicação¶
Modificar 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, enrouted, equipped, tracked, keepfastLane, safetyMarginFactor, headwayMin, sensitivityFactor, reactionTime, reactionTimeAtStop, e reactionTimeAtTrafficLight. 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: Nenhum erro.
- < 0: Erro.
Modificar a carga atual do veículo¶
Em C++ e Python¶
Explicação¶
Modificar 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: Erro.
Modificar a rota atual do veículo¶
Em C++ e Python¶
Explicação¶
Modificar a rota do veículo de transporte público. Isso fará com que um veículo especificado desvie de sua rota prescrita, visite paradas de ônibus nesse desvio e retorne à sua rota original ao final do desvio. Esta função é destinada ao uso em 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 indicar o tamanho das paradas novas, tempo de permanência e arrays de deslocamento.
- aSections: Array contendo os identificadores das seções atribuídas à nova rota. A primeira seção e a última seção devem fazer parte da linha de transporte original.
- aNewstops: Array contendo os identificadores das 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 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: Array contendo o valor de deslocamento que dá 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: Erro.
Modificar a rota atual do 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 usarão esse segmento de rota pode ser especificada. Ao final do subcaminho, a rota reverte para a rota original da linha de transporte.
Uma aplicação para essa função seria em uma parada em uma linha de VLT quando há múltiplas plataformas para o mesmo destino e a necessidade é selecionar uma. 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 da divergência.
- 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 do transporte público.
- idline: Identificador da linha de transporte público. Somente veículos de transporte público que seguem essa linha de transporte serão afetados.
- VehType: Tipo de veículo de transporte público. Somente veículos de transporte público desse 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.
- acomplianceLevel: A proporção de veículos de transporte público que tomará a nova rota na faixa de 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/Nenhum: Erro
Modificar a rota atual do transporte público e as paradas 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 da divergência.
- nbSections: O número de seções subsequentes fornecidas. Isso também dá o tamanho das novas paradas, tempo de permanência e arrays de 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 do transporte público.
- aStops: Um array contendo os identificadores das paradas atribuídas em cada nova seção da rota. Onde nenhuma parada está definida, um valor zero é definido.
- 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: Um array contendo o valor de deslocamento que dá 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 essa linha de transporte são afetados.
- VehType: Tipo de veículo de transporte público. 0 significa que afeta qualquer tipo de veículo seguindo a linha de transporte.
- acomplianceLevel: A proporção de veículos que tomará a nova rota na faixa de 0 - 1.
- visibilityDistance: 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/Nenhum: Erro