Mudanças na API¶
As mudanças na API nas versões recentes do Aimsun Next são:
Mudanças na versão 23.0.2¶
Funções relevantes para Eventos de Padrão de Detecção¶
O parâmetro isSection foi removido das seguintes funções:
- int AKIInfNetGetIdObjectofOriginCentroidConnector(int aid, int elem);
- int AKIInfNetGetIdObjectofDestinationCentroidConnector(int aid, int elem);
- int AKIInfNetGetIdObjectANGofOriginCentroidConnector(int aid, int elem);
- int AKIInfNetGetIdObjectANGofDestinationCentroidConnector(int aid, int elem);
AKIInfNetGetIdObjectofOriginCentroidConnector
Mudanças na versão 23.0.1¶
Funções relevantes para Eventos de Padrão de Detecção¶
Em versões anteriores, a função para adicionar Eventos de Padrão de Detector exigia que o horário de início e fim do evento fosse expresso como tempo da simulação, em segundos desde a meia-noite. Isso impossibilitou a execução de eventos durante um aquecimento. Uma nova função para adicionar eventos com horários relativos foi adicionada:
- void AKIDetectorEventsAddEventRelativeTime(int iddet, double aIniTime, double aEndTime, int vehType, double speed, double length, int idPTline);
As funções antigas são mantidas por motivos de compatibilidade, mas são consideradas obsoletas e serão removidas em versões futuras.
Mudanças na versão 23¶
Atributos adicionados ou modificados para InfVeh e InfPTVeh¶
- Adicionado atributo isLost, usado para retornar se o veículo não consegue mais alcançar seu destino, tanto para InfVeh quanto para InfPTVeh.
- Do InfPTVeh, o atributo mal escrito theoricalGenerationTime foi renomeado para theoreticalGenerationTime.
Atributo adicionado ao StaticInfPed¶
- Adicionado atributo typeID para obter o tipo de pedestre.
Mudanças na versão 22.0.2¶
Adicionadas todas as variáveis ausentes para períodos global, parcial e atual nas seguintes entidades:¶
StructAkiEstadSystem:¶
-
int vehOut: Veículos que saíram da rede.
-
int totalNumStops: Total de paradas.
-
double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permanecem esperando em uma fila virtual. Apenas em seções de entrada.
StructAkiEstadSection:¶
-
int numVehiclesInVQ: Total de veículos em filas virtuais.
-
double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permanecem esperando em uma fila virtual. Apenas em seções de entrada.
Não foram adicionadas as estatísticas ausentes de dTimeTTime, pois é permitido calcular a partir do tempo de atraso e do tempo de viagem.
StructAkiEstadSectionLane:¶
-
int count: Contagem.
-
int inputCount: Contagem de entrada.
-
int inputFlow: Fluxo de entrada.
-
double STa,STd: Média e desvio do tempo de parada.
-
double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permanecem esperando em uma fila virtual. Apenas em seções de entrada.
Não foram adicionadas as estatísticas ausentes de dTimeTTime porque é permitido calcular a partir do tempo de atraso e do tempo de viagem.
StructAkiEstadTurning:¶
-
int count: Contagem.
-
int inputCount: Contagem de Entrada.
-
int inputFlow: Fluxo de Entrada.
-
double virtualQueueAvg: Média da fila virtual.
-
int virtualQueueMax: Máximo de fila virtual.
-
int vehLost: Total de veículos perdidos.
-
int vehMissed: Total de veículos que não foram pegos.
StructAkiEstadODPair:¶
-
int count: Contagem.
-
int inputCount: Contagem de Entrada.
-
int inputFlow: Fluxo de Entrada.
-
int vehLost: Total de veículos perdidos.
-
double dwellTime, dwellTimeDev: Tempo que um veículo passa em uma parada programada sem se mover. Apenas para veículos de linha de Transporte Público.
-
double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permanecem esperando em uma fila virtual. Apenas em seções de entrada.
StructAkiEstadStream:¶
-
int count: Contagem.
-
int inputCount: Contagem de Entrada.
-
int inputFlow: Fluxo de Entrada.
-
int vehLost: Total de veículos perdidos.
-
double dwellTime, dwellTimeDev: Tempo que um veículo passa em uma parada programada sem se mover. Apenas para veículos de linha de Transporte Público.
-
double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permanecem esperando em uma fila virtual. Apenas em seções de entrada.
Mudanças na versão 22¶
Funções relevantes para Gerenciamento do Transporte Público¶
Parâmetros obsoletos VehType, acomplianceLevel e visibilityDistance foram removidos de:
- int AKIActionAddNextSubPathAndStopsPTAction(int ang_sectionId, int nbSections, int * aSections, int * aStops, double * aDwellTime, double * aOffset, int idline );
Atributos adicionados a StaticInfVeh e StaticInfPTVeh¶
- Adicionado identificador engineTypeId, usado para classificar veículos por tipo de motor no modelo de aceleração MFC, modelos de emissões, modelos de consumo, onde: Nenhum = 0, Gasolina = 1, Diesel = 2, Elétrico = 3, Gás Liquefeito de Petróleo = 4.
- Adicionado (por enquanto, apenas para StaticInfVeh) identificador vehicleSegmentId, usado para classificar veículos por segmento (perfis) no modelo de aceleração MFC (modelo de aceleração MFC e modelo de consumo de bateria).
- Adicionado identificador EUEmissionId, usado para classificar veículos por tipo de emissão no modelo LEM (Modelo de Emissão de Londres).
- Adicionado parâmetro energyCapacity, capacidade do tanque de combustível (l) ou capacidade da bateria (kW) para o modelo de consumo de energia (Modelo de Consumo de Energia).
Atributos adicionados a InfVeh e InfPTVeh¶
- Adicionada variável energyState, nível atual de combustível ou capacidade atual da bateria (%) (Modelo de Consumo de Energia).
Nova estrutura adicionada LeaderInfVeh¶
Contém as seguintes informações sobre o líder:
- report: 0, OK, caso contrário, código de erro
- idVeh: identificador do veículo
- idLeaderVeh: identificador do veículo líder, 0 se não houver líder
- headway: tempo entre o para-choque dianteiro de um veículo e o para-choque dianteiro do veículo seguinte (s)
- gap: tempo entre o para-choque traseiro de um veículo e o para-choque dianteiro do veículo seguinte (s)
- spacing: espaço entre o para-choque dianteiro de um veículo e o para-choque dianteiro do veículo seguinte (m)
- clearance: espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m)
Funções relevantes para veículos simulados¶
Quatro novas funções foram adicionadas para fornecer acesso à nova estrutura chamada LeaderInfVeh e para obter informações sobre o veículo líder:
- LeaderInfVeh AKIVehGetLeaderInfVeh( int aidVeh )
- LeaderInfVeh AKIVehGetLeaderInfVeh( int aidVeh )
- LeaderInfVeh AKIVehGetLeaderVehInfSection( int aidSec, int indexveh )
- LeaderInfVeh AKIVehGetLeaderVehInfJunction( int ajunction, int indexveh )
Quatro novos parâmetros foram adicionados à estrutura StaticInfVeh retornada pela chamada AKIVehTrackedGetStaticInf, pela chamada AKIVehGetVehicleStaticInfSection e pela chamada AKIVehGetVehicleStaticInfJunction:
- engineTypeId, identificador usado para classificar veículos por motor no MFC aceleração, modelos de emissão, modelos de consumo, onde: Nenhum = 0, Gasolina = 1, Diesel = 2, Elétrico = 3, Gás Liquefeito de Petróleo = 4.
- vehicleSegmentId, identificador, usado para classificar veículos por segmento (perfis) em MFC aceleração.
- EUEmissionId, identificador usado para classificar veículos por tipo de emissão no modelo LEM.
- energyCapacity, capacidade do tanque de combustível (l) ou capacidade da bateria (kW) para o modelo de consumo de energia.
Dois novos parâmetros foram retornados pelas duas novas funções AKIVehTrackedGetVehicleCategoryId, a chamada AKIVehTrackedGetLEMEmissionVehicleTypeId:
- vehicleCategoryId, identificador da categoria do veículo incluindo no tipo de veículo para composição do motor: Carro, Veículo comercial, Ônibus, Motocicleta e Não motorizado.
- EMEmissionVehicleTypeId, tipo de veículo de emissão incluindo no tipo de veículo para o modelo LEM (depende da categoria do veículo): Carro, Táxi, LGV, HGV, Ônibus de um andar, Ônibus de dois andares, ônibus executivo.
Funções relevantes para entidades¶
StructAkiEstadSystem¶
- StructAkiEstadSystem AKIEstGetGlobalStatisticsSystemBatteryCons(int VehType, double& batteryConsumption);
- StructAkiEstadSystem AKIEstGetParcialStatisticsSystemBatteryCons(double time, int VehType, double &batteryConsumption);
- double AKIEstGetGlobalStatisticsSystemBatteryConsumption(int VehType);
- double AKIEstGetParcialStatisticsSystemBatteryConsumption(double time, int VehType);
StructAkiEstadSection¶
- StructAkiEstadSection AKIEstGetGlobalStatisticsSectionBatteryCons(int aidarc, int VehType, double& batteryConsumption);
- StructAkiEstadSection AKIEstGetParcialStatisticsSectionBatteryCons(int aidarc, double time, int VehType, double& batteryConsumption);
- StructAkiEstadSection AKIEstGetCurrentStatisticsSectionBatteryCons(int aidarc, int VehType, double & batteryConsumption);
- double AKIEstGetGlobalStatisticsSectionBatteryConsumption(int aidarc, int VehType);
- double AKIEstGetParcialStatisticsSectionBatteryConsumption(int aidarc, double time, int VehType);
- double AKIEstGetCurrentStatisticsSectionBatteryConsumption(int aidarc, int VehType);
StructAkiEstadTurning¶
- StructAkiEstadTurning AKIEstGetGlobalStatisticsTurningBatteryCons(int aidsectionFrom, int aidsectionTo, int VehType, double& batteryConsumption);
- StructAkiEstadTurning AKIEstGetParcialStatisticsTurningBatteryCons(int aidsectionFrom, int aidsectionTo, double time, int VehType, double& batteryConsumption);
- StructAkiEstadTurning AKIEstGetCurrentStatisticsTurningBatteryCons(int aidsectionFrom, int aidsectionTo, int VehType, double& batteryConsumption);
- double AKIEstGetGlobalStatisticsTurningBatteryConsumption(int aidsectionFrom, int aidsectionTo, int VehType);
- double AKIEstGetParcialStatisticsTurningBatteryConsumption(int aidsectionFrom, int aidsectionTo, double time, int VehType);
- double AKIEstGetCurrentStatisticsTurningBatteryConsumption(int aidsectionFrom, int aidsectionTo, int VehType);
StructAkiEstadTurning (Link)¶
- StructAkiEstadTurning AKIEstGetGlobalStatisticsLinkBatteryCons(int aidsectionFrom, int aidsectionTo, int VehType, double& batteryConsumption);
- StructAkiEstadTurning AKIEstGetParcialStatisticsLinkBatteryCons(int aidsectionFrom, int aidsectionTo, double time, int VehType, double& batteryConsumption);
- StructAkiEstadTurning AKIEstGetCurrentStatisticsLinkBatteryCons(int aidsectionFrom, int aidsectionTo, int VehType, double& batteryConsumption);
- double AKIEstGetGlobalStatisticsLinkBatteryConsumption(int aidsectionFrom, int aidsectionTo, int VehType);
- double AKIEstGetParcialStatisticsLinkBatteryConsumption(int aidsectionFrom, int aidsectionTo, double time, int VehType);
- double AKIEstGetCurrentStatisticsLinkBatteryConsumption(int aidsectionFrom, int aidsectionTo, int VehType);
StructAkiEstadODPair¶
- StructAkiEstadODPair AKIEstGetGlobalStatisticsODPairBatteryCons(int idOrigin, int idDestination, int VehType, double& batteryConsumption);
- StructAkiEstadODPair AKIEstGetParcialStatisticsODPairBatteryCons(int idOrigin, int idDestination, double time, int VehType, double &batteryConsumption);
- double AKIEstGetGlobalStatisticsODPairBatteryConsumption(int idOrigin, int idDestination, int VehType);
- double AKIEstGetParcialStatisticsODPairBatteryConsumption(int idOrigin, int idDestination, double time, int VehType);
StructAkiEstadStream¶
- StructAkiEstadStream AKIEstGetParcialStatisticsStreamBatteryCons(int aidstream, double time, int VehType, double& batteryConsumption);
- StructAkiEstadStream AKIEstGetGlobalStatisticsStreamBatteryCons(int aidstream, int VehType, double& batteryConsumption);
- double AKIEstGetParcialStatisticsStreamBatteryConsumption(int aidstream, double time, int VehType);
- double AKIEstGetGlobalStatisticsStreamBatteryConsumption(int aidstream, int VehType);
Nova versão do Python para APIs em Python¶
O Aimsun Next 22 foi lançado apenas com Python 3. O suporte ao Python 2 foi descontinuado. A versão do Ubuntu usa Python 3.7 e as versões para Mac e Windows requerem Python 3.10.
Mudanças na versão 20¶
Funções relevantes para gerenciamento de tráfego¶
Um novo parâmetro para especificar a seção que afetará os custos de cálculo do caminho foi adicionado a essas duas funções:
-
void * AKIActionAddCloseTurningODAction(int sectionId, int anewSection2Close, int aOrigin, int aDest, int vehType, double acomplianceLevel, double visibilityDistance, bool localEffect, int sectionAffectingPathCostId )
-
void * AKIActionAddCloseTurningODActionByID(int sectionId, int anewSection2Close, int aOrigin, int aDest, int vehType, double acomplianceLevel, double visibilityDistance, bool localEffect, int sectionAffectingPathCostId )
Novas funções adicionadas:
- void * AKIActionAddTurnSpeedActionByID( int idAction, int nbTurns, int * turnIDs, double speed, int vehicleType, double complianceLevel, bool considerSpeedAcceptance )
Funções e atributos relevantes para velocidade de caixa amarela¶
- A velocidade da caixa amarela nas seções não está mais disponível. Os structs A2KSectionInf e A2KSectionBehaviourParam obsoletos "double yellowBoxSpeed" foram removidos.
- A2KTurnInf tem um novo parâmetro para saber se uma curva levará em conta a caixa amarela.
Atributos removidos de StaticInfVeh e StaticPTVeh¶
- O parâmetro obsoleto minSafetyDistance foi removido de StaticInfVeh e StaticPTVeh.
Funções relacionadas à Entrada de Veículo¶
Três novos parâmetros foram adicionados para permitir o posicionamento bidimensional de um veículo:
- int AKIPutVehTrafficOD(int asection, int idLane, int vehTypePos, int idCentroidOr, int idCentroidDest, double initPosition, double initSpeed, int tracking, bool use2Dim, double initYPosition, double initYSpeed );
Nova versão do Python para APIs em Python¶
O Aimsun Next 20 foi lançado com 2 versões diferentes do Python. A versão do instalador Python 2 usa Python 2.7 enquanto a versão do instalador Python 3 usa Python 3.7.
Mudanças na versão 8.4.3 ¶
Nova versão do Visual Studio para APIs em C¶
O Aimsun Next 8.4.3 utiliza o Visual Studio 2019. Será necessário reconstruir qualquer API desenvolvida em 8.4.2 ou anteriormente com as novas bibliotecas fornecidas.
Até o Aimsun Next 8.4.2, a versão do Visual Studio era VS2013.
Funções relevantes para detectores¶
- StaticInfVehACCParams AKIDetGetInfVehInDetectionStaticInfVehACCParamsCyclebyId(int IdDetector, int elem, int vehTypePos)
- StaticInfVehACCParams AKIDetGetInfVehOverStaticInfVehACCParamsCyclebyId(int IdDetector, int elem, int vehType)
- StaticInfVehACCParams AKIDetGetInfVehInDetectionStaticInfVehACCParamsInstantDetectionbyId(int IdDetector, int elem, int vehTypePos, double endTime)
- StaticInfVehACCParams AKIDetGetInfVehInOverStaticInfVehACCParamsInstantDetectionbyId(int IdDetector, int elem, int vehType, double endTime)
Funções relevantes para veículos simulados¶
Nova estrutura StaticInfVehACCParams foi criada. Esses são os parâmetros.
Parâmetros comuns a todos os veículos simulados:
- report: Código de erro retornado (0 significa sucesso).
- idVeh: ID do veículo simulado.
- accType: O módulo ACC do veículo simulado (0: Nenhum, 1: ACC, 2: CACC).
Parâmetros do Modelo ACC:
(Todos esses parâmetros serão -1 quando o módulo estiver desativado)
- minClearanceDistance: O limite inferior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- maxClearanceDistance: O limite superior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- speedGainFreeFlow: O ganho na diferença de velocidade entre a velocidade de fluxo livre e a velocidade atual do veículo em questão (s-1).
- distanceGain: O ganho na diferença de posição entre o veículo precedente e o veículo em questão (s-2).
- speedGainPrec: O ganho na diferença de velocidade entre o veículo precedente e o veículo em questão (s-1).
- desiredTimeGap: O tempo de gap desejado do controlador ACC (s).
Parâmetros do Modelo CACC:
(Todos esses parâmetros serão -1 quando o módulo estiver desativado)
- connectedDistanceGain: O ganho na diferença de posição entre o veículo conectado precedente e o veículo CACC em questão (s-1).
- connectedSpeedGain: O ganho na diferença de velocidade entre o veículo conectado precedente e o veículo CACC em questão.
- minTimeGapThreshold: O limite inferior para o tempo gap (s).
- maxTimeGapThreshold: O limite superior para o tempo gap (s).
- followerTimeGap: O tempo de gap constante entre o último veículo da string conectada precedente e o veículo CACC em questão (s).
- leaderTimeGap: O tempo de gap constante entre o último veículo da string conectada precedente e o veículo CACC em questão (s).
As seguintes funções podem ser usadas para obter informações de veículos simulados com módulos ACC/CACC.
- StaticInfVehACCParams AKIVehGetVehicleStaticInfACCParamsSection( int aidSec, int indexveh );
- StaticInfVehACCParams AKIVehGetVehicleStaticInfACCParamsJunction( int ajunction, int indexveh );
- StaticInfVehACCParams AKIVehGetStaticInfACCParams( int aidVeh );
- StaticInfVehACCParams AKIVehTrackedGetStaticInfACCParams( int aidVeh );
As seguintes funções podem ser usadas para modificar os parâmetros de veículos simulados com módulos ACC/CACC.
- int AKIVehSetVehicleStaticInfACCParamsSection( int aidSec, int indexveh, StaticInfVehACCParams staticinfVehACC )
- int AKIVehSetVehicleStaticInfACCParamsJunction( int ajunction, int indexveh, StaticInfVehACCParams staticinfVehACC )
- int AKIVehSetStaticInfACCParams( int aidVeh, StaticInfVehACCParams staticinfVehACC );
- int AKIVehTrackedSetStaticInfACCParams( int aidVeh, StaticInfVehACCParams staticinfVehACC );
Funções relevantes para modificar ações de tráfego¶
Novas funções para criar novas ações forçadas de curva seguindo um sub-rastro pelo ID foram adicionadas:
-
void * AKIActionAddNextSubPathODActionByID(int actionId, int ang_sectionId, int nbNextSections, int * anextSections, int aOrigin, int aDest, int VehType, int asectionInPath, double acomplianceLevel, double visibilityDistance);
-
void * AKIActionAddNextSubPathResultActionByID(int actionId, int ang_sectionId, int nbNextSections, int * anextSections, int VehType, double acomplianceLevel);
Mudanças na versão 8.4.2 ¶
Funções relevantes para modificar ações de tráfego¶
Novas funções para mudar o nível de conformidade em uma ação de Atualização de Caminho Forçado.
-
void AKIActionModifyEnRouteAssignmentAction(void *a2kaction, double acomplianceLevel);
-
void AKIActionModifyEnRouteAssignmentActionByID(int a2kactionId, double acomplianceLevel);
Funções relevantes para gerenciar Planos de Controle¶
Várias funções para obter o tempo amarelo ao transitar do vermelho para o verde agora estão disponíveis.
Novas funções para obter e definir o tempo amarelo antes do verde de uma fase de plano de controle:
-
int ECIGetYellowTimeBeforeGreenPhase(int idJunction,int idPhase, double timeSta, double *yellowBeforeGreen);
-
int ECISetYellowTimeBeforeGreenPhase(int idJunction,int idPhase, double timeSta, double yellowBeforeGreen);
-
int ECIGetYellowTimeBeforeGreenPhaseofJunction(int elemControl, int idJunction, int idPhase, double timeSta, double *yellowBeforeGreen);
-
int ECISetYellowTimeBeforeGreenPhaseofJunction(int elemControl, int idJunction, int idPhase, double yellowBeforeGreen);
Novas funções para obter e definir o tempo amarelo antes do verde de um sinal de plano de controle em uma junção de plano de controle:
-
double ECIGetYellowTimeBeforeGreen(int idJunction);
-
double ECIGetYellowTimeBeforeGreenofJunction(int elemControl, int ajunction);
Nova função para obter o tempo amarelo antes do verde de um sinal de grupo semafórico em uma junção de plano de controle:
- int ECIGetSignalGroupYellowBeforeGreenDuration(int idJunction, int signalPos, double timeSta );
Funções relevantes para Estacionamento¶
Uma nova função de alto nível em micro para informar que um novo veículo inicia uma manobra de estacionamento foi adicionada:
- AAPIVehicleStartParking (int idveh, int idsection, double time);
Funções para eventos de simulação na API Meso¶
Duass novas funções para interagir com o simulador antes do ciclo estatístico e o ciclo estatístico de detecção foram implementadas:
-
int MesoAPINewStatisticalInterval(void * simhandler)
-
int MesoAPINewDetectorStatisticalInterval(void * simhandler)
Funções relevantes para uma mudança no estado do veículo na API Meso¶
Funções chamadas quando o estado de um veículo muda.
- int MesoAPIVehicleAtPTStop(void * simhandler, void * vehhandler, int section, int transitstop)
Mudanças na versão 8.4.1 ¶
Funções relevantes para detectores¶
As seguintes funções relevantes para detectores foram adicionadas:
- int AKIDetGetNbVehsEquippedOverCyclebyId(int IdDetector, int vehTypePos)
-
int AKIDetGetNbVehsEquippedOverInstantDetectionbyId(int IdDetector, int vehTypePos, double endtime)
-
StaticInfVeh AKIDetGetInfVehOverStaticInfVehCyclebyId(int IdDetector, int elem, int vehTypePos)
-
StaticInfVeh AKIDetGetInfVehInOverStaticInfVehInstantDetectionbyId(int IdDetector, int elem, int vehTypePos, double endtime)
-
InfVeh AKIDetGetInfVehOverInfVehCyclebyId(int IdDetector, int elem, int vehTypePos)
- InfVeh AKIDetGetInfVehOverInfVehInstantDetectionbyId(int IdDetector, int elem, int vehTypePos, double endtime)
Funções relevantes para gerenciamento de tráfego¶
Funções para desativar uma faixa reservada usando uma ação de gerenciamento de tráfego foram adicionadas:
-
void * AKIActionDisableReservedLaneAction(int sectionId, int alane, int ang_segmentId)
-
void * AKIActionDisableReservedLaneActionByID(int actionId, int sectionId, int alane, int ang_segmentId)
Funções para criar ações de gerenciamento de tráfego para forçar curvas com subcaminhos também foram adicionadas. As existentes foram marcadas como obsoletas. Verifique a seção Ativar uma Ação de Força da Próxima Curva para mais detalhes:
-
void * AKIActionAddForceTurningODActionByID( int idAction, int sectionId, const std::vector
& aNextSections, int aOrigin, int aDest, int vehType, int aSectionInPath, double aComplianceLevel, double visibilityDistance ) -
void * AKIActionAddForceTurningODSubPathActionByID( int idAction, int sectionId, const std::vector
& aNextSections, int aOrigin, int aDest, int vehType, int aSectionInPath, double aComplianceLevel, double visibilityDistance ) -
void * AKIActionAddForceTurningResultActionByID( int idAction, int sectionId, int aOldNextSection, const std::vector
& aNewNextSections, int vehType, double aComplianceLevel ) -
void * AKIActionAddForceTurningResultSubPathActionByID( int idAction, int sectionId, const std::vector
& aNextSections, int vehType, double aComplianceLevel )
Funções relevantes para incidentes¶
A função usada para criar um incidente com diferentes distâncias de visibilidade por tipo de veículo. A função modificada é:
- int AKIGenerateIncidentDistancePerVehTypeint asection, int alane, double position, double length, double initime, double duration, double visibilityDistanceGeneral, int nbVehTypes, int * vehType, double * visibilityDistances, bool updateidGroup, bool applySpeedReduction, double upstreamDistanceSR, double downstreamDistanceSR, double maxSpeedSR)
Funções relacionadas a trajetórias de veículos¶
Uma nova função para atribuir uma trajetória com base em faixas específicas em seções para um veículo agora está disponível.
- int AKIVehTrackedSetLanesTrajectory(int idVehicle, int nbSegmentsInTrajectory, int * sectIds, int * lanes, int idLastSection)
Mudanças na versão 8.4.0 ¶
Funções relevantes para veículos simulados¶
Três novos parâmetros foram adicionados à estrutura StaticInfVeh retornada pela chamada AKIVehTrackedGetStaticInf e pela chamada AKIVehGetVehicleStaticInfSection:
- laneChangingCooperation: O veículo está atualmente cooperando na manobra de mudança de faixa de outro veículo.
- laneChangingAggressivenessLevel: O fator de agressividade para este veículo na mudança de faixa, onde 0% significa que o espaço de segurança total é necessário para a mudança de faixa e 100% significa que o espaço mínimo é aceito na mudança de faixa.
- distanceZoneFactor: O multiplicador que este veículo aplica às distâncias das zonas 1,2,3 que controlam quando ele começa a considerar uma próxima mudança de faixa. Um valor > 1 implica que ele tenta entrar na faixa mais cedo que o normal e um valor < 1 implica que ele tenta entrar na faixa mais tarde que o normal.
Funções relevantes para tipos de veículos¶
Funções para modificar os parâmetros relacionados ao comportamento de mudança de faixa para os tipos de veículos foram adicionadas. As funções são:
- double AKIVehTypeGetOvertakeSpeedThreshold( int idVehicleType )
- int AKIVehTypeSetOvertakeSpeedThreshold( int idVehicleType, double newPercentage )
- double AKIVehTypeGetLaneRecoverySpeedThreshold( int idVehicleType )
- int AKIVehTypeSetLaneRecoverySpeedThreshold( int idVehicleType, double newPercentage )
Mudanças na versão 8.3.0¶
Funções relevantes para prioridade no transporte público¶
- int ECIIsBusPreemptionNodeEnabled(int idJunction);
Funções relevantes para plano de controle¶
- int ECIGetControlCycleofJunction(int elemControl, int idJunction);
Funções para remover ou modificar ações de gerenciamento de tráfego usando o identificador de ação.¶
- void AKIActionAddSpeedActionByID(int idAction, int nbSections, int *sectionIDs, double newSpeed, int vehTypePos, double compliance, bool considerSpeedAcceptance);
- void AKIActionAddDetailedSpeedActionByID(int idAction, int nbSections, int *sectionIDs, int laneId, int and_fromSegmentId, int and_toSegmentId, double newSpeed, int vehType, double complianceLevel, bool considerSpeedAcceptance);
- void AKIActionAddChangeDestActionByID(int idAction, int sectionId, const std::vector
& aNextSections, int originCent, int destCent, int vehTypePos, double compliance); - void AKIActionAddChangeDestParkRideActionByID(int idAction, int sectionId, const std::vector
& aNextSections, int originCent, int destCent, int vehTypePos, double compliance, double scaleFactor); - void AKIActionAddEnRouteAssignmentAction(int actionId, int sectionId, int sectionInPath, int originCent, int destCent, int vehTypePos, double compliance, bool reevaluateAction, int routeChoiceType, double routeChoiceParam1, double routeChoiceParam2, double routeChoiceParam3);
Mudanças na versão 8.2.4¶
Funções relevantes para planos de controle¶
Leia o tempo atual no ciclo em um anel de uma junção:
- double ECIGetCurrentTimeInCycle(int idJunction, int ring);
Mudanças na versão 8.2.3¶
Funções relevantes para Gerenciamento do Transporte Público¶
Agora é possível mudar o percurso de veículo de Transporte Público:
-
int AKIPTVehReroute(int aidVeh, int nbsections, int aSections, int aNewstops, double aDwellTime, double aOffset);
-
int AKIActionAddNextSubPathPTAction(int ang_sectionId, int nbSections, int * aSections, int idline, int VehType, double acomplianceLevel, double visibilityDistance);
-
int AKIActionAddNextSubPathAndStopsPTAction(int ang_sectionId, int nbSections, int * aSections, int aStops, double aDwellTime, double *aOffset, int idline, int VehType, double acomplianceLevel, double , double visibilityDistance);
Mudanças na versão 8.2.2¶
Funções relevantes para planos de controle¶
Agora é possível verificar se uma junção está habilitada para eventos:
- int ECIIsEventsEnabled(int idJunction);
Mudanças na versão 8.2.1¶
Funções relevantes para Planos de Controle¶
Função para obter o ID de um grupo semafórico em uma junção fornecendo a posição do grupo semafórico na lista de grupos semafóricos da junção.
- int ECIGetAimsunIdofSignalGroup (int ajunction, int asignalgroup);
Mudanças na versão 8.2.0¶
Funções relevantes para estatísticas de seção¶
Funções para obter as atuais estatísticas agregadas do intervalo. As estatísticas retornadas podem variar durante o período estatístico e são redefinidas após o fechamento de um período estatístico.
- StructAkiEstadSection AKIEstGetCurrentStatisticsSection(int aidarc, int VehType);
- StructAkiEstadSectionLane AKIEstGetCurrentStatisticsSectionLane(int aidarc, int indexLane, int VehType);
- double AKIEstGetCurrentStatisticsSectionFuelCons(int aidarc, int VehType);
- double AKIEstGetCurrentStatisticsSectionPollution(int indexPol, int aidarc, int VehType);
Funções relevantes para estatísticas de curva e link¶
Funções para obter as atuais estatísticas agregadas do intervalo. As estatísticas retornadas podem variar durante o período estatístico e são redefinidas após o fechamento de um período estatístico.
- StructAkiEstadTurning AKIEstGetCurrentStatisticsTurning(int aidsectionFrom, int aidsectionTo, int VehType);
- double AKIEstGetCurrentStatisticsTurningFuelCons(int aidsectionFrom, int aidsectionTo, int VehType);
- double AKIEstGetCurrentStatisticsTurningPollution(int indexPol, int aidsectionFrom, int aidsectionTo, int VehType);
- StructAkiEstadTurning AKIEstGetCurrentStatisticsLink(int aidsectionFrom, int aidsectionTo, int VehType);
- double AKIEstGetCurrentStatisticsLinkFuelCons(int aidsectionFrom, int aidsectionTo, int VehType);
- double AKIEstGetCurrentStatisticsLinkPollution(int indexPol, int aidsectionFrom, int aidsectionTo, int VehType);
Funções relevantes para Estados de Tráfego¶
Função para mudar a porcentagem de curva em uma demanda de estado de tráfego
- int AKIStateDemandSetTurningPercentage( int idSectionFrom, int idSectionTo, int vehType, int numSlice, double newPercentage);
Funções relevantes para incidentes¶
A função usada para criar um incidente precisa de quatro parâmetros adicionais para definir se deve aplicar uma redução de velocidade ao redor do incidente ou não. A função modificada é:
- int AKIGenerateIncident(int asection, int alane, double position, double length, double initime, double duration, double visibilityDistance, bool updateIdGroup, bool applySpeedReduction, double upstreamDistanceSR, double downstreamDistanceSR, double maxSpeedSR);
Funções relevantes para Gestão de Tráfego¶
Funções para remover e modificar ações de gerenciamento de tráfego usando o identificador.
- void AKIActionRemoveActionByID(int a2kactionId);
- void AKIActionModifyNextTurningODActionByID(int a2kactionId, double acomplianceLevel);
- void AKIActionModifyNextTurningResultActionByID(int a2kactionId, double acomplianceLevel);
- void AKIActionModifyChangeDestActionByID(int a2kactionId, double acomplianceLevel);
- void AKIActionModifyNextSubPathODActionByID(int a2kactionId, double acomplianceLevel);
- void AKIActionModifyNextSubPathResultActionByID(int a2kactionId, double acomplianceLevel);
- void AKIActionModifyCloseTurningODActionByID(int a2kactionId, double acomplianceLevel);
Funções relevantes para informações de veículos¶
- int AKIVehGetLeaderId(int vehicleId);
- int AKIVehGetFollowerId(int vehicleId);
Mudanças na versão 8.1.5¶
Funções relacionadas ao controle¶
Funções para obter informações em um plano de controle de junção.
- int ECIGetTypeControlofJunction(int elemControl,int ajunction);
- int ECIGetNbPhasesofJunction(int elemControl, int ajunction);
- int ECIGetNumberPhasesInRingofJunction(int elemControl, int idJunction, int ring);
- int ECIGetDurationsPhaseofJunction(int elemControl, int ajunction, int aidphase, double amax, double dur, double *amin);
- double ECIGetYellowTimeofJunction(int elemControl, int ajunction);
- int ECIGetYellowTimePhaseofJunction(int elemControl, int idJunction,int idPhase,double timeSta,double *yellow);
- int ECISetYellowTimePhaseofJunction(int elemControl, int idJunction,int idPhase, double yellow);
- int ECIIsAnInterPhaseofJunction(int elemControl, int idJunction,int idPhase);
Mudanças na versão 8.1.4¶
Funções relacionadas a dados estatísticos de detectores¶
Funções para obter as medidas do detector.
- StructAkiEstadDetector AKIEstGetGlobalStatisticsDetector(int detectorId, int vehType);
- StructAkiEstadDetector AKIEstGetParcialStatisticsDetector(int detectorId, double time, int vehType);
Funções relevantes para Controle¶
Funções para obter o número de fases em um anel, a fase atual em um anel e o número de anéis e barreiras em um plano de controle de junção.
- int ECIGetNbRingsJunction(int elemControl, int ajunction);
- int ECIGetCurrentNbRingsJunction(int ajunction);
- int ECIGetNbBarriersJunction(int elemControl, int ajunction);
- int ECIGetCurrentNbBarriersJunction(int ajunction);
- int ECIGetCurrentPhaseInRing(int idJunction, int ring);
- int ECIGetNumberPhasesInRing(int idJunction, int ring);
Mudanças na versão 8.1.3¶
Funções relevantes para conjuntos de prioridade¶
Funções para obter todas as informações da prioridade foram unificadas entre Python e C++ para que o uso fosse o mesmo em ambas as linguagens de programação.
- int ECIGetPreemptionSetNbLinesPython(int idJunction, double timeSta, int index);
- int ECIGetPreemptionSetLinesPython(int idJunction, double timeSta, int index, int nblines, int *lines);
- int ECIGetPreemptionSetNbPhasesPython(int idJunction, double timeSta);
- int ECIGetPreemptionSetPhasesPython(int idJunction, double timeSta, int index, int nbPhases , int *phases);
- int ECIGetPreemptionSetNbRequestDetectorsPython(int idJunction, double timeSta, int index);
- int ECIGetPreemptionSetRequestDetectorsPython(int idJunction, double timeSta, int index, int nbDetectors, int * detector);
- int ECIGetPreemptionSetNbEndDetectorsPython(int idJunction, double timeSta, int index);
- int ECIGetPreemptionSetEndDetectorsPython(int idJunction, double timeSta, int index, int nbDetectors, int * detectors);
Para fazer isso, os nomes das funções foram alterados para:
- int ECIGetPreemptionSetNbLines(int idJunction, double timeSta, int index);
- int ECIGetPreemptionSetLines(int idJunction, double timeSta, int index, int nblines, int *lines);
- int ECIGetPreemptionSetNbPhases(int idJunction, double timeSta);
- int ECIGetPreemptionSetPhases(int idJunction, double timeSta, int index, int nbPhases , int *phases);
- int ECIGetPreemptionSetNbRequestDetectors(int idJunction, double timeSta, int index);
- int ECIGetPreemptionSetRequestDetectors(int idJunction, double timeSta, int index, int nbDetectors, int * detectors);
- int ECIGetPreemptionSetNbEndDetectors(int idJunction, double timeSta, int index);
- int ECIGetPreemptionSetEndDetectors(int idJunction, double timeSta, int index, int nbDetectors, int * detectors);
e o método específico de C++ foi excluído.
Mudanças na versão 8.1.2¶
Funções relevantes para planos de controle¶
Agora é possível obter o ID Externo de um Grupo Semafórico:
- int ECIGetExternalIdofSignalGroup(int idJunction, int signalPos);
Mudanças na versão 8.1.0¶
Funções relevantes para Detectores¶
Os detectores (structA2KDetector) não têm mais o atributo DistinguishType, pois sempre foi verdadeiro. Todos os detectores no Aimsun Next podem distinguir por tipo de veículo.
Funções relevantes para Gestão de Tráfego¶
Agora é possível obter informações sobre as ações de gerenciamento de tráfego que estão vinculadas à simulação atual: