기본 구조 (ShipmentModel, Shipment, Vehicle)

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

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

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

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

  • 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` 메시지와 같습니다.

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

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

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

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

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

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

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

Shipment

이 예에서는 강아지 데이케어 서비스를 제공하며 집에서 강아지를 픽업하여 데이케어 센터로 배송합니다. 두 마리의 강아지의 픽업 위치를 설정하고 배송 위치를 비즈니스로 설정하려고 합니다.

  • 첫 번째 강아지의 집은 샌프란시스코의 코이트 타워에 있습니다. 이 위치의 좌표는 위도 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` 메시지와 같습니다.

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

  • A 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"
  }
}