Planning

Estructura de respuesta

En este artículo, presentamos la estructura de la respuesta de la Planning API a partir de un ejemplo: la optimización de una ruta de entregas con un centro de distribución (CD), dos clientes (Cliente1 y Cliente2) y un vehículo del tipo VUC. El vehículo sale del CD, carga las dos operaciones, entrega primero en Cliente1, luego en Cliente2, y regresa al CD.

Encuentre más detalles de este ejemplo en Ejemplo 1 – Operaciones con un único vehículo.

La respuesta trae la secuencia de actividades de cada ruta (carga, desplazamientos y entregas), con ventanas de tiempo, distancias y duraciones, además de indicadores consolidados de la solución.

Solicitud

La solicitud a continuación fue utilizada para generar la respuesta de este ejemplo. Los campos de la solicitud están detallados en un artículo específico.

{
    "optimizationProfile": "BRAZIL46",
    "startDate": 1513750219000,
    "legislationProfiles": [
        {
            "name": "DEFAULT"
        }
    ],
    "logisticConstraints": [
        {
            "name": "DEFAULT",
            "siteLoadingFixedTime": 900,
            "siteUnloadingFixedTime": 600
        }
    ],
    "products": [
        {
            "name": "DEFAULT"
        }
    ],
    "sites": [
        {
            "name": "Cliente1",
            "coordinates": {
                "latitude": -23.507608,
                "longitude": -46.587145
            },
            "logisticConstraints": "DEFAULT"
        },
        {
            "name": "Cliente2",
            "coordinates": {
                "latitude": -23.621059,
                "longitude": -46.756193
            },
            "logisticConstraints": "DEFAULT"
        }
    ],
    "depots": [
        {
            "name": "CD",
            "coordinates": {
                "latitude": -23.503939,
                "longitude": -46.498419
            },
            "logisticConstraints": "DEFAULT"
        }
    ],
    "vehicleTypes": [
        {
            "name": "VUC",
            "maxVolume": 20,
            "maxWeight": 1200,
            "size": 1
        }
    ],
    "vehicles": [
        {
            "name": "VUC_1",
            "vehicleType": "VUC",
            "legislationProfile": "DEFAULT",
            "availablePeriods": [
                {
                    "departureSite": "CD",
                    "arrivalSite": "CD",
                    "timeWindow": {
                        "start": 1513753200000,
                        "end": 1513796400000
                    }
                }
            ]
        }
    ],
    "operations": [
        {
            "id": "P1",
            "weight": 100,
            "volume": 2,
            "product": "DEFAULT",
            "type": "DELIVERY",
            "depotSite": "CD",
            "customerSite": "Cliente1",
            "customerTimeWindows": [
                {
                    "start": 1513756800000,
                    "end": 1513771200000
                }
            ]
        },
        {
            "id": "P2",
            "weight": 250,
            "volume": 5,
            "product": "DEFAULT",
            "type": "DELIVERY",
            "depotSite": "CD",
            "customerSite": "Cliente2",
            "customerTimeWindows": [
                {
                    "start": 1513756800000,
                    "end": 1513771200000
                }
            ]
        }
    ]
}

Respuesta

La respuesta está compuesta por los campos a continuación. Los campos vehicleRoutes e indicators se detallan en las próximas secciones. Algunos campos solo se devuelven en situaciones específicas, como cuando hay operaciones rechazadas o cuando se envían determinados parámetros en la solicitud. Están descritos en las secciones «Campos devueltos solo…».

  • id – Identificador único de la solución generada;
  • clientId – Identificador del cliente que realizó la solicitud;
  • vehicleRoutes – Lista con las rutas calculadas para cada vehículo;
  • indicators – Indicadores consolidados de la solución.

Campo vehicleRoutes

Cada elemento de la lista representa un vehículo y las rutas realizadas por él en el período disponible.

  • vehicle – Nombre del vehículo;
  • period – Período de disponibilidad del vehículo utilizado en la solución:
    • timeWindow – Ventana de tiempo del período, con start y end (timestamp en milisegundos);
    • departureSite – Lugar de salida del vehículo;
    • arrivalSite – Lugar de llegada del vehículo;
    • maxRoutesNumber – Cantidad máxima de rutas del vehículo en el período. Se devuelve solo cuando se informa en la solicitud.
  • routes – Lista de rutas del vehículo:
    • id – Identificador de la ruta;
    • activities – Lista ordenada de las actividades de la ruta:
      • activity – Tipo de la actividad. Los valores posibles son:
        • ROUTE_START – Inicio de la ruta;
        • LOADING – Carga en el depósito;
        • DRIVING – Desplazamiento entre dos lugares;
        • DELIVERY – Entrega al cliente;
        • COLLECTION – Recolección en el cliente;
        • UNLOADING – Descarga;
        • WAITING – Espera;
        • PAUSE – Pausa;
        • REST – Descanso;
        • ROUTE_END – Fin de la ruta.
      • type – Clasificación de la actividad, siendo SITE para actividades realizadas en un lugar y DRIVING para desplazamientos;
      • timeWindow – Ventana de tiempo en la que ocurre la actividad, con start y end (timestamp en milisegundos);
      • operations – Lista con los id de las operaciones tratadas en la actividad. Queda vacía en actividades como ROUTE_START, DRIVING y ROUTE_END;
      • site – Lugar donde se realiza la actividad. Se devuelve en las actividades del tipo SITE;
      • fixedTimeSite – Tiempo fijo de atención en el lugar, en segundos. Se devuelve en actividades de LOADING, UNLOADING, COLLECTION y DELIVERY;
      • volume – Volumen de las operaciones tratadas en la actividad. Se devuelve en actividades de LOADING, UNLOADING, COLLECTION y DELIVERY;
      • weight – Peso de las operaciones tratadas en la actividad. Se devuelve en actividades de LOADING, UNLOADING, COLLECTION y DELIVERY;
      • departureSite – Lugar de origen del desplazamiento. Se devuelve en DRIVING;
      • arrivalSite – Lugar de destino del desplazamiento. Se devuelve en DRIVING;
      • distance – Distancia recorrida en el desplazamiento, en metros. Se devuelve en DRIVING;
      • nominalDuration – Duración nominal del desplazamiento, en segundos. Se devuelve en DRIVING.

En el ejemplo, la ruta del vehículo VUC_1 sigue esta secuencia de actividades: ROUTE_START en el CD, LOADING de las operaciones P2 y P1, DRIVING hasta Cliente1, DELIVERY de la operación P1, DRIVING hasta Cliente2, DELIVERY de la operación P2, DRIVING de regreso al CD y ROUTE_END.

Campo indicators

Indicadores consolidados de toda la solución. Todos los tiempos se devuelven en segundos y la distancia en metros.

  • routesNumber – Cantidad de rutas de la solución;
  • rejectOperationsNumber – Cantidad de operaciones rechazadas, es decir, no atendidas por la solución;
  • timeWindowNumber – Cantidad de ventanas de tiempo consideradas en la solución;
  • totalDistance – Distancia total recorrida;
  • totalTime – Tiempo total de las rutas;
  • totalWorkingTime – Tiempo total de trabajo:
    • dayWorkingTotalTime – Tiempo de trabajo en período diurno;
    • nightWorkingTotalTime – Tiempo de trabajo en período nocturno.
  • totalDrivingTime – Tiempo total de desplazamiento;
  • totalServiceTime – Tiempo total de atención en los lugares:
    • totalLoadingTime – Tiempo total de carga;
    • totalDeliveringTime – Tiempo total de entrega;
    • totalUnloadingTime – Tiempo total de descarga;
    • totalCollectingTime – Tiempo total de recolección.
  • totalWaitingTime – Tiempo total de espera;
  • totalRestTime – Tiempo total de descanso;
  • averageOccupancyRateVolume – Tasa promedio de ocupación del vehículo por volumen, en porcentaje;
  • averageOccupancyRateWeight – Tasa promedio de ocupación del vehículo por peso, en porcentaje.

Campos devueltos solo cuando hay operaciones rechazadas

Cuando el solver no logra atender una o más operaciones, estas se listan en la respuesta junto con las posibles causas.

  • rejectOperations – Lista con los id de las operaciones rechazadas;
  • possibleCausesOfRejectOperations – Objeto en el que cada clave es el id de una operación rechazada y el valor es la lista de posibles causas del rechazo. Consulte la lista de posibles mensajes devueltos en Operaciones Rechazadas.
    • code – Código de la causa;
    • message – Descripción de la causa.

Campos devueltos solo con trip

  • routes[].tripId – Identificador de la ruta generada por la Trip API;
  • indicators.tollCosts – Costo total de peajes de la solución.

Campos devueltos solo con compartimentos

  • routes[].compartmentConfiguration – Nombre de la configuración de compartimentos utilizada en la ruta;
  • routes[].activities[].operationCompartments – Distribución de las operaciones en los compartimentos del vehículo. Se devuelve solo en actividades LOADING:
    • groupId – id de la operación;
    • compartmentSolutions – Lista de compartimentos utilizados por la operación:
      • compartment – Nombre del compartimento;
      • capacityWeightUsed – Peso asignado al compartimento;
      • capacityVolumeUsed – Volumen asignado al compartimento.

Respuesta completa

La respuesta completa se encuentra a continuación, generada a partir de la solicitud de este ejemplo:

{
    "id": "6af70501533ca0240d44adc5",
    "clientId": "maplink",
    "vehicleRoutes": [
        {
            "routes": [
                {
                    "id": "NewRoute_1_1",
                    "activities": [
                        {
                            "activity": "ROUTE_START",
                            "timeWindow": {
                                "start": 1513754569000,
                                "end": 1513754569000
                            },
                            "type": "SITE",
                            "site": "CD",
                            "operations": []
                        },
                        {
                            "activity": "LOADING",
                            "timeWindow": {
                                "start": 1513754569000,
                                "end": 1513755469000
                            },
                            "type": "SITE",
                            "site": "CD",
                            "fixedTimeSite": 900,
                            "volume": 7.0,
                            "weight": 350.0,
                            "operations": [
                                "P2",
                                "P1"
                            ]
                        },
                        {
                            "activity": "DRIVING",
                            "timeWindow": {
                                "start": 1513755469000,
                                "end": 1513756800000
                            },
                            "type": "DRIVING",
                            "operations": [],
                            "arrivalSite": "Cliente1",
                            "departureSite": "CD",
                            "distance": 13410,
                            "nominalDuration": 1331
                        },
                        {
                            "activity": "DELIVERY",
                            "timeWindow": {
                                "start": 1513756800000,
                                "end": 1513757400000
                            },
                            "type": "SITE",
                            "site": "Cliente1",
                            "fixedTimeSite": 600,
                            "volume": 2.0,
                            "weight": 100.0,
                            "operations": [
                                "P1"
                            ]
                        },
                        {
                            "activity": "DRIVING",
                            "timeWindow": {
                                "start": 1513757400000,
                                "end": 1513759737000
                            },
                            "type": "DRIVING",
                            "operations": [],
                            "arrivalSite": "Cliente2",
                            "departureSite": "Cliente1",
                            "distance": 26603,
                            "nominalDuration": 2337
                        },
                        {
                            "activity": "DELIVERY",
                            "timeWindow": {
                                "start": 1513759737000,
                                "end": 1513760337000
                            },
                            "type": "SITE",
                            "site": "Cliente2",
                            "fixedTimeSite": 600,
                            "volume": 5.0,
                            "weight": 250.0,
                            "operations": [
                                "P2"
                            ]
                        },
                        {
                            "activity": "DRIVING",
                            "timeWindow": {
                                "start": 1513760337000,
                                "end": 1513763220000
                            },
                            "type": "DRIVING",
                            "operations": [],
                            "arrivalSite": "CD",
                            "departureSite": "Cliente2",
                            "distance": 34654,
                            "nominalDuration": 2883
                        },
                        {
                            "activity": "ROUTE_END",
                            "timeWindow": {
                                "start": 1513763220000,
                                "end": 1513763220000
                            },
                            "type": "SITE",
                            "site": "CD",
                            "operations": []
                        }
                    ]
                }
            ],
            "vehicle": "VUC_1",
            "period": {
                "timeWindow": {
                    "start": 1513753200000,
                    "end": 1513796400000
                },
                "departureSite": "CD",
                "arrivalSite": "CD"
            }
        }
    ],
    "indicators": {
        "totalServiceTime": 2100,
        "totalDeliveringTime": 1200,
        "dayWorkingTotalTime": 8651,
        "nightWorkingTotalTime": 0,
        "totalUnloadingTime": 0,
        "totalWorkingTime": 8651,
        "totalCollectingTime": 0,
        "timeWindowNumber": 1,
        "totalDrivingTime": 6551,
        "totalLoadingTime": 900,
        "totalTime": 8651,
        "totalDistance": 74667,
        "averageOccupancyRateVolume": 35.0,
        "averageOccupancyRateWeight": 29.17,
        "rejectOperationsNumber": 0,
        "totalWaitingTime": 0,
        "totalRestTime": 0,
        "routesNumber": 1
    }
}