Цели

Цели — это параметры, которые заранее определяют общие задачи оптимизации, такие как кратчайшее расстояние или продолжительность поездки, своевременная доставка, балансировка нагрузки между водителями. Это призвано упростить разработчикам освоение API оптимизации маршрутов до изучения сложных аспектов и полной настройки параметров стоимости. (См. раздел « cost model » для получения информации о том, как полностью настроить широкий спектр целей).

При установке значения 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"
      }
    }