Цели

Цели — это параметры, которые заранее определяют общие цели оптимизации, такие как кратчайшее расстояние или продолжительность поездки, своевременная доставка, распределение нагрузки между водителями. Это призвано упростить разработчикам освоение API оптимизации маршрутов до изучения тонкостей и полной настройки параметров стоимости.

При установке ShipmentModel.objectives полностью перезаписывают модель стоимости, поэтому они несовместимы с уже существующими затратами. Каждая Objective соответствует ряду предопределенных затрат на транспортные средства, поставки или атрибуты перехода.

При указании режима решения TRANSFORM_AND_RETURN_REQUEST запрос не решается, а только проверяется и заполняется стоимостью, соответствующей заданным целям. Изменённый запрос возвращается как OptimizeToursResponse.processed_request . Все остальные режимы решения возвращают решённый запрос.

Режим решения TRANSFORM_AND_RETURN_REQUEST действителен только для запросов OptimizeTours и недоступен для других запросов API оптимизации маршрутов.

Пример: сделайте запрос ShipmentModel.objectives

Перед подачей запроса выполните следующие действия:

  • Убедитесь, что у вас настроены учетные данные приложения по умолчанию , как описано в разделе Использование OAuth .
  • Задайте PROJECT_NUMBER_OR_ID в качестве номера или идентификатора вашего облачного проекта.

    Следующая команда отправляет запрос OptimizeToursRequest в API оптимизации маршрута, который возвращает ответ OptimizeToursResponse .

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- <<EOM
    {
      "model": {
        "shipments": [
          {
            "pickups": [
              {
                "arrivalLocation": {
                  "latitude": 37.42506261000996,
                  "longitude": -122.09535511930135
                }
              }
            ],
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.42421503206021,
                  "longitude": -122.09526063135228
                }
              }
            ]
          }
        ],
        "vehicles": [
          {
            "travelMode": "DRIVING",
          }
        ],
        "objectives": [
          {
            "type": "MIN_TRAVEL_TIME"
          }
        ],
      }
    }
    EOM

Пример: сделать запрос TRANSFORM_AND_RETURN_REQUEST

Перед подачей запроса выполните следующие действия:

  • Убедитесь, что у вас настроены учетные данные приложения по умолчанию , как описано в разделе Использование OAuth .
  • Задайте PROJECT_NUMBER_OR_ID в качестве номера или идентификатора вашего облачного проекта.

    Следующая команда отправляет OptimizeToursRequest в API оптимизации маршрута, который возвращает OptimizeToursResponse с установленным полем ProcessedRequest .

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data @- <<EOM
    {
      "model": {
        "shipments": [
          {
            "pickups": [
              {
                "arrivalLocation": {
                  "latitude": 37.42506261000996,
                  "longitude": -122.09535511930135
                }
              }
            ],
            "deliveries": [
              {
                "arrivalLocation": {
                  "latitude": 37.42421503206021,
                  "longitude": -122.09526063135228
                }
              }
            ]
          }
        ],
        "vehicles": [
          {
            "travelMode": "DRIVING",
          }
        ],
        "objectives": [
          {
            "type": "MIN_TRAVEL_TIME"
          }
        ]
      },
      "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
    }
    EOM
    Предыдущая команда даст ответ, аналогичный следующей.
    {
      "processedRequest": {
        "model": {
          "shipments": [
            {
              "pickups": [
                {
                  "arrivalLocation": {
                    "latitude": 37.425062610009959,
                    "longitude": -122.09535511930135
                  }
                }
              ],
              "deliveries": [
                {
                  "arrivalLocation": {
                    "latitude": 37.424215032060211,
                    "longitude": -122.09526063135228
                  }
                }
              ]
            }
          ],
          "vehicles": [
            {
              "travelMode": "DRIVING",
              "costPerHour": 30,
              "costPerTraveledHour": 330,
              "costPerKilometer": 0.2
            }
          ],
          "objectives": [
            {
              "type": "MIN_TRAVEL_TIME"
            }
          ]
        },
        "solvingMode": "TRANSFORM_AND_RETURN_REQUEST"
      }
    }