OptimizeToursResponse

解決導覽最佳化問題後的回應,其中包含每輛車輛行駛的路徑、已略過的貨物,以及解決方案的整體成本。

JSON 表示法
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "processedRequest": {
    object (OptimizeToursRequest)
  },
  "metrics": {
    object (Metrics)
  }
}
欄位
routes[]

object (ShipmentRoute)

為每部車輛計算的路線;第 i 條路線對應模型中的第 i 部車輛。

requestLabel

string

如果要求中指定標籤,則為 OptimizeToursRequest.label 的副本。

skippedShipments[]

object (SkippedShipment)

所有已略過的出貨清單。

validationErrors[]

object (OptimizeToursValidationError)

我們獨立偵測到的所有驗證錯誤清單。請參閱「MULTIPLE ERRORS」說明,瞭解 OptimizeToursValidationError 訊息。如果 solvingModeDEFAULT_SOLVE,則會包含警告,而非錯誤。

processedRequest

object (OptimizeToursRequest)

在某些情況下,我們會先修改傳入的要求 (例如新增費用),再解決問題。如果 solvingMode == TRANSFORM_AND_RETURN_REQUEST,則會在此傳回修改過的要求。

實驗功能:詳情請參閱 https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request

metrics

object (Metrics)

這項解決方案的時長、距離和用量指標。

OptimizeToursValidationError

說明驗證 OptimizeToursRequest 時發生的錯誤或警告。

JSON 表示法
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
欄位
code

integer

驗證錯誤是由一對 (code, displayName) 定義,且一律存在。

這個部分後方的欄位會提供更多錯誤相關背景資訊。

多項錯誤:如果有多項錯誤,驗證程序會嘗試輸出多項錯誤。與編譯器類似,這項程序並不完美。部分驗證錯誤屬於「嚴重」錯誤,會導致整個驗證程序停止。displayName="UNSPECIFIED" 錯誤就屬於這種情況。部分錯誤可能會導致驗證程序略過其他錯誤。

穩定性codedisplayName 應非常穩定。但隨著時間推移,可能會出現新的代碼和顯示名稱,導致特定 (無效) 要求產生不同的 (codedisplayName) 配對,因為新錯誤隱藏了舊錯誤。例如「MULTIPLE ERRORS」。

displayName

string

錯誤顯示名稱。

fields[]

object (FieldReference)

錯誤情境可能涉及 0 個、1 個 (大部分時間) 或多個欄位。舉例來說,如要參照車輛 #4 和貨運 #2 的首次取貨,可以按照下列方式操作:

fields { name: "vehicles" index: 4}
fields { name: "shipments" index: 2 subField {name: "pickups" index: 0} }

但請注意,特定錯誤碼的基數不應變更。fields

errorMessage

string

使用者容易理解的錯誤說明字串。codeerrorMessage 之間存在 1:1 的對應關係 (當程式碼 !=「UNSPECIFIED」時)。

穩定性:不穩定:與特定 code 相關聯的錯誤訊息可能會隨時間變更 (希望是為了釐清問題)。請改用 displayNamecode

offendingValues

string

可能包含欄位的值。這項功能不一定適用於所有裝置。您絕對不應依賴這項功能,只能用於手動偵錯模型。

FieldReference

指定驗證錯誤的環境。FieldReference 一律是指這個檔案中的特定欄位,並遵循相同的階層結構。舉例來說,我們可以使用以下程式碼,指定車輛 #5 的元素 #2:startTimeWindows

name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }

不過,我們會省略 OptimizeToursRequestShipmentModel 等頂層實體,避免訊息過於擁擠。

JSON 表示法
{
  "name": string,
  "subField": {
    object (FieldReference)
  },

  // Union field index_or_key can be only one of the following:
  "index": integer,
  "key": string
  // End of list of possible types for union field index_or_key.
}
欄位
name

string

欄位名稱,例如「vehicles」。

subField

object (FieldReference)

視需要遞迴巢狀子欄位。

聯集欄位 index_or_key

index_or_key 只能是下列其中一項:

index

integer

如果是重複欄位,則為欄位的索引。

key

string

如果欄位是對應項,則為鍵。

指標

所有路線的匯總整體指標。

JSON 表示法
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
欄位
aggregatedRouteMetrics

object (AggregatedMetrics)

匯總所有路線的資料。每個指標都是所有同名 ShipmentRoute.metrics 欄位的總和 (或載入次數上限)。

skippedMandatoryShipmentCount

integer

略過的強制出貨次數。

usedVehicleCount

integer

使用的車輛數量。注意:如果車輛路線為空白且 Vehicle.used_if_route_is_empty 為 true,則車輛視為已使用。

earliestVehicleStartTime

string (Timestamp format)

二手車的最早開始時間,計算方式為所有二手車的 ShipmentRoute.vehicle_start_time 最小值。

使用 RFC 3339,產生的輸出內容一律會經過 Z 標準化,並使用 0、3、6 或 9 個小數點後位數。系統也接受「Z」以外的偏移量。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

latestVehicleEndTime

string (Timestamp format)

二手車的最新結束時間,計算方式為所有二手車的 ShipmentRoute.vehicle_end_time 最大值。

使用 RFC 3339,產生的輸出內容一律會經過 Z 標準化,並使用 0、3、6 或 9 個小數點後位數。系統也接受「Z」以外的偏移量。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

costs

map (key: string, value: number)

解決方案的費用,依費用相關要求欄位細分。鍵是相對於輸入 OptimizeToursRequest 的原型路徑,例如「model.shipments.pickups.cost」,值則是對應費用欄位產生的總費用,並彙整整個解決方案。換句話說,costs["model.shipments.pickups.cost"] 是解決方案中所有取貨費用的總和。模型中定義的所有費用都會在此詳細列出,但與 TransitionAttributes 相關的費用除外,這類費用自 2022 年 1 月起只會以匯總方式列出。

totalCost

number

解決方案的總費用。費用對應中的所有值總和。