Требования и ограничения по загрузке — это тип ограничений, которые можно использовать для управления грузоподъемностью . Это ограничение определяет требуемую грузоподъемность груза и максимальную грузоподъемность транспортного средства , что позволяет оптимизировать распределение маршрутов с учетом этих ограничений.
Требования и ограничения по нагрузке могут способствовать достижению таких целей, как:
- Не допускайте перегрузки транспортных средств.
- Отслеживайте, как меняется загрузка транспортных средств по мере погрузки и доставки грузов.
- Отдавайте приоритет сопряжению большегрузных транспортных средств с тяжеловесными грузами.
Требования и ограничения по нагрузке указаны в следующих свойствах:
-
loadDemands
указывает объем грузоподъемности, необходимый для конкретной поставки . -
loadLimits
определяет максимальную грузоподъемность для данного транспортного средства .
Структура
Как показано на диаграмме, требования и ограничения по нагрузке структурированы следующим образом:
-
loadDemands
— свойствоShipment
. УShipment
может быть несколько требований к загрузке. -
loadLimits
— это свойство объектаVehicle
. УVehicle
может быть несколько пределов нагрузки.
Контрольный список основных вещей
В следующем контрольном списке описаны основные сведения, которые помогут предотвратить потенциальные ошибки, связанные с загрузкой. Он поможет вам проверить ваш запрос и устранить неполадки в вашем ответе.
Характеристики
В этом разделе описываются свойства требований и ограничений по нагрузке, а именно:
- Тип нагрузки: общее свойство между требованиями к нагрузке и ее пределами.
-
Load
иLoadLimit
: уникальные свойства, присутствующие в требованиях к нагрузке и пределах нагрузки соответственно.
Тип нагрузки
Тип загрузки — это строковый ключ, который применяется как к грузам, так и к транспортным средствам. Один тип загрузки применяется как к требуемой загрузке груза, так и к предельной загрузке транспортного средства.
Типы грузов используют синтаксис типа карты Protocol Buffers . При именовании типа груза используйте идентификаторы, описывающие тип груза и его единицу измерения. Например: weightKg , volume_gallons , palletcount , или 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 | Указывает количество для заданного типа груза. В этом примере вы определяете две поставки: в первой вы забираете одну собаку, во второй — трёх собак. |
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 } ] } }
Помните, что, в отличие от случая в этом примере, груз может иметь несколько требований к загрузке, а транспортное средство может иметь несколько пределов загрузки, что позволяет вам задавать сложные ограничения, которые следует учитывать при оптимизации маршрутов вашего автопарка.
Мягкие пределы нагрузки
Вы можете задать ограничения по нагрузке как мягкие ограничения, добавив softMaxLoad
и costPerUnitAboveSoftMax
к loadLimits
транспортного средства. Это позволяет оптимизатору превысить максимальную загрузку транспортного средства за определённую стоимость, отдавая приоритет выполнению маршрута, а не строгому соблюдению ограничения по нагрузке.
Вы можете использовать maxLoad
и softMaxLoad
одновременно, чтобы задать как жёсткий, так и мягкий предел нагрузки. В этом случае softMaxLoad
устанавливает допустимую нагрузку, а maxLoad
— жёсткий предел, который не может быть превышен. При использовании обоих параметров maxLoad
должен быть больше softMaxLoad
.
Характеристики
В следующей таблице описываются свойства мягких ограничений для требований и пределов нагрузки.
Родитель | Имя объекта недвижимости | Тип недвижимости | Описание недвижимости |
---|---|---|---|
loadLimits | softMaxLoad | строка (формат int64) | Предпочтительная максимальная загрузка транспортного средства. Если загрузка транспортного средства превышает это значение, взимается плата. |
loadLimits | costPerUnitAboveSoftMax | число | Стоимость единицы нагрузки сверх softMaxLoad . Это поле обязательно для заполнения при использовании softMaxLoad . Подробнее о стоимости см. в разделе «Ключевое понятие модели стоимости» . |
Пример кода
В следующем примере показана структура свойств мягкого ограничения loadLimits
:
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }