Pular para o conteúdo

Chegadas

Algoritmos de Chegadas

O intervalo de tempo entre duas chegadas consecutivas de veículos (o headway) é amostrado a partir de uma distribuição aleatória – um modelo de headway. Ao carregar um demanda de tráfego na simulação, isto é, um conjunto de estados de tráfego ou um conjunto de matrizes OD, os diferentes modelos de intervalo são: exponencial, uniforme, normal, constante inicializado aleatoriamente, constante, "ASAP" e externo. ‘Exponential’ é a distribuição padrão. O modelo de geração é definido globalmente por cenário; no entanto, ele pode ser sobrescrito para centroides individuais no caso de demanda de tráfego OD, ou para seções individuais no caso em que a demanda é um estado de tráfego. Veículos gerados a partir de um chegada de tráfego usar 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 Inicializada Aleatoriamente, Constante, Externo, e ASAP.

Exponencial

Os intervalos de tempo entre duas chegadas consecutivas de veículos (headway) nas seções de entrada são amostrados a partir de uma distribuição exponencial (Cowan 1975). O fluxo médio de entrada (em veículos/segundo) é λ, e o headway médio é calculado como 1/λ segundos.


Distribuição exponencial

O algoritmo para calcular o headway temporal (t) é o seguinte:

u = random (0,1)
if (lambda > 0.0)
    t = ((-1/lambda)*ln(u))
else
    t = max_float
endif

Uniforme

Os intervalos de tempo entre duas chegadas consecutivas de veículos (headway) nas seções de entrada são amostrados a partir de uma distribuição uniforme. O headway médio (T) é tomado como 1/λ segundos, sendo λ o fluxo médio de entrada (em veículos/segundo), e o intervalo usado para a distribuição é [T-T/2, T+T/2].


Distribuição Uniforme

O algoritmo para calcular o headway temporal (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

Os intervalos de tempo entre duas chegadas consecutivas de veículos (headway) nas seções de entrada são amostrados a partir de uma distribuição normal truncada. O headway médio (T) é considerado como 1/λ segundos, onde λ é o fluxo médio de entrada (em veículos/segundo) e a variância (σ) é considerada como 10% da média. O intervalo da normal truncada é [T-2σ, T+2σ].


Distribuição normal

O algoritmo para calcular o headway temporal (t) é o seguinte:

if (lambda > 0.0)
    T = 1/lambda
    n = t_normal (1,0.1)        (truncated normal)
    t = maximum [error, n*T]    (error ->0, error > 0)
else
    t = max_float
endif

Constante Inicializada Aleatoriamente

O primeiro veículo entra após um tempo aleatório a partir do horário de início da matriz OD. Depois disso, os intervalos de tempo entre dois veículos consecutivos (headway t) nas seções de entrada são sempre constantes e iguais a 1/λ segundos, sendo λ o fluxo médio de entrada (em veículos/segundo).

O algoritmo para calcular o headway temporal (t) é o seguinte:

if (lambda > 0.0)
    t = 1/lambda
else
    t = max_float
endif

Observe que no Aimsun Next 22 e versões anteriores, o Constante Inicializada Aleatoriamente foi nomeado Constante.

Constante

O primeiro veículo entra após 1/(2*λ). Depois disso, os intervalos de tempo entre dois veículos consecutivos (headway t) nas seções de entrada são sempre constantes e iguais a 1/λ segundos, sendo λ o fluxo médio de entrada (em veículos/segundo).

O algoritmo para calcular o headway temporal (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 ‘assim que possível’, ou seja, assim que houver algum espaço disponível na seção de entrada. Este modelo tem como objetivo aproveitar ao máximo a capacidade de entrada da rede. Ele poderia ser usado, por exemplo, para simular situações de evacuação. Nesse caso, nenhum headway é 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 tiver deixado espaço suficiente, no caso da microssimulação, e tiver o headway mínimo, no caso da simulação mesoscópica.

Externo

Esta opção permite que o usuário introduza os veículos na rede por meio da Aimsun Next API. Nenhum veículo é gerado ou inserido na rede por qualquer seção pelo próprio simulador. Portanto, uma DLL externa, um 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 de 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 ao longo de uma hora em um link em fluxo livre.


Comparação de Geração de Viagens

Lidando com Números Fracionários de Viagens

Quando a demanda OD em um intervalo de tempo tem um número fracionário de viagens, a demanda nesse intervalo é 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 da matriz OD resultará em uma demanda solicitada de 22 com 20% de probabilidade ou 23 com 80% de probabilidade; de modo semelhante, uma demanda declarada de 0,6 resultará em uma demanda solicitada de 0 com 40% de probabilidade ou 1 com 60% de probabilidade.

Considerada em um grande número de pares OD, a demanda total na replicação do modelo corresponderá estreitamente à 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 headway médio entre chegadas.
  • RequestedDemand: já é um inteiro.
  • MyHeadway: é um headway randomizado 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 horário de início e o horário de término da fatia de tempo OD, mas observe que o horário de término 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.

O ShiftedTime a variável desloca o tempo da sequência de chegadas por um tempo aleatório no intervalo AVGHeadway para 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 Constante modo de liberação em que os veículos chegam em intervalos regulares, as chegadas se agrupariam em torno das divisões fracionárias do tempo de fatia, criando picos artificiais no número de veículos que chegam à rede. Deslocar o tempo base aparente da fatia para a sequência de liberações e considerar apenas aquelas que ocorrem nesse tempo deslocado evita que isso aconteça. O mesmo processo de deslocamento é então aplicado a todos os modos de chegada, com exceção de ASAP.