Elaborar un mensaje de solicitud

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

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

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

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

OptimizeToursRequest propiedades

Algunas de las propiedades comúnmente usadas del mensaje OptimizeToursRequest de nivel superior (REST, gRPC) incluyen las siguientes:

  • searchMode indica si mostrar la primera solución que satisface las restricciones especificadas o encontrar la mejor solución posible dentro de un plazo establecido.
  • considerRoadTraffic determina si el tráfico en tiempo real se utiliza para la planificación de rutas y la estimación de la hora de llegada estimada.
  • populateTransitionPolylines determina si se muestran polilíneas de ruta en la respuesta.

Propiedades del modelo

Algunas de las propiedades comúnmente usadas 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 comenzar sus primeras transiciones y envíos antes de este tiempo.
  • globalEndTime representa la hora de finalización más reciente de las rutas en todos los vehículos y envíos. Todos los envíos y transiciones asignados deben completarse antes de este momento.

Propiedades de envío

Algunas de las propiedades comúnmente usadas del mensaje Shipment (REST, gRPC) incluyen las siguientes:

  • pickups[] y deliveries[] representan los lugares en los que se puede retirar o dejar 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 correspondiente de los vehículos (REST, gRPC) representa cuánta carga 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 que se genera 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

Algunas de las propiedades comúnmente usadas del mensaje Vehicle (REST, gRPC) incluyen las siguientes:

  • startLocation representa el punto en el que un vehículo debe comenzar su ruta. 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 lugar en el que un vehículo debe finalizar su ruta. Esta propiedad es opcional. Si no se especifica, la ruta del vehículo finaliza en la ubicación de su último envío asignado.
  • startTimeWindows[] representa cuándo un vehículo puede comenzar su ruta. Esta propiedad es opcional.
  • endTimeWindows[] representa cuándo un vehículo puede iniciar y finalizar su ruta. Ambas propiedades son opcionales.
  • loadLimits representa la capacidad del vehículo disponible para satisfacer 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"
  }
}

OptimizeTours y BatchOptimizeTours consumen mensajes de solicitud como el ejemplo anterior, pero de maneras diferentes. 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