부하 수요 및 한도

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

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

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

  • 차량의 과부하 방지
  • 배송이 픽업 및 배송됨에 따라 차량 하중이 어떻게 변하는지 모니터링
  • 대형 차량과 대형 하중 배송의 페어링 우선순위 지정

로드 요구사항 및 한도는 다음 속성에 지정됩니다.

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

구조

다이어그램에서 볼 수 있듯이 로드 요구사항 및 한도는 다음과 같이 구성됩니다.

기본사항 체크리스트

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

속성

이 섹션에서는 로드 요구사항 및 한도의 속성을 설명합니다. 속성은 다음과 같습니다.

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

로드 유형

로드 유형은 배송과 차량에 동일하게 적용하는 문자열 키입니다. 단일 로드 유형은 배송의 로드 요구사항과 차량의 로드 한도에 모두 적용됩니다.

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

LoadLoadLimit

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

객체 상위 요소 속성 속성 유형 속성 설명
Load loadDemands amount 문자열 (int64 형식) 지정된 유형의 배송 용량 요구사항을 정의합니다.
LoadLimit loadLimits maxLoad 문자열 (int64 형식) 지정된 유형의 차량 최대 하중 용량을 정의합니다.

이 섹션에서는 세 가지 유형의 예를 다룹니다.

코드 샘플

다음 예에서는 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마리의 개만 픽업하므로 최적화 도구는 개를 운송할 차량의 경로를 생성하는 데 문제가 없습니다.

  • 차량에 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
      }
    ]
  }
}

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

소프트 로드 한도

차량의 loadLimitssoftMaxLoadcostPerUnitAboveSoftMax를 추가하여 로드 한도를 소프트 제약 조건으로 설정할 수 있습니다. 이렇게 하면 최적화 도구가 비용을 들여 차량의 최대 하중을 초과할 수 있으므로 로드 한도를 엄격하게 준수하는 것보다 경로 완료에 우선순위를 둘 수 있습니다.

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

속성

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

상위 요소 속성 이름 속성 유형 속성 설명
loadLimits softMaxLoad 문자열 (int64 형식) 차량의 기본 최대 하중입니다. 차량의 하중이 이 값을 초과하면 비용이 발생합니다.
loadLimits costPerUnitAboveSoftMax 숫자 softMaxLoad를 초과하는 하중의 단위당 비용입니다. softMaxLoad를 사용할 때는 이 필드가 필요합니다. 비용에 대한 자세한 내용은 비용 모델 주요 개념을 참고하세요.

코드 샘플

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

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