Требования и ограничения по нагрузке

The loadDemands property is defined under ShipmentModel.shipments.Shipment and the loadLimits property under ShipmentModel.vehicles.Vehicle.

Требования и ограничения по нагрузке — это тип ограничения, который можно использовать для управления вместимостью . Это ограничение определяет требуемую вместимость груза и максимальную вместимость транспортного средства , что позволяет оптимизировать назначения маршрутов на основе этих ограничений.

Требования и ограничения по нагрузке могут способствовать достижению таких целей, как:

  • Не допускайте перегрузки транспортных средств.
  • Отслеживайте, как меняется загрузка транспортных средств по мере забора и доставки грузов.
  • Отдавайте приоритет использованию большегрузных транспортных средств для перевозки тяжеловесных грузов.

Требования и ограничения по нагрузке указаны в следующих свойствах:

  • 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 представляет собой одну клетку для собак.

На следующей диаграмме показаны пределы нагрузки транспортного средства, требования к нагрузке каждой партии и то, как каждая партия использует пределы нагрузки транспортного средства:

The vehicle begins the route with 6 empty spaces representing the load limits of the vehicle. The first shipment demands space for one dog, the second shipment demands space for three dogs. The end state of the vehicle is having 4 of the 6 spaces now occupied, with two empty spaces remaining.

В этом примере требования к загрузке каждой партии и ограничения по загрузке транспортного средства оказывают следующее влияние:

  • У оптимизатора не возникнет проблем с созданием маршрута для транспортного средства, перевозящего собак, поскольку транспортное средство может перевозить до 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
      }
    ]
  }
}

Помните, что, в отличие от этого примера, груз может иметь несколько требований к загрузке, а транспортное средство может иметь несколько пределов загрузки, что позволяет вам задавать сложные ограничения, которые следует учитывать при оптимизации маршрутов вашего автопарка.