Запросите стоимость загрузки, чтобы оптимизатор учитывал загрузку ваших транспортных средств между поездками. Стоимость зависит как от объёма перевозимого груза ShipmentRoute.VehicleLoad , так и от расстояния или длительности поездки (с использованием cost_per_kilometer или cost_per_traveled_hour соответственно). 
Минимальный пример запроса с учетом стоимости загрузки
 Вот частичный пример запроса со стоимостью загрузки. В этом примере одно транспортное средство может перевозить не более 1000 кг груза weightKg , что влечет за собой 1 единицу стоимости за километр, если перевозимый weightKg груза превышает 500 кг. 
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
Расчет стоимости загрузки для этого примера выглядит следующим образом:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
 Таким образом, если транспортное средство перевозит груз weightKg 600 кг на расстояние в 10 километров, расчет будет следующим:
(600 - 500) * 10 * 1 = 1000 cost units
Затраты на грузоперевозки можно использовать для моделирования различных концепций, таких как повышенное потребление энергии транспортным средством при перевозке тяжелых грузов или износ транспортного средства, вызванный чрезмерной загрузкой транспортного средства.
Еще один пример запроса с учетом стоимости загрузки
Вот еще один пример затрат на погрузку, который подразумевает стоимость затраченного времени как выше, так и ниже порогового значения:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
Расчет стоимости загрузки для этого примера выглядит следующим образом:
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
  + min(carried load, load threshold) * time * cost per unit below threshold
 Таким образом, если транспортное средство перевозит груз weightLbs 950 фунтов в течение 5 часов, расчет будет следующим:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
 В этом примере значение load_threshold для стоимости груза weightLbs близко к max_load . Значение cost_per_unit_above_threshold устанавливает высокую стоимость за час пути, когда транспортное средство движется с особенно большой нагрузкой, что негативно сказывается на маршрутах, которые могут привести к повышенному износу транспортного средства или перерасходу топлива. cost_per_unit_below_threshold добавляет стоимость за единицу веса, перевозимого транспортным средством, к пороговому значению, что соответствует увеличению расхода топлива при увеличении нагрузки.
Часто задаваемые вопросы
Вот некоторые часто задаваемые вопросы о стоимости погрузки:
| Вопрос | Отвечать | 
|---|---|
| Где указать стоимость погрузки? | Укажите стоимость загрузки в Vehicle.LoadLimit. | 
| Как соотносятся затраты на погрузку и отгрузки? | Стоимость загрузки применяется к грузам, тип загрузки которых соответствует типу ограничения загрузки транспортного средства, например, весу или объёму. Типы загрузки представляют собой произвольные строки, как описано в разделе «Требования и ограничения загрузки» . | 
| Как выражаются затраты на погрузку? | Стоимость груза выражается в единицах расстояния или продолжительности перевозки. Для указания стоимости в единицах расстояния используйте cost_per_kilometer, а для указания стоимости в единицах продолжительности —cost_per_traveled_hour. | 
| Когда применяются затраты на погрузку? | Загрузка транспортного средства сравнивается со значением load_thresholdстоимости загрузки. Если указаноcost_per_unit_above_threshold, стоимость добавляется пропорционально загрузке транспортного средства вышеload_thresholdпо формулеmax(0, load - load_threshold). Если указано значениеcost_per_unit_below_threshold, стоимость добавляется пропорционально загрузке транспортного средства нижеload_thresholdпо формулеmin(load, load_threshold). | 
| Каковы значения по умолчанию для параметров стоимости загрузки? | load_threshold,cost_per_unit_above_thresholdиcost_per_unit_below_thresholdпо умолчанию равны нулю. | 
| В каких единицах выражается стоимость груза? | Стоимость загрузки выражается в тех же безразмерных единицах, что и все остальные параметры стоимости, такие как global_duration_cost_per_hourилиShipment.penalty_cost. | 
| Где я могу найти стоимость загрузки в ответе? | Понесенные затраты на погрузку отображаются в свойствах metricsиroute_metricsответных сообщений. Например, понесенныеcost_per_kilometerбудут отображаться какmodel.vehicles.load_limits.cost_per_kilometer. | 
Подробное объяснение стоимости загрузки см. в справочной документации ( REST , gRPC ).
 Пример: сделайте запрос OptimizeTours
 Запросы OptimizeTours также можно делать с использованием REST или gRPC .
Перед созданием запроса замените следующие параметры на значения, соответствующие вашей среде:
- Убедитесь, что у вас настроены учетные данные приложения по умолчанию , как описано в разделе Использование OAuth .
- Задайте PROJECT_NUMBER_OR_ID в качестве номера или идентификатора вашего облачного проекта. - Следующая команда отправляет запрос - OptimizeToursв API оптимизации маршрутов и синхронно получает ответ.- 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": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": 50 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "penaltyCost": 30.0, "loadDemands": { "weightKg": { "amount": 10 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "penaltyCost": 50.0, "loadDemands": { "weightKg": { "amount": 80 } } } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0, "loadLimits": { "weightKg": { "maxLoad": "100", "costPerKilometer": { "loadThreshold": "15", "costPerUnitAboveThreshold": 1 } } } } ] } } EOM 
После завершения запроса вы получите ответное сообщение.