es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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:

  1. Quieren viajar durante el día directamente desde la terminal hasta el cliente, o
  2. 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:

aquí

Luego agregué esta función para asignar los costos desde mi base de datos:

aquí

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:

aquí

¡Gracias por toda la ayuda!

Tags:  , , ,

Answer

  1. Avatar for 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:

    private String chooseRoute(Customer customer, Terminal terminal) {
        double cost1 = calculateCost(terminal, customer, "day"); // costo de terminal a cliente durante el día
        double cost2 = calculateCost(terminal, Region102, "night") + calculateCost(Region102, customer, "day"); // costo de terminal a centro de distribución durante la noche y centro de distribución a cliente durante el día
        if (cost1 < cost2) {
            return "terminal_to_customer_day";
        } else {
            return "terminal_to_hub_night_hub_to_customer_day";
        }
    }
    

    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.

Comments are closed.