Pular para o conteúdo

Alterações da API

As alterações na API em versões recentes do Aimsun Next são:

Alterações na versão 26.0.0

Versão Python

Para usar Python para criar uma API do Aimsun Next, Python 3.12 deve estar instalado para Ubuntu 24, Mac ARM e Windows. É possível baixar gratuitamente no site http://www.python.org/.

Consulte a seção ‘Before starting’ no manual de Scripting do Aimsun Next para obter informações sobre as diferenças entre a sintaxe C++ e Python para funções.

Funções relevantes para Gerenciamento de tráfego

Parâmetros aOrigin e aDest mudaram de tipo na seguinte função:

void * AKIActionAddCloseTurningODAction(int sectionId, int anewSection2Close, const std::vector<int> & aOrigin, const std::vector<int> & aDest, int VehType, double acomplianceLevel, double visibilityDistance = 200.0, bool localEffect = true, int sectionAffectingPathCostId = -1);
void * AKIActionAddCloseTurningODActionByID(int idAction, int sectionId, int anewSection2Close, const std::vector\<int> & aOrigin, const std::vector\<int> & aDest, int vehType, double acomplianceLevel, double visibilityDistance = 200.0, bool localEffect = true, int sectionAffectingPathCostId = -1 );
void * AKIActionAddEnRouteAssignmentAction(int actionId, int ang_sectionId, int sectionInPath, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, double complianceLevel, bool reevaluateAction, int routeChoiceType, double routeChoiceParam1, double routeChoiceParam2, double routeChoiceParam3);
void * AKIActionAddForceTurningODActionByID( int idAction, int sectionId, const std::vector<A2KDestinationProportion*>& aNextSections, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, int aSectionInPath, double aComplianceLevel, double visibilityDistance ); 
void * AKIActionAddForceTurningODActionQTByID( int idAction, int sectionId, QList<DestinationProportion> aNextSections, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, int aSectionInPath, double aComplianceLevel, double visibilityDistance ); 
void * AKIActionAddForceTurningODSubPathActionByID( int idAction, int sectionId, const std::vector<A2KDestinationProportion*>& aNextSections, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, int aSectionInPath, double aComplianceLevel, double visibilityDistance ); 
void * AKIActionAddForceTurningODSubPathActionQTByID( int idAction, int sectionId, QList<DestinationProportion> aNextSections, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, int aSectionInPath, double aComplianceLevel, double visibilityDistance );
void * AKIActionAddChangeDestActionByID(int idAction, int sectionId, const std::vector<A2KDestinationProportion*>& aNewDests, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, double aComplianceLevel);
void * AKIActionAddChangeDestActionQTByID(int idAction, int sectionId, const QList<DestinationProportion> anewDests, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, double aComplianceLevel);
void * AKIActionAddChangeDestParkRideActionByID(int idAction, int sectionId, const std::vector<A2KDestinationProportion*>& aNewDests, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, double complianceLevel, double scaleFactor);
void * AKIActionAddChangeDestParkRideActionQTByID(int idAction, int sectionId, const QList<DestinationProportion> anewDests, const std::vector<int>& aOrigin, const std::vector<int>& aDest, int vehType, double complianceLevel, double scaleFactor);

A versão antiga das funções esperava um int com o ID do centroide de origem/destino a ser usado como filtro; se o ID fosse inválido (-1), nenhum filtro era aplicado. Agora, ela recebe um vector com os IDs dos centroides de origem/destino a serem usados como filtro; se o vector estiver vazio, nenhum filtro será aplicado.

Alterações na versão 24.0.2

Funções relevantes para Gerenciamento de tráfego

Duas novas funções de alto nível em micro foram adicionadas para informar que uma ação de gerenciamento de tráfego foi ativada ou desativada:

  • AAPIActionActivated(int idAction);
  • AAPIActionDeactivated(int idAction);

Observe que todas as APIs Python existentes precisam ser atualizadas adicionando as 2 funções acima para que sejam carregadas na simulação conforme esperado.

Funções relevantes para veículos simulados

1) Um novo parâmetro foi retornado por uma nova função, o AKIVehTrackedGetCOPERTEmissionVehicleTypeId:

  • COPERTEmissionVehicleTypeId, tipo de veículo de emissões incluído no tipo de veículo para o modelo COPERT (depende da categoria do veículo): Car, LargeGoodsVehicle, HeavyGoodsVehicle, Coach, Bus, MicroCar, Motorbike, Quad.

2) A struct de informação DynInfVeh agora é retornada por uma nova função, a AKIVehGetVehicleTrackedDynInf:

struct A2KERNELEXPORT DynInfVeh{
    int report;
    double xCurrentPos;
    double yCurrentPos;
    double xCurrentPosBack;
    double yCurrentPosBack;
    double currentSpeed;
    int downstreamObjectId;
};

em que:

  • relatório: Código de erro retornado (0 significa sucesso).
  • xCurrentPos, yCurrentPos: Coordenadas mundiais do ponto médio do para-choque dianteiro do veículo para a posição atual
  • xCurrentPosBack, yCurrentPosBack: Coordenadas mundiais do ponto médio do para-choque traseiro do veículo para a posição atual
  • currentSpeed: Velocidade atual (km/h ou mph, dependendo das unidades definidas na rede).
  • downstreamObjectId: Id do objeto a jusante.

Alterações na versão 23.0.2

Funções relevantes para Eventos de Padrão de Detecçã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

Alterações 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 Detector Pattern Events exigia que os horários de início e fim do evento fossem expressos como tempo da simulação, em segundos a partir da meia-noite. Isso tornava impossível executar eventos durante um warmup. Foi adicionada uma nova função para adicionar eventos com tempos relativos:

Funções antigas são mantidas por motivos de compatibilidade, mas são consideradas obsoletas e serão removidas em versões futuras.

Alterações na versão 23

Atributos adicionados ou modificados em InfVeh e InfPTVeh

  • Adicionado isLost atributo, usado para retornar se o veículo não consegue mais alcançar seu destino, tanto para InfVeh quanto para InfPTVeh.
  • De InfPTVeh, o texto com erro ortográfico theoricalGenerationTime renomeado para theoreticalGenerationTime.

Atributo adicionado a StaticInfPed

  • Adicionado typeID atributo para poder obter o tipo de pedestre do pedestre.

Alterações na versão 22.0.2

Adicionadas todas as variáveis ausentes para período global, parcial e atual nas seguintes entidades:

StructAkiEstadSystem:

  • int vehOut: Veículos que saem da rede.

  • int totalNumStops: Número total de paradas.

  • double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permaneceram aguardando em uma fila virtual. Somente em seções de entrada.

StructAkiEstadSection:

  • int numVehiclesInVQ: Número total de veículos em filas virtuais.

  • double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permaneceram aguardando em uma fila virtual. Somente em seções de entrada.

As estatísticas ausentes de dTimeTTime não foram adicionadas porque é permitido calculá-las a partir do tempo de atraso e do tempo de viagem.

StructAkiEstadSectionLane:

  • int count: Contagem.

  • int inputCount: Contagem de entradas.

  • 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 permaneceram aguardando em uma fila virtual. Somente em seções de entrada.

As estatísticas ausentes de dTimeTTime não foram adicionadas porque é permitido calculá-las 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 da fila virtual.

  • int vehLost: Número total de veículos perdidos.

  • int vehMissed: Número total de veículos perdidos.

StructAkiEstadODPair:

  • int count: Contagem.

  • int inputCount: Contagem de Entrada.

  • int inputFlow: Fluxo de entrada.

  • int vehLost: Número total de veículos perdidos.

  • double dwellTime, dwellTimeDev: Tempo gasto por um veículo em uma parada programada sem se mover. Somente em veículos de linha de transporte público.

  • double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permaneceram aguardando em uma fila virtual. Somente em seções de entrada.

StructAkiEstadStream:

  • int count: Contagem.

  • int inputCount: Contagem de Entrada.

  • int inputFlow: Fluxo de entrada.

  • int vehLost: Número total de veículos perdidos.

  • double dwellTime, dwellTimeDev: Tempo gasto por um veíc. em uma parada programada sem se mover. Somente em veículos de linha de transporte público.

  • double waitingTimeVirtualQueue, waitingTimeVirtualQueueDev: Tempo médio em segundos que os veículos permaneceram aguardando em uma fila virtual. Somente em seções de entrada.

Alterações na versão 22

Funções relevantes para a Gestão de Transporte Público

Os parâmetros obsoletos VehType, acomplianceLevel e visibilityDistance foram removidos de:

Atributos adicionados a StaticInfVeh e StaticInfPTVeh

  • Adicionado o identificador engineTypeId, usado para classificar veículos por motor no modelo de aceleração MFC, modelos de emissões e modelos de consumo, onde: None = 0, Petrol = 1, Diesel = 2, Electric = 3, LPG = 4.
  • Adicionado (por enquanto apenas a StaticInfVeh) o identificador chassisId, usado para classificar veículos por segmento (perfis) na MFC Acceleration (modelo de aceleração MFC e modelo de consumo de bateria).
  • Adicionado o identificador EUEmissionId, usado para classificar veículos por tipo de emissão no modelo LEM (London Emission Model).
  • Adicionado o parâmetro energyCapacity, capacidade do tanque de combustível (l) ou capacidade da bateria (kW) para o modelo de consumo de energia (Energy consumption model).

Atributos adicionados a InfVeh e InfPTVeh

  • Adicionada a variável energyState, nível atual de combustível ou capacidade atual da bateria (%) (modelo de consumo de energia).

Nova struct adicionada LeaderInfVeh

Contém as seguintes informações sobre o líder:

  • relatório: 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
  • intervalo entre veículos: 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)
  • espaçamento: espaço entre o para-choque dianteiro de um veículo e o para-choque dianteiro do veículo seguinte (m)
  • liberação: espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do veículo seguinte (m)

Funções relevantes para veículos simulados

Três novas funções foram adicionadas para fornecer acesso ao novo struct chamado LeaderInfVeh e obter informações sobre o veículo líder:

Quatro novos parâmetros foram adicionados à estrutura StaticInfVeh retornada pelo AKIVehTrackedGetStaticInf chamada, o AKIVehGetVehicleStaticInfSection chamada e o AKIVehGetVehicleStaticInfJunction chamada:

  • engineTypeId, identificador usado para classificar veículos por motor na aceleração MFC, modelos de emissão, modelos de consumo, onde: None = 0, Petrol = 1, Diesel = 2, Electric = 3, LPG = 4.
  • chassisId, identificador, usado para classificar veículos por segmento (perfis) na aceleração MFC.
  • 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 chamada, o AKIVehTrackedGetLEMEmissionVehicleTypeId chamada:

  • vehicleCategoryId, identificador da categoria de veículo incluído no tipo de veículo para composição do motor: Car, Commercial vehicle, Bus, Motorbike e Non-motorized.
  • LEMEmissionVehicleTypeId, tipo de veículo de emissões incluído no tipo de veículo para o modelo LEM (depende da categoria do veículo): Car, Taxi, LGV, HGV, Single-Decker Bus, Double-Decker Bus, Coach.

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 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

Aimsun Next 22 é lançado apenas com Python 3. O suporte ao Python 2 foi descontinuado. A versão para Ubuntu usa Python 3.7 e as versões para Mac e Windows exigem Python 3.10.

-Este arquivo menciona muitas versões antigas do Aimsun Next; não tenho certeza se elas ainda são relevantes. Há, de fato, mudanças na versão 22 que precisamos adicionar? Possivelmente algumas nas notas de versão do AN20?

Alterações na versão 20

Funções relevantes para a gestão de tráfego

Um novo parâmetro para especificar a seção que afetará os custos de cálculo de caminhos foi adicionado a estas 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 em yellow box

  • A velocidade de yellow box em seções não está mais disponível. O parâmetro obsoleto "double yellowBoxSpeed" das structs A2KSectionInf e A2KSectionBehaviourParam foi removido.
  • A2KTurnInf têm um novo parâmetro para saber se um movimento de conversão levará em conta a yellow box .

Atributos removidos de StaticInfVeh e StaticPTVeh

  • O parâmetro obsoleto minSafetyDistance foi removido de StaticInfVeh e StaticPTVeh.

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 é lançado com 2 versões diferentes de Python. A versão do instalador Python 2 usa Python 2.7, enquanto o instalador Python 3 usa Python 3.7.