正式環境注意事項
為求簡單起見,本指南使用 REST 和 JSON。不過,在正式環境中,建議您使用 gRPC 和用戶端程式庫,以獲得更佳效能。詳情請參閱 Route Optimization API 用戶端程式庫。
在「發出第一項要求」中傳送要求後,最佳化工具會傳回 OptimizeToursResponse。這項回應是司機要遵循的路線規劃。本指南說明如何解讀。
路徑規劃摘要
在狗狗托育情境中,最佳化工具會將伯恩山犬和吉娃娃指派給貨車,並略過德國牧羊犬。司機的路線規劃如下:
- 早上 7:55 在托兒中心開始值班。
- 早上 8:20 在柯伊特塔附近接伯恩山犬。
- 上午 8:58 在南日落遊樂場公園接吉娃娃。
- 上午 9:24 抵達托兒中心,等待上午 9:30 開放接送。
- 上午 9:30 送伯恩山犬。
- 上午 9:35 讓吉娃娃下車。
- 上午 9:40 結束輪班。
路線方案費用為 $147.22 美元,包括因略過德國牧羊犬而產生的 $100 美元罰款。
如要檢查結果,請將您的回覆與完整範例回覆進行比較。行程時間和距離取決於目前的道路資料,因此結果可能會略有不同。
完整回應範例
{ "routes": [ { "vehicleStartTime": "2024-02-13T15:55:04Z", "vehicleEndTime": "2024-02-13T17:40:00Z", "visits": [ { "isPickup": true, "startTime": "2024-02-13T16:20:00Z", "detour": "0s", "shipmentLabel": "Bernese mountain dog", "visitType": "PICKUP_SHIPMENT" }, { "shipmentIndex": 1, "isPickup": true, "startTime": "2024-02-13T16:58:12Z", "detour": "2600s", "shipmentLabel": "Chihuahua", "visitType": "PICKUP_SHIPMENT" }, { "startTime": "2024-02-13T17:30:00Z", "detour": "2297s", "shipmentLabel": "Bernese mountain dog", "visitType": "DELIVER_SHIPMENT" }, { "shipmentIndex": 1, "startTime": "2024-02-13T17:35:00Z", "detour": "656s", "shipmentLabel": "Chihuahua", "visitType": "DELIVER_SHIPMENT" } ], "transitions": [ { "travelDuration": "1496s", "travelDistanceMeters": 7082, "waitDuration": "0s", "totalDuration": "1496s", "startTime": "2024-02-13T15:55:04Z" }, { "travelDuration": "1992s", "travelDistanceMeters": 16589, "waitDuration": "0s", "totalDuration": "1992s", "startTime": "2024-02-13T16:25:00Z" }, { "travelDuration": "1252s", "travelDistanceMeters": 7860, "waitDuration": "356s", "totalDuration": "1608s", "startTime": "2024-02-13T17:03:12Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:35:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:40:00Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "routeCosts": { "model.vehicles.cost_per_hour": 47.22 }, "routeTotalCost": 47.22, "vehicleFullness": { "maxFullness": 0.3497777777777778, "activeSpan": 0.3497777777777778 } } ], "skippedShipments": [ { "index": 2, "label": "German shepherd", "penaltyCost": 100 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2024-02-13T15:55:04Z", "latestVehicleEndTime": "2024-02-13T17:40:00Z", "totalCost": 147.22, "costs": { "model.vehicles.cost_per_hour": 47.22, "model.shipments.penalty_cost": 100 } } }
回應結構
OptimizeToursResponse 包含兩個主要元件:
由於最佳化工具會略過德國牧羊犬,因此回應也會包含 skippedShipments。
以下各節說明如何在回應中找到路線規劃摘要的各項詳細資料。
哪輛車行駛哪條路線?
最佳化工具會產生路線規劃 (routes 陣列),對應要求中的 vehicles 順序。
vehicleIndex 欄位會根據車輛的零基準位置識別每輛車,貨車的位置為 0。vehicleStartTime 和 vehicleEndTime 欄位會指示司機何時開始和結束輪班。
無論要求中的時差為何,Route Optimization API 都會傳回世界標準時間 (UTC) 的時間戳記,並加上 Z 後置字元。如要取得舊金山時間,請減去 8 小時。貨車的班次時間為上午 7:55 到 9:40,如以下程式碼範例所示。
{
"routes": [
{
// "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
}
]
...
}
上車和下車順序為何?
在每條路線中,visits 陣列會按照時間順序,包含指派車輛的所有取貨和送貨作業。
每次造訪的 shipmentIndex 是要求中貨件的零基位置:0 是伯恩山犬,1 是吉娃娃。shipmentLabel 欄位會顯示你為每筆運送設定的標籤。
如要區分上車和下車 (或送達),可以查看 visitType 或 isPickup 欄位:
visitType:明確定義造訪動作。- 自取:
visitType="PICKUP_SHIPMENT" - Delivery:
visitType="DELIVER_SHIPMENT"
- 自取:
isPickup:布林值輔助欄位。- 自取:
isPickup=true - Delivery:
isPickup=false(在 JSON 中省略)
- 自取:
如要判斷事件的確切順序和每個地點的預計抵達時間,請依序讀取 visits 陣列。下表根據 shipmentIndex、isPickup 或 visitType 和 startTime 欄位的順序和值,顯示路線方案動作。
| 序列 | shipmentIndex值 |
isPickup 或 visitType 值 |
startTime值 (世界標準時間) |
動作 |
|---|---|---|---|---|
| 首次造訪 | 0 (在 JSON 中省略) | True 或 PICKUP_SHIPMENT |
2024-02-13T16:20:00Z | 上午 8:20 接伯恩山犬。 |
| 第二次造訪 | 1 | True 或 PICKUP_SHIPMENT |
2024-02-13T16:58:12Z | 上午 8:58 接吉娃娃。 |
| 第三次造訪 | 0 (在 JSON 中省略) | False (省略) 或 DELIVER_SHIPMENT |
2024-02-13T17:30:00Z | 上午 9:30 送伯恩山犬去狗狗托育中心。 |
| 第四次造訪 | 1 | False (省略) 或 DELIVER_SHIPMENT |
2024-02-13T17:35:00Z | 上午 9:35 送吉娃娃去狗狗托育中心。 |
以下程式碼範例說明回應如何提供這個序列:
{
"routes": [
{
"visits": [
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
"isPickup": true,
"startTime": "2024-02-13T16:20:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "PICKUP_SHIPMENT"
},
{
"shipmentIndex": 1,
"isPickup": true,
"startTime": "2024-02-13T16:58:12Z",
"shipmentLabel": "Chihuahua",
"visitType": "PICKUP_SHIPMENT"
},
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:30:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "DELIVER_SHIPMENT"
},
{
"shipmentIndex": 1,
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:35:00Z",
"shipmentLabel": "Chihuahua",
"visitType": "DELIVER_SHIPMENT"
}
]
}
]
}
每次造訪也都有 visitRequestIndex,這是最佳化工具為運送作業選擇的取貨或送貨選項位置 (從零開始)。在這個情境中,每隻狗都只有一個接送選項和一個送達選項,因此 visitRequestIndex 一律為 0,回應會省略這個值。
兩次造訪之間會發生什麼事?
在每條路線中,transitions 陣列會列出造訪地點之間的行程詳細資料。雖然 visits 和 transitions 是不同的清單,但兩者在時間上會交錯,如下所示:
transitions[0](從起點到第一個造訪地點的行車路線)visits[0](初次造訪)transitions[1](促成初次造訪到第二次造訪)visits[1](第二次造訪)...visits[N-1](上次造訪,N 是總造訪次數)transitions[N](從最後一個造訪地點開車到終點)
您可以查看兩個陣列中的 startTime 欄位,追蹤路線的時間軸。轉移的 startTime 是指司機開始行程的時間,而造訪的 startTime 是指司機開始接送乘客的時間。
每個轉場效果都會顯示地點之間的預估行車時間和距離。
下表將 transitions 和 visits 欄位對應至寵物托育情境的時間順序路線動作。
| 序列 | 欄位名稱 | startTime值 (世界標準時間) |
詳細資料 | 動作 |
|---|---|---|---|---|
| 首次轉換 | transitions[0] |
2024-02-13T15:55:04Z |
travelDuration:1496stravelDistanceMeters:7082 |
從托育中心開車 7 公里 (25 分鐘) 去接伯恩山犬。班表從上午 7:55 開始。 |
| 初次造訪 | visits[0] |
2024-02-13T16:20:00Z |
shipmentIndex:0 (在 JSON 中省略)isPickup:True |
上午 8:20 起接伯恩山犬,預計花費 5 分鐘。 |
| 第二次轉換 | transitions[1] |
2024-02-13T16:25:00Z |
travelDuration:1992stravelDistanceMeters:16589 |
上午 8:25 從柯伊特塔出發,開車 17 公里 (33 分鐘) 去接吉娃娃。 |
| 第二次造訪 | visits[1] |
2024-02-13T16:58:12Z |
shipmentIndex:1isPickup:True |
上午 8:58 起接吉娃娃,行程需要 5 分鐘。 |
| 第三次轉換 | transitions[2] |
2024-02-13T17:03:12Z |
travelDuration:1252 秒travelDistanceMeters:7860waitDuration:356 秒 |
上午 9:03 從南日落遊樂場出發,行駛 8 公里 (21 分鐘) 返回托兒中心。上午 9:24 抵達,等待 6 分鐘後,下車時段開始。 |
| 第三次造訪 | visits[2] |
2024-02-13T17:30:00Z |
shipmentIndex:0 (在 JSON 中省略)isPickup:False (在 JSON 中省略) |
上午 9:30 起,將伯恩山犬送到狗狗托育中心。這項行程需要 5 分鐘。 |
| 第四次轉換 | transitions[3] |
2024-02-13T17:35:00Z |
travelDuration:0 秒travelDistanceMeters:0 (在 JSON 中省略) |
不開車。準備在上午 9:35 將吉娃娃送到托育中心。 |
| 第四次造訪 | visits[3] |
2024-02-13T17:35:00Z |
shipmentIndex:1isPickup:False (在 JSON 中省略) |
上午 9:35 起,將吉娃娃送至狗狗托育中心。停留時間為 5 分鐘。 |
| 第五次轉換 | transitions[4] |
2024-02-13T17:40:00Z |
travelDuration:0 秒travelDistanceMeters:0 (在 JSON 中省略) |
不開車。司機在上午 9:40 下班。 |
以下程式碼範例說明回應如何為 transitions[0] 和 transitions[1] 提供這個序列:
{
"routes": [
{
"transitions": [
{
"travelDuration": "1496s",
"travelDistanceMeters": 7082,
"waitDuration": "0s",
"totalDuration": "1496s",
"startTime": "2024-02-13T15:55:04Z"
},
{
"travelDuration": "1992s",
"travelDistanceMeters": 16589,
"waitDuration": "0s",
"totalDuration": "1992s",
"startTime": "2024-02-13T16:25:00Z"
},
...
]
}
]
}
路線費用是多少?
您可以根據需要特定車輛的費用,還是整個車隊的總費用,查看回應中的多個欄位。
下表列出在回應中尋找費用資訊的所有方式:
| 父項 | 參數 | 範圍 | 說明 |
|---|---|---|---|
ShipmentRoute |
routeCosts |
每條路徑 | 該特定路線的具體費用明細 (例如每小時費用)。 |
routeTotalCost |
每條路徑 | 該特定路徑的總費用。 | |
Metrics |
totalCost |
總計 (所有路徑) | 解決方案中所有路線的匯總總費用。 |
costs |
總計 (所有路徑) | 解決方案中所有路線的匯總費用組成細目。 |
routeCosts 和 costs 中指定的費用反映您在要求中指定的費用限制。詳情請參閱成本模式重要概念文件。
在這個狗狗托育情境中,由於您略過了一次運送,因此每條路線的費用和匯總總費用會有所不同。路線費用僅包含與該特定路線相關的費用 (司機薪資),而匯總總費用也包含略過運送的罰款。以下程式碼範例說明如何在回應中找到這些值:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
"routeCosts": {
"model.vehicles.cost_per_hour": 47.22
},
"routeTotalCost": 47.22
}
],
"metrics": {
"totalCost": 147.22,
"costs": {
"model.shipments.penalty_cost": 100,
"model.vehicles.cost_per_hour": 47.22
},
...
}
}
根據路線計畫,司機從上午 7:55 到上午 9:40 駕駛貨車,約 1 小時 45 分鐘 (6296 秒)。按照您定義的每小時 $27 美元費率,路線費用為 $47.22 美元。由於最佳化工具略過德國牧羊犬的運送,因此會加上 $100 美元的罰款費用,使匯總總費用達到 $147.22 美元。
為什麼略過出貨?
最佳化工具會在 skippedShipments 陣列中列出未執行的任何運送作業。略過出貨的原因取決於你是否設定 penaltyCost:
- 強制運送 (無
penaltyCost):最佳化工具絕不會因為執行成本高昂而略過這些運送。只有在無法將貨件排入任何路線時 (例如時間範圍與其他貨件衝突),才會略過。 - 選用運送 (標有
penaltyCost):如果執行這些運送的成本高於罰款,最佳化工具也可以略過這些運送。您可以設定不同的罰款費用,優先處理某些運送作業。
在這個情境中,德國牧羊犬的接送時段與伯恩山犬的時段衝突。柯伊特塔和蘭茲角相距 25 分鐘,因此司機無法在 20 分鐘內完成兩次接送。最佳化工具必須略過其中一個。由於德國牧羊犬的罰款費用較低 (一般客戶為 $1,000 美元,德國牧羊犬為 $100 美元),最佳化工具會略過該客戶,並產生 $100 美元的罰款。
以下程式碼範例顯示回應中的 skippedShipments 物件:
{
...
"skippedShipments": [
{
"index": 2,
"label": "German shepherd",
"penaltyCost": 100
}
],
...
}
回應中的 skippedShipments 物件包含下列欄位:
index:要求中貨件的索引 (從零開始),2 代表第三個貨件。label:您在要求中指定的標籤 (「German shepherd」)。penaltyCost:您在要求中指定的罰款費用,API 會將這筆費用加到總費用中。
如要避免最佳化工具略過運送作業,請放寬導致衝突的限制。舉例來說,您可以要求德國牧羊犬的飼主提供更彈性的接送時間,然後在要求中更新該接送行程的 timeWindows。
範例中的回應欄位
下表說明範例情境中 OptimizeToursResponse 傳回的所有回應欄位。雖然您不需要使用每個欄位來瞭解路線規劃,但可以分析這些欄位,判斷如何調整 OptimizeToursRequest 以符合業務需求。詳情請參閱「路線規劃生命週期」。
您可以依父項或文字搜尋篩選內容。
| 父項 | 參數 | 資源類型 | 說明 |
|---|---|---|---|
OptimizeToursResponse |
routes |
物件陣列 (ShipmentRoute) |
其中包含為每輛車計算的路線清單 (每輛車一條)。在這個狗狗托育情境中,這包含單一廂型車的詳細路線規劃。 |
metrics |
物件 (Metrics) |
其中包含解決方案的整體指標,彙整了所有路徑的資料。以這個狗狗托育中心情境來說,這是當天的費用和營運時間摘要。 | |
skippedShipments |
物件陣列 (SkippedShipment) |
其中包含解決方案中略過的運送清單。 在這個情境中,系統會略過第三隻狗 (德國牧羊犬)。 | |
ShipmentRoute |
vehicleStartTime |
時間戳記 | 這是車輛開始行駛路線的時間。在這個狗狗托育情境中,司機在上午 7:55 開始駕駛廂型車。 |
vehicleEndTime |
時間戳記 | 這是車輛完成路線的時間。在這個狗狗托育情境中,司機在上午 9:40 結束駕駛廂型車。 | |
visits |
物件陣列 (Visit) |
這是路線上取貨和送貨的已排序的清單。在這個狗狗托育情境中,這是接送兩隻狗的順序。 | |
transitions |
物件陣列 (Transition) |
這是造訪之間的距離、行程和等待時間的排序清單。以這個狗狗托育情境為例,這份報表會詳細列出柯伊特塔、南日落遊樂場公園和托育中心之間的行車距離和時間。 | |
metrics |
物件 (AggregatedMetrics) |
這些指標僅適用於這條路線。以這個狗狗托育情境為例,以下是這輛貨車的統計資料。這些指標是根據您在要求中指定的費用計算。詳情請參閱成本模式重要概念文件。 | |
routeCosts |
物件 (地圖) | 這是這條路線的具體費用明細。在這個狗狗托育情境中,這項指標顯示根據司機時薪 $27 美元計算的費用。 | |
routeTotalCost |
數字 | 這是這條特定路線的總費用。在這個狗狗托育情境中,這輛廂型車路線的總費用為 47.22。 |
|
vehicleFullness |
物件 (VehicleFullness) |
這項指標會細分車輛與作業限制 (例如時間、距離和負載) 的接近程度。在這個狗狗托育情境中,只有班次開始和結束時間會限制司機,因此最佳化工具會將 vehicleFullness 計算為實際路線時間長度與司機班次可用時間上限的比例。 |
|
Visit |
shipmentIndex |
整數 | 這是原始要求中貨件的索引 (從零開始)。在這個狗狗托育中心情境中,0 代表伯恩山犬,1 代表吉娃娃。 |
isPickup |
布林值 | 如果這筆造訪是取貨,這個欄位會設為 True。在這個狗狗托育情境中,接走狗狗時為 true,將狗狗送到托育中心時為 false (或缺少)。 | |
startTime |
時間戳記 | 這是預估的造訪開始時間。以這個狗狗托育情境來說,就是司機敲門的時候。 | |
detour |
時間長度 | 這是最佳化工具為這項特定運送行程增加的額外時間。繞道是指實際路線規劃與理想直達行程之間的差異,前提是司機沒有其他運送或工作要完成。 在這個狗狗托育情境中,第一個行程是接送伯恩山犬,繞道距離為 0,因為司機直接從托育中心前往這個接送地點。載吉娃娃時,繞道時間為 43 分鐘,因為司機會先載伯恩山犬 (並花 5 分鐘上車)。 |
|
shipmentLabel |
字串 | 這是每筆運送要求的標籤。在這個狗狗托育情境中,標籤為「吉娃娃」或「伯恩山犬」。 | |
visitType |
字串 (列舉) | 這代表造訪類型,可以是 PICKUP_SHIPMENT (取貨) 或 DELIVER_SHIPMENT (送貨)。在這個情境中,值為 PICKUP_SHIPMENT 或 DELIVER_SHIPMENT。 |
|
Transition |
travelDuration |
時間長度 | 這是指在兩次造訪之間移動所花費的時間。舉例來說,在這個狗狗托育情境中,司機從托育中心開車到柯伊特塔接伯恩山犬,大約需要 25 分鐘。 |
travelDistanceMeters |
整數 | 這是這段轉換期間移動的距離 (以公尺為單位)。舉例來說,在這個狗狗托育情境中,司機從托育中心出發,行駛 7 公里到柯伊特塔接伯恩山犬。 | |
waitDuration |
時間長度 | 這是指在下次取貨或送達前等待的時間。以這個狗狗托育情境來說,第三次轉換的時間為 6 分鐘 (356 秒),因為司機在上午 9:30 送達時間範圍開始前就抵達托育中心。其他轉換的值則為 0。 | |
totalDuration |
時間長度 | 這是轉換的總時間長度,包括駕駛和等待時間。舉例來說,司機在第一次轉換時花了 25 分鐘 (25 分鐘行駛,0 分鐘等待),在第三次轉換返回托兒所時花了 27 分鐘 (21 分鐘行駛,6 分鐘等待)。 | |
startTime |
時間戳記 | 這是行程開始的時間。這項資訊會與前一次造訪的完成時間一致 (如果是第一次轉移,則與車輛的開始時間一致)。以狗狗日托中心情境為例,第一次轉換從上午 7:55 開始,也就是司機離開日托中心時,第二次轉換則從上午 8:25 開始,也就是司機離開柯伊特塔時。 | |
Metrics |
aggregatedRouteMetrics |
物件 (AggregatedMetrics) |
這是所有路徑的指標總和。以這個狗狗托育服務情境來說,這些是單一貨車的總指標。 |
usedVehicleCount |
整數 | 這是解決方案中使用的車輛數量。在這個狗狗托育情境中,您只需要使用一輛貨車。 | |
earliestVehicleStartTime |
時間戳記 | 這是所有車輛中最早的開始時間。在這個狗狗托育情境中,廂型車的路線從上午 7:55 開始。 | |
latestVehicleEndTime |
時間戳記 | 這是所有車輛中最晚的結束時間。在這個狗狗托育情境中,貨車的路線會在上午 9:40 結束。 | |
totalCost |
數字 | 這是解決方案的總費用。在這個狗狗托育情境中,整個路線規劃當天的費用為 147.22 (包括 47.22 司機薪資和 100 略過運送罰款)。 |
|
costs |
物件 (地圖) | 這是依類別劃分的總費用明細。在這個狗狗托育情境中,最佳化工具會根據每小時費用和略過德國牧羊犬的罰款費用,計算路線費用。 | |
AggregatedMetrics |
performedShipmentCount |
整數 | 這是成功轉送的運送數量。在這個狗狗托育情境中,司機要載送兩隻狗。 |
travelDuration |
時間長度 | 這是指總行程時間。在這個狗狗托育情境中,司機的行駛時間為 79 分鐘。 | |
waitDuration |
時間長度 | 這是等待時間總和。在這個狗狗托育情境中,司機在托育中心怠速 6 分鐘 (356 秒),等待托育中心開門。 | |
delayDuration |
時間長度 | 這是您使用轉場屬性定義的額外時間長度,例如預留的停車時間。在這個狗狗托育情境中,您並未在要求中定義任何轉換屬性,因此這個值為零。 | |
breakDuration |
時間長度 | 這是休息時間的總時長。在這個狗狗托育情境中,沒有任何休息時間。 | |
visitDuration |
時間長度 | 這是指在造訪期間提供服務的總時間。以這個狗狗托育情境為例,這個值為 20 分鐘 (每次造訪 5 分鐘,共 4 次)。 | |
totalDuration |
時間長度 | 這是所有時間長度元件的總和。以這個狗狗托育情境為例,總時間長度為 105 分鐘 (6296 秒)。 | |
travelDistanceMeters |
整數 | 這是總移動距離,以公尺為單位。在這個狗狗托育情境中,司機行駛的總距離為 31.5 公里。 | |
performedShipmentPenaltyCostSum |
雙人床 | 這是所有已執行運送作業的罰款費用總和。在這個情境中,司機載了伯恩山犬和吉娃娃 (每隻的罰款費用為 1000),因此罰款費用為 2000。 |
|
VehicleFullness |
maxFullness |
數字 | 這是所有 VehicleFullness 欄位中最高的利用率。在這個狗狗托育情境中,這個值為 0.35,因為司機在整個早班中只駕駛貨車 105 分鐘,而您在要求中定義的早班時間為 5 小時。 |
activeSpan |
數字 | 這是司機總班次長度與路線方案營運時間的比率。數字越低,表示駕駛人在工作天操作車輛的時間越短。以這個狗狗托育情境為例,司機在 5 小時的班次中駕駛貨車 105 分鐘,因此這個值為 0.35。 | |
SkippedShipment |
index |
整數 | 這是原始要求中以零為基準的運送索引。 在這個情境中,2 代表德國牧羊犬。 |
label |
字串 | 這是您在要求中為貨品指定的標籤。 | |
penaltyCost |
數字 | 最佳化工具略過這筆運送訂單時,您會產生這項罰款費用。這會與您在要求中指定的 penaltyCost 相符。 |