解讀回應

Route Optimization API 會傳回與 請求。我們會將物品指派給車輛,否則視實際情況而定 要求的屬性。

OptimizeToursResponse 訊息 (RESTgRPC) 有兩個主要頂層屬性:

  • routes[] 是每輛車輛的路線,以及指派給該車輛的貨件。每項 Route 包含反映個別路線屬性的指標。
  • metrics 是整個回應中整體回應的匯總指標 。頂層指標包含的屬性與 個別路徑的指標,包含跨所有路徑匯總的值。

視最佳化結果而定,系統不一定每次都會填入某些屬性:

  1. skippedShipments[] 會列出未由任何車輛執行的運送作業。如果無法在指定限制內執行,或是執行出貨作業的費用超過罰款費用,系統就會略過該出貨作業。舉例來說,如果商品的取貨或送貨時間非常小 timeWindow 車輛可能難以行駛,也不具成本效益 在指定時間範圍內執行造訪。
  2. validationErrors[] 會指定導致要求無效或 要求的 solvingMode 設為 VALIDATE_ONLY。在一般 DEFAULT_SOLVE 模式中,驗證錯誤會顯示在錯誤訊息中,而非回應主體。請注意, VALIDATE_ONLY 解決模式可以一次回報多個錯誤,也就是 有助於快速對要求進行偵錯
,瞭解如何調查及移除這項存取權。

路線屬性

每個 routes[] 項目都是 ShipmentRoute 訊息 (RESTgRPC)。每項 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 (RESTgRPC) 都代表 VisitRequest (RESTgRPC)。重要Visit 屬性包括:

  • shipmentIndex 是此次造訪所屬貨運的索引 (從零開始計算) 傳入要求中 的 Cookie。
  • 如果造訪為上車地點,則 isPickup 為 true,如果造訪為 false,則傳回 false 廣告放送。當值為 false 時,REST 回應會省略這個屬性。
  • visitRequestIndexVisit 所代表的對應要求中,Shipment.pickupsShipment.deliveriesVisitRequest 的零基索引。REST 回應會省略這個屬性 值為零
  • startTime 是造訪預計開始的時間。
  • loadDemands地圖載入類型,用來完成 Visit。外送造訪的負載量為負值,代表負載 就會被從車上脫下來

Visit 範例如下所示:

{
  "routes": [
    {
      ...
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        ...
      ],
    },
    ...
  ],
  ...
}

每個 ShipmentRoute 都含有一組 transitions 的已排序清單,這些清單代表 在特定車輛的 visits 之間移動。有關 Transition 的重要訊息 (RESTgRPC) 屬性包括:

  • 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"
        },
        ...
      ],
      ...
    }
  ],
  ...
}

以下列出 viststransitions 之間的關係: 取貨和外送停止訂單最佳化,以及 ShipmentRoute 參考說明文件 (RESTgRPC)。

指標屬性

Metrics 訊息 (RESTgRPC) 會總結整個解決方案。 一些重要的 Metrics 屬性包括:

  • totalCost 是完成路徑所產生的總費用。閱讀完整內容 請參閱費用模式參數中的費用相關說明。
  • usedVehicleCount 是解決方案中使用的車輛總數, 當最佳化工具判斷不需使用路線時,車輛可能會出現空白路線。
  • skippedMandatoryShipmentCount 是「強制」略過的出貨量數量。強制出貨資訊並未指定penaltyCost 或折扣金額必要出貨資訊仍可 就會略過。 如要進一步瞭解費用,請參閱「費用模型參數」。

系統會將其他指標回報為 AggregatedMetrics 訊息 (RESTgRPC)。AggregatedMetrics 訊息類型會用於 Metrics.aggregatedRouteMetrics 屬性和 ShipmentRoute.metrics 資源「Metrics.aggregatedRouteMetrics」包含所有匯總指標 OptimizeToursResponse 中的 ShipmentRoute。每個 ShipmentRoute.metrics 屬性都包含該特定 ShipmentRoute 的指標。

重要的 AggregatedMetrics 屬性包括:

  • performedShipmentCount 是車輛的運送量 和整個路線的資料
  • travelDuration 是車輛在大眾運輸工具花費的總時間 繪製路線
  • waitDuration 是車輛在完成時等待的總時間 並提供路徑
  • delayDuration 是車輛的總誤點時間。這通常 除非要求使用 TransitionAttributes,否則一律為零。
  • breakDuration 是車輛休息片刻的總時間 繪製路線
  • visitDuration 是車輛在行駛期間花費的總時間 繪製路線這實際上是 對應 VisitVisitRequestVisitRequest.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
    }
  }
}