Отправляет запрос OptimizeToursRequest содержащий ShipmentModel , и возвращает запрос OptimizeToursResponse , содержащий объекты ShipmentRoute , представляющие собой набор маршрутов, которые должны быть выполнены транспортными средствами с целью минимизации общей стоимости.
Модель ShipmentModel состоит в основном из объектов Shipment , которые необходимо осуществить, и Vehicle , которые могут быть использованы для перевозки этих Shipment . Объекты ShipmentRoute назначают объекты Shipment Vehicle . Более конкретно, они назначают каждому транспортному средству серию Visit , где Visit соответствует VisitRequest , то есть получению или доставке объекта Shipment .
Цель состоит в том, чтобы обеспечить такое распределение ShipmentRoute ) между Vehicle ), которое минимизирует общую стоимость, где стоимость имеет множество компонентов, определенных в ShipmentModel .
HTTP-запрос
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
В URL-адресе используется синтаксис транскодирования gRPC .
Параметры пути
| Параметры | |
|---|---|
parent | Обязательно. Целевой проект или местоположение для совершения звонка. Формат:
Если местоположение не указано, регион будет выбран автоматически. |
Текст запроса
Тело запроса содержит данные следующей структуры:
| JSON-представление |
|---|
{ "timeout": string, "model": { object ( |
| Поля | |
|---|---|
timeout | Если этот тайм-аут установлен, сервер возвращает ответ до истечения периода ожидания или до достижения крайнего срока сервера для синхронных запросов, в зависимости от того, что наступит раньше. Для асинхронных запросов сервер сгенерирует решение (если это возможно) до истечения времени ожидания. |
model | Модель доставки, которую необходимо решить. |
solvingMode | По умолчанию режим решения — |
searchMode | Для решения запроса использовался режим поиска. |
injectedFirstSolutionRoutes[] | Направьте алгоритм оптимизации на поиск первого решения, аналогичного предыдущему решению. Модель ограничена на момент построения первого решения. Любые отгрузки, не выполненные по маршруту, неявно пропускаются в первом решении, но могут быть выполнены в последующих решениях. Решение должно удовлетворять ряду основных предположений о его достоверности:
Если предложенное решение нецелесообразно, ошибка проверки не обязательно будет возвращена, вместо этого может быть возвращена ошибка, указывающая на нецелесообразность. |
injectedSolutionConstraint | Ограничьте алгоритм оптимизации, чтобы найти окончательное решение, аналогичное предыдущему. Например, это может использоваться для замораживания участков маршрутов, которые уже завершены или которые должны быть завершены, но не должны быть изменены. Если предложенное решение нецелесообразно, ошибка проверки не обязательно будет возвращена, вместо этого может быть возвращена ошибка, указывающая на нецелесообразность. |
refreshDetailsRoutes[] | Если поле не пустое, указанные маршруты будут обновлены без изменения последовательности посещений или времени в пути: будут обновлены только другие детали. Это не решает задачу модели. Начиная с ноября 2020 года, эта функция заполняет полилинии только непустых маршрутов и требует, чтобы Поля Это поле нельзя использовать вместе с |
interpretInjectedSolutionsUsingLabels | Если это правда:
Данная интерпретация применяется к полям Если это так, то метки в следующих категориях должны встречаться в своей категории не более одного раза:
If a Удаление отдельных посещений маршрутов или целых маршрутов из внедренного решения может повлиять на подразумеваемые ограничения, что может привести к изменению решения, ошибкам проверки или невозможности его реализации. NOTE: The caller must ensure that each |
considerRoadTraffic | Учитывайте оценку трафика при вычислении полей |
populatePolylines | Если это так, полилинии будут заполнены в ответ на запрос |
populateTransitionPolylines | Если значение истинно, полилинии и токены маршрута будут заполнены в ответе |
allowLargeDeadlineDespiteInterruptionRisk | Если этот параметр установлен, то запрос может иметь крайний срок (см. https://grpc.io/blog/deadlines ) до 60 минут. В противном случае максимальный срок составляет всего 30 минут. Обратите внимание, что длительные запросы сопряжены со значительно большим (но все еще небольшим) риском прерывания. |
useGeodesicDistances | Если это так, то расстояния в пути будут вычисляться с использованием геодезических расстояний вместо расстояний Google Maps, а время в пути будет вычисляться с использованием геодезических расстояний со скоростью, определяемой параметром |
label | Метка, которая может использоваться для идентификации этого запроса, сообщается в объекте |
geodesicMetersPerSecond | Если значение |
maxValidationErrors | Усекает количество возвращаемых ошибок валидации. Эти ошибки обычно добавляются к полезной нагрузке ошибки INVALID_ARGUMENT в качестве подробной информации об ошибке BadRequest ( https://cloud.google.com/apis/design/errors#error_details) , если только solvingMode=VALIDATE_ONLY: см. поле |
Ответный текст
В случае успеха тело ответа будет содержать экземпляр класса OptimizeToursResponse .
Области полномочий
Требуется следующая область действия OAuth:
-
https://www.googleapis.com/auth/cloud-platform
Разрешения IAM
Для работы с parent ресурсом требуются следующие разрешения IAM :
-
routeoptimization.locations.use
Для получения более подробной информации см. документацию IAM .