Exemplo 5 da Aimsun Next Micro API¶
Exemplo de Gestão de Transporte Público¶
Este exemplo mostra como gerenciar o transporte público. Ele gera um novo ônibus um minuto após o início da simulação e desabilita sua primeira parada de ônibus. Ao mesmo tempo, o Módulo da API Aimsun Next armazena a distância percorrida.
Versão C++¶
#include "AKIProxie.h"
#include "CIProxie.h"
#include "ANGConProxie.h"
#include "AAPI.h"
#include <fstream>
char astring[128];
std::ofstream fileFloatCar;
int idveh = 0;
int busVehicleTypeId = 79;
bool timeChanged = false;
// Os procedimentos podem ser modificados pelo usuário
int AAPILoad()
{
return 0;
}
int AAPIInit()
{
AKIPrintString("Iniciando....");
fileFloatCar.open("C:/tmp/BusyPy.txt", std::ios::out);
idveh = 0;
return 0;
}
int AAPISimulationReady()
{
return 0;
}
int AAPIManage(double time, double timeSta, double timeTrans, double acycle)
{
double tempsEntrada = AKIGetIniSimTime() + 60;
if (timeSta == tempsEntrada) {
AKIPrintString("Entrando em um Veículo");
//obtendo a posição do tipo de veículo de ônibus
int busPosition = AKIVehGetVehTypeInternalPosition(busVehicleTypeId);
idveh = AKIPTEnterVeh( 1, busPosition, 1 );
snprintf(astring, 128, " idveh = %d", idveh);
AKIPrintString(astring);
}
if (timeSta >= tempsEntrada + 1 && timeChanged == false) {
AKIPrintString("Modificando o Tempo de Parada da primeira parada de ônibus");
double res = 0;
res = AKIPTVehModifyStopTime( idveh, 0, 0 );
snprintf(astring, 128, " res = %d", res);
AKIPrintString(astring);
timeChanged = true;
}
return 0;
}
int AAPIPostManage(double time, double timeSta, double timeTrans, double acycle)
{
if (idveh > 0) {
InfVeh infveh = AKIVehTrackedGetInf(idveh);
if (infveh.report == 0) {
snprintf(astring, 128, "%f %f
", timeSta, infveh.TotalDistance);
fileFloatCar << astring;
} else {
idveh = 0;
fileFloatCar.close();
}
}
return 0;
}
int AAPIFinish()
{
AKIPrintString("...Finalizando");
return 0;
}
int AAPIUnLoad()
{
return 0;
}
Versão Python¶
from AAPI import *
#variáveis globais
fileFloatCar = 0
idveh=0
busVehicleTypeId = 79
timeChanged = False
def AAPILoad():
return 0
def AAPIInit():
AKIPrintString("Iniciando....")
global idveh, fileFloatCar
fileFloatCar=open('C:/tmp/BusPy.txt', 'w');
idveh = 0
return 0
def AAPISimulationReady():
return 0
def AAPIManage(time, timeSta, timeTrans, acycle):
global idveh
global busVehicleTypeId
global timeChanged
tempsEntrada = AKIGetIniSimTime()+60
if timeSta == tempsEntrada:
AKIPrintString("Entrando em um Veículo")
#obtendo a posição do tipo de veículo de ônibus
busPosition = AKIVehGetVehTypeInternalPosition(busVehicleTypeId)
idveh = AKIPTEnterVeh( 1418, busPosition, True )
astring = ' idveh = %d' %(idveh)
AKIPrintString(astring)
if timeSta >= tempsEntrada + 1 and timeChanged == False:
AKIPrintString("Modificando o Tempo de Parada da primeira parada de ônibus")
res = AKIPTVehModifyStopTime( idveh, 0, 0 )
astring = ' res = %d' %(res)
AKIPrintString(astring)
timeChanged = True
return 0
def AAPIPostManage(time, timeSta, timeTrans, acycle):
global idveh, fileFloatCar
if idveh > 0 :
infveh = AKIVehTrackedGetInf(idveh)
if infveh.report == 0:
astring = "%f %f
" %(timeSta, infveh.TotalDistance)
fileFloatCar.write(astring)
else:
idveh = 0
fileFloatCar.close()
return 0
def AAPIFinish():
AKIPrintString("...Finalizando")
return 0
def AAPIUnLoad():
return 0