OptimizeToursResponse

ルート最適化問題を解決した後のレスポンス。各車両が走行するルート、スキップされた配送、ソリューションの総費用が含まれます。

JSON 表現
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
フィールド
routes[]

object (ShipmentRoute)

各車両に対して計算されたルート。i 番目のルートは、モデル内の i 番目の車両に対応します。

requestLabel

string

OptimizeToursRequest.label のコピー(リクエストでラベルが指定されている場合)。

skippedShipments[]

object (SkippedShipment)

スキップされたすべての配送のリスト。

validationErrors[]

object (OptimizeToursValidationError)

独立して検出できたすべての検証エラーのリスト。OptimizeToursValidationError メッセージの「複数のエラー」の説明をご覧ください。solvingModeDEFAULT_SOLVE の場合、エラーではなく警告が含まれます。

metrics

object (Metrics)

このソリューションの所要時間、距離、使用状況の指標。

OptimizeToursValidationError

OptimizeToursRequest の検証中に発生したエラーまたは警告を説明します。

JSON 表現
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
フィールド
code

integer

検証エラーは、常に存在するペア(codedisplayName)で定義されます。

このセクションの後のフィールドには、エラーの詳細なコンテキストが表示されます。

複数のエラー: エラーが複数ある場合、検証プロセスは複数のエラーを出力しようとします。コンパイラと同様に、これは不完全なプロセスです。検証エラーの中には「致命的」なものがあり、検証プロセス全体が停止します。これは、displayName="UNSPECIFIED" エラーの場合に該当します。一部のエラーにより、検証プロセスで他のエラーがスキップされる場合があります。

安定性: codedisplayName は非常に安定している必要があります。ただし、新しいコードと表示名が時間の経過とともに追加されるため、新しいエラーによって古いエラーが隠され、特定の(無効な)リクエストで異なる(codedisplayName)ペアが返される可能性があります。たとえば、「複数のエラー」をご覧ください。

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 で対応しています(code が「UNSPECIFIED」以外の場合)。

安定性: 安定性なし: 特定の code に関連付けられたエラー メッセージは、時間の経過とともに変更される可能性があります(明確化される可能性があります)。代わりに displayNamecode を使用してください。

offendingValues

string

フィールドの値を含めることができます。これは常に利用できるとは限りません。絶対に頼らず、モデルの手動デバッグにのみ使用してください。

FieldReference

検証エラーのコンテキストを指定します。FieldReference は常にこのファイル内の特定のフィールドを参照し、同じ階層構造に従います。たとえば、車両 #5 の startTimeWindows の要素 #2 を次のように指定できます。

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 の最小値として計算されます。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

latestVehicleEndTime

string (Timestamp format)

中古車の最終終了時間。すべての中古車の ShipmentRoute.vehicle_end_time の最大値として計算されます。

RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

costs

map (key: string, value: number)

ソリューションの費用(費用関連のリクエスト フィールド別)。キーは、入力 OptimizeToursRequest を基準としたプロトパスです(例: model.shipments.pickups.cost)。値は、対応する費用フィールドによって生成された合計費用で、ソリューション全体で集計されます。つまり、costs["model.shipments.pickups.cost"] は、ソリューション全体の集荷費用の合計です。モデルで定義されているすべての費用が、ここで詳細にレポートされます。ただし、TransitionAttributes に関連する費用は、2022 年 1 月時点では集計された形でのみレポートされます。

totalCost

number

ソリューションの合計費用。費用マップ内のすべての値の合計。