Imagine que você tenha executado uma simulação dinâmica (meso, micro ou híbrida) que lhe dá tempos de viagem precisos para veículos de transporte público que levam em conta congestionamentos, faixas reservadas, semáforos e algoritmos de prioridade de circulação. Não seria bom usar estas informações para obter uma estimativa mais precisa do tempo de viagem de ponto-a-ponto em uma atribuição macroscópica de transporte público?
Graças ao ambiente de modelagem integrado fornecido pelo Aimsun, isto é possível. Basta escrever uma função de Atraso no Transporte Público que lê o tempo de viagem do ônibus a partir das séries temporais produzidas pela simulação dinâmica.
costCol = None
def pdf( context, line, ptsection ):
global costCol
if costCol == None:
model = ptsection.getModel()
vehicleType = model.getType("GKVehicle")
vehicleId = model.getCatalog().findByName("Bus", vehicleType).getId()
costCol = model.getColumn("DYNAMIC::SRC_GKSection_travelTime_%i" % vehicleId)
res = 0.0
fromStop = ptsection.getMaster().getOrigin()
if fromStop != None:
sectionLength = fromSection.length2D()
fromSection = fromStop.getSection()
fromFraction = (sectionLength - fromStop.getPosition()) / sectionLength
else:
fromSection = None
toStop = ptsection.getMaster().getDestination()
if toStop != None:
toSection = toStop.getSection()
toFraction = toStop.getPosition() / toSection.length2D()
else:
toSection = None
for section in ptsection.getMaster().getRoute():
fraction = 1.0
if fromSection != None and section.getId() == fromSection.getId():
fraction = fromFraction
elif toSection != None and section.getId() == toSection.getId():
fraction = toFraction
ts = section.getDataValueTS(costCol)
if ts != None:
res += ts.getAggregatedValue()/60 * fraction
if res == 0.0:
print "No dynamic cost for PT Section %i" % ptsection.getId()
res = 60.0 * ptsection.getDistance()/1000.0 / 20.0 #km/h
return res
A função lê o tempo de viagem da última simulação para o tipo de veículo do ônibus a partir da seção, e como o custo para a atribuição do TP é expresso para as seções do TP, ou seja, para os segmentos de parada a parada, ele o adiciona para todas as seções entre paradas, calculando uma fração para a primeira e última seção, dependendo da posição dos pontos de parada do ônibus.
Uma aplicação importante desta abordagem é estimar o efeito na distribuição e divisão modal das mudanças operacionais feitas no sistema de transporte, tais como a introdução de prioridade de sinal e faixas reservadas ao longo de um corredor.