부하 수요 및 한도

loadDemands 속성은 ShipmentModel.shipments.Shipment 아래에 정의되고 loadLimits 속성은 ShipmentModel.vehicles.Vehicle 아래에 정의됩니다.

부하 요구사항과 한도는 용량을 관리하는 데 사용할 수 있는 제약 조건의 한 유형입니다. 이 제약 조건은 배송필요한 용량차량최대 용량을 지정하므로 이러한 제약 조건에 따라 경로 할당을 최적화할 수 있습니다.

부하 요구사항 및 한도는 다음과 같은 목표를 지원할 수 있습니다.

  • 차량의 과부하를 방지합니다.
  • 배송 상품이 수령 및 배송됨에 따라 차량 적재량이 어떻게 변하는지 모니터링합니다.
  • 대형 차량과 중량 화물의 페어링에 우선순위를 둡니다.

부하 요구사항과 한도는 다음 속성에 지정됩니다.

  • loadDemands는 특정 배송에 필요한 용량 금액을 지정합니다.
  • loadLimits은 특정 차량의 최대 용량을 지정합니다.

구조

다이어그램에 표시된 것처럼 부하 요구사항과 제한은 다음과 같이 구성됩니다.

Essentials 체크리스트

다음 체크리스트에서는 로드 관련 실수를 방지하는 데 필요한 지식을 설명합니다. 이 목록은 요청을 검증하고 응답 문제를 해결하는 데 도움이 됩니다.

속성

이 섹션에서는 다음과 같은 부하 요구사항 및 제한사항의 속성을 설명합니다.

  • 로드 유형: 로드 요구사항과 한도 간의 공유 속성입니다.
  • LoadLoadLimit: 각각 로드 요구사항과 로드 한도에 있는 고유 속성입니다.

로드 유형

부하 유형은 배송 및 차량에 동일하게 적용되는 문자열 키입니다. 단일 적재 유형이 배송의 적재 수요와 차량의 적재 한도에 모두 적용됩니다.

로드 유형은 프로토콜 버퍼 맵 유형 구문을 사용합니다. 부하 유형의 이름을 지정할 때는 부하 유형과 단위를 설명하는 식별자를 사용하세요. 예: weightKg, volume_gallons, palletcount 또는 frequencyDaily

LoadLoadLimit

LoadLoadLimit 객체에는 배송 및 차량의 용량 요구사항을 정의하는 특정 속성이 포함되어 있습니다. 다음 표에 이러한 속성이 설명되어 있습니다.

객체 자녀 있음 속성 숙소 유형 속성 설명
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개의 빈 공간으로 경로를 시작합니다. 첫 번째 배송에는 개 한 마리, 두 번째 배송에는 개 세 마리를 위한 공간이 필요합니다. 이제 6개 공간 중 4개가 채워지고 2개의 빈 공간이 남아 있습니다.

이 예에서 각 배송의 부하 요구사항과 차량의 부하 한도는 다음과 같은 영향을 미칩니다.

  • 차량에 최대 6마리의 개를 태울 수 있고 4마리만 픽업하므로 최적화 프로그램에서 개를 운송할 차량의 경로를 생성하는 데 문제가 없을 것입니다.

  • 차량의 하중 한도가 6dogUnit라는 것은 이 특정 차량에 두 마리의 개만 더 태울 수 있다는 의미이기도 합니다.

  • 강아지 수가 부하 한도를 초과하면 최적화 도구에서 픽업 중 하나를 건너뛰거나 적합한 차량에 할당합니다.

사전 정의된 유형은 없습니다. 이 예에서는 부하 유형을 개 단위에서 무게 단위로 변경하여 개의 무게를 제한하거나 선형 측정으로 변경하여 너비나 높이를 제한할 수 있습니다. 이러한 유연성을 통해 특정 요구사항에 맞게 부하 요구사항과 제한을 조정할 수 있습니다.

요청 예

다음 예시에서는 예시 시나리오 값을 통합한 기본 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
      }
    ]
  }
}

이 예시와 달리 배송에는 여러 적재 요구사항이 있을 수 있고 차량에는 여러 적재 제한이 있을 수 있으므로 차량 경로를 최적화할 때 고려할 복잡한 제약 조건을 제공할 수 있습니다.

소프트 로드 한도

차량의 loadLimitssoftMaxLoadcostPerUnitAboveSoftMax를 추가하여 하중 제한을 소프트 제약 조건으로 설정할 수 있습니다. 이렇게 하면 최적화 프로그램이 비용을 지불하고 차량의 최대 적재량을 초과하여 적재량 제한을 엄격하게 준수하는 것보다 경로 완료를 우선시할 수 있습니다.

maxLoadsoftMaxLoad를 함께 사용하여 하드 및 소프트 로드 제한을 모두 설정할 수 있습니다. 이 경우 softMaxLoad는 초과할 수 있는 로드를 설정하고 maxLoad는 초과할 수 없는 엄격한 한도를 설정합니다. 두 값을 모두 사용하는 경우 maxLoadsoftMaxLoad보다 커야 합니다.

속성

다음 표에서는 부하 요구사항 및 제한의 소프트 제약 조건 속성을 설명합니다.

자녀 있음 속성 이름 숙소 유형 속성 설명
loadLimits softMaxLoad 문자열 (int64 형식) 차량의 기본 최대 적재량입니다. 차량의 부하가 이 값을 초과하면 비용이 발생합니다.
loadLimits costPerUnitAboveSoftMax 숫자 softMaxLoad을 초과하는 부하의 단위당 비용입니다. softMaxLoad를 사용하는 경우 이 필드는 필수입니다. 비용에 대해 자세히 알아보려면 비용 모델 주요 개념을 참고하세요.

코드 샘플

다음 예는 loadLimits의 소프트 제약 조건 속성 구조를 보여줍니다.

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}