Skip to content

Aimsun Next API Gerenciando 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
  • &gt = 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.


Sub Caminhos de Transporte

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