Route Optimization API 會傳回與 請求。我們會將物品指派給車輛,否則視實際情況而定 要求的屬性。
OptimizeToursResponse
訊息 (REST、gRPC) 有兩個主要頂層
資源:
routes[]
是每輛車的出貨資訊。每項Route
包含反映個別路線屬性的指標。metrics
是整個回應中整體回應的匯總指標 。頂層指標包含的屬性與 個別路徑的指標,包含跨所有路徑匯總的值。
視最佳化結果而定,系統不一定每次都會填入某些屬性:
skippedShipments[]
會列出並非由任何車輛製造的貨運項目, 如果無法在指定內執行,可以略過出貨 。 舉例來說,如果商品的取貨或送貨時間非常小timeWindow
車輛可能難以行駛,也不具成本效益 在指定時間範圍內執行造訪。validationErrors[]
會指定導致要求無效或 要求的solvingMode
設為VALIDATE_ONLY
。在一般的DEFAULT_SOLVE
模式下,驗證錯誤會 ,而非回應內文。請注意,VALIDATE_ONLY
解決模式可以一次回報多個錯誤,也就是 有助於快速對要求進行偵錯
路徑屬性
每個 routes[]
項目都是 ShipmentRoute
訊息 (REST、gRPC)。每項
ShipmentRoute
代表從此處為特定車輛指派的路線
要求。ShipmentRoute
的重要屬性與對應的相應項目
Vehicle
包括:
vehicleIndex
是在對應資源中,Vehicle
從零開始的索引 要求訊息。當值為零時,REST 回應會省略這個屬性。vehicleStartTime
是車輛必須開始其路線的時間。vehicleEndTime
是車輛預計到達時間 路徑。
在回應中,routes
看起來會像這樣:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
...
],
"transitions": [
...
],
"metrics": {
...
},
...
}
],
...
}
每個 ShipmentRoute
均包含已排序的 visits
清單,供車輛用於
完成。每個 Visit
(REST、gRPC) 都代表 VisitRequest
(REST、gRPC)。重要Visit
屬性包括:
shipmentIndex
是此次造訪所屬貨運的索引 (從零開始計算) 傳入要求中 的 Cookie。- 如果造訪為上車地點,則
isPickup
為 true,如果造訪為 false,則傳回 false 廣告放送。當值為 false 時,REST 回應會省略這個屬性。 visitRequestIndex
是從零開始計算的VisitRequest
索引值: 相應要求中的Shipment.pickups
或Shipment.deliveries
Visit
代表的元件REST 回應會省略這個屬性 值為零startTime
是造訪預計開始的時間。loadDemands
地圖載入類型,用來完成Visit
。外送造訪的負載量為負值,代表負載 就會被從車上脫下來
Visit
範例如下所示:
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
每個 ShipmentRoute
都含有一組 transitions
的已排序清單,這些清單代表
在特定車輛的 visits
之間移動。有關 Transition
的重要訊息
(REST、gRPC) 屬性包括:
startTime
是車輛開始執行 轉換。travelDuration
是車輛必須行駛的所需時間 才能完成轉換travelDistanceMeters
是車輛必須測量的距離 (以公尺為單位) 前往完成轉換程序trafficInfoUnavailable
會指出是否為 轉換。waitDuration
表示車輛在等候前等待的閒置時間 啟動下一個Visit
原因可能是start_time
正在追蹤Visit
。totalDuration
是轉場效果的總時間長度,包括移動、 等待、休息及誤點時間。vehicleLoads
對應載入類型與車輛於車輛行駛期間攜帶的負載量 這段轉換效果
Transition
範例如下所示:
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
以下列出 vists
和 transitions
之間的關係:
取貨和外送停止訂單最佳化,以及
ShipmentRoute
參考說明文件 (REST、gRPC)。
指標屬性
Metrics
訊息 (REST、gRPC) 會總結整個解決方案。
一些重要的 Metrics
屬性包括:
totalCost
是完成路徑所產生的總費用。閱讀完整內容 請參閱費用模式參數中的費用相關說明。usedVehicleCount
是解決方案中使用的車輛總數, 當最佳化工具判斷車輛可行駛時 不需要。skippedMandatoryShipmentCount
是略過的出貨數量 "必要。"強制出貨資訊並未指定penaltyCost
或折扣金額必要出貨資訊仍可 就會略過。 如要進一步瞭解費用,請參閱費用模式參數。
系統會將其他指標回報為 AggregatedMetrics
訊息 (REST、
gRPC)。AggregatedMetrics
訊息類型會用於
Metrics.aggregatedRouteMetrics
屬性和 ShipmentRoute.metrics
資源「Metrics.aggregatedRouteMetrics
」包含所有匯總指標
OptimizeToursResponse
中的 ShipmentRoute
。每ShipmentRoute.metrics
資源包含該特定 ShipmentRoute
的指標。
重要的 AggregatedMetrics
屬性包括:
performedShipmentCount
是車輛的運送量 和整個路線的資料travelDuration
是車輛在大眾運輸工具花費的總時間 繪製路線waitDuration
是車輛在完成時等待的總時間 並提供路徑delayDuration
是車輛的總誤點時間。這通常 除非要求使用TransitionAttributes
,否則一律為零。breakDuration
是車輛休息片刻的總時間 繪製路線visitDuration
是車輛在行駛期間花費的總時間 繪製路線這實際上是 對應Visit
的VisitRequest
的VisitRequest.duration
個值 。totalDuration
是完成車輛所需的總時間 路徑。travelDistanceMeters
是車輛行駛時所移動的總距離 繪製路線maxLoads
會將載入類型對應到 車輛上的任何時間點。
Metrics
訊息範例如下:
{
"routes": [
...
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}
完整範例
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:31Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1151s",
"travelDistanceMeters": 9599,
"waitDuration": "0s",
"totalDuration": "1151s",
"startTime": "2024-02-13T00:19:31Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 18.603
},
"routeTotalCost": 18.603
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}