Route Optimization API 的目標是為車隊規劃路線,造訪一組地點。OptimizeToursRequest 物件會描述這些車輛和位置的屬性,也是每個端點要求主體的主要結構。
OptimizeToursRequest 物件的基本結構如下:
model欄位包含ShipmentModel訊息,其中包含兩個重要欄位:
本文說明下列訊息類型:
ShipmentModel:保留運送清單、可用車輛,以及描述其關係的其他物件。Shipment:說明車輛要造訪的地點。這些工作可以代表實際要取貨和送貨的包裹,或是車輛司機提供服務的地點。Vehicle:說明運送地點之間的運輸方式。每輛車都對應到實際車輛或步行移動的人。
ShipmentModel
ShipmentModel 包含路線最佳化問題的元素。其中包含一組可能由一組車輛執行的運送作業,同時考量限制並盡可能降低整體成本。
下表說明 ShipmentModel 的部分相關屬性:
| 屬性 | 說明 |
|---|---|
shipments和vehicles |
必要物件,包含一或多個運送和車輛的詳細資料。 |
globalStartTime和globalEndTime |
指出所有車輛必須完成所有運送作業的時間範圍起訖時間。雖然這些屬性並非必要,但建議您加入,因為最佳化工具在遵守時間限制時效果最佳。 |
如需 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 訊息類型定義了可運送貨物或可在路線上執行的服務屬性結構。
如圖表所示:
Shipment 訊息必須包含至少一個 pickups 或 deliveries 物件。
這些物件的定義如下:
pickups定義貨件的取貨地點。deliveries定義貨件的送達地點。pickups和deliveries都包含VisitRequest訊息類型,用於定義位置和其他詳細資料。
下表根據 Shipment 訊息中 pickups 和 deliveries 的設定,說明不同的情境。
| 情境 | 說明 |
|---|---|
僅觀看pickups |
系統會假設您只收取運費。 |
僅觀看deliveries |
系統會假設您已預先載入運送作業或提供服務。 |
pickups 和 deliveries |
指派的車輛必須先完成取貨,再完成送貨。只有執行取件作業的車輛才能執行送件作業。 |
多個 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 訊息類型定義了車輛的屬性結構,該車輛可在路線中執行運送作業。
如圖表所示:
下表說明 Vehicle 的部分相關屬性。
| 屬性 | 說明 |
|---|---|
startLocation和endLocation |
車輛的起點和終點位置,這是最終最佳化路線的一部分。如未定義,則預設為第一個貨件取件地點和最後一個貨件送達地點。 |
costPerHour、costPerKilometer、costPerTraveledHour |
車輛專屬費用參數。建議您在要求中加入至少一個費用參數,讓 API 傳回最佳化路線。如要進一步瞭解費用,請參閱「成本模型」重要概念。 |
startTimeWindows和endTimeWindows |
定義車輛可在路線上營運的時間範圍。這些時間必須落在 ShipmentModel 中設定的 globalStartTime 和 globalEndTime 時間範圍內。雖然這項屬性並非必要,但建議您加入,因為最佳化工具在遵守時間限制時效果最佳。 |
Vehicle 範例
在這個範例中,您提供狗狗托育服務,並想定義車輛在一天開始和結束時的位置,以及耗油量。您不必指定車輛的工作時間,因為這與您在 ShipmentModel 物件的 globalStartTime 和 globalEndTime 屬性中定義的時間一致。
在本範例中,要求中的 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" } }