Elaborar un mensaje de solicitud

Como se describe brevemente en la Descripción general de la optimización de rutas, una solicitud básica consiste en Modelo, Envíos y Vehículos como entidades obligatorias:

  • Model captura la configuración y las restricciones de toda la solicitud, incluidos Shipments y Vehicles.
  • Los envíos representan tareas o envíos reales que incluyen VisitRequest de retiro y entrega. Los envíos tienen configuraciones y restricciones locales.
  • Los vehículos representan a vehículos, conductores o personal. Los vehículos también tienen parámetros de configuración y restricciones locales.

Las propiedades de cada entidad describen parte de un problema de optimización con un determinado nivel de detalle. Las restricciones para todo el modelo se aplican a todos los envíos y vehículos, mientras que las restricciones y propiedades que se especifican en los envíos o vehículos son específicas de un solo envío o vehículo.

Para obtener documentación completa sobre cada tipo de mensaje, consulta la documentación de referencia de los mensajes ShipmentModel (REST, gRPC), Shipment (REST, gRPC) y Vehicle (REST, gRPC).

OptimzeToursRequest propiedades

Algunas de las propiedades de uso general del mensaje OptimizeToursRequest de nivel superior (REST, gRPC) incluyen las siguientes:

  • searchMode indica si se debe mostrar la primera solución que cumpla con las restricciones especificadas o si se debe encontrar la mejor solución posible dentro de un plazo establecido.
  • considerRoadTraffic determina si se usa o no tráfico en vivo para la estimación de rutas y hora de llegada estimada.
  • populateTransitionPolylines determina si se muestran o no las polilíneas de ruta en la respuesta.

Propiedades del modelo

Algunas de las propiedades de uso general del mensaje ShipmentModel (REST, gRPC) incluyen las siguientes:

  • globalStartTime representa la hora de inicio más temprana de las rutas en todos los vehículos y envíos. Ningún vehículo puede iniciar sus primeras transiciones y envíos antes de ese momento.
  • globalEndTime representa la hora de finalización más reciente de las rutas de todos los vehículos y envíos. Todos los envíos y transiciones asignados deben completarse antes de este plazo.

Propiedades de envío

Estas son algunas de las propiedades que se usan con frecuencia del mensaje Shipment (REST, gRPC):

  • pickups[] y deliveries[] representan dónde se puede recoger o entregar un envío. Las propiedades pickups[] y deliveries[] usan el mensaje VisitRequest (REST, gRPC).
  • loadDemands representa la carga necesaria para que un vehículo complete un envío. La propiedad load_limits (REST, gRPC) correspondiente de los vehículos representa la cantidad de carga que puede admitir un vehículo a la vez. Obtén más información sobre la carga en Demandas y límites de carga.
  • penalty_cost representa el costo incurrido si se omite un envío. Obtén más información sobre los costos en Parámetros del modelo de costos.

Propiedades de vehículos

Estas son algunas de las propiedades que se usan con frecuencia del mensaje Vehicle (REST, gRPC):

  • startLocation representa el punto en el que debe comenzar su ruta un vehículo. Esta propiedad es opcional. Si no se especifica, la ruta del vehículo comienza en la ubicación de su primer envío asignado.
  • endLocation representa el punto en el que un vehículo debe terminar su ruta. Esta propiedad es opcional. Si no se especifica, la ruta del vehículo finaliza en la ubicación del último envío asignado.
  • startTimeWindows[] representa el momento en que un vehículo puede iniciar su ruta. Esta propiedad es opcional.
  • endTimeWindows[] representa el momento en el que un vehículo puede comenzar y terminar su ruta. Ambas propiedades son opcionales.
  • loadLimits representa la capacidad del vehículo disponible para cumplir con las demandas de carga de los envíos. Obtén más información sobre las demandas y los límites de carga en Demandas y límites de carga.

Una solicitud de ejemplo completa en formato JSON se ve de la siguiente manera:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "costPerKilometer": 1.0
      }
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

Tanto OptimizeTours como BatchOptimizeTours consumen mensajes de solicitud, como en el ejemplo anterior, pero de diferentes maneras. Antes de realizar una solicitud de optimización de rutas, es importante comprender la diferencia entre los dos métodos:

Cómo comparar OptimizeTours y BatchOptimizeTours