レスポンスを解釈する

Route Optimization API は、対応するルートの車両のルートを返します。 リクエストできます。配送は車両に割り当てられるか、 渡します。

OptimizeToursResponse メッセージ(RESTgRPC)には、2 つの主要なトップレベルと プロパティ:

  • routes[] は、各車両に配送が割り当てられているルートです。各 Route には、個々のルートのプロパティを反映する指標が含まれます。
  • metrics は、すべてのレスポンス全体の集計指標です。 ルート計画を作成できますトップレベル指標には、 すべてのルートにわたって集計された値を含む、ルートごとの指標。

最適化の結果によっては、一部のプロパティに値が入力されない場合があります。

  1. skippedShipments[] は、どの車両でも実施されていない配送を一覧表示します。 指定の期間内に実施できない場合、配送はスキップできます ペナルティ コストを上回った場合などです。 たとえば、配送の引き取りまたは配達の範囲が非常に狭い timeWindow 車両では、不可能な、または費用対効果に優れた方法ではない可能性があります。 必要な時間枠内に訪問を実施する。
  2. validationErrors[] は、リクエストを無効にするエラーを指定します。 リクエストの solvingModeVALIDATE_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 の順序付きリストが含まれます。 できます。各 VisitRESTgRPC)は VisitRequest を表します。 (RESTgRPC)を返す。重要なVisit プロパティには次が含まれます。

  • shipmentIndex は、この訪問が属する配送のゼロベースのインデックスです。 対応するリクエストにすることができます。
  • isPickup は、訪問が受け取りの場合は true、訪問が 提供します。値が 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 に関する重要なメッセージ (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 は、スキップされた配送の数です。 "mandatory"です。必須の配送で、penaltyCost が 配送がスキップされた場合に 発生します必須の配送は 指定された制約の下でパフォーマンスを実現できない場合はスキップされます。 費用の詳細については、費用モデル パラメータをご覧ください。

追加の指標は AggregatedMetrics メッセージ(RESTgRPC)。AggregatedMetrics メッセージ タイプは、次の内容に使用されます。 Metrics.aggregatedRouteMetrics プロパティと ShipmentRoute.metrics プロパティ Metrics.aggregatedRouteMetrics には、すべての期間にわたって集計された指標が含まれています。 OptimizeToursResponseShipmentRoute。各ShipmentRoute.metrics プロパティには、その特定の ShipmentRoute の指標が含まれます。

重要な AggregatedMetrics プロパティは次のとおりです。

  • performedShipmentCount は車両による出荷の数です。 自動的に可視化されます。
  • travelDuration は、その間の車両の移動の合計時間です 追跡したりできるようになります
  • waitDuration は、完了までの車両の待機時間の合計です 制御します。
  • delayDuration は車両の合計遅延時間です。これは通常 0 になります。TransitionAttributes
  • breakDuration は、休憩中に車両が費やした合計時間です。 追跡したりできるようになります
  • visitDuration は、車両が訪問中に費やした合計時間です。 追跡したりできるようになりますこれは実質的に、すべての Visit に対応する VisitRequestVisitRequest.duration 値 割り当てられていることを確認します。
  • totalDuration は、車両が完了するまでに要する合計時間です。 routes:
  • travelDistanceMeters は車両の総走行距離です。 追跡したりできるようになります
  • maxLoads は、読み込みタイプを Pod で実行される最大読み込み量にマッピングします。 ルート上のあらゆる地点で 走行できるようになりました

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
    }
  }
}