기본 구조 (ShipmentModel, Shipment, Vehicle)

ShipmentModel에는 `Shipment` 메시지 유형의 `shipments` 객체 하나와 `Vehicle` 메시지 유형의 `vehicles` 객체 하나가 있습니다.

Route Optimization API의 목표는 차량 집합이 일련의 위치를 방문하도록 경로를 계획하는 것입니다. OptimizeToursRequest 객체는 이러한 차량과 위치의 속성을 설명하며 모든 엔드포인트의 요청 본문의 기본 구조입니다.

OptimizeToursRequest 객체의 기본 구조는 다음과 같습니다.

  • model 필드에는 두 개의 키 필드(
      ShipmentModel
    • 하나 이상의 Shipment 메시지가 포함된 하나의 shipments 필드
    • 하나 이상의 Vehicle 메시지가 포함된 하나의 vehicles 필드

이 문서에서는 다음 메시지 유형을 설명합니다.

  • ShipmentModel: 배송, 사용 가능한 차량, 관계를 설명하는 기타 객체의 목록을 보유합니다.
  • Shipment: 차량이 방문할 위치를 설명합니다. 수령 및 배송할 실제 상품이나 차량 운전자가 서비스를 수행하는 장소를 나타낼 수 있습니다.
  • Vehicle: 배송 위치 간의 교통 수단을 설명합니다. 각 차량은 실제 차량 또는 도보로 이동하는 사람에 해당합니다.

ShipmentModel

ShipmentModel에는 경로 최적화 문제의 요소가 포함됩니다. 여기에는 제약 조건을 고려하고 전체 비용을 최소화하면서 일련의 차량이 수행할 수 있는 일련의 배송이 포함됩니다.

아래 표에서는 ShipmentModel의 관련 속성을 설명합니다.

속성 설명
shipmentsvehicles 하나 이상의 배송 및 차량 세부정보를 포함하는 필수 객체입니다.
globalStartTimeglobalEndTime 모든 차량이 모든 배송을 완료해야 하는 기간의 시작과 끝을 나타냅니다. 이러한 속성은 필수는 아니지만, 최적화 도구는 시간 제약 조건을 준수할 때 가장 잘 작동하므로 포함하는 것이 좋습니다.

ShipmentModel의 전체 속성 목록은 참조 문서를 확인하세요.

ShipmentModel 함수의 예

이 예에서는 강아지 유치원 서비스를 운영하고 있으며 요청을 작성하기 시작합니다. 나중에 배송 및 차량을 정의할 예정이지만 영업시간과 시간당 운영 비용을 먼저 설정하려고 합니다.

이 예시에서 요청의 ShipmentModel 속성 값은 다음과 같습니다.

속성 설명
globalStartTime 2024-02-13T00:00:00.000Z 영업시간의 시작 날짜 및 시간입니다.
globalEndTime 2024-02-14T06:00:00.000Z 영업시간의 종료일과 종료 시간입니다.

다음은 예시 시나리오 값을 통합한 ShipmentModel 메시지의 코드 샘플입니다.

{
  "model": {
    "shipments": [
      ...
    ],
    "vehicles": [
      ...
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

Shipment

Shipment 메시지 유형은 경로에서 배송될 수 있는 상품 또는 수행될 수 있는 서비스의 속성 구조를 정의합니다.

실제 배송은 `shipments` 객체에 포함된 하나의 `Shipment` 메시지와 같습니다.

다이어그램에 표시된 것처럼 다음과 같습니다.

  • Shipment 메시지에는 실제 배송 또는 서비스에 관한 모든 정보가 포함됩니다.
  • 모든 Shipment 메시지는 shipments 필드에 지정됩니다.
  • shipments 필드에는 하나 이상의 Shipment 메시지가 포함되어 있습니다.

Shipment 메시지에는 하나 이상의 pickups 또는 deliveries 객체가 필요합니다. 이러한 객체의 정의는 다음과 같습니다.

  • pickups은 배송의 수령 위치를 정의합니다.
  • deliveries은 배송의 배송 위치를 정의합니다.
  • pickupsdeliveries 모두 위치와 기타 세부정보를 정의하는 VisitRequest 메시지 유형을 포함합니다.

다음 표에서는 Shipment 메시지에서 pickupsdeliveries의 구성에 따른 다양한 시나리오를 설명합니다.

시나리오 설명
pickups만 지원 배송 상품만 수령하는 것으로 가정합니다.
deliveries만 지원 배송을 미리 로드했거나 서비스를 제공하는 것으로 가정합니다.
pickupsdeliveries 모두 할당된 차량은 먼저 픽업을 완료한 후 배송을 완료해야 합니다. 픽업을 수행한 차량만 배송을 수행할 수 있습니다.
여러 pickups 또는 deliveries 배송에 pickups 또는 deliveries에 대한 여러 가능성이 나열되어 있는 경우 최적화 프로그램은 비용을 최소화하고 제약 조건을 충족하는 것을 기반으로 사용할 수령 옵션 하나와 배송 옵션 하나를 선택합니다.

Shipment의 전체 속성 목록은 참조 문서를 확인하세요.

Shipment 함수의 예

이 예에서는 집에서 개를 데려와 데이케어에 데려다주는 반려견 데이케어 서비스가 있습니다. 두 마리 개의 픽업 위치를 설정하고 배송 위치를 비즈니스로 설정하려고 합니다.

  • 첫 번째 개's home은 샌프란시스코의 코이트 타워에 있습니다. 이 위치의 좌표는 위도 37.8024, 경도 -122.4058입니다.
  • 두 번째 강아지 집은 샌프란시스코의 사우스 선셋 놀이터 공원에 있습니다. 이 위치의 좌표는 위도 37.7359, 경도 -122.5011입니다.
  • 애견 데이케어는 샌프란시스코의 미시온 돌로레스 공원에 있습니다. 이 위치의 좌표는 위도 37.759773, 경도 -122.427063입니다.

다음은 Shipment 메시지의 코드 샘플입니다. 여기서 shipments 객체에는 예시 좌표가 있는 두 개의 Shipment 메시지 유형이 포함됩니다.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
    ...
    ]
  }
}

Vehicle

Vehicle 메시지 유형은 경로에서 배송을 수행할 수 있는 차량의 속성 구조를 정의합니다.

실제 차량은 `vehicles` 객체에 포함된 하나의 `Vehicle` 메시지와 같습니다.

다이어그램에 표시된 것처럼 다음과 같습니다.

  • Vehicle 메시지에는 실제 차량의 모든 정보가 포함됩니다.
  • 모든 Vehicle 메시지는 vehicles 필드에 지정됩니다.
  • vehicles 필드에는 여러 Vehicle 메시지가 포함되어 있습니다.

다음 표에서는 Vehicle의 관련 속성을 설명합니다.

속성 설명
startLocationendLocation 최종 최적화된 경로에 포함된 차량의 시작 및 종료 위치 정의되지 않은 경우 기본적으로 첫 번째 배송 수령 및 마지막 배송 위치로 설정됩니다.
costPerHour, costPerKilometer, costPerTraveledHour 차량별 비용 매개변수입니다. API가 최적화된 경로를 반환하려면 요청에 하나 이상의 비용 매개변수가 있는 것이 좋습니다. 비용에 대해 자세히 알아보려면 비용 모델 주요 개념을 참고하세요.
startTimeWindowsendTimeWindows 차량이 노선에서 운행할 수 있는 시간대를 정의합니다. 이러한 값은 ShipmentModel에 설정된 globalStartTimeglobalEndTime 기간 내에 있어야 합니다. 이 속성은 필수는 아니지만, 최적화 도구는 시간 제약 조건을 준수할 때 가장 효과적으로 작동하므로 포함하는 것이 좋습니다.

Vehicle 함수의 예

이 예에서는 반려견 데이케어 서비스를 운영하며 하루의 시작과 끝에 차량의 위치와 차량이 소비하는 연료를 정의하려고 합니다. ShipmentModel 객체 내의 globalStartTimeglobalEndTime 속성에 정의된 시간과 일치하므로 차량의 근무 시간을 지정할 필요가 없습니다.

이 예시에서 요청의 Vehicle 속성 값은 다음과 같습니다.

속성 설명
startLocation latitude: 37.759773, longitude: -122.427063 차량 경로의 시작 좌표입니다. 이러한 위치는 샌프란시스코 미시온 돌로레스 공원에 있는 반려견 데이케어의 위치와 일치합니다.
endLocation latitude: 37.759773, longitude: -122.427063 차량 경로의 종료 좌표입니다. 이러한 위치는 샌프란시스코 미시온 돌로레스 공원에 있는 반려견 데이케어의 위치와 일치합니다.
costPerHour 27 반려견 데이케어 차량 운전기사에게 지불하는 금액입니다. 시간당 27달러를 운전자에게 지불합니다.

다음은 예시 시나리오 값을 통합한 Vehicle 메시지의 코드 샘플입니다.

{
  "model": {
    "shipments": [
    ...
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ]
  }
}

Vehicle의 전체 속성 목록은 참조 문서를 확인하세요.

전체 요청 예시

다음 코드 샘플은 이 문서에 표시된 ShipmentModel, Shipment, Vehicle 예시를 결합하여 완전한 요청 예시를 제공합니다.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ],
    "globalStartTime": "2024-02-13T00:00:00.000Z",
    "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}