Componentes de función macro
Marzo 2016: Marga Delgado explica cómo usar los componentes de función macro para crear elementos de salida adicionales a la hora de llevar a cabo una asignación.
Por Dimitris Triantafyllos
Diciembre de 2021
La API de Aimsun Next es una colección de funciones, en Python o C++, que te permiten leer información y realizar acciones durante una simulación mesoscópica, microscópica o híbrida mesoscópica-microscópica. Con la API, puedes hacer cambios mientras la simulación se está ejecutando, mientras que con el scripting, tienes que hacer cualquier cambio antes de que empiece la simulación.
También puedes utilizar la API para conectar una aplicación externa a la simulación. Internamente, dentro de Aimsun Next, la API puede comunicarse con el motor de simulación, y externamente, con la aplicación externa.
La aplicación más habitual de la API de Aimsun Next es emular los Sistemas Inteligentes de Transporte (ITS), los Sistemas Avanzados de Asistencia al Conductor (ADAS) y las aplicaciones de los Vehículos Conectados (VC): por ejemplo, implementar algoritmos personalizados de prioridad de señales de tránsito y de control adaptativo del tráfico; aplicar la gestión del tráfico sobre la marcha; controlar los parámetros de comportamiento de la conducción del vehículo, etc. La funcionalidad que proporciona la API depende del motor de simulación:
Tanto en las simulaciones mesoscópicas como en las microscópicas, puedes:
En una simulación microscópica (o en el área microscópica de una simulación híbrida meso-micro), puedes:
En una simulación mesoscópica, puedes:
En el siguiente ejemplo utilizaremos la API para controlar la velocidad y el carril de los vehículos que se acercan a una incorporación. Esto representa una implementación muy sencilla (probablemente simplista) de una aplicación de fusión cooperativa para vehículos conectados.
Paso 1: Establecemos el seguimiento de todos los vehículos que entran en la sección aguas arriba de la confluencia para poder modificar su velocidad y el carril de destino cuando sea necesario. Esto se consigue llamando a la función
int AKIVehSetAsTracked(int aidVeh)
en la llamada de retorno de AAPIEnterVehicleSection
Paso 2: En cada paso de la simulación obtenemos el número de vehículos en los tramos seleccionados mediante la siguiente función:
int AKIVehStateGetNbVehiclesSection(int aidSec, bool considerAllSegments)
Paso 3: A continuación, leemos el estado de esos vehículos utilizando
int AKIVehStateGetVehicleInfSection(int aidSec, int indexveh)
Paso 4: A continuación, modificamos la velocidad de los vehículos aguas arriba de la fusión con
int AKIVehTrackedModifySpeed(int aidVeh, double newSpeed)
Ten en cuenta que esta función sólo te permite establecer una velocidad inferior a la calculada por el modelo de seguimiento del coche. Si no quieres estar limitado por la velocidad de seguimiento del coche, puedes utilizar en su lugar la siguiente función:
int AKIVehTrackedForceSpeed (int aidVeh, double newSpeed)
Paso 5: En la sección de la fusión, establecemos el carril más a la izquierda como carril objetivo llamando a
AKIVehTrackedModifyLane (int aidVeh, int nextLane)
Paso 6: Cuando los vehículos abandonan la sección de la fusión, volvemos a poner los vehículos como no rastreados llamando a
int AKIVehSetAsNoTracked(int aidVeh)
en elAAPIExitVehicleSection callback
Nota: Recuerda que el archivo Aimsun AAPI debe ser coherente con la versión de Aimsun que se esté utilizando. Puedes recuperarlo aquí:
Aimsun_Next_installation_folder/programming/Aimsun Next API/python/private/Micro/AAPI.py
La extensión de la interfaz de programación de aplicaciones (API) de Aimsun Next puede implementarse mediante un script de Python. Este script de Python es un archivo ASCII (con extensión: “.py“), que puede editarse en cualquier editor de texto. Este script de Python se proporciona con el software Aimsun Next en la carpeta Aimsun_Next_installation_folder (haz clic con el botón derecho del ratón en el acceso directo de Aimsun Next > Selecciona “Abrir ubicación del archivo”).
Licencia: Ten en cuenta que necesitas una licencia API para ejecutar este ejemplo. Para más información, contacta con info@aimsun.com
Marzo 2016: Marga Delgado explica cómo usar los componentes de función macro para crear elementos de salida adicionales a la hora de llevar a cabo una asignación.
Enero de 2020: Hay varios scripts disponibles en la plantilla: Margarida Delgado explica cómo el Script nº 10 puede acelerar el proceso de filtrado y visualización de los nodos señalizados.
SHARE
Aimsun Next 23
Aimsun Next 20.0.5
Aimsun Next 23
@manual {AimsunManual,
título = {Aimsun Next 23 User’s Manual},
autor = {Aimsun},
edición = {Aimsun Next 23.0.0},
domicilio = {Barcelona, Spain},
año = {2023. [Online]},
mes = {Accessed on: Month, Day, Year},
url = {https://docs.aimsun.com/next/23.0.0/},
}
Aimsun Next 20.0.5
@manual {AimsunManual,
título = {Aimsun Next 20.0.5 User’s Manual},
autor = {Aimsun},
edición = {Aimsun Next 20.0.5},
domicilio = {Barcelona, Spain},
año = {2021. [En software]},
mes = {Accessed on: Month, Day, Year},
url = {qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html},
}
Aimsun Next 23
TY – COMP
T1 – Manual del usuario de Aimsun Next 23
A1 – Aimsun
ET – Aimsun Next Version 23.0.0
Y1 – 2023
Y2 – Acceso: Mes, Día, Año
CY – Barcelona, España
PB – Aimsun
UR – [En software]. Disponible en: https://docs.aimsun.com/next/23.0.0/
Aimsun Next 20.0.5
TY – COMP
T1 – Manual del usuario de Aimsun Next 20.0.5
A1 – Aimsun
ET – Aimsun Next Version 20.0.5
Y1 – 2021
Y2 – Acceso: Mes, Día, Año
CY – Barcelona, España
PB – Aimsun
UR – [In software]. Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html