[Optimización] Resolver y obtener solucion de una optimización.

Que nuestra API de optimización sea asíncrona permite que la creación de objetos optimizaciones sea independiente del inicio del procesamiento de la misma y de la obtención del resultado. Esto quiere decir que puedes elegir cuando comenzar a procesar una optimización previamente creada, y que puedes obtener el estado de tu optimización cuando quieras, todo esto utilizando una serie de endpoints que describiremos a continuación.


Recuerda que una vez creado objeto optimización el endpoint retornará un número de referencia “reference” con el cual puedes iniciar el proceso de optimización haciendo un POST a la siguiente endpoint:


https://app.optiroute.cl/api/v1/optimizations/{reference}/long_optimize/


Retorno del inicio de la optimización


Cuando inicies el proceso de optimización el endpoint devolverá inmediatamente un código HTTP 202, dos códigos route_plan_id y reference, igual como para el endpoint de creación.

 

Un ejemplo de retorno correcto corresponde a:


{
      "route_plan_id": 983749,
      "reference": "xxf3949382c002",
}


Estado de la optimización


Luego de que inicies la optimización de tu objeto recién creado puedes obtener el estado de la misma ingresando su código de referencia en el siguiente endpoint.


Luego de resolver un objeto de optimización podemos revisar la solución haciendo un GET a la siguiente url:


https://app.optiroute.cl/api/optimizations/{reference}/


Cuando la optimización haya sido calculada este endpoint retornará un objeto compuesto por una lista de rutas que corresponde a tu optimización. 

 

Cada una de estas rutas está a su vez compuesto por el nombre del vehículo asignado a la ruta, su distancia, duración y una lista de destinos abarcados por la ruta.

 

A su vez, cada uno de estos destinos posee información como su nombre, el orden en la ruta, la demanda asociada a ese destino, la fecha estimada de llegada, la duración del viaje, y la duración de la entrega del servicio.

 

Un ejemplo del retorno de una optimización corresponde al siguiente:


"solution": {
    "routes": [
      {
        "vehicle": 0,
        "distance": 10838,
        "duration": 4257,
        "waypoints": [
          {
            "order": 0,
            "arrival": "2019-12-07T09:00:00-03:00"
          },
          {
            "name": "Rand oriente",
            "order": 1,
            "demand": 1,
            "arrival": "2019-12-07T09:06:17-03:00",
            "customer_order": 1,
            "travel_duration": 377,
            "service_duration": 600
          },
          {
            "name": "Rand norte",
            "order": 2,
            "demand": 1,
            "arrival": "2019-12-07T09:18:39-03:00",
            "customer_order": 2,
            "travel_duration": 142,
            "service_duration": 600
          },
          {
            "name": "Optiroute HQ",
            "order": 3,
            "demand": 1,
            "arrival": "2019-12-07T09:35:06-03:00",
            "customer_order": 3,
            "travel_duration": 387,
            "service_duration": 600
          },
          {
            "name": "Rand latlong",
            "order": 4,
            "demand": 1,
            "arrival": "2019-12-07T09:45:50-03:00",
            "customer_order": 4,
            "travel_duration": 44,
            "service_duration": 1200
          },
          {
            "order": 5,
            "arrival": "2019-12-07T10:10:57-03:00",
            "travel_duration": 307
          }
        ]
      }
    ],
    "total_distance": 10838,
    "total_duration": 4257
  }