Цели — это параметры, которые можно использовать для определения высокоуровневых целей оптимизации вместо указания конкретных параметров затрат из модели затрат .
В одном запросе можно использовать несколько целей и присваивать каждой цели относительный вес, чтобы контролировать, насколько сильно она влияет на общую оптимизацию. Цели влияют на весь запрос , затрагивая все ваши транспортные средства и отгрузки. Наконец, вы также можете использовать цели для начала разработки собственной модели затрат, как описано в разделе «Создание модели затрат» .
С помощью целей можно контролировать следующие факторы, влияющие на план маршрута:
- Общее время в пути или расстояние ваших маршрутов.
- Общее время работы всех транспортных средств.
- Общее количество использованных транспортных средств.
Характеристики
Свойство objectives представляет собой массив типов сообщений Objective в рамках ShipmentModel . Каждая Objective определяет конкретную задачу оптимизации и содержит поля, перечисленные в следующей таблице:
| Поле | Тип | Описание |
|---|---|---|
type | Перечисление | Указывает предопределенную целевую задачу оптимизации. Допустимые значения следующие:
|
weight | Двойной | Определяет относительную важность данной цели. При использовании нескольких целей значение weight контролирует, насколько сильно эта конкретная цель влияет на общую оптимизацию маршрута по сравнению с другими. Это может быть любое неотрицательное число, и его сумма не обязательно должна равняться 1. Значение по умолчанию — 1.0 . |
Примеры
В этом разделе рассматриваются два типа примеров:
- Пример кода, иллюстрирующий структуру массива
objectives. - Пример запроса, включающий массив
objectives.
Примеры кода
Следующий пример демонстрирует структуру objectives :
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
Пример запроса
В следующем примере показана структура базового запроса optimizeTours , включающего несколько целей, где MIN_TRAVEL_TIME в 3 раза важнее, чем MIN_WORKING_TIME .
{ "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", "weight": 3.0 }, { "type": "MIN_WORKING_TIME" } ] } }
Создайте модель затрат.
Цели — это бысткий способ установить задачи оптимизации, но в некоторых случаях одних только целей может быть недостаточно. Для достижения точных целей маршрутизации может потребоваться детальный контроль, доступный только через параметры модели затрат.
Вы можете начать разработку собственной модели затрат, добавив цели в свой запрос, а затем преобразовав цели в запросе в параметры модели затрат, используя режим решения TRANSFORM_AND_RETURN_REQUEST .
При отправке запроса с использованием этого режима решения происходит следующее:
- API преобразует ваши цели в параметры модели затрат и возвращает их в объекте
processedRequest. Затем вы можете при необходимости скорректировать параметры модели затрат для точной настройки плана маршрута. - При использовании нескольких целей API суммирует затраты по всем целям и масштабирует их в соответствии с их весовыми коэффициентами .
- За этот запрос с вас не взимается плата , поскольку API не предоставляет оптимизированный маршрут, а лишь преобразует целевые показатели в параметры модели затрат.
Пример запроса
В следующем примере показан запрос с использованием целевой функции MIN_TRAVEL_TIME и режима решения TRANSFORM_AND_RETURN_REQUEST :
{ "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" }
Пример ответа
Ниже приведён ответ на предыдущий запрос. Этот ответ содержит как параметры сгенерированной модели затрат, так и исходную целевую задачу для справки.
{ "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" } }