목표는 비용 모델에서 구체적인 비용 매개변수를 제공하는 대신 상위 수준의 최적화 목표를 지정하는 데 사용할 수 있는 매개변수입니다.
단일 요청에서 여러 목표를 사용하고 각 목표에 상대적 가중치를 부여하여 전체 최적화에 미치는 영향을 제어할 수 있습니다. 목표는 전체 요청에 영향을 미쳐 모든 차량과 배송에 영향을 줍니다. 마지막으로 비용 모델 생성에 설명된 대로 목표를 사용하여 자체 비용 모델 개발을 시작할 수도 있습니다.
목표를 사용하여 경로 계획에 다음과 같은 영향을 미칠 수 있습니다.
- 경로의 총 이동 시간 또는 거리입니다.
- 모든 차량의 총 근무 시간입니다.
- 사용된 총 차량 수입니다.
속성
objectives 속성은 ShipmentModel 내의 Objective 메시지 유형의 배열입니다. 각 Objective는 특정 최적화 목표를 정의하고 다음 표에 나열된 필드를 포함합니다.
| 필드 | 유형 | 설명 |
|---|---|---|
type |
열거형 |
사전 정의된 최적화 타겟을 지정합니다. 허용되는 값은 다음과 같습니다.
|
weight |
더블 |
이 목표의 상대적 중요도를 정의합니다. 여러 목표를 사용하는 경우 weight 값은 이 특정 목표가 다른 목표에 비해 전체 경로 최적화에 얼마나 큰 영향을 미치는지 제어합니다. 음수가 아닌 모든 숫자일 수 있으며 합이 1일 필요는 없습니다. 기본값은 1.0입니다.
|
예
이 섹션에서는 다음 두 가지 유형의 예를 다룹니다.
objectives배열의 구조를 보여주는 코드 샘플objectives배열이 포함된 요청 예시
코드 샘플
다음 예는 objectives의 구조를 보여줍니다.
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
요청 예
다음 예에서는 MIN_TRAVEL_TIME이 MIN_WORKING_TIME보다 3배 더 중요한 여러 목표를 통합하는 기본 optimizeTours 요청의 구조를 보여줍니다.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME", "weight": 3.0 }, { "type": "MIN_WORKING_TIME" } ] } }
비용 모델 생성
목표는 최적화 타겟을 빠르게 설정하는 방법이지만 경우에 따라 목표만으로는 충분히 구체적이지 않을 수 있습니다. 정확한 라우팅 목표를 달성하려면 비용 모델 매개변수를 통해서만 사용할 수 있는 세부적인 제어가 필요할 수 있습니다.
요청에 목표를 추가하여 자체 비용 모델 개발을 시작한 다음 TRANSFORM_AND_RETURN_REQUEST 해결 모드를 사용하여 요청의 목표를 비용 모델 매개변수로 변환할 수 있습니다.
이 해결 모드를 사용하여 요청을 보내면 다음이 발생합니다.
- API는 목표를 비용 모델 매개변수로 변환하고
processedRequest로 반환합니다. 그런 다음 필요에 따라 비용 모델 매개변수를 조정하여 경로 계획을 미세 조정할 수 있습니다. - 목표를 여러 개 사용하는 경우 API는 모든 목표의 비용을 결합하고 각 가중치에 따라 비용을 조정합니다.
- API에서 최적화된 경로를 제공하지 않고 목표를 비용 모델 매개변수로만 변환하므로 이 요청에 대해 청구되지 않습니다.
요청 예시
다음 예는 MIN_TRAVEL_TIME 목표와 TRANSFORM_AND_RETURN_REQUEST 해결 모드를 사용하는 요청을 보여줍니다.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" }
응답 예
다음은 이전 요청에 해당하는 응답입니다. 이 응답에는 생성된 비용 모델 매개변수와 참조를 위한 원래 목표가 모두 포함됩니다.
{ "processedRequest": { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.425062610009959, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.424215032060211, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerHour": 30, "costPerTraveledHour": 330, "costPerKilometer": 0.2 } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" } }