Chegadas¶
Algoritmos de Chegadas¶
O intervalo de tempo entre duas chegadas consecutivas de veículos (o intervalo) é amostrado de uma distribuição aleatória – um modelo de intervalo. Ao carregar uma demanda de tráfego na simulação, que é um conjunto de estados de tráfego ou um conjunto de matrizes OD, os diferentes modelos de intervalo são: exponencial, uniforme, normal, constante aleatoriamente inicializada, constante, "ASAP" e externa. 'Exponencial' é a distribuição padrão. O modelo de geração é definido globalmente com base em cada cenário; no entanto, pode ser substituído para centróides individuais no caso de demanda de tráfego OD, ou para seções individuais no caso onde a demanda é um estado de tráfego. Veículos gerados de uma chegada de tráfego usam o tempo de geração definido na chegada de tráfego para entrar na rede.
A distribuição de Geração de Tráfego pode ser selecionada entre: Exponencial, Uniforme, Normal, Constante Aleatoriamente Inicializada, Constante, Externa, e ASAP.
Exponencial¶
Intervalos de tempo entre duas chegadas consecutivas de veículos (intervalo) nas seções de entrada são amostrados de uma distribuição exponencial (Cowan 1975). O fluxo de entrada médio (em veículos/segundo) é λ, e o intervalo de tempo médio é calculado como 1/λ segundos.
O algoritmo para calcular o intervalo de tempo (t) é o seguinte:
u = random (0,1)
if (lambda > 0.0)
t = ((-1/lambda)*ln(u))
else
t = max_float
endif
Uniforme¶
Intervalos de tempo entre duas chegadas consecutivas de veículos (intervalo) nas seções de entrada são amostrados de uma distribuição uniforme. O intervalo médio (T) é considerado como 1/λ segundos, λ sendo o fluxo de entrada médio (em veículos/segundo) e o intervalo usado para a distribuição é [T-T/2, T+T/2].
O algoritmo para calcular o intervalo de tempo (t) é o seguinte:
if (lambda > 0.0)
T = 1/lambda
u = random (0,1)
minU = -T/2
maxU = T/2
t = T+[minU+(maxU-minU)*u]
else
t = max_float
endif
Normal¶
Intervalos de tempo entre duas chegadas consecutivas de veículos (intervalo) nas seções de entrada são amostrados de uma distribuição normal truncada. O intervalo médio (T) é considerado como 1/λ segundos, onde λ é o fluxo de entrada médio (em veículos/segundo) e a variância (σ) é considerada como 10% da média. O intervalo da normal truncada é [T-2σ, T+2σ].
O algoritmo para calcular o intervalo de tempo (t) é o seguinte:
if (lambda > 0.0)
T = 1/lambda
n = t_normal (1,0.1) (normal truncada)
t = maximum [error, n*T] (error ->0, error > 0)
else
t = max_float
endif
Constante Aleatoriamente Inicializada¶
O primeiro veículo entra após um tempo aleatório a partir do tempo de início da matriz OD. Após isso, os intervalos de tempo entre dois veículos consecutivos (intervalo t) nas seções de entrada são sempre constantes e iguais a 1/λ segundos, λ sendo o fluxo de entrada médio (em veículos/segundo).
O algoritmo para calcular o intervalo de tempo (t) é o seguinte:
if (lambda > 0.0)
t = 1/lambda
else
t = max_float
endif
Note que no Aimsun Next 22 e em versões anteriores, a Constante Aleatoriamente Inicializada era nomeada como Constante.
Constante¶
O primeiro veículo entra após um 1/(2*λ). Após isso, os intervalos de tempo entre dois veículos consecutivos (intervalo t) nas seções de entrada são sempre constantes e iguais a 1/λ segundos, λ sendo o fluxo de entrada médio (em veículos/segundo).
O algoritmo para calcular o intervalo de tempo (t) é o seguinte:
if (lambda > 0.0)
t = 1/lambda
else
t = max_float
endif
ASAP¶
Neste modelo de geração, os veículos são inseridos na rede 'o mais rápido possível', ou seja, assim que houver espaço disponível na seção de entrada. Este modelo é destinado a fazer o máximo uso da capacidade de entrada da rede. Poderia ser usado, por exemplo, para simular situações de evacuação. Nesse caso, nenhum intervalo é gerado. No início de cada fatia de tempo, o fluxo total a ser inserido durante a fatia é 'acumulado' na seção de entrada e os veículos são inseridos na seção um após o outro assim que o anterior deixou espaço suficiente no caso de microsimulação e tem o intervalo mínimo no caso de simulação mesoscópica.
Externa¶
Esta opção permite que o usuário introduza os veículos na rede via a API do Aimsun Next. Nenhum veículo é gerado ou inserido na rede via qualquer seção pelo simulador em si. Portanto, uma DLL externa, programa definido pelo usuário, é necessária para inserir veículos na rede.
Resumo da Geração¶
A próxima figura mostra uma comparação dos modelos de geração de tráfego para um período de 20 minutos. Os resultados são para uma demanda de 60 veículos durante uma hora em um enlace em fluxo livre.
Lidando com Números Fracionários de Viagens¶
Quando a demanda OD em uma fatia de tempo tem um número fracionário de viagens, a demanda nessa fatia é arredondada para uma demanda inteira com a probabilidade de ser arredondada para cima ou para baixo proporcional ao valor fracionário. Assim, por exemplo, uma demanda declarada de 22,8 em uma célula de matriz OD resultará em uma demanda solicitada de 22 com 20% de probabilidade ou 23 com 80% de probabilidade; da mesma forma, uma demanda declarada de 0,6 resultará em uma demanda solicitada de 0 com 40% de probabilidade ou 1 com 60% de probabilidade.
Considerando um grande número de pares OD, a demanda total na replicação do modelo corresponderá de perto à demanda total geral, embora uma correspondência exata não seja garantida.
Para cada célula OD em cada fatia de tempo, o algoritmo de liberação para todos os modos de Chegadas, exceto ASAP, é:
EventTime = SliceStartTime;
AvgHeadway = SliceDuration / RequestedDemand
ShiftedTime = RandomBetween (0, (SliceEndTime-SliceStartTime)) + AvgHeadway;
MaxTime = SliceEndTime + ShiftedTime;
while (Continue) {
MyHeadway = getRandomisedHeadway(ArrivalsModelType, AvgHeadway);
EventTime = EventTime + MyHeadway;
if ( EventTime >= (SliceStartTime+ShiftedTime) and EventTime < MaxTime)
AddVehicleArrival( EventTime-ShiftedTime, ... );
TotalReleased++;
Continue = (EventTime < MaxTime);
endif
endwhile
return TotalReleased
Onde
- AvgHeadway: é o intervalo médio entre chegadas.
- RequestedDemand: já é um inteiro.
- MyHeadway: é um intervalo aleatório de acordo com o modelo de chegadas em uso.
- ShiftedTime: é usado para definir um deslocamento para randomizar os tempos de liberação.
- EventTime: é o tempo definido para a liberação.
- SliceDuration, SliceStartTime, e SliceEndTime: são a duração, o início e o término da fatia de tempo OD, mas note que o tempo final será limitado à duração da simulação e a diferença entre esses dois valores pode não ser a mesma que SliceDuration na última fatia.
A variável ShiftedTime desloca o tempo da sequência de chegadas por um tempo aleatório na faixa de AVGHeadway a AvgHeadway + Comprimento Real da Fatia. O objetivo é deslocar o início da sequência para um ponto aleatório no tempo. Sem esse deslocamento, no modo de liberação Constante onde os veículos chegam em intervalos regulares, as chegadas se aglomerariam em torno das divisões fracionárias do tempo da fatia, criando picos artificiais no número de veículos que chegam na rede. Deslocar o tempo base aparente da fatia para a sequência de liberações e apenas considerar aquelas que ocorrem nesse tempo deslocado evita que isso aconteça. O mesmo processo de deslocamento é então aplicado para todos os modos de chegada, com a exceção de ASAP.