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