Aimsun Next Micro API Example 2¶
Example 2: Obtaining Statistical information¶
This example shows how to access different statistical information during and at the end of the simulation.
C++ Version¶
#include "AKIProxie.h"
#include "CIProxie.h"
#include "ANGConProxie.h"
#include "AAPI.h"
#include <stdio.h>
// Procedures could be modified by the user
char astring[128];
int idVeh, carPosition;
int AAPILoad()
{
return 0;
}
int AAPIInit()
{
idVeh = ANGConnGetObjectIdByType( AKIConvertFromAsciiString( "car" ), AKIConvertFromAsciiString( "GKVehicle" ), false )
carPosition = AKIVehGetVehTypeInternalPosition( idVeh )
return 0;
}
int AAPISimulationReady()
{
return 0;
}
int AAPIManage(double time, double timeSta, double timeTrans, double acycle)
{
return 0;
}
int AAPIPostManage(double time, double timeSta, double timeTrans, double acycle)
{
StructAkiEstadSystem estad = AKIEstGetParcialStatisticsSystem(timeSta, 0);
if (estad.report==0){
AKIPrintString("\t\t SYSTEM");
sprintf(astring,"\t\t Report :%d",estad.report);
AKIPrintString(astring);
sprintf(astring,"\t\t Flow :%d ",estad.Flow);
AKIPrintString(astring);
sprintf(astring,"\t\t Travel Time :%f",estad.TTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Delay Time :%f",estad.DTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Speed :%f",estad.Sa);
AKIPrintString(astring);
sprintf(astring,"\t\t Stop Time :%f \n",estad.STa);
AKIPrintString(astring);
sprintf(astring,"\t\t NumStops :%f",estad.NumStops);
AKIPrintString(astring);
}
StructAkiEstadSection estad2 = AKIEstGetParcialStatisticsSection(1, timeSta, 0);
if (estad2.report==0){
sprintf(astring,"\t\t SECTION");
AKIPrintString(astring);
sprintf(astring,"\t\t Report :%d",estad2.report);
AKIPrintString(astring);
sprintf(astring,"\t\t Flow :%d ",estad2.Flow);
AKIPrintString(astring);
sprintf(astring,"\t\t Travel Time :%f",estad2.TTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Delay Time :%f",estad2.DTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Speed :%f",estad2.Sa);
AKIPrintString(astring);
sprintf(astring,"\t\t Stop Time :%f \n",estad2.STa);
AKIPrintString(astring);
sprintf(astring,"\t\t NumStops :%f",estad2.NumStops);
AKIPrintString(astring);
sprintf(astring,"\t\t LongQueueAvg :%f ",estad2.LongQueueAvg);
AKIPrintString(astring);
sprintf(astring,"\t\t LongQueueMax :%f ",estad2.LongQueueMax);
AKIPrintString(astring);
}
estad = AKIEstGetParcialStatisticsSystem(timeSta, carPosition);
if (estad.report==0){
sprintf(astring,"\t\t SYSTEM CAR\n");
AKIPrintString(astring);
sprintf(astring,"\t\t Report :%d",estad.report);
AKIPrintString(astring);
sprintf(astring,"\t\t Flow :%d ",estad.Flow);
AKIPrintString(astring);
sprintf(astring,"\t\t Travel Time :%f",estad.TTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Delay Time :%f",estad.DTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Speed :%f",estad.Sa);
AKIPrintString(astring);
sprintf(astring,"\t\t Stop Time :%f \n",estad.STa);
AKIPrintString(astring);
sprintf(astring,"\t\t NumStops :%f",estad.NumStops);
AKIPrintString(astring);
}
estad2 = AKIEstGetParcialStatisticsSection(1, timeSta, carPosition);
if (estad2.report==0){
sprintf(astring,"\t\t SECTION CAR\n");
AKIPrintString(astring);
sprintf(astring,"\t\t Report :%d",estad2.report);
AKIPrintString(astring);
sprintf(astring,"\t\t Flow :%d ",estad2.Flow);
AKIPrintString(astring);
sprintf(astring,"\t\t Travel Time :%f",estad2.TTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Delay Time :%f",estad2.DTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Speed :%f",estad2.Sa);
AKIPrintString(astring);
sprintf(astring,"\t\t Stop Time :%f \n",estad2.STa);
AKIPrintString(astring);
sprintf(astring,"\t\t NumStops :%f",estad2.NumStops);
AKIPrintString(astring);
sprintf(astring,"\t\t LongQueueAvg :%f ",estad2.LongQueueAvg);
AKIPrintString(astring);
sprintf(astring,"\t\t LongQueueMax :%f ",estad2.LongQueueMax);
AKIPrintString(astring);
}
return 0;
}
int AAPIFinish()
{
StructAkiEstadSystem estad = AKIEstGetGlobalStatisticsSystem(0);
if (estad.report==0){
sprintf(astring,"\t\t SYSTEM\n");
AKIPrintString(astring);
sprintf(astring,"\t\t Report :%d",estad.report);
AKIPrintString(astring);
sprintf(astring,"\t\t Flow :%d ",estad.Flow);
AKIPrintString(astring);
sprintf(astring,"\t\t Travel Time :%f",estad.TTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Delay Time :%f",estad.DTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Speed :%f",estad.Sa);
AKIPrintString(astring);
sprintf(astring,"\t\t Stop Time :%f \n",estad.STa);
AKIPrintString(astring);
sprintf(astring,"\t\t NumStops :%f",estad.NumStops);
AKIPrintString(astring);
}
StructAkiEstadSection estad2 = AKIEstGetGlobalStatisticsSection(1, 0);
if (estad2.report==0){
sprintf(astring,"\t\t SECTION\n");
AKIPrintString(astring);
sprintf(astring,"\t\t Report :%d",estad2.report);
AKIPrintString(astring);
sprintf(astring,"\t\t Flow :%d ",estad2.Flow);
AKIPrintString(astring);
sprintf(astring,"\t\t Travel Time :%f",estad2.TTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Delay Time :%f",estad2.DTa);
AKIPrintString(astring);
sprintf(astring,"\t\t Speed :%f",estad2.Sa);
AKIPrintString(astring);
sprintf(astring,"\t\t Stop Time :%f \n",estad2.STa);
AKIPrintString(astring);
sprintf(astring,"\t\t NumStops :%f",estad2.NumStops);
AKIPrintString(astring);
sprintf(astring,"\t\t LongQueueAvg :%f ",estad2.LongQueueAvg);
AKIPrintString(astring);
sprintf(astring,"\t\t LongQueueMax :%f ",estad2.LongQueueMax);
AKIPrintString(astring);
}
return 0;
}
int AAPIUnLoad()
{
return 0;
}
Python Version¶
from AAPI import *
carPosition = 0
def AAPILoad():
return 0
def AAPIInit():
idVeh = ANGConnGetObjectIdByType( AKIConvertFromAsciiString( "car" ), AKIConvertFromAsciiString( "GKVehicle" ), False )
carPosition = AKIVehGetVehTypeInternalPosition( idVeh )
return 0
def AAPISimulationReady():
return 0
def AAPIManage(time, timeSta, timTrans, SimStep):
return 0
def AAPIPostManage(time, timeSta, timTrans, SimStep):
estad = AKIEstGetParcialStatisticsSystem(timeSta, 0)
if (estad.report==0):
AKIPrintString("\t\t SYSTEM")
astring = "\t\t Report : " + str(estad.report)
AKIPrintString(astring)
astring = "\t\t Flow : " + str(estad.Flow)
AKIPrintString(astring)
astring = "\t\t Travel Time : " + str(estad.TTa)
AKIPrintString(astring)
astring = "\t\t Delay Time : " + str(estad.DTa)
AKIPrintString(astring)
astring = "\t\t Speed : " + str(estad.Sa)
AKIPrintString(astring)
astring = "\t\t Stop Time : " + str(estad.STa)
AKIPrintString(astring)
astring = "\t\t NumStops : " + str(estad.NumStops)
AKIPrintString(astring)
estad2 = AKIEstGetParcialStatisticsSection(1, timeSta, 9)
if (estad2.report==0):
AKIPrintString("\t\t SECTION")
astring = "\t\t Report : " + str(estad2.report)
AKIPrintString(astring)
astring = "\t\t Flow : " + str(estad2.Flow)
AKIPrintString(astring)
astring = "\t\t Travel Time : " + str(estad2.TTa)
AKIPrintString(astring)
astring = "\t\t Delay Time : " + str(estad2.DTa)
AKIPrintString(astring)
astring = "\t\t Speed : " + str(estad2.Sa)
AKIPrintString(astring)
astring = "\t\t Stop Time : " + str(estad2.STa)
AKIPrintString(astring)
astring = "\t\t NumStops : " + str(estad2.NumStops)
AKIPrintString(astring)
astring = "\t\t LongQueueAvg : " + str(estad2.LongQueueAvg)
AKIPrintString(astring)
astring = "\t\t LongQueueMax : " + str(estad2.LongQueueMax)
AKIPrintString(astring)
estad = AKIEstGetParcialStatisticsSystem(timeSta, carPosition)
if (estad.report==0):
AKIPrintString("\t\t SYSTEM CAR\n")
astring = "\t\t Report : " + str(estad.report)
AKIPrintString(astring)
astring = "\t\t Flow : " + str(estad.Flow)
AKIPrintString(astring)
astring = "\t\t Travel Time : " + str(estad.TTa)
AKIPrintString(astring)
astring = "\t\t Delay Time : " + str(estad.DTa)
AKIPrintString(astring)
astring = "\t\t Speed : " + str(estad.Sa)
AKIPrintString(astring)
astring = "\t\t Stop Time : " + str(estad.STa)
AKIPrintString(astring)
astring = "\t\t NumStops : " + str(estad.NumStops)
AKIPrintString(astring)
estad2 = AKIEstGetParcialStatisticsSection(1, timeSta, carPosition)
if (estad2.report==0):
AKIPrintString("\t\t SECTION CAR\n")
astring = "\t\t Report : " + str(estad2.report)
AKIPrintString(astring)
astring = "\t\t Flow : " + str(estad2.Flow)
AKIPrintString(astring)
astring = "\t\t Travel Time : " + str(estad2.TTa)
AKIPrintString(astring)
astring = "\t\t Delay Time : " + str(estad2.DTa)
AKIPrintString(astring)
astring = "\t\t Speed : " + str(estad2.Sa)
AKIPrintString(astring)
astring = "\t\t Stop Time : " + str(estad2.STa)
AKIPrintString(astring)
astring = "\t\t NumStops : " + str(estad2.NumStops)
AKIPrintString(astring)
astring = "\t\t LongQueueAvg : " + str(estad2.LongQueueAvg)
AKIPrintString(astring)
astring = "\t\t LongQueueMax : " + str(estad2.LongQueueMax)
AKIPrintString(astring)
return 0
def AAPIFinish():
estad = AKIEstGetGlobalStatisticsSystem(0)
if (estad.report==0):
AKIPrintString("\t\t SYSTEM\n")
astring = "\t\t Report : " + str(estad.report)
AKIPrintString(astring)
astring = "\t\t Flow : " + str(estad.Flow)
AKIPrintString(astring)
astring = "\t\t Travel Time : " + str(estad.TTa)
AKIPrintString(astring)
astring = "\t\t Delay Time : " + str(estad.DTa)
AKIPrintString(astring)
astring = "\t\t Speed : " + str(estad.Sa)
AKIPrintString(astring);
astring = "\t\t Stop Time : " + str(estad.STa)
AKIPrintString(astring);
astring = "\t\t NumStops : " + str(estad.NumStops)
AKIPrintString(astring)
estad2 = AKIEstGetGlobalStatisticsSection(1, 0)
if (estad2.report==0):
AKIPrintString("\t\t SECTION\n")
astring = "\t\t Report : " + str(estad2.report)
AKIPrintString(astring)
astring = "\t\t Flow : " + str(estad2.Flow)
AKIPrintString(astring)
astring = "\t\t Travel Time : " + str(estad2.TTa)
AKIPrintString(astring)
astring = "\t\t Delay Time : " + str(estad2.DTa)
AKIPrintString(astring)
astring = "\t\t Speed : " + str(estad2.Sa)
AKIPrintString(astring)
astring = "\t\t Stop Time : " + str(estad2.STa)
AKIPrintString(astring)
astring = "\t\t NumStops : " + str(estad2.NumStops)
AKIPrintString(astring)
astring = "\t\t LongQueueAvg : " + str(estad2.LongQueueAvg)
AKIPrintString(astring)
astring = "\t\t LongQueueMax : " + str(estad2.LongQueueMax)
AKIPrintString(astring)
return 0
def AAPIUnLoad():
return 0
def AAPIEnterVehicle(idveh,idsection):
return 0
def AAPIExitVehicle(idveh,idsection):
return 0