目標是您可以使用的參數,用來指定高層級最佳化目標,而不是提供費用模式中的特定費用參數。
您可以在單一要求中使用多個目標,並為每個目標指定相對權重,藉此控制目標對整體最佳化的影響程度。目標會影響整個要求,進而影響所有車輛和貨運。最後,您也可以使用目標來開始開發自己的成本模型,詳情請參閱「產生成本模型」。
您可以透過目標控制對路線計畫的下列影響:
- 路線的總行程時間或距離。
- 所有車輛的總工作時間。
- 使用的車輛總數。
屬性
objectives 屬性是 ShipmentModel 內的 Objective 訊息類型陣列。每個 Objective 都會定義特定最佳化目標,並包含下表列出的欄位:
| 欄位 | 類型 | 說明 |
|---|---|---|
type |
列舉 |
指定預先定義的最佳化目標。可接受的值如下:
|
weight |
雙人床 |
定義這個目標的相對重要性。使用多個目標時,weight 值會控制這個特定目標對整體路線最佳化的影響程度 (相較於其他目標)。可以是任何非負數,不一定要加總為 1。預設值為 1.0。
|
範例
本節將說明兩種範例:
- 程式碼範例,說明
objectives陣列的結構。 - 包含
objectives陣列的要求範例。
程式碼範例
以下範例顯示 objectives 的結構:
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
要求範例
以下範例顯示包含多個目標的基本 optimizeTours 要求結構,其中 MIN_TRAVEL_TIME 的重要性是 MIN_WORKING_TIME 的 3 倍。
{ "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" } }