Запросите стоимость загрузки, чтобы оптимизатор учитывал загрузку ваших транспортных средств между поездками. Стоимость зависит как от объёма перевозимого груза 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
После завершения запроса вы получите ответное сообщение.