Anylogic: ¿Cómo añadir la opción de hora de salida y ruta?
En mi modelo de Anylogic tengo 200 zonas y tengo las siguientes poblaciones de agentes:
- Clientes (parámetros: nombre, latitud GIS, longitud GIS), uno en cada zona (excepto en las zonas terminales).
- Terminales (parámetros: nombre, latitud GIS, longitud GIS), uno en cada zona terminal (5 en total).
- Órdenes (parámetros: cliente (tipo: Cliente), terminal (tipo: Terminal)).
- Camiones (reciben una orden (que es creada por un cliente) y luego viajan a esa terminal y cliente).
Ahora, dado que hay largos tiempos de espera en las terminales durante el día, quiero agregar un centro que esté abierto por la noche entre las terminales y los clientes y permitir que los camiones decidan si:
- Quieren viajar durante el día directamente desde la terminal hasta el cliente, o
- Quieren viajar durante la noche desde la terminal hasta un centro y luego durante el día desde el centro hasta el cliente.
Deben tomar esta decisión basándose en los costos de conducción y espera que varían según la ruta (origen, destino) y la hora del día (día/noche). Tengo estos costos en una base de datos y los vinculé a las rutas agregando primero una nueva clase Java:
Luego agregué esta función para asignar los costos desde mi base de datos:
Ahora mi pregunta es, ¿cómo puedo permitir que los camiones, por cada orden que reciben, elijan sus horarios de salida (día/noche) y ruta (desde terminal -> cliente / desde terminal -> centro -> cliente) basados en estos costos?
Quiero agregar algo como esto a continuación (donde Region102 es el centro) para elegir la opción más barata por orden (que solo fue un intento pero, por supuesto, no funciona así) y permitir que los camiones luego elijan su horario de salida y ruta:
¡Gracias por toda la ayuda!
davy.ai
Para permitir que los camiones elijan sus horarios de salida y rutas en función de los costos, puede agregar un proceso de toma de decisiones en el comportamiento del agente de camión. Puede crear una función que calcule el costo total para cada opción (terminal a cliente o terminal a centro de distribución a cliente) y elija la opción más barata en función de los costos en su base de datos.
La función puede ser algo como esto:
La función
calculateCost
puede recuperar los costos de su base de datos en función del origen, destino y momento del día.Una vez que el agente de camión decide qué ruta tomar, puede establecer su horario de salida en función del momento del día para esa ruta. Por ejemplo, si elige viajar desde la terminal al centro de distribución al cliente, puede partir de la terminal por la noche y llegar al centro de distribución por la mañana, y luego partir del centro de distribución hacia el cliente durante el día.
También puede actualizar el estado del camión para reflejar la ruta y el horario de salida elegidos. Por ejemplo, puede tener una variable de estado que indique si está viajando desde la terminal hacia el cliente, o desde la terminal hacia el centro de distribución hacia el cliente.
En general, deberá modificar el comportamiento del agente de camión para tener en cuenta los costos y la toma de decisiones para elegir la ruta y el horario de salida en función de esos costos.