Medidas de Detectores da API do Aimsun Next¶
Funções relacionadas a Medições de Detectores¶
Notas¶
Se as medições do detector forem acessadas usando o Detector Name, os valores retornados corresponderão ao primeiro Detector cujo nome corresponda ao nome passado como parâmetro. Portanto, quando um modelo de rede tiver vários detectores com o mesmo nome, é melhor acessar as medições do Detector usando o Detector Identifier.
Detecção instantânea refere-se aos atributos medidos por um detector naquele instante, sendo a duração desse instante definida pelo Ciclo de detecção, em oposição a dados agregados coletados ao longo de um intervalo de saída de detecção.
Ler Número de detectores¶
Em C++ e Python¶
Explicação¶
Ler o número total de detectores na rede viária
Formato¶
int AKIDetGetNumberDetectors ()
Parâmetros¶
None
Saída¶
- > 0: Número total de detectores
- < 0: Erro
Ler Identificador de um detector¶
Em C++ e Python¶
Explicação¶
Leia o identificador do elem-ésimo detector.
Formato¶
int AKIDetGetIdDetector (int elem)
Parâmetros¶
- elem: Número do detector. Deve estar entre 0 e o número total de detectores -1
Saída¶
- > 0: O identificador do detector
- < 0: Erro
Ler as Informações de um detector¶
Em C++ e Python¶
Explicação¶
Ler as informações do detector elem-th.
Formato¶
structA2KDetector AKIDetGetPropertiesDetector(int elem)
structA2KDetector AKIDetGetPropertiesDetectorById (int IdDetector)
Parâmetros¶
- elem: Número do detector. Deve estar entre 0 e o número total de detectores -1
- IdDetector O identificador do detector.
Saída¶
struct structA2KDetector {
int report;
int Id;
int IdSection
int IdFirstLane;
int IdLastLane;
int Capabilities;
double InitialPosition;
double FinalPosition;
};
em que:
- relatório: 0, OK, caso contrário código de erro
- Id: identificador do detector
- IdSection: identificador da seção onde o detector está localizado
- IdFirstLane: primeira faixa que o detector cobre
- IdLastLane: última faixa que o detector cobre
- Capacidades: conjunto de bits que codifica as capacidades de detecção.
- InitialPosition: posição do início do detector, em relação ao início da seção.
- FinalPosition: posição do fim do detector, em relação ao início da seção.
Verificar os recursos de detecção¶
Em C++ e Python¶
Explicação¶
Verifica as capacidades de detecção de um detector lido anteriormente. Elas são usadas para verificar se um detector consegue detectar contagem, presença, velocidade, ocupação, headway, densidade ou veículos equipados.
Formato¶
bool AKIDetIsCountGather(int Capability);
bool AKIDetIsPresenceGather(int Capability);
bool AKIDetIsSpeedGather(int Capability);
bool AKIDetIsOccupancyGather(int Capability);
bool AKIDetIsHeadwayGather(int Capability);
bool AKIDetIsDensityGather(int Capability);
bool AKIDetIsInfEquippedVehGather (int Capability);
Parâmetros¶
- Capacidade: Um conjunto de bits que codifica as capacidades de detecção. Este conjunto de bits pode ser obtido usando AKIDetGetPropertiesDetector
Saída¶
- true: Capacidade permitida.
- false: Sem Capacidade ou Erro
Ler o Intervalo de Detecção¶
Em C++ e Python¶
Explicação¶
Ler o intervalo de detecção (segundos) usado para coletar as medidas agregadas.
Formato¶
double AKIDetGetIntervalDetection ()
Parâmetros¶
- None
Saída¶
- ≥ 0: o intervalo de detecção retornado em segundos
- < 0: Erro
Ler o Intervalo de Detecção Instantânea¶
Explicação¶
Lê o intervalo (segundos) usado para coletar as medidas instantâneas de detecção.
Formato¶
double AKIDetGetCycleInstantDetection ()
Parâmetros¶
None
Saída¶
- ≥ 0: o intervalo de detecção retornado em segundos
- < 0: Erro
Ler o número de medidas de Detecção Instantânea disponíveis durante o último ciclo de detecção¶
Em C++ e Python¶
Explicação¶
Ler o número de medidas de detecção instantânea disponíveis durante o último Ciclo de detecção
int AKIDetGetNbMeasuresAvailableInstantDetection ()
Parâmetros¶
None
Saída¶
- ≥ 0: número de medições
- < 0: Erro
Ler o Horário de Término da medida de Detecção Instantânea disponível durante o último ciclo de detecção¶
Em C++ e Python¶
Explicação¶
Lê o horário de término das medidas de detecção instantânea disponíveis durante o último Ciclo de detecção.
Formato¶
double AKIDetGetEndTimeMeasureAvailableInstantDetection(int elem)
Parâmetros¶
- elem: Número do detector. Deve ser ≥ 0 e < número total de medidas disponíveis (consulte a função anterior)
Saída¶
- ≥ 0: o intervalo de detecção retornado em segundos
- < 0: Erro
Ler a Presença Instantânea de um detector¶
Em C++ e Python¶
Explicação¶
Ler a presença instantânea durante o último ciclo de detecção de um detector. Isso será 0 se nenhum veículo tiver passado sobre o detector e 1 caso contrário. É possível distinguir a detecção para diferentes tipos de veículos. No caso de o tipo de veículo ser 0, a distinção por tipo de veículo não é levada em consideração. A primeira função fornece a última medida disponível durante o último ciclo e a segunda fornece a medida para um instante específico durante o último ciclo (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
int AKIDetGetPresenceCyclebyId (int IdDetector, int vehTypePos)
int AKIDetGetPresenceInstantDetectionbyId(int IdDetector, int vehTypePos, double endtime)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
- &ge 0: a presença retornada
- < 0: Erro
Ler o Tempo Ocupado Instantâneo de um detector ¶
Em C++ e Python¶
Explicação¶
Leia a porcentagem do tempo em que o detector esteve ocupado a partir de um instante. É possível distinguir a detecção para diferentes tipos de veículos. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é levada em conta. A primeira função fornece a última medição disponível durante o último passo de simulação, e a segunda fornece a medição para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
double AKIDetGetTimeOccupedCyclebyId (int IdDetector, int vehTypePos)
double AKIDetGetTimeOccupedInstantDetectionbyId(int IdDetector, int vehType, double endtime);
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
- ≥ 0: a porcentagem de tempo ocupado retornada
- < 0: Erro
Ler a medida do Contador Instantâneo de um detector¶
Em C++ e Python¶
Explicação¶
Lê o número de veículos que cruzaram o detector durante um instante. É possível distinguir a detecção para diferentes tipos de veículos. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é levada em conta. A primeira função fornece a última medida disponível durante o último passo de simulação e a segunda fornece a medida para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
int AKIDetGetCounterCyclebyId (int IdDetector, int vehTypePos)
int AKIDetGetCounterInstantDetectionbyId(int IdDetector, int vehTypePos, double endtime)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
- ≥ 0: o contador retornado
- < 0: Erro
Ler a Velocidade Média Instantânea de um detector¶
Em C++ e Python¶
Explicação¶
Lê a média instantânea da velocidade dos veículos (km/h ou mph, dependendo das unidades definidas na rede) que estão sobre o detector. É possível distinguir a detecção para diferentes tipos de veículo. No caso de o tipo de veículo ser 0, a distinção por tipo de veículo não é levada em conta. A primeira função fornece a última medida disponível durante o último passo de simulação, e a última fornece a medida para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
double AKIDetGetSpeedCyclebyId (int IdDetector, int vehTypePos)
double AKIDetGetSpeedInstantDetectionbyId(int IdDetector, int vehTypePos, double endtime)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
- ≥ 0: a velocidade retornada
- < 0: Erro
Ler o número instantâneo de intervalos ocupados de um detector¶
Em C++ e Python¶
Explicação¶
Ler o número total de intervalos em que o detector esteve ocupado durante um instante. É possível distinguir a detecção para diferentes tipos de veículo. No caso em que o tipo de veículo é 0, a distinção por tipo de veículo não é levada em conta. A primeira função fornece a última medida disponível durante o último passo de simulação e a segunda fornece a medida para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
int AKIDetGetNbintervalsOccupedCyclebyId (int IdDetector, int vehTypePos)
int AKIDetGetNbintervalsOccupedInstantDetectionbyId(int IdDetector, int vehTypePos, double endtime);
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
- ≥ 0: o número de intervalos retornado
- < 0: Erro
Ler o tempo inicial instantâneo de um intervalo ocupado de um detector ¶
Em C++ e Python¶
Explicação¶
Ler o instante inicial instantâneo de um intervalo ocupado de um detector. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é levada em conta. A primeira função fornece a última medida disponível durante a última etapa da simulação, enquanto a última fornece a medida para um instante específico durante a última etapa da simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
double AKIDetGetIniTimeOccupedCyclebyId (int IdDetector, int elem, int vehTypePos)
double AKIDetGetIniTimeOccupedInstantDetectionbyId(int IdDetector, int elem, int vehTypePos, double endtime);
Parâmetros¶
- IdDetector: O identificador do detector.
- elem: O número do intervalo. Deve estar entre 0 e o número total de intervalos -1
- vehTypePos A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime:O tempo que define a medida instantânea
Saída¶
- ≥ 0: o tempo inicial retornado, em segundos a partir da meia-noite.
- < 0: Erro
Ler o tempo final instantâneo de um intervalo ocupado de um detector¶
Em C++ e Python¶
Explicação¶
Lê o instante final de um intervalo ocupado de um detector. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é levada em conta. A primeira função fornece a última medição disponível durante o último passo de simulação, e a última fornece a medição para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
double AKIDetGetFinTimeOccupedCyclebyId (int IdDetector, int elem, int vehTypePos)
double AKIDetGetEndTimeOccupedInstantDetectionbyId(int IdDetector, int elem, int vehTypePos, double endtime);
Parâmetros¶
- IdDetector: O identificador do detector.
- elem: O número do intervalo. Deve estar entre 0 e o número total de intervalos -1
- vehTypePos A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime:O tempo que define a medida instantânea
Saída¶
- ≥ 0: o tempo final retornado
- < 0: Erro
Ler a ocupação SCOOT de um detector no último ciclo¶
Em C++ e Python¶
Explicação¶
Lê a ocupação instantânea no formato SCOOT, que requer 1 segundo como intervalo de detecção instantânea. É possível distinguir a detecção para diferentes tipos de veículos. No caso em que o tipo de veículo é 0, a distinção por tipo de veículo não é considerada. A primeira função fornece a última medida disponível durante o último passo de simulação, enquanto a última fornece a medida para um instante específico durante o último passo de simulação (esse tempo pode ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
int AKIDetGetSCOOTOccupancyCyclebyId (int IdDetector, int vehTypePos)
int AKIDetGetSCOOTOccupancyInstantDetectionbyId( int IdDetector, int vehTypePos, double endtime);
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime:O tempo que define a medida instantânea
Saída¶
- ≥ 0: a ocupação SCOOT retornada
- < 0: Erro
Ler a Densidade Instantânea de um detector ¶
Em C++ e Python¶
Explicação¶
Lê a densidade instantânea (expressa em veh/km ou veh/mi, dependendo das unidades definidas na rede). É possível distinguir a detecção para diferentes tipos de veículos. No caso de um tipo de veículo ser 0, a distinção por tipo de veículo não é considerada. A primeira função fornece a última medida disponível durante o último passo de simulação, enquanto a última função fornece a medida para um instante específico durante o último passo de simulação (esse tempo pode ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection).
Nota: A densidade (veh/km) é calculada por faixa, não por seção. Como uma seção pode conter duas ou mais faixas, esteja atento ao impacto do número de faixas no valor de saída. Por exemplo, um único veículo em uma seção de um quilômetro de comprimento com três faixas retornaria um valor de densidade de 0,33.
Formato¶
double AKIDetGetDensityCyclebyId (int IdDetector, int vehTypePos)
double AKIDetGetDensityInstantDetectionbyId(int IdDetector, int vehTypePos, double endtime);
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime:O tempo que define a medida instantânea
Saída¶
- ≥ 0: a densidade instantânea retornada
- < 0: Erro
Ler o Headway de um detector¶
Em C++ e Python¶
Explicação¶
Lê o headway médio instantâneo entre veículos (tempo médio entre para-choque dianteiro e para-choque dianteiro) que cruzaram o detector. É possível distinguir a detecção para diferentes tipos de veículo. No caso de o tipo de veículo ser 0, a distinção por tipo de veículo não é levada em conta. A primeira função fornece a última medida disponível durante o último passo de simulação, enquanto a última fornece a medida para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
double AKIDetGetHeadwayCyclebyId (int IdDetector, int vehTypePos)
double AKIDetGetHeadwayInstantDetectionbyId(int IdDetector, int vehTypePos, double endtime)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime:O tempo que define a medida instantânea
Saída¶
- ≥ 0: o headway retornado
- < 0: Erro
Ler o Número Instantâneo de Veículos com suas Informações Estáticas coletadas por um detector¶
Em C++ e Python¶
Explicação¶
Lê o número instantâneo de veículos que cruzaram o detector, quando o detector tem a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículo. No caso de o tipo de veículo ser 0, a distinção por tipo de veículo não é levada em conta. A primeira função fornece a última medida disponível durante o último passo de simulação, enquanto a última fornece a medida para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
int AKIDetGetNbVehsEquippedInDetectionCyclebyId (int IdDetector, int vehTypePos)
int AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (int IdDetector, int vehTypePos, double endtime);
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime:O tempo que define a medida instantânea
Saída¶
- ≥ 0: o número de veículos
- < 0: Erro
Ler o Número Instantâneo de Veículos sobre um detector com suas Informações Estáticas coletadas por um detector¶
Em C++ e Python¶
Explicação¶
Ler o número instantâneo de veículos sobre o detector, quando o detector tem a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículos. No caso de o tipo de veículo ser 0, a distinção por tipo de veículo não é levada em consideração. A primeira função fornece a última medida disponível durante o último passo de simulação, enquanto a última fornece a medida para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection)
Formato¶
int AKIDetGetNbVehsEquippedOverCyclebyId (int IdDetector, int vehTypePos)
int AKIDetGetNbVehsEquippedOverInstantDetectionbyId (int IdDetector, int vehTypePos, double endtime);
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime:O tempo que define a medida instantânea
Saída¶
- ≥ 0: o número de veículos
- < 0: Erro
Ler as Informações Instantâneas de Veículo de um detector ¶
Em C++ e Python¶
Explicação¶
Leia as informações estáticas instantâneas dos veículos de todos os veículos equipados que cruzaram o detector, quando o detector tiver a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é considerada. A primeira função fornece a última medição disponível durante o último passo de simulação, enquanto a última fornece a medição para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection). É altamente recomendável que o ciclo de detecção seja igual ao passo de simulação. Isso pode ser feito marcando a opção Igual ao passo de simulação localizada na pasta da aba Main do editor de cenário. Esta função requer que o número de Vehicles que cruzaram o detector seja conhecido chamando AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId.
Formato¶
StaticInfVeh AKIDetGetInfVehInDetectionStaticInfVehCyclebyId (int iddet, int elem, int vehTypePos);
StaticInfVeh AKIDetGetInfVehInDetectionStaticInfVehInstantDetectionbyId(int iddet, int elem, int vehTypePos, double endtime);
Parâmetros¶
- iddet: O identificador do detector.
- elem: O número do veículo. Deve estar entre 0 e o número total de identificadores de veículos - 1 retornado na função AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (que deve ser chamada primeiro).
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
struct StaticInfVeh{
int report;
int idVeh;
int type;
double length;
double width;
double maxDesiredSpeed;
double maxAcceleration;
double normalDeceleration;
double maxDeceleration;
double speedAcceptance;
double minDistanceVeh;
double giveWayTime;
double guidanceAcceptance;
int enrouted;
int equipped;
int tracked;
bool keepfastLane;
double safetyMarginFactor;
double headwayMin;
double sensitivityFactor;
double reactionTime;
double reactionTimeAtStop;
double reactionTimeAtTrafficLight;
bool laneChangingCooperation;
double laneChangingAggressivenessLevel;
double distanceZoneFactor;
int centroidOrigin;
int centroidDest;
int idsectionExit;
int idLine;
void * internalInfo;
};
em que:
- relatório: 0, OK, caso contrário código de erro
- idVeh: identificador do veículo
- type: Tipo de veículo (carro, ônibus, caminhão etc.)
- length: Comprimento do veículo (m ou pés, dependendo das unidades definidas na rede).
- width: Largura do veículo (m ou pés, dependendo das unidades definidas na rede).
- maxDesiredSpeed: Velocidade máxima desejada do veículo (km/h ou mph, dependendo das unidades definidas na rede).
- maxAcceleration: Aceleração máxima do veículo (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- normalDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições normais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- maxDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições especiais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- speedAcceptance: Grau de aceitação dos limites de velocidade.
- minDistanceVeh: Distância que o veículo mantém entre si e o veículo precedente (metros ou pés, dependendo das unidades definidas na rede).
- giveWayTime: Tempo após o qual o veículo se torna mais agressivo em situações de cedência de passagem (segundos).
- guidanceAcceptance: Nível de conformidade do veículo às indicações de orientação.
- em rota: 0 significa que o veículo não atualizará o caminho em percurso; 1 significa que o veículo mudará o caminho em percurso dependendo da porcentagem definida de veículos que atualizam o caminho em percurso.
- equipados: 1 significa veículo equipado.
- rastreados: 0 significa veículo não rastreado, 1 significa veículo rastreado.
- keepfastLane: significa que o veículo mantém a faixa rápida durante a ultrapassagem
- safetyMarginFactor: Fator de Margem de Segurança
- headwayMin: headway mínimo a manter em relação ao líder
- sensitivityFactor: Estimativa da aceleração do líder
- reactionTime: Tempo de reação do veículo
- reactionTimeAtStop: Tempo de reação na parada do veículo
- reactionTimeAtTrafficLight: Tempo de reação do veículo quando parado como o primeiro da fila em um semáforo.
- laneChangingCooperation:
- laneChangingAggressivenessLevel:
- distanceZoneFactor:
- centroidOrigin: Identificador do centroide de origem do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- centroidDest: : Identificador do centroide de destino do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- idsectionExit: : Identificador da seção de saída de destino do veículo, quando o centroide de destino usa percentuais como destino (caso contrário, é –1) e as condições de tráfego são definidas por uma matriz OD.
- idLine: Identificador da Linha de Transporte Público, quando o veículo foi gerado como veículo de transporte público.
- internalInfo: Somente para uso interno.
Ler as Informações Instantâneas do Veículo sobre um detector ¶
Em C++ e Python¶
Explicação¶
Lê as informações estáticas instantâneas de veículo de todos os veículos equipados sobre o detector, quando o detector tem a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é considerada. A primeira função fornece a última medida disponível durante o último passo de simulação, enquanto a última fornece a medida para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection). É altamente recomendável que o ciclo de detecção seja igual ao passo de simulação. Isso pode ser feito marcando a opção Igual ao passo de simulação localizada na pasta da aba Main do editor de cenários. Esta função requer que o número de Veículos que cruzaram o detector seja conhecido chamando AKIDetGetNbVehsEquippedOverCyclebyId ou AKIDetGetNbVehsEquippedOverInstantDetectionbyId.
Formato¶
StaticInfVeh AKIDetGetInfVehOverStaticInfVehCyclebyId (int iddet, int elem, int vehTypePos);
StaticInfVeh AKIDetGetInfVehInOverStaticInfVehInstantDetectionbyId(int iddet, int elem, int vehTypePos, double endtime);
Parâmetros¶
- iddet: O identificador do detector.
- elem: O número do veículo. Deve estar entre 0 e o número total de identificadores de veículos - 1 retornado na função AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (que deve ser chamada primeiro).
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
struct StaticInfVeh{ int report; int idVeh; int type; double length; double width; double maxDesiredSpeed; double maxAcceleration; double normalDeceleration; double maxDeceleration; double speedAcceptance; double minDistanceVeh; double giveWayTime; double guidanceAcceptance; int enrouted; int equipped; int tracked; bool keepfastLane; double safetyMarginFactor; double headwayMin; double sensitivityFactor; double reactionTime; double reactionTimeAtStop; double reactionTimeAtTrafficLight; bool laneChangingCooperation; double laneChangingAggressivenessLevel; double distanceZoneFactor; int centroidOrigin; int centroidDest; int idsectionExit; int idLine; void * internalInfo; };
em que:
- relatório: 0, OK, caso contrário código de erro
- idVeh: identificador do veículo
- type: Tipo de veículo (carro, ônibus, caminhão etc.)
- length: Comprimento do veículo (m ou pés, dependendo das unidades definidas na rede).
- width: Largura do veículo (m ou pés, dependendo das unidades definidas na rede).
- maxDesiredSpeed: Velocidade máxima desejada do veículo (km/h ou mph, dependendo das unidades definidas na rede).
- maxAcceleration: Aceleração máxima do veículo (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- normalDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições normais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- maxDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições especiais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- speedAcceptance: Grau de aceitação dos limites de velocidade.
- minDistanceVeh: Distância que o veículo mantém entre si e o veículo precedente (metros ou pés, dependendo das unidades definidas na rede).
- giveWayTime: Tempo após o qual o veículo se torna mais agressivo em situações de cedência de passagem (segundos).
- guidanceAcceptance*: Nível de adesão do veículo às indicações de orientação.
- em rota: 0 significa que o veículo não atualizará o caminho em percurso; 1 significa que o veículo mudará o caminho em percurso dependendo da porcentagem definida de veículos que atualizam o caminho em percurso.
- equipados: 1 significa veículo equipado.
- rastreados: 0 significa veículo não rastreado, 1 significa veículo rastreado.
- keepfastLane: significa que o veículo mantém a faixa rápida durante a ultrapassagem
- safetyMarginFactor: Fator de Margem de Segurança
- headwayMin: headway mínimo a manter em relação ao líder
- sensitivityFactor: Estimativa da aceleração do líder
- reactionTime: Tempo de reação do veículo
- reactionTimeAtStop: Tempo de reação na parada do veículo
- reactionTimeAtTrafficLight: Tempo de reação do veículo quando parado como o primeiro da fila em um semáforo.
- laneChangingCooperation:
- laneChangingAggressivenessLevel:
- distanceZoneFactor:
- centroidOrigin: Identificador do centroide de origem do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- centroidDest: : Identificador do centroide de destino do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- idsectionExit: : Identificador da seção de saída de destino do veículo, quando o centroide de destino usa percentuais como destino (caso contrário, é –1) e as condições de tráfego são definidas por uma matriz OD.
- idLine: Identificador da Linha de Transporte Público, quando o veículo foi gerado como veículo de transporte público.
- internalInfo: Somente para uso interno.
Ler as Informações Instantâneas do Veículo sobre um detector ¶
Em C++ e Python¶
Explicação¶
Lê as informações estáticas instantâneas de veículo de todos os veículos equipados sobre o detector, quando o detector tem a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é considerada. A primeira função fornece a última medida disponível durante o último passo de simulação, enquanto a última fornece a medida para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection). É altamente recomendável que o ciclo de detecção seja igual ao passo de simulação. Isso pode ser feito marcando a opção Igual ao passo de simulação localizada na pasta da aba Main do editor de cenários. Esta função requer que o número de Veículos que cruzaram o detector seja conhecido chamando AKIDetGetNbVehsEquippedOverCyclebyId ou AKIDetGetNbVehsEquippedOverInstantDetectionbyId.
Formato¶
StaticInfVeh AKIDetGetInfVehOverStaticInfVehCyclebyId (int iddet, int elem, int vehTypePos); StaticInfVeh AKIDetGetInfVehInOverStaticInfVehInstantDetectionbyId(int iddet, int elem, int vehTypePos, double endtime);
Parâmetros¶
- iddet: O identificador do detector.
- elem: O número do veículo. Deve estar entre 0 e o número total de identificadores de veículos - 1 retornado na função AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (que deve ser chamada primeiro).
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
struct StaticInfVeh{ int report; int idVeh; int type; double length; double width; double maxDesiredSpeed; double maxAcceleration; double normalDeceleration; double maxDeceleration; double speedAcceptance; double minDistanceVeh; double giveWayTime; double guidanceAcceptance; int enrouted; int equipped; int tracked; bool keepfastLane; double safetyMarginFactor; double headwayMin; double sensitivityFactor; double reactionTime; double reactionTimeAtStop; double reactionTimeAtTrafficLight; bool laneChangingCooperation; double laneChangingAggressivenessLevel; double distanceZoneFactor; int centroidOrigin; int centroidDest; int idsectionExit; int idLine; void * internalInfo; };
em que:
- relatório: 0, OK, caso contrário código de erro
- idVeh: identificador do veículo
- type: Tipo de veículo (carro, ônibus, caminhão etc.)
- length: Comprimento do veículo (m ou pés, dependendo das unidades definidas na rede).
- width: Largura do veículo (m ou pés, dependendo das unidades definidas na rede).
- maxDesiredSpeed: Velocidade máxima desejada do veículo (km/h ou mph, dependendo das unidades definidas na rede).
- maxAcceleration: Aceleração máxima do veículo (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- normalDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições normais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- maxDeceleration: Desaceleração máxima do veículo que pode ser aplicada em condições especiais (m/s2 ou ft/ s2, dependendo das unidades definidas na rede).
- speedAcceptance: Grau de aceitação dos limites de velocidade.
- minDistanceVeh: Distância que o veículo mantém entre si e o veículo precedente (metros ou pés, dependendo das unidades definidas na rede).
- giveWayTime: Tempo após o qual o veículo se torna mais agressivo em situações de cedência de passagem (segundos).
- guidanceAcceptance*: Nível de adesão do veículo às indicações de orientação.
- em rota: 0 significa que o veículo não mudará de caminho enroute, 1 significa que o veículo mudará de caminho enroute dependendo da percentege de veículos enrouted definida.
- equipados: 1 significa veículo equipado.
- rastreados: 0 significa veículo não rastreado, 1 significa veículo rastreado.
- keepfastLane: significa que o veículo mantém a faixa rápida durante a ultrapassagem
- safetyMarginFactor: Fator de Margem de Segurança
- headwayMin: headway mínimo a manter em relação ao líder
- sensitivityFactor: Estimativa da aceleração do líder
- reactionTime: Tempo de reação do veículo
- reactionTimeAtStop: Tempo de reação na parada do veículo
- reactionTimeAtTrafficLight: Tempo de reação do veículo quando parado como o primeiro da fila em um semáforo.
- laneChangingCooperation:
- laneChangingAggressivenessLevel:
- distanceZoneFactor:
- centroidOrigin: Identificador do centroide de origem do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- centroidDest: : Identificador do centroide de destino do veículo, quando as condições de tráfego são definidas por uma matriz OD.
- idsectionExit: : Identificador da seção de saída de destino do veículo, quando o centroide de destino usa percentuais como destino (caso contrário, é –1) e as condições de tráfego são definidas por uma matriz OD.
- idLine: Identificador da Linha de Transporte Público, quando o veículo foi gerado como veículo de transporte público.
- internalInfo: Somente para uso interno.
Ler as informações do veículo com Adaptive Cruise Control de um detector ¶
Em C++ e Python¶
Explicação¶
Lê os parâmetros de Adaptive Cruise Control a partir das informações estáticas de veículo de todos os veículos equipados que cruzaram o detector, quando o detector tem a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículo. No caso de o tipo de veículo ser 0, a distinção por tipo de veículo não é considerada. A primeira função fornece a última medição disponível durante o último passo de simulação, enquanto a segunda fornece a medição para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection). É altamente recomendado que o ciclo de detecção seja igual ao passo de simulação. Isso pode ser feito marcando a opção Igual ao passo de simulação localizada na pasta da aba Main do editor de cenário. Esta função exige que o número de Vehicles que cruzaram o detector seja conhecido chamando AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId.
Formato¶
StaticInfVehACCParams AKIDetGetInfVehInDetectionStaticInfVehACCParamsCyclebyId (int iddet, int elem, int vehTypePos);
StaticInfVehACCParams AKIDetGetInfVehInDetectionStaticInfVehACCParamsInstantDetectionbyId(int iddet, int elem, int vehTypePos, double endtime);
Parâmetros¶
- iddet: O identificador do detector.
- elem: O número do veículo. Deve estar entre 0 e o número total de identificadores de veículos - 1 retornado na função AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (que deve ser chamada primeiro).
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
struct StaticInfVehACCParams {
int report;
int idVeh;
int accType;
double minClearanceDistance;
double maxClearanceDistance;
double speedGainFreeFlow;
double distanceGain;
double speedGainPrec;
double desiredTimeGap;
double connectedDistanceGain;
double connectedSpeedGain;
double minTimeGapThreshold;
double maxTimeGapThreshold;
double followerTimeGap;
double leaderTimeGap;
};
em que:
Parâmetros comuns a todos os veículos simulados:
- relatório: Código de erro retornado (0 significa sucesso).
- idVeh: O ID do veículo simulado.
- accType: O módulo ACC do veículo simulado (0: None, 1: ACC, 2: CACC).
Parâmetros do Modelo ACC:
(Todos estes parâmetros serão -1 quando o módulo estiver desativado)
- minClearanceDistance: O limite inferior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- maxClearanceDistance: O limite superior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- speedGainFreeFlow: O ganho sobre a diferença de velocidade entre a velocidade de fluxo livre e a velocidade atual do veículo em questão (s-1).
- distanceGain: O ganho sobre a diferença de posição entre o veículo precedente e o veículo em questão (s-2).
- speedGainPrec: O ganho sobre a diferença de velocidade entre o veículo precedente e o veículo em questão (s-1).
- desiredTimeGap: O intervalo de tempo desejado do controlador ACC (s).
Parâmetros do Modelo CACC:
(Todos estes parâmetros serão -1 quando o módulo estiver desativado)
- connectedDistanceGain: O ganho sobre a diferença de posição entre o veículo conectado precedente e o veículo CACC em questão (s-1).
- connectedSpeedGain: O ganho sobre a diferença de velocidade entre o veículo conectado precedente e o veículo CACC em questão.
- minTimeGapThreshold: O limite inferior para o intervalo de tempo (s).
- maxTimeGapThreshold: O limite superior para o intervalo de tempo (s).
- followerTimeGap: O intervalo de tempo constante entre o último veículo da sequência conectada precedente e o veículo CACC em questão (s).
- leaderTimeGap: O intervalo de tempo constante entre o último veículo da sequência conectada precedente e o veículo CACC em questão (s).
Ler as informações do veículo com Adaptive Cruise Control sobre um detector ¶
Em C++ e Python¶
Explicação¶
Leia os parâmetros de Adaptive Cruise Control a partir das informações estáticas dos veículos de todos os veículos equipados sobre o detector, quando o detector tiver a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é considerada. A primeira função fornece a última medição disponível durante o último passo de simulação, enquanto a segunda fornece a medição para um instante específico durante o último passo de simulação (esse tempo poderia ser obtido usando a função AKIDetGetEndTimeMeasureAvailableInstantDetection). É altamente recomendável que o ciclo de detecção seja igual ao passo de simulação. Isso pode ser feito marcando a opção Igual ao passo de simulação localizada na pasta da aba Main do editor de cenários. Esta função requer que o número de Veículos que cruzaram o detector seja conhecido chamando AKIDetGetNbVehsEquippedOverCyclebyId ou AKIDetGetNbVehsEquippedOverInstantDetectionbyId.
Formato¶
StaticInfVehACCParams AKIDetGetInfVehOverStaticInfVehACCParamsCyclebyId (int iddet, int elem, int vehTypePos);
StaticInfVehACCParams AKIDetGetInfVehInOverStaticInfVehACCParamsInstantDetectionbyId(int iddet, int elem, int vehTypePos, double endtime);
Parâmetros¶
- iddet: O identificador do detector.
- elem: O número do veículo. Deve estar entre 0 e o número total de identificadores de veículos - 1 retornado na função AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (que deve ser chamada primeiro).
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
struct StaticInfVehACCParams {
int report;
int idVeh;
int accType;
double minClearanceDistance;
double maxClearanceDistance;
double speedGainFreeFlow;
double distanceGain;
double speedGainPrec;
double desiredTimeGap;
double connectedDistanceGain;
double connectedSpeedGain;
double minTimeGapThreshold;
double maxTimeGapThreshold;
double followerTimeGap;
double leaderTimeGap;
};
em que:
Parâmetros comuns a todos os veículos simulados:
- relatório: Código de erro retornado (0 significa sucesso).
- idVeh: O ID do veículo simulado.
- accType: O módulo ACC do veículo simulado (0: None, 1: ACC, 2: CACC).
Parâmetros do Modelo ACC:
(Todos estes parâmetros serão -1 quando o módulo estiver desativado)
- minClearanceDistance: O limite inferior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- maxClearanceDistance: O limite superior para o espaço entre o para-choque traseiro de um veículo e o para-choque dianteiro do seguinte (m).
- speedGainFreeFlow: O ganho sobre a diferença de velocidade entre a velocidade de fluxo livre e a velocidade atual do veículo em questão (s-1).
- distanceGain: O ganho sobre a diferença de posição entre o veículo precedente e o veículo em questão (s-2).
- speedGainPrec: O ganho sobre a diferença de velocidade entre o veículo precedente e o veículo em questão (s-1).
- desiredTimeGap: O intervalo de tempo desejado do controlador ACC (s).
Parâmetros do Modelo CACC:
(Todos estes parâmetros serão -1 quando o módulo estiver desativado)
- connectedDistanceGain: O ganho sobre a diferença de posição entre o veículo conectado precedente e o veículo CACC em questão (s-1).
- connectedSpeedGain: O ganho sobre a diferença de velocidade entre o veículo conectado precedente e o veículo CACC em questão.
- minTimeGapThreshold: O limite inferior para o intervalo de tempo (s).
- maxTimeGapThreshold: O limite superior para o intervalo de tempo (s).
- followerTimeGap: O intervalo de tempo constante entre o último veículo da sequência conectada precedente e o veículo CACC em questão (s).
- leaderTimeGap: O intervalo de tempo constante entre o último veículo da sequência conectada precedente e o veículo CACC em questão (s).
Ler as informações de um Veículo em um Detector¶
Em C++ e Python¶
Explicação¶
Ler as informações de determinado veículo equipado em um detector. Esta função requer que, anteriormente, obtenhamos o número de veículos equipados que cruzaram o detector chamando AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId.
Formato¶
InfVeh AKIDetGetInfVehInDetectionInfVehCyclebyId(int iddet, int elem, int VehTypePos)
InfVeh AKIDetGetInfVehInDetectionInfVehInstantDetectionbyId(int iddet, int elem, int VehTypePos, double endtime);
Parâmetros¶
- iddet: Identificador do detector
- elem: Índice do veículo, de 0 a (Número Total de Veículos no detector – 1), retornado na função AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (que deve ser chamada primeiro).
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
struct InfVeh{
int report;
int idVeh;
int type;
// Information in Vehicle when it is in a section
int idSection;
int segment;
int numberLane;
// Information in Vehicle when it is in a node
int idJunction;
int idSectionFrom;
int idLaneFrom;
int idSectionTo;
int idLaneTo;
double CurrentPos;
double distance2End;
double xCurrentPos, yCurrentPos, zCurrentPos;
double xCurrentPosBack, yCurrentPosBack, zCurrentPosBack;
double CurrentSpeed, PreviousSpeed;
double TotalDistance;
double SystemGenerationT;
double SystemEntranceT;
double SectionEntranceT;
double CurrentStopTime;
bool stopped;
uint mNbLostTurnings;
};
em que:
- relatório: 0, OK, caso contrário código de erro
- idVeh: identificador do veículo
- type: Tipo de veículo (carro, ônibus, caminhão etc.)
- idSection: Identificador da seção
- segmento: Número do segmento da seção onde o veículo está localizado (de 0 a n-1)
- numberLane: Número da faixa no segmento (a partir de 1, a faixa mais à direita, até N, a faixa mais à esquerda)
- CurrentPos: Posição dentro da seção = distância (m ou pés, dependendo das unidades definidas na rede) a partir do início da seção.
- distance2End: Distância até o fim da seção (m ou pés, dependendo das unidades definidas na rede)
- xCurrentPos, yCurrentPos, zCurrentPos: Coordenadas mundiais do ponto médio do para-choque dianteiro do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: Coordenadas mundiais do ponto médio do para-choque traseiro do veículo.
- CurrentSpeed: Velocidade atual (em km/h ou mph, dependendo das unidades definidas na rede
- PreviousSpeed: a velocidade no passo de simulação anterior (em km/h ou mph, dependendo das unidades definidas na rede.
- TotalDistance: Distância total percorrida (m ou pés) pelo veículo.
- SystemGenerationT: Tempo absoluto de geração do veículo no sistema. Se nenhuma fila virtual for encontrada em sua seção de entrada, será o mesmo que SystemEntranceT.
- SystemEntranceT: Tempo absoluto de entrada do veículo no sistema, isto é, em sua seção de entrada. Se nenhuma fila virtual for encontrada em sua seção de entrada, será igual a SystemGenerationT.
- SectionEntranceT: Tempo absoluto de entrada do veículo na seção atual.
- CurrentStopTime: Tempo atual de parada.
- parado: True se o veículo permanecer parado.
- mNbLostTurnings O número de movimentos de conversão perdidos.
Os outros campos ou atributos não têm significado, portanto seu valor é –1.
Ler as informações de um Veículo sobre um Detector¶
Em C++ e Python¶
Explicação¶
Ler as informações de determinado veículo equipado sobre um detector. Esta função requer que, anteriormente, obtenhamos o número de veículos equipados que cruzaram o detector chamando AKIDetGetNbVehsEquippedOverCyclebyId ou AKIDetGetNbVehsEquippedOverInstantDetectionbyId.
Formato¶
InfVeh AKIDetGetInfVehOverInfVehCyclebyId(int iddet, int elem, int VehTypePos)
InfVeh AKIDetGetInfVehOverInfVehInstantDetectionbyId(int iddet, int elem, int VehTypePos, double endtime);
Parâmetros¶
- iddet: Identificador do detector
- elem: Índice do veículo, de 0 a (Número Total de Veículos no detector – 1), retornado na função AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (que deve ser chamada primeiro).
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
struct InfVeh{ int report; int idVeh; int type; // Information in Vehicle when it is in a section int idSection; int segment; int numberLane; // Information in Vehicle when it is in a node int idJunction; int idSectionFrom; int idLaneFrom; int idSectionTo; int idLaneTo;
double CurrentPos; double distance2End; double xCurrentPos, yCurrentPos, zCurrentPos; double xCurrentPosBack, yCurrentPosBack, zCurrentPosBack; double CurrentSpeed, PreviousSpeed; double TotalDistance; double SystemGenerationT; double SystemEntranceT; double SectionEntranceT; double CurrentStopTime; bool stopped; uint mNbLostTurnings; };
em que:
- relatório: 0, OK, caso contrário código de erro
- idVeh: identificador do veículo
- type: Tipo de veículo (carro, ônibus, caminhão etc.)
- idSection: Identificador da seção
- segmento: Número do segmento da seção onde o veículo está localizado (de 0 a n-1)
- numberLane: Número da faixa no segmento (a partir de 1, a faixa mais à direita, até N, a faixa mais à esquerda)
- CurrentPos: Posição dentro da seção = distância (m ou pés, dependendo das unidades definidas na rede) a partir do início da seção.
- distance2End: Distância até o fim da seção (m ou pés, dependendo das unidades definidas na rede)
- xCurrentPos, yCurrentPos, zCurrentPos: Coordenadas mundiais do ponto médio do para-choque dianteiro do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: Coordenadas mundiais do ponto médio do para-choque traseiro do veículo.
- CurrentSpeed: Velocidade atual (em km/h ou mph, dependendo das unidades definidas na rede
- PreviousSpeed: a velocidade no passo de simulação anterior (em km/h ou mph, dependendo das unidades definidas na rede.
- TotalDistance: Distância total percorrida (m ou pés) pelo veículo.
- SystemGenerationT: Tempo absoluto de geração do veículo no sistema. Se nenhuma fila virtual for encontrada em sua seção de entrada, será o mesmo que SystemEntranceT.
- SystemEntranceT: Tempo absoluto de entrada do veículo no sistema, isto é, em sua seção de entrada. Se nenhuma fila virtual for encontrada em sua seção de entrada, será igual a SystemGenerationT.
- SectionEntranceT: Tempo absoluto de entrada do veículo na seção atual.
- CurrentStopTime: Tempo atual de parada.
- parado: True se o veículo permanecer parado.
- mNbLostTurnings O número de movimentos de conversão perdidos.
Os outros campos ou atributos não têm significado, portanto seu valor é –1.
Ler as informações de um Veículo sobre um Detector¶
Em C++ e Python¶
Explicação¶
Ler as informações de determinado veículo equipado sobre um detector. Esta função requer que, anteriormente, obtenhamos o número de veículos equipados que cruzaram o detector chamando AKIDetGetNbVehsEquippedOverCyclebyId ou AKIDetGetNbVehsEquippedOverInstantDetectionbyId.
Formato¶
InfVeh AKIDetGetInfVehOverInfVehCyclebyId(int iddet, int elem, int VehTypePos) InfVeh AKIDetGetInfVehOverInfVehInstantDetectionbyId(int iddet, int elem, int VehTypePos, double endtime);
Parâmetros¶
- iddet: Identificador do detector
- elem: Índice do veículo, de 0 a (Número Total de Veículos no detector – 1), retornado na função AKIDetGetNbVehsEquippedInDetectionCyclebyId ou AKIDetGetNbVehsEquippedInDetectionInstantDetectionbyId (que deve ser chamada primeiro).
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- endtime: O tempo que define a medida instantânea.
Saída¶
struct InfVeh{ int report; int idVeh; int type; // Information in Vehicle when it is in a section int idSection; int segment; int numberLane; // Information in Vehicle when it is in a node int idJunction; int idSectionFrom; int idLaneFrom; int idSectionTo; int idLaneTo;
double CurrentPos; double distance2End; double xCurrentPos, yCurrentPos, zCurrentPos; double xCurrentPosBack, yCurrentPosBack, zCurrentPosBack; double CurrentSpeed, PreviousSpeed; double TotalDistance; double SystemGenerationT; double SystemEntranceT; double SectionEntranceT; double CurrentStopTime; };
em que:
- relatório: 0, OK, caso contrário código de erro
- idVeh: identificador do veículo
- type: Tipo de veículo (carro, ônibus, caminhão etc.)
- idSection: Identificador da seção
- segmento: Número do segmento da seção onde o veículo está localizado (de 0 a n-1)
- numberLane: Número da faixa no segmento (a partir de 1, a faixa mais à direita, até N, a faixa mais à esquerda)
- CurrentPos: Posição dentro da seção = distância (m ou pés, dependendo das unidades definidas na rede) a partir do início da seção.
- distance2End: Distância até o fim da seção (m ou pés, dependendo das unidades definidas na rede)
- xCurrentPos, yCurrentPos, zCurrentPos: Coordenadas mundiais do ponto médio do para-choque dianteiro do veículo.
- xCurrentPosBack, yCurrentPosBack, zCurrentPosBack: Coordenadas mundiais do ponto médio do para-choque traseiro do veículo.
- CurrentSpeed: Velocidade atual (em km/h ou mph, dependendo das unidades definidas na rede
- PreviousSpeed: a velocidade no passo de simulação anterior (em km/h ou mph, dependendo das unidades definidas na rede.
- TotalDistance: Distância total percorrida (m ou pés) pelo veículo.
- SystemGenerationT: Tempo absoluto de geração do veículo no sistema. Se nenhuma fila virtual for encontrada em sua seção de entrada, será o mesmo que SystemEntranceT.
- SystemEntranceT: Tempo absoluto de entrada do veículo no sistema, isto é, em sua seção de entrada. Se nenhuma fila virtual for encontrada em sua seção de entrada, será igual a SystemGenerationT.
- SectionEntranceT: Tempo absoluto de entrada do veículo na seção atual.
- CurrentStopTime: Tempo atual de parada.
Os outros campos ou atributos não têm significado, portanto seu valor é –1.
Ler contador agregado no último intervalo de detecção¶
Em C++ e Python¶
Explicação¶
Ler o contador agregado durante o último intervalo de detecção. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é considerada.
Formato¶
int AKIDetGetCounterAggregatedbyId(int IdDetector, int VehTypePos)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- ≥ 0: o valor do contador retornado
- < 0: Erro
Ler a Velocidade Agregada no Último Intervalo de Detecção¶
Em C++ e Python¶
Explicação¶
Lê a velocidade agregada durante o último intervalo de detecção (km/h ou mph, dependendo das unidades definidas na rede). É possível distinguir a detecção para diferentes tipos de veículos. No caso em que o tipo de veículo é 0, a distinção por tipo de veículo não é considerada.
Formato¶
double AKIDetGetSpeedAggregatedbyId(int IdDetector, int VehTypePos)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- ≥ 0: a velocidade retornada em km/h ou mph, dependendo das unidades definidas na rede.
- < 0: Erro
Ler ocupação agregada no último intervalo de detecção¶
Em C++ e Python¶
Explicação¶
Lê a porcentagem do tempo em que o detector esteve ocupado durante o último intervalo de detecção. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é considerada.
Formato¶
double AKIDetGetTimeOccupedAggregatedbyId(int IdDetector, int VehTypePos)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- ≥ 0: a ocupação retornada
- < 0: Erro
Ler presença agregada no último intervalo de detecção¶
Em C++ e Python¶
Explicação¶
Leia a presença agregada durante o último intervalo de detecção. Ela será 0 se nenhum veículo tiver passado sobre o detector e 1 caso contrário. É possível distinguir a detecção para diferentes tipos de veículos. No caso de o tipo de veículo ser 0, a distinção por tipo de veículo não é levada em conta.
Formato¶
int AKIDetGetPresenceAggregatedbyId(int IdDetector, int VehTypePos)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- ≥ 0: a presença retornada
- < 0: Erro
Ler densidade agregada no último intervalo de detecção¶
Em C++ e Python¶
Explicação¶
Lê a densidade (expressa em veh/km ou veh/mi, dependendo das unidades definidas na rede) durante o último intervalo de detecção. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é levada em conta.
Formato¶
double AKIDetGetDensityAggregatedbyId(int IdDetector, int VehTypePos)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- ≥0: a densidade retornada
- < 0: Erro
Ler headway agregado no último intervalo de detecção¶
Em C++ e Python¶
Explicação¶
Lê o headway médio entre veículos (tempo médio entre para-choques) que cruzaram o detector durante o último intervalo de detecção. É possível distinguir a detecção para diferentes tipos de veículos. No caso em que o tipo de veículo é 0, a distinção por tipo de veículo não é considerada.
Formato¶
double AKIDetGetHeadwayAggregatedbyId(int IdDetector, int VehTypePos)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- ≥0: o headway retornado, em segundos.
- < 0: Erro
Ler o Número de Veículos Equipados com seu traço no Último Intervalo de Detecção¶
Em C++ e Python¶
Explicação¶
Ler o número de veículos equipados que cruzaram o detector durante o último intervalo de detecção, quando o detector tem a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículos. No caso em que o tipo de veículo é 0, a distinção por tipo de veículo não é levada em conta.
Formato¶
int AKIDetGetNbVehsInDetectionAggregatedbyId(int IdDetector, int VehTypePos)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- ≥0: o número de veículos
- < 0: Erro
Ler o rastreamento de veículos equipados no último intervalo de detecção¶
Em C++ e Python¶
Explicação¶
Lê as informações dos veículos equipados que cruzaram o detector durante o último intervalo de detecção, quando o detector tem a capacidade "Equipped Vehicle" ativada. É possível distinguir a detecção para diferentes tipos de veículo. Caso o tipo de veículo seja 0, a distinção por tipo de veículo não é considerada.
Formato¶
EquippedInfVeh AKIDetGetInfVehInDetectionAggregatedbyId(int IdDetector, int vehTypePos, int elem)
Parâmetros¶
- IdDetector: O identificador do detector.
- vehTypePos: A posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
- elem: O número do veículo. Ele deve estar entre 0 e o número total de identificadores de veículos -1
Saída¶
struct EquippedInfVeh {
int report;
double timedetected;
int idVeh;
int vehType;
double speed;
double headway;
int idptline;
}
em que:
- relatório: 0, OK, caso contrário código de erro.
- timedetected: Instante em que o veículo equipado cruzou o detector.
- idVeh: identificador do veículo
- vehType: Posição do tipo de veículo na lista de tipos de veículos em uso. 0 corresponde a todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), a um tipo de veículo específico.
- velocidade: Velocidade instantânea do veículo (km/h ou mph, dependendo das unidades definidas na rede)
- intervalo entre veículos: Headway instantâneo do veículo (s)
- idptline: Identificador da linha de transporte público (-1 quando o veículo equipado não pertence a nenhuma linha de transporte público)
Funções relativas a dados estatísticos de detectores¶
A estrutura retornada por este conjunto de funções é a seguinte:
struct StructAkiEstadDetector{
int report;
int Id;
int Flow; /* Flow */
double Sa; /* Speed: Average */
double Density; /* Density */
double Occupancy; /* Occupancy */
double Headway; /* Headway */
}
Ler dados de estatísticas globais de um Detector¶
Em C++ e Python¶
Explicação¶
Leia os dados estatísticos do detector coletados durante todo o período de simulação.
Formato¶
StructAkiEstadDetector AKIEstGetGlobalStatisticsDetector( int detectorId, int vehTypePos )
Parâmetros¶
- detectorId é o identificador do detector.
- vehTypePos é a posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- StructAkiEstadDetector: estrutura com informações estatísticas. Um relatório de 0 significa OK; caso contrário, contém o código de erro.
Ler dados estatísticos periódicos de um Detector¶
C++ e Python¶
Explicação¶
Lê os dados estatísticos do detector coletados durante o último intervalo estatístico de detecção.
Formato¶
StructAkiEstadDetector AKIEstGetParcialStatisticsDetector( int detectorId, double timeSta, int vehType )
Parâmetros¶
- detectorId é o identificador do detector.
- timeSta é o tempo atual de simulação em segundos a partir da meia-noite.
- vehTypePos é a posição do tipo de veículo na lista de tipos de veículos em uso. 0 deve ser usado para todos os tipos de veículos e um valor de 1 a AKIVehGetNbVehTypes (), para um tipo de veículo específico.
Saída¶
- StructAkiEstadDetector: estrutura com informações estatísticas. Um relatório de 0 significa OK; caso contrário, contém o código de erro.