Enrutamiento de camiones con funciones de elección de ruta personalizadas

Mayo de 2023 – Nota técnica #80

Dimitris Triantafyllos

Senior Product Specialist

Antecedentes

La congestión del tráfico sigue siendo uno de los mayores problemas de la gestión logística. Para los profesionales de la logística, los retrasos relacionados con la congestión provocan costes de explotación adicionales (consumo excesivo de combustible, horas de trabajo extra, etc.), menor fiabilidad del tiempo de viaje, insatisfacción de los clientes, una mayor huella medioambiental y una menor seguridad para los conductores y la carga.

Una planificación eficaz de las rutas de los vehículos comerciales puede contribuir a reducir el impacto de la congestión en los plazos de entrega. Los operadores logísticos suelen poner a disposición de los conductores sistemas de guiado de flotas que les ayudan a tomar la mejor decisión a la hora de elegir una ruta. Puedes modelar este comportamiento del camión en el software de modelado de movilidad Aimsun Next. Te proporcionamos la posibilidad de codificar una función de Elección de Ruta personalizada que proporcione la probabilidad de elección de cada una de las rutas disponibles: las calculadas en base a los costes durante el intervalo o intervalos anteriores, las leídas desde un fichero de rutas de entrada, por ejemplo producidas con una asignación de Equilibrio Dinámico de Usuario (EDE), o incluso Rutas de OD predefinidas en el documento Aimsun Next.

Ejemplo

Una empresa de transporte por camión que presta servicios de acarreo de artículos especializados ha decidido actualizar su flota de camiones de un Sistema de Navegación Base (NS Base), que sólo sugiere una Ruta OD fija a un Sistema de Navegación Avanzado (NS Avanzado), que sugiere la ruta con el menor costo actual entre una selección de posibles rutas (predefinidas en Aimsun Next).

La demanda de tráfico consta de 2 matrices OD (Automóvil, Camión) que comienzan a las 08:00 h con una duración de 2 horas. En relación con la Asignación Dinámica de Tráfico (DTA) de turismos y camiones:

  • Para el vehículo tipo Coche: en ambos escenarios (NS Base y NS Avanzado), el Coche puede utilizar las rutas del archivo APA de Equilibrio Dinámico de Usuario (probabilidad 70%) o del cálculo de Elección Estocástica de Ruta (SRC) (probabilidad 30%). Para más información Asignación Dinámica de Tráfico – Aimsun Next Manual de Usuario.
  • Para el vehículo tipo Camión: en el escenario NS Base, los vehículos pesados seguirán siempre una Ruta OD predefinida específica (Ruta OD Principal), mientras que en el escenario NS Avanzado los vehículos pesados pueden elegir entre un conjunto de Rutas OD aplicando una función de Elección de Ruta personalizada en la Asignación Dinámica de Tráfico. En este caso, la función comparará los costes de viaje calculados en cada una de las rutas OD disponibles y asignará los camiones a la ruta con el coste más bajo estimado en los 5 minutos anteriores. Los costes de cada ruta se actualizarán cada intervalo de elección de ruta (5 minutos).

En caso de imprevisto, la entrega de la mercancía sufrirá un retraso importante con la Base NS. Se produce un incidente a las 08:15 de la mañana con una duración de 60 minutos en la ruta que los camiones tienen asignado seguir. El incidente es una Estrategia de Gestión del Tráfico >Sección Incidente cierre de 2 de 2 carriles en la autopista.

En este ejemplo, nos centraremos en una única ruta Origen-Destino específica.

Base NS

El sistema de navegación actual proporciona al conductor del camión una única ruta OD designada desde el centroide de origen denominado: Vic hasta el centroide de Destino denominado: Ribes independientemente de las condiciones actuales del tráfico en esa ruta. Así, el 100% de los camiones seguirán esta ruta.

La Figura 1 muestra las matrices OD en la demanda de tráfico (08:00-10:00 AM) tanto para los tipos de vehículo Coche como Camión y para la matriz OD para el tipo de vehículo Camión, el porcentaje 100% asignado a la Ruta OD Principal en la pestaña Asignación de Trayecto para Origen Vic y Destino Ribes. Para más información de cómo definir porcentajes a varias Rutas OD, revisa Matrices OD – Manual de Usuario Aimsun Next.

Figura 1

Para asignar la Ruta OD Principal al 100% de los Camiones:

  • Abrir el Experimento Dinámico
  • Vaya a la pestaña Asignación dinámica de tráfico
  • En Rutas fijas, establezca Siguiendo rutas OD para camiones en 100%.

La figura 2 muestra cómo definir el 100% de las rutas OD en el DTA.

Figura 2

Como se ha explicado, se producirá un incidente en la autopista entre las 08:15 y las 09:15 horas, cerrando 2 de los 2 carriles. La figura 3 muestra la ruta principal designada de los camiones para ese par de OD y la localización del incidente.

Figura 3

Como resultado:

  • El 30% de los coches (los que siguen rutas SRC) pueden ser reasignados para seguir rutas alternativas.
  • El 100% de los camiones se quedarán atascados en la autopista esperando a que se despeje el evento.

En el siguiente vídeo, puede comprobar la propagación de colas por tipo de ruta. Los camiones que aparecen en color naranja tienen asignada una única ruta OD.

NS avanzado

En el escenario del Sistema de Navegación Avanzada, se añadieron dos nuevas Rutas OD alternativas. Estas nuevas rutas OD se diseñaron para calcular las formas más fiables, conformes, rentables y eficaces para que los camiones lleguen a su destino en caso de que se produzca un imprevisto en la ruta. Todas estas rutas han sido definidas en Aimsun Next como objetos OD Route. Antes de la salida del camión, el sistema de navegación NS avanzado recomendará una de las rutas designadas, la ruta con el menor coste en los últimos 5 minutos (estamos utilizando la función de coste por defecto en todos los enlaces). La figura 4 muestra las 2 rutas OD alternativas de Vic a Ribes.

Figura 4

En este ejemplo creamos una nueva función de Elección de Ruta donde:

  • Los camiones serán asignados a seguir la ruta OD con menor coste observado en los últimos 5 minutos entre las 3 rutas OD designadas.
  • Para los Automóviles que seguirán SRC (30% de probabilidad) para este par Origen y Destino, se aplica una función logit.
  • En el caso de los Automóviles que seguirán trayectos DUE APA (probabilidad 70%), seguirán aún los trayectos DUE en el fichero APA con los porcentajes variando en cada intervalo de la elección de trayecto.

Para activar las 3 rutas OD designadas:

  1. Abrir la matriz OD Camión
  2. Ir a la pestaña Asignación de rutas
  3. Filtro por origen (Vic) y destino (Ribes)
  4. Asigne un valor > 0 a las 3 rutas OD cuyos costes desea evaluar. El valor no importa.

Figura 5

Para crear una nueva función de elección de ruta:

    1. Ir a Carpeta Datos de Demanda en el menú Proyecto.
    2. Crear una nueva función en la carpeta Funciones > Clic derecho > Nuevo > Función.
    3. En Tipo de función, seleccione la opción “Elección de ruta”.

Figura 6

A continuación encontrará la función de elección de ruta utilizada en este ejemplo. Para más información sobre cómo definir sus propias funciones de Elección de Ruta personalizadas, revise Funciones de Costo – Manual de Usuario Aimsun Next.

				
					import math 
def rcf( context, manager, origin, destination, pathsRC, pathsOD, pathsAPA, indexPath ): 
 
    # get the vehicle type name from GKFunctionCostContext and for Trucks 
    if context.getVehicle().getName() == "Truck": 
        print("indexPath: "+str(indexPath)+", vehicle: "+str(context.getVehicle().getName()) + ", origin: "+ str(origin.getId()) +", destination: "+str(destination.getId())+ ", pathsRC: "+str(len(pathsRC))+", pathsOD: "+str(len(pathsOD))+", pathsAPA: "+str(len(pathsAPA)) ) 
        # exclude all RC and APA file routes. The range of indexPath is 0 to the sum of the length of pathRC, pathOD, and pathAPA lists.  
        if indexPath < len(pathsRC) or indexPath>=len(pathsRC)+len(pathsOD): 
            return 0 
        indexPathOD = indexPath-len(pathsRC) 
        # number of the OD Routes 
        numPaths = len(pathsOD) 
        # path to assess 
        pIP = pathsOD[indexPathOD] 
        # calculate cost of the current path 
        costIP = -pIP.getSPCurrentCost(manager, context.userClass.getDTAVehicleType())/3600.0 
        # iterate through all paths except the current path 
        for j in range(numPaths): 
            if j!=indexPathOD: 
                # calculate cost of the rest of the paths 
                costJ = -pathsOD[j].getSPCurrentCost(manager, context.userClass.getDTAVehicleType())/3600.0 
                # examine if the new cost is greater than the cost of the main path 
                if costJ < costIP: 
                    # if yes, there is another path with lower cost, so this path should get a probability of 0 
                    return 0 
        # there is no other path with lower cost, so this path must be chosen by all trucks (probability of 1) 
        return 1 
 
    # for the rest of the vehicle types (Car), apply a logit as in the base scenario 
    else: 
        # set the scale factor equal to the scale factor in the base scenario 
        scaleFactor = 4 
        numPaths = len(pathsRC) 
        prob=0 
        if indexPath<numPaths: 
            aux = 0 
            pIP = pathsRC[indexPath] 
            # calculate cost of the current path 
            costIP = -pIP.getSPCurrentCost(manager, context.userClass.getDTAVehicleType())/3600.0 
            # iterate through all paths except the current path 
            for j in range(numPaths): 
                if j!=indexPath: 
                    # Calculate cost of the rest of the paths 
                    costJ = -pathsRC[j].getSPCurrentCost(manager, context.userClass.getDTAVehicleType())/3600.0 
                    # Apply the logit function 
                    aux = aux + math.exp((costIP-costJ)*scaleFactor) 
            # Calculate probabilities 
            prob = 1.0/(1.0+aux) 
            return prob 
        else: 
            return 0 
				
			

Para activar la función de elección de ruta en el DTA:

  1. Experimento dinámico abierto.
  2. Vaya a la pestaña Asignación dinámica de tráfico.
  3. En Modelo Estocástico de Elección de Ruta, seleccione la opción Definido por el Usuario.
  4. Seleccione la pestaña Parámetros.
  5. En Funciones disponibles, seleccione la función “Elección de ruta”.

Tenga en cuenta que en la ventana de Rutas Fijas, el porcentaje de Seguir Rutas OD para los Camiones debe establecerse en 0%, de lo contrario los Camiones con ese porcentaje seguirán el % asignado en la matriz OD (en este ejemplo: 1%-1%-1%).

La figura 7 muestra cómo activar el uso de la función de elección de ruta.

Figura 7

Compruebe cómo se asignarán los camiones a la ruta con el menor coste entre las 3 rutas OD designadas disponibles en caso de incidente en la autopista.y.

La figura 8 muestra cómo el desvío de camiones a rutas OD alternativas designadas puede reducir significativamente la longitud de las colas y anticipar condiciones de tráfico peligrosas en la red.

Figura 8

Una vez finalizada la simulación, puede comprobar en detalle el resultado de la asignación de rutas en la pestaña Replicación > Asignación de rutas.

  • ¿Tienes alguna pregunta? Ponte en contacto.

    ¡Estamos aquí para ayudarte!

  • ¿Tienes alguna pregunta? Ponte en contacto.

    ¡Estamos aquí para ayudarte!

SHARE

Citar Aimsun Next

Aimsun Next 23

Aimsun (2023). Aimsun Next 23 Manual del usuario, Aimsun Next Versión 23.0.0, Barcelona, España. Acceso: 19, 2023. [Online].
Disponible en: https://docs.aimsun.com/next/23.0.0/


Aimsun Next 20.0.5

Aimsun (2021). Aimsun Next 20.0.5 Manual del usuario, Aimsun Next Versión 20.0.3, Barcelona, España. Acceso: May. 1, 2021. [En software].
Disponible: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html

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