Цели

Цели — это параметры, которые заранее определяют общие цели оптимизации, такие как кратчайшее расстояние или продолжительность поездки, своевременная доставка, распределение нагрузки между водителями. Это сделано для того, чтобы разработчикам было проще перейти на 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"
      }
    }