Основная цель Route Optimization API – находить маршруты с наименьшей стоимостью. Таким образом, модель затрат является основным фактором оптимизации маршрута.
Модель стоимости – это набор свойств, определяющих глобальные расходы, а также расходы на транспортные средства и перевозки.
Свойства модели затрат поддерживают следующие цели оптимизации:
- Эффективное назначение транспортных средств и маршрутов
- экономичные варианты самовывоза и доставки;
- Приоритет для критически важных отправлений
Структура
Как показано на диаграмме, свойства модели стоимости имеют следующую структуру:
Shipmentсодержит свойствоpenaltyCost.Vehicleсодержит следующие свойства:
В этом документе рассматриваются только основные параметры модели ценообразования. Полный список параметров стоимости приведен в справочной документации.
Контрольный список Essentials
В приведенном ниже контрольном списке описаны основные знания, которые помогут избежать потенциальных ошибок, связанных с расходами. Этот список поможет вам проверить запрос и устранить неполадки с ответом.
Свойства
В таблице ниже перечислены и описаны свойства модели затрат.
| Родитель | Название свойства | Тип объекта | Цена за | Описание объекта |
|---|---|---|---|---|
Shipment |
penaltyCost |
число | Пропущенная доставка | Расходы, связанные с пропуском доставки. API пропускает доставку, если стоимость ее выполнения превышает стоимость штрафа.
|
Vehicle |
fixedCost |
число | Доставка | Фиксированная стоимость, применяемая, если транспортное средство используется для перевозки груза. |
costPerHour |
число | Час | Стоимость эксплуатации транспортного средства в час, включая время в пути, ожидания, посещения и перерывов. По мере увеличения этой стоимости оптимизатор пытается найти более быстрые маршруты, которые могут быть не самыми короткими. Это свойство может быть эффективным отдельным показателем стоимости автомобиля, поскольку оно простое и полное. |
|
costPerKilometer |
число | Километр | Стоимость за километр, пройденный транспортным средством. Это могут быть расходы на топливо или амортизированные расходы на обслуживание транспортного средства. | |
costPerTraveledHour |
число | Час | Стоимость эксплуатации транспортного средства в час только во время движения, за исключением времени ожидания, посещения и перерывов. В этом случае более быстрые маршруты будут показываться выше, чем более короткие. |
Примеры
В этом разделе рассматриваются три типа примеров:
- Примеры кода, иллюстрирующие структуру свойств модели затрат.
- Пример сценария, в котором показано, как использовать свойства модели стоимости для достижения бизнес-цели.
- Пример запроса, который включает значения, заданные в примере сценария.
Примеры кода
В приведенном ниже фрагменте кода показана структура свойств модели цены в объекте Shipment:
{ "model": { "shipments": [ ... { "penaltyCost": PENALTY_COST } ], "vehicles": [ ... ] } }
В приведенном ниже фрагменте кода показана структура свойств модели цены в объекте Vehicle:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "fixedCost": FIXED_COST, "costPerKilometer": KILOMETER_COST, "costPerHour": HOUR_COST, "costPerTraveledHour": TRAVELED_HOUR_COST } ] } }
Пример
В этом разделе описывается сценарий, в котором у вас есть бизнес по уходу за собаками. Вы оптимизируете маршрут для грузовика, на котором забираете собак из домов. В этом сценарии вы хотите, чтобы оптимизатор учитывал расходы, связанные с забором собак и эксплуатацией транспортных средств, при предоставлении маршрута.
В этом примере одна единица стоимости равна одному доллару. Это означает, что значения свойств модели расчета стоимости в вашем запросе следующие:
| Свойство | Значение | Сценарий |
|---|---|---|
penaltyCost |
10 | Штраф, который вы предлагаете клиентам за то, что они не забрали собаку в назначенный день. Если вы не забираете собаку в запланированный день, клиент получает скидку в размере 40 долларов от общей стоимости услуги. |
fixedCost |
30 | Представляет собой ежедневную стоимость платежей по кредиту на автомобиль, которая составляет 30 долларов в день. |
costPerKilometer |
0,08 | Показывает, сколько бензина тратит ваш автомобиль на километр. Вашему автомобилю требуется 0,04 галлона на километр, а стоимость галлона в вашем регионе составляет 2 доллара. |
costPerHour |
27 | Сумма, которую вы платите водителю за управление вашим транспортным средством. Вы платите водителю 27 долларов в час. |
costPerTraveledHour |
2.5 | Сумма, которую вам придется платить за кондиционер в автомобиле в час, пока вы едете с собаками. Когда автомобиль не движется, водитель может открыть задние двери и выключить кондиционер. |
Основываясь на параметрах стоимости, оптимизатор может находить компромиссные решения, которые не очевидны для пользователя, но могут быть найдены в процессе оптимизации.
На следующей диаграмме показан пример, когда оптимизатор может выбрать более длинный, но более быстрый маршрут (зеленая пунктирная линия), чтобы объехать пробки (красная пунктирная линия).

В этом случае баланс расходов на двух маршрутах будет следующим:
Зеленая пунктирная линия имеет низкие значения
costPerHourиcostPerTraveledHour, поскольку это быстрый маршрут в объезд пробок, который более экономичен, даже еслиcostPerKilometerвысок.Красная пунктирная линия имеет низкий показатель
costPerKilometer, поскольку это прямой маршрут, ноcostPerHourиcostPerTraveledHourслишком высоки из-за времени ожидания в пробках, что делает его самым дорогим маршрутом.
Помимо экономически эффективных маршрутов, оптимизатор также предоставляет сумму общих затрат на маршруты доставки в свойствах ответа.
Пример запроса
В примере ниже показана структура простого запроса optimizeTours с учетом значений, заданных в примере сценария:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] "penaltyCost": 40 } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "fixedCost": 30, "costPerKilometer": 0.08, "costPerHour": 27, "costPerTraveledHour": 2.5 } ] } }
Свойства ответа
В сообщении OptimizeToursResponse есть свойства стоимости, которые описывают затраты, понесенные в процессе прохождения маршрута:
metrics.costs– общая стоимость всех маршрутов с разбивкой по полям запроса, связанным со стоимостью.metrics.totalCost– общая стоимость всех маршрутов.