Отправьте запрос с указанием стоимости загрузки, чтобы оптимизатор учитывал груз, перевозимый вашими транспортными средствами между рейсами. Понесенные затраты зависят как от объема перевозимого груза 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
In this example, the load_threshold for the weightLbs load cost is close to max_load . The cost_per_unit_above_threshold applies a high cost per traveled hour when the vehicle travels with an especially heavy load, penalizing routes that may increase wear on the vehicle or consume excess fuel. The cost_per_unit_below_threshold adds a cost per unit weight being carried by the vehicle up to the threshold, representing increased fuel consumption as the vehicle carries more load.
Часто задаваемые вопросы
Вот несколько часто задаваемых вопросов о стоимости грузоперевозок:
| Вопрос | Отвечать |
|---|---|
| Где мне указать стоимость загрузки? | Укажите стоимость загрузки в Vehicle.LoadLimit . |
| Как соотносятся затраты на погрузку и разгрузку? | Стоимость загрузки применяется к отправлениям, тип требуемой нагрузки которых соответствует типу ограничения нагрузки для транспортного средства, например, весу или объему. Типы нагрузки представляют собой произвольные строки, как описано в разделе «Требования и ограничения нагрузки» . |
| Как выражаются затраты на погрузку? | Затраты на перевозку выражаются в единицах расстояния или продолжительности . Используйте cost_per_kilometer для указания затрат в единицах расстояния и cost_per_traveled_hour для указания затрат в единицах продолжительности. |
| Когда взимается плата за погрузку? | Vehicle load is compared with the load_threshold of the load cost. If cost_per_unit_above_threshold is specified, cost is added proportional to the vehicle's load above the load_threshold using the formula max(0, load - load_threshold) . If cost_per_unit_below_threshold is specified, cost is added proportional to the vehicle's load below the load_threshold , using the formula 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
После завершения запроса вы получите ответное сообщение.