Route Optimization API 的主要目標是找出成本最低的路線。因此,成本模型是路線最佳化的主要驅動因素。
成本模型是一組屬性,用於指定全域、車輛和運送成本。
成本模式屬性支援下列最佳化目標:
- 有效分配車輛和路線
- 符合成本效益的取貨和運送時間
- 優先處理重要貨件
結構
如圖表所示,費用模型屬性的結構如下:
Shipment包含penaltyCost屬性。Vehicle包含下列屬性:
本文僅著重介紹重要的成本模型參數。如需完整的成本參數組合,請參閱參考文件。
Essentials 檢查清單
下列檢查清單說明基本知識,可避免發生與費用相關的潛在錯誤。這份清單有助於驗證要求和排解回覆問題。
屬性
下表列出並說明費用模式屬性。
| 父項 | 屬性名稱 | 物業類型 | 單次 | 房源說明 |
|---|---|---|---|---|
Shipment |
penaltyCost |
數字 | 略過出貨 | 略過出貨產生的費用。 如果完成運送的成本超過違規費用,API 就會略過該運送作業。
|
Vehicle |
fixedCost |
數字 | 運送地址 | 如果使用這輛車輛處理運送作業,則會套用固定費用。 |
costPerHour |
數字 | 小時 | 每小時車輛營運成本,包括運輸、等待、造訪和休息時間。 隨著這項成本增加,最佳化工具會嘗試找出更快的路線,但不一定是最短的路線。 這項屬性簡單完整,可做為有效的單一車輛成本。 |
|
costPerKilometer |
數字 | 公里 | 車輛每行駛一公里的成本,可能代表燃料成本或攤銷的車輛維護成本。 | |
costPerTraveledHour |
數字 | 小時 | 車輛每小時的營運成本,僅限行駛期間,不含等待、拜訪和休息時間。這項設定會優先選擇較快的路線,而非較短的路線。 |
範例
本節涵蓋三種範例:
程式碼範例
下列程式碼範例顯示 Shipment 中成本模型屬性的結構:
{ "model": { "shipments": [ ... { "penaltyCost": PENALTY_COST } ], "vehicles": [ ... ] } }
以下程式碼範例顯示 Vehicle 中費用模型屬性的結構:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "fixedCost": FIXED_COST, "costPerKilometer": KILOMETER_COST, "costPerHour": HOUR_COST, "costPerTraveledHour": TRAVELED_HOUR_COST } ] } }
範例情境
本節說明的情境是您經營狗狗托育中心。您要為用來從狗狗家中接送牠們的卡車,規劃最佳路線。在這種情況下,您希望最佳化工具在提供路線時,考量到接送狗狗和車輛營運的相關成本。
在本例中,一個費用單位代表 1 美元。也就是說,要求中的成本模型屬性值如下:
| 屬性 | 值 | 情境 |
|---|---|---|
penaltyCost |
10 | 如果顧客未在預定日期領回狗狗,你向他們收取的罰款。如果未在預定日期接回狗狗,顧客的服務總費用可折抵 40 美元。 |
fixedCost |
30 | 代表車貸每日費用,即每天 30 美元。 |
costPerKilometer |
0.08 | 代表車輛每公里消耗的汽油量。你的車輛每公里需要 0.04 加侖的燃料,而你所在地區的燃料費用是每加侖 2 美元。 |
costPerHour |
27 | 代表你支付給駕駛的車輛駕駛費用。你每小時支付司機 27 美元。 |
costPerTraveledHour |
2.5 | 代表狗狗在車上時,你每小時必須支付的車輛空調費用。車輛靜止時,駕駛人可以打開後門並關閉空調。 |
根據成本參數,最佳化工具可能會做出使用者不易察覺,但可透過最佳化找到的折衷方案。
下圖為範例,最佳化工具可能會選擇綠色虛線,這條路線雖然較長,但能避開紅色虛線的車流,因此速度較快。

在這個情境中,兩條路徑的費用平衡如下:
綠色虛線的
costPerHour和costPerTraveledHour較低,因為這是避開車流的快速路線,即使costPerKilometer較高,成本效益也較高。紅色虛線的
costPerKilometer較低,因為這是直達路線,但由於塞車等待時間,costPerHour和costPerTraveledHour過高,因此是最昂貴的路線。
除了提供經濟實惠的路線,最佳化工具也會在回應屬性中,加總運送路線的總成本。
要求範例
下列範例顯示基本 optimizeTours 要求結構,其中包含範例情境中設定的值:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] "penaltyCost": 40 } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "fixedCost": 30, "costPerKilometer": 0.08, "costPerHour": 27, "costPerTraveledHour": 2.5 } ] } }
回應屬性
OptimizeToursResponse 訊息具有費用屬性,用於說明完成路線時產生的費用:
metrics.costs:所有路線的總費用,並依費用相關要求欄位細分。metrics.totalCost:所有路徑的總費用。