Требования к загрузке и ограничения — это тип ограничений, которые можно использовать для управления вместимостью . Это ограничение определяет требуемую вместимость груза и максимальную вместимость транспортного средства , что позволяет оптимизировать назначение маршрутов на основе этих ограничений.
Требования к нагрузке и её ограничения могут способствовать достижению таких целей, как:
- Предотвратите перегрузку транспортных средств.
- Отслеживайте изменения загрузки транспортных средств по мере погрузки и разгрузки грузов.
- Приоритетное внимание следует уделять подбору большегрузных автомобилей для перевозки крупногабаритных грузов.
В следующих свойствах задаются требуемые и предельные значения нагрузки:
-
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Вторая партия: 3 | Указывает количество груза определенного типа. В этом примере вы определяете две партии груза: в первой вы забираете одну собаку, во второй — три собаки. |
loadLimits | тип нагрузки | нить | dogUnit | Определяет тип ограничения нагрузки, применяемого к транспортному средству. Для того чтобы ограничение было актуальным, оно должно соответствовать типу перевозимого груза. |
loadLimits | maxLoad | число | 6 | Указывает максимальное количество груза, которое может перевозить транспортное средство. В этом примере у вас только одно транспортное средство с максимальной вместимостью 6 dogUnit , где каждый dogUnit представляет собой одну клетку для собаки. |
На следующей диаграмме показаны предельные нагрузки транспортного средства, требуемая грузоподъемность каждой партии груза и то, как каждая партия груза превышает предельные нагрузки транспортного средства:

В этом примере требования к грузоподъемности каждой партии груза и предельные нагрузки транспортного средства оказывают следующее воздействие:
Оптимизатор не столкнется с проблемой построения маршрута для перевозки собак транспортным средством, поскольку оно может перевозить до 6 собак, а вы забираете только 4.
Ограничение на количество
dogUnitв автомобиле до 6 означает, что в этом конкретном транспортном средстве можно перевозить только двух дополнительных собак .Если количество собак превышало допустимую нагрузку, оптимизатор либо пропускал один из пунктов погрузки , либо назначал его подходящему транспортному средству.
Помните, что предопределенных типов не существует . В этом примере вы можете изменить тип нагрузки с единиц измерения веса собак на единицы измерения веса, чтобы ограничить вес собак, или изменить его на линейные измерения, чтобы ограничить их ширину или высоту. Такая гибкость позволяет адаптировать требования к нагрузке и ограничения к вашим конкретным потребностям.
Пример запроса
В следующем примере показана структура базового запроса 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 } } }