Требования и ограничения по нагрузке — это тип ограничения, который можно использовать для управления вместимостью . Это ограничение определяет требуемую вместимость груза и максимальную вместимость транспортного средства , что позволяет оптимизировать назначения маршрутов на основе этих ограничений.
Требования и ограничения по нагрузке могут способствовать достижению таких целей, как:
- Не допускайте перегрузки транспортных средств.
- Отслеживайте, как меняется загрузка транспортных средств по мере забора и доставки грузов.
- Отдавайте приоритет использованию большегрузных транспортных средств для перевозки тяжеловесных грузов.
Требования и ограничения по нагрузке указаны в следующих свойствах:
-
loadDemands
указывает объем грузоподъемности, необходимый для конкретной поставки . -
loadLimits
определяет максимальную грузоподъемность для данного транспортного средства .
Структура
Как показано на схеме, требования и ограничения по нагрузке структурированы следующим образом:
-
loadDemands
— свойствоShipment
.Shipment
может иметь несколько требований к загрузке. -
loadLimits
— свойствоVehicle
.Vehicle
может быть несколько пределов нагрузки.
Контрольный список основных вещей
Следующий контрольный список описывает основные знания, которые предотвращают потенциальные ошибки, связанные с нагрузкой. Этот список может помочь вам проверить ваш запрос и устранить неполадки в вашем ответе.
Характеристики
В этом разделе описываются следующие свойства требований и ограничений по нагрузке:
- Тип нагрузки: общее свойство между требованиями и ограничениями нагрузки.
-
Load
иLoadLimit
: уникальные свойства, присутствующие в требованиях к нагрузке и предельных нагрузках соответственно.
Тип нагрузки
Тип загрузки — это строковый ключ, который вы применяете в равной степени к отгрузкам и транспортным средствам. Один тип загрузки применяется к требованию загрузки отгрузки, а также к пределу загрузки транспортного средства.
Типы нагрузки используют синтаксис типа карты Protocol Buffers . При именовании типа нагрузки используйте идентификаторы, описывающие тип нагрузки и ее единицу измерения. Например: weightKg , volume_gallons , palletcount , or frequencyDaily .
Load
и LoadLimit
Объекты Load
и LoadLimit
содержат специальные свойства для определения требований к грузоподъемности для грузов и транспортных средств. В следующей таблице описаны эти свойства:
Объект | Родитель | Свойство | Тип недвижимости | Описание недвижимости |
---|---|---|---|---|
Load | loadDemands | amount | строка (формат int64) | Определяет требования к грузоподъемности груза указанного типа. |
LoadLimit | loadLimits | maxLoad | строка (формат int64) | Определяет максимальную грузоподъемность транспортного средства указанного типа. |
Примеры
В этом разделе рассматриваются три типа примеров:
- Примеры кода , иллюстрирующие структуру требований к нагрузке и свойства ограничений.
- Пример сценария , демонстрирующий один из способов использования требований и ограничений нагрузки в запросе API.
- Пример запроса , включающий значения, заданные в примере сценария.
Примеры кода
В следующем примере показана структура запроса на загрузку, в которой можно задать тип loadDemands
как строку, а свойство amount
как строку в формате int64:
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
В следующем примере показана самая простая структура предела нагрузки, где вы можете задать тип loadLimits
как строку, а свойство maxLoad
как строку в формате int64:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
Пример сценария
В этом разделе описывается сценарий, при котором у вас есть бизнес по уходу за собаками в дневное время, и вы оптимизируете маршрут для перевозки нескольких собак в транспортном средстве с ограниченным количеством клеток.
Каждая отправка представляет собой одну остановку, где вы забираете определенное количество собак. В этом примере каждая отправка имеет свое место выдачи, которое является домом собак, о которых вы заботитесь, и все отправки имеют одно и то же место доставки, здание вашего собачьего дневного ухода.
Для этого примера значения свойств в вашем запросе следующие:
Родитель | Свойство | Тип | Ценить | Сценарий |
---|---|---|---|---|
loadDemands | тип нагрузки | нить | dogUnit | Определяет тип груза для отправки. В этом примере используется dogUnit , где каждый dogUnit представляет одну собаку. |
loadDemands | amount | число | 1-я поставка: 1 2-я поставка: 3 | Указывает количество определенного типа груза. В этом примере вы определяете две поставки, в первой вы забираете одну собаку, во второй вы забираете 3 собак. |
loadLimits | тип нагрузки | нить | dogUnit | Определяет тип ограничения нагрузки, применяемого к транспортному средству. Он должен соответствовать типу нагрузки груза, чтобы ограничение было релевантным. |
loadLimits | maxLoad | число | 6 | Указывает максимальное количество типа груза, которое может перевозить транспортное средство. В этом примере у вас есть только одно транспортное средство с максимальной вместимостью 6 dogUnit , где каждый dogUnit представляет собой одну клетку для собак. |
На следующей диаграмме показаны пределы нагрузки транспортного средства, требования к нагрузке каждой партии и то, как каждая партия использует пределы нагрузки транспортного средства:
В этом примере требования к загрузке каждой партии и ограничения по загрузке транспортного средства оказывают следующее влияние:
У оптимизатора не возникнет проблем с созданием маршрута для транспортного средства, перевозящего собак, поскольку транспортное средство может перевозить до 6 собак, а вы везете только 4.
Ограничение по грузоподъемности транспортного средства на 6
dogUnit
также означает, что в этом конкретном транспортном средстве вы сможете перевозить только двух собак .Если количество собак превышало предельную нагрузку, оптимизатор либо пропускал одну из поездок , либо назначал ее подходящему транспортному средству.
Помните, что нет набора предопределенных типов . В этом примере вы можете изменить тип нагрузки с единиц измерения собак на единицы измерения веса, чтобы ограничить вес собак, или изменить его на линейные измерения, чтобы ограничить их ширину или высоту. Эта гибкость позволяет вам адаптировать требования к нагрузке и ограничения к вашим конкретным потребностям.
Запросить пример
В следующем примере показана структура базового запроса optimizeTours
, включающего значения примера сценария:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "One bernese mountain dog", "loadDemands": { "dogUnit": { "amount": "1" } } }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "Three chihuahuas", "loadDemands": { "dogUnit": { "amount": "3" } } } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "loadLimits": { "dogUnit": { "maxLoad": "6" } }, "costPerKilometer": 1.0 } ] } }
Помните, что, в отличие от этого примера, груз может иметь несколько требований к загрузке, а транспортное средство может иметь несколько пределов загрузки, что позволяет вам задавать сложные ограничения, которые следует учитывать при оптимизации маршрутов вашего автопарка.