本番環境に関する注意事項
このガイドでは、わかりやすくするために REST と JSON を使用します。ただし、本番環境では、パフォーマンスを向上させるために、gRPC とクライアント ライブラリを使用することをおすすめします。詳細については、Route Optimization API クライアント ライブラリをご覧ください。
最初のリクエストを行うでリクエストを送信すると、オプティマイザーは OptimizeToursResponse を返します。このレスポンスは、ドライバーが従うルートプランです。このガイドでは、その読み方について説明します。
ルートプランの概要
犬のデイケアのシナリオでは、オプティマイザーはバーニーズ マウンテン ドッグとチワワをバンに割り当て、ジャーマン シェパードをスキップします。ドライバーのルートプランは次のとおりです。
- 午前 7 時 55 分に保育園でシフトを開始します。
- 午前 8 時 20 分にコイトタワーの近くでバーニーズ マウンテン ドッグをピックアップします。
- 午前 8 時 58 分にサウス サンセット プレイグラウンド パークでチワワをピックアップします。
- 午前 9 時 24 分に保育園に戻り、午前 9 時 30 分に降車可能時間になるまで待ちます。
- バーニーズ マウンテン ドッグを午前 9 時 30 分に預ける。
- 午前 9 時 35 分にチワワを降ろします。
- 午前 9 時 40 分にシフトを終了します。
ルートプランの費用は $147.22 です。これには、ジャーマン シェパードをスキップしたことによる $100 のペナルティが含まれます。
結果を確認するには、レスポンスを完全なレスポンス例と比較します。移動時間と距離は現在の道路データに依存するため、結果が若干異なる場合があります。
レスポンスの例
{ "routes": [ { "vehicleStartTime": "2024-02-13T15:55:04Z", "vehicleEndTime": "2024-02-13T17:40:00Z", "visits": [ { "isPickup": true, "startTime": "2024-02-13T16:20:00Z", "detour": "0s", "shipmentLabel": "Bernese mountain dog", "visitType": "PICKUP_SHIPMENT" }, { "shipmentIndex": 1, "isPickup": true, "startTime": "2024-02-13T16:58:12Z", "detour": "2600s", "shipmentLabel": "Chihuahua", "visitType": "PICKUP_SHIPMENT" }, { "startTime": "2024-02-13T17:30:00Z", "detour": "2297s", "shipmentLabel": "Bernese mountain dog", "visitType": "DELIVER_SHIPMENT" }, { "shipmentIndex": 1, "startTime": "2024-02-13T17:35:00Z", "detour": "656s", "shipmentLabel": "Chihuahua", "visitType": "DELIVER_SHIPMENT" } ], "transitions": [ { "travelDuration": "1496s", "travelDistanceMeters": 7082, "waitDuration": "0s", "totalDuration": "1496s", "startTime": "2024-02-13T15:55:04Z" }, { "travelDuration": "1992s", "travelDistanceMeters": 16589, "waitDuration": "0s", "totalDuration": "1992s", "startTime": "2024-02-13T16:25:00Z" }, { "travelDuration": "1252s", "travelDistanceMeters": 7860, "waitDuration": "356s", "totalDuration": "1608s", "startTime": "2024-02-13T17:03:12Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:35:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:40:00Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "routeCosts": { "model.vehicles.cost_per_hour": 47.22 }, "routeTotalCost": 47.22, "vehicleFullness": { "maxFullness": 0.3497777777777778, "activeSpan": 0.3497777777777778 } } ], "skippedShipments": [ { "index": 2, "label": "German shepherd", "penaltyCost": 100 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2024-02-13T15:55:04Z", "latestVehicleEndTime": "2024-02-13T17:40:00Z", "totalCost": 147.22, "costs": { "model.vehicles.cost_per_hour": 47.22, "model.shipments.penalty_cost": 100 } } }
レスポンスの構造
OptimizeToursResponse には、次の 2 つの主要コンポーネントが含まれています。
routes: フリート内の各車両のルートプラン。各集荷と配達の順序と時間が含まれます。バンが 1 台あるため、ルートプランは 1 つです。metrics: ルートプラン全体の概要(合計費用、所要時間、距離など)。
オプティマイザーがジャーマン シェパードをスキップするため、レスポンスには skippedShipments も含まれます。
以降のセクションでは、レスポンスでルートプランの概要の各詳細を確認する方法について説明します。
どの車両がどのルートを走行するか
オプティマイザーは、リクエスト内の vehicles の順序に対応するルートプラン(routes 配列)を生成します。
vehicleIndex フィールドは、0 から始まる位置に基づいて各車両を識別します。このバンの場合は 0 です。vehicleStartTime フィールドと vehicleEndTime フィールドは、シフトの開始と終了のタイミングをドライバーに指示します。
Route Optimization API は、リクエストのオフセットに関係なく、Z 接尾辞が付いた UTC のタイムスタンプを返します。サンフランシスコの時刻を取得するには、8 時間を引きます。次のコードサンプルに示すように、バンのシフトは午前 7 時 55 分から午前 9 時 40 分までです。
{
"routes": [
{
// "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
}
]
...
}
集荷と配送の順序はどうなっていますか?
各ルート内で、visits 配列には、割り当てられた車両のすべての集荷と配達が時系列で含まれます。
各訪問の shipmentIndex は、リクエスト内の配送のゼロベースの位置です。0 はバーニーズ マウンテン ドッグ、1 はチワワです。shipmentLabel フィールドには、各配送に設定したラベルが表示されます。
集荷と配達を区別するには、visitType フィールドまたは isPickup フィールドを確認します。
visitType: 訪問アクションを明示的に定義します。- 受け取り:
visitType="PICKUP_SHIPMENT" - 配達:
visitType="DELIVER_SHIPMENT"
- 受け取り:
isPickup: ブール値のヘルパー フィールド。- 受け取り:
isPickup=true - Delivery:
isPickup=false(JSON では省略)
- 受け取り:
イベントの正確な順序と各場所への到着予定時刻を特定するには、visits 配列を順番に読み取ります。次の表に、shipmentIndex、isPickup または visitType、startTime フィールドの順序と値に基づくルートプラン アクションを示します。
| シーケンス | shipmentIndex 値 |
isPickup または visitType の値 |
startTime 値(UTC) |
アクション |
|---|---|---|---|---|
| 最初の訪問 | 0(JSON では省略) | True または PICKUP_SHIPMENT |
2024-02-13T16:20:00Z | 午前 8 時 20 分にバーニーズ マウンテン ドッグを迎えに行く。 |
| 2 回目の訪問 | 1 | True または PICKUP_SHIPMENT |
2024-02-13T16:58:12Z | 午前 8 時 58 分にチワワをピックアップします。 |
| 3 回目の訪問 | 0(JSON では省略) | False(省略)または DELIVER_SHIPMENT |
2024-02-13T17:30:00Z | 午前 9 時 30 分にバーニーズ マウンテン ドッグを犬のデイケア センターに預ける。 |
| 4 回目の訪問 | 1 | False(省略)または DELIVER_SHIPMENT |
2024-02-13T17:35:00Z | 午前 9 時 35 分にチワワを犬のデイケア センターに預ける。 |
次のコードサンプルは、レスポンスがこのシーケンスをどのように提供するかを示しています。
{
"routes": [
{
"visits": [
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
"isPickup": true,
"startTime": "2024-02-13T16:20:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "PICKUP_SHIPMENT"
},
{
"shipmentIndex": 1,
"isPickup": true,
"startTime": "2024-02-13T16:58:12Z",
"shipmentLabel": "Chihuahua",
"visitType": "PICKUP_SHIPMENT"
},
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:30:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "DELIVER_SHIPMENT"
},
{
"shipmentIndex": 1,
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:35:00Z",
"shipmentLabel": "Chihuahua",
"visitType": "DELIVER_SHIPMENT"
}
]
}
]
}
各訪問には visitRequestIndex もあります。これは、オプティマイザーが配送に選択した集荷または配達オプションのゼロベースの位置です。このシナリオでは、各犬に集荷オプションと配達オプションが 1 つずつしかないため、visitRequestIndex は常に 0 になり、レスポンスでは省略されます。
訪問と訪問の間に何が起こるか
各ルート内で、transitions 配列には訪問間の移動の詳細が一覧表示されます。visits と transitions は別々のリストですが、次のように時間的にインターリーブされます。
transitions[0](開始から最初の訪問までの運転)visits[0](初回訪問)transitions[1](初回訪問から 2 回目の訪問を促進)visits[1](2 回目の訪問)...visits[N-1](最後の訪問。N は合計訪問数)transitions[N](最後の訪問先から終了地点までの運転)
両方の配列の startTime フィールドを確認することで、ルートのタイムラインを追跡できます。移行の startTime は、ドライバーが移動を開始したときです。訪問の startTime は、ドライバーが集荷または配達を開始したときです。
各遷移には、ロケーション間の予想運転時間と距離が表示されます。次の表に、transitions フィールドと visits フィールドの両方を、犬のデイケア シナリオの時系列ルート アクションにマッピングします。
| シーケンス | フィールド名 | startTime 値(UTC) |
詳細 | アクション |
|---|---|---|---|---|
| 最初の移行 | transitions[0] |
2024-02-13T15:55:04Z |
travelDuration: 1496stravelDistanceMeters: 7082 |
デイケア センターから 7 km、25 分運転して、バーニーズ マウンテン ドッグを迎えに行きます。シフトは午前 7 時 55 分に開始します。 |
| 初回訪問 | visits[0] |
2024-02-13T16:20:00Z |
shipmentIndex: 0(JSON では省略)isPickup: True |
午前 8 時 20 分からバーニーズ マウンテン ドッグを迎えに行きます。訪問時間は 5 分です。 |
| 2 回目の移行 | transitions[1] |
2024-02-13T16:25:00Z |
travelDuration: 1992stravelDistanceMeters: 16589 |
コイトタワーから 17 km、33 分運転して、午前 8 時 25 分からチワワをピックアップします。 |
| 2 回目の訪問 | visits[1] |
2024-02-13T16:58:12Z |
shipmentIndex: 1isPickup: True |
午前 8 時 58 分からチワワを迎えに行きます。所要時間は 5 分です。 |
| 3 つ目の移行 | transitions[2] |
2024-02-13T17:03:12Z |
travelDuration: 1252 秒travelDistanceMeters: 7860waitDuration: 356 秒 |
午前 9 時 3 分にサウス サンセット プレイグラウンドを出発し、8 km を 21 分間走行して保育園に戻ります。午前 9 時 24 分に到着し、降車可能時間になるまで 6 分間待機します。 |
| 3 回目の訪問 | visits[2] |
2024-02-13T17:30:00Z |
shipmentIndex: 0(JSON では省略)isPickup: False(JSON では省略) |
午前 9 時 30 分から、バーニーズ マウンテン ドッグを犬のデイケア センターに預けます。所要時間は 5 分です。 |
| 4 回目の移行 | transitions[3] |
2024-02-13T17:35:00Z |
travelDuration: 0stravelDistanceMeters: 0(JSON では省略) |
運転は不要です。午前 9 時 35 分にチワワをデイケア センターに預ける準備ができました。 |
| 4 回目の訪問 | visits[3] |
2024-02-13T17:35:00Z |
shipmentIndex: 1isPickup: False(JSON では省略) |
午前 9 時 35 分からチワワを犬のデイケア センターに預けます。所要時間は 5 分です。 |
| 5 回目の移行 | transitions[4] |
2024-02-13T17:40:00Z |
travelDuration: 0stravelDistanceMeters: 0(JSON では省略) |
運転は不要です。ドライバーは午前 9 時 40 分にシフトを終了します。 |
次のコードサンプルは、レスポンスで transitions[0] と transitions[1] のシーケンスがどのように提供されるかを示しています。
{
"routes": [
{
"transitions": [
{
"travelDuration": "1496s",
"travelDistanceMeters": 7082,
"waitDuration": "0s",
"totalDuration": "1496s",
"startTime": "2024-02-13T15:55:04Z"
},
{
"travelDuration": "1992s",
"travelDistanceMeters": 16589,
"waitDuration": "0s",
"totalDuration": "1992s",
"startTime": "2024-02-13T16:25:00Z"
},
...
]
}
]
}
ルートの料金はいくらですか?
特定の車両の費用が必要か、フリート全体の合計費用が必要かに応じて、レスポンスのいくつかのフィールドを確認できます。
次の表に、レスポンスで費用情報を確認するすべての方法を示します。
| 親 | パラメータ | スコープ | 説明 |
|---|---|---|---|
ShipmentRoute |
routeCosts |
ルートごと | その特定のルートの特定の費用コンポーネント(1 時間あたりの費用など)の内訳。 |
routeTotalCost |
ルートごと | 特定のルートに対して計算された合計費用。 | |
Metrics |
totalCost |
合計(すべてのルート) | ソリューション内のすべてのルートの合計費用。 |
costs |
合計(すべてのルート) | ソリューション内のすべてのルートにわたる集計された費用コンポーネントの内訳。 |
routeCosts と costs で指定された費用は、リクエストで指定した費用制約を反映しています。詳細については、コストモデルの重要なコンセプトのドキュメントをご覧ください。
この犬のデイケアのシナリオでは、スキップされた配送があるため、ルートあたりの費用と集計された合計費用は異なります。ルート費用には、その特定のルートに関連する費用(ドライバーの賃金)のみが含まれます。一方、集計された合計費用には、スキップされた配送のペナルティも含まれます。次のコードサンプルは、レスポンスでこれらの値を確認する場所を示しています。
{
"routes": [
{
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
"routeCosts": {
"model.vehicles.cost_per_hour": 47.22
},
"routeTotalCost": 47.22
}
],
"metrics": {
"totalCost": 147.22,
"costs": {
"model.shipments.penalty_cost": 100,
"model.vehicles.cost_per_hour": 47.22
},
...
}
}
ルートプランによると、ドライバーは午前 7 時 55 分から午前 9 時 40 分までバンを運転します。これは約 1 時間 45 分(6,296 秒)です。定義した 1 時間あたり $27 のレートに基づくと、ルートの費用は $47.22 になります。オプティマイザーはジャーマン シェパードの配送をスキップしたため、ペナルティ費用として $100 が追加され、合計費用は $147.22 になります。
配送がスキップされた理由
オプティマイザーは、実行しない配送を skippedShipments 配列にリストします。配送がスキップされる理由は、penaltyCost を設定しているかどうかによって異なります。
- 必須の配送(
penaltyCostなし): オプティマイザーは、実行に費用がかかるという理由だけで、これらの配送をスキップすることはありません。スキップされるのは、時間枠が他の配送と競合しているなどの理由で、配送をどのルートにも適合できない場合のみです。 - オプションの配送(
penaltyCostを含む): オプティマイザーは、配送の実施費用がペナルティを上回る場合、配送をスキップすることもできます。ペナルティ費用を異なる値に設定して、一部の配送を他の配送よりも優先できます。
このシナリオでは、ジャーマン シェパードの集荷時間枠がバーニーズ マウンテン ドッグの時間枠と競合しています。コイトタワーとランズエンドは 25 分離れているため、ドライバーは 20 分以内に両方の乗車場所に行くことはできません。オプティマイザーは、そのうちの 1 つをスキップする必要があります。ジャーマン シェパードのペナルティ費用($100)は、通常のクライアントのペナルティ費用($1,000)よりも低いため、オプティマイザーはジャーマン シェパードをスキップし、$100 のペナルティが発生します。
次のコードサンプルは、レスポンスの skippedShipments オブジェクトを示しています。
{
...
"skippedShipments": [
{
"index": 2,
"label": "German shepherd",
"penaltyCost": 100
}
],
...
}
レスポンスの skippedShipments オブジェクトには、次のフィールドが含まれています。
index: リクエスト内の配送のゼロベースのインデックス(3 番目の配送の場合は 2)。label: リクエストで指定したラベル(「ジャーマン シェパード」)。penaltyCost: リクエストで指定したペナルティ費用。API によって合計費用に追加されます。
オプティマイザーが配送をスキップしないようにするには、競合の原因となっている制約を緩和します。たとえば、ジャーマン シェパードの飼い主に、より柔軟な集荷時間を依頼し、リクエスト内のその集荷の timeWindows を更新します。
例のレスポンス フィールド
次の表に、サンプル シナリオの OptimizeToursResponse で返されるすべてのレスポンス フィールドを示します。ルートプランを理解するためにすべてのフィールドを使用する必要はありませんが、これらのフィールドを分析して、ビジネスニーズに合わせて OptimizeToursRequest を調整する方法を決定できます。詳細については、ルートプランのライフサイクルをご覧ください。
親またはテキスト検索でコンテンツをフィルタできます。
| 親 | パラメータ | プロパティ タイプ | 説明 |
|---|---|---|---|
OptimizeToursResponse |
routes |
オブジェクトの配列(ShipmentRoute) |
これには、各車両に対して計算されたルートのリストが含まれます(車両ごとに 1 つ)。この犬のデイケアのシナリオでは、1 台のバンの詳細なルートプランが含まれています。 |
metrics |
オブジェクト(Metrics) |
これには、すべてのルートで集計されたソリューションの全体的な指標が含まれます。この犬のデイケアのシナリオでは、これが 1 日の費用と運用期間の概要です。 | |
skippedShipments |
オブジェクトの配列(SkippedShipment) |
これには、ソリューションでスキップされた配送のリストが含まれます。このシナリオでは、3 番目の犬(ジャーマン シェパード)はスキップされます。 | |
ShipmentRoute |
vehicleStartTime |
タイムスタンプ | これは、車両がルートを開始する時刻です。この犬のデイケアのシナリオでは、ドライバーは午前 7 時 55 分にバンの運転を開始します。 |
vehicleEndTime |
タイムスタンプ | これは、車両がルートを完了する時刻です。この犬のデイケアのシナリオでは、ドライバーは午前 9 時 40 分にバンの運転を終了します。 | |
visits |
オブジェクトの配列(Visit) |
これは、ルート上の集荷と配達の順序付きリストです。この犬のデイケアのシナリオでは、2 匹の犬をピックアップしてドロップオフするシーケンスです。 | |
transitions |
オブジェクトの配列(Transition) |
これは、訪問間の距離、移動時間、待機時間の順序付きリストです。この犬のデイケアのシナリオでは、コイトタワー、サウス サンセット プレイグラウンド パーク、デイケア間の運転距離と時間が詳しく表示されます。 | |
metrics |
オブジェクト(AggregatedMetrics) |
これらは、この単一のルートに固有の指標です。この犬のデイケアのシナリオでは、これらはこの特定のバンの統計情報です。これらの指標は、リクエストで指定した費用に基づいています。詳細については、コストモデルの重要なコンセプトのドキュメントをご覧ください。 | |
routeCosts |
オブジェクト(マップ) | このルートの具体的な費用の内訳です。この犬のデイケアのシナリオでは、ドライバーの賃金(1 時間あたり $27)から計算された費用が表示されます。 | |
routeTotalCost |
数値 | これは、この特定のルートの合計費用です。この犬のデイケアのシナリオでは、このバンのルートの合計費用は 47.22 です。 |
|
vehicleFullness |
オブジェクト(VehicleFullness) |
これは、車両が運用限界(時間、距離、負荷など)にどの程度近づいているかを示す内訳です。この犬のデイケアのシナリオでは、シフトの開始時間と終了時間のみがドライバーを制約するため、オプティマイザーは、実際のルートの所要時間とドライバーのシフトで使用可能な最大時間の割合として vehicleFullness を計算します。 |
|
Visit |
shipmentIndex |
整数 | これは、元のリクエストのゼロから始まる配送のインデックスです。この犬のデイケアのシナリオでは、0 はバーニーズ マウンテン ドッグ、1 はチワワを表します。 |
isPickup |
ブール値 | この訪問が集荷の場合は、このフィールドは true になります。この犬のデイケアのシナリオでは、犬を迎えに来た場合は true、犬をデイケアに預けた場合は false(または欠落)になります。 | |
startTime |
タイムスタンプ | これは、訪問の推定開始時間です。この犬のデイケアのシナリオでは、ドライバーがドアをノックしたときです。 | |
detour |
期間 | これは、オプティマイザーがこの特定の配送の移動に追加する追加時間です。迂回とは、実際のルートプランと、ドライバーが他に完了すべき配送やタスクがない場合の理想的な直接ルートとの差です。 この犬のデイケアのシナリオでは、バーニーズ マウンテン ドッグをピックアップする最初の訪問は、ドライバーがデイケア センターからこのピックアップに直接移動するため、迂回は 0 です。チワワの集荷の場合、ドライバーが最初にバーニーズ マウンテン ドッグを集荷し(積み込みに 5 分かかる)、迂回時間は 43 分になります。 |
|
shipmentLabel |
文字列 | これは、各配送のリクエストのラベルです。この犬の保育園のシナリオでは、ラベルは「チワワ」または「バーニーズ マウンテン ドッグ」です。 | |
visitType |
文字列(列挙型) | これは、訪問の種類を示します。集荷の場合は PICKUP_SHIPMENT、配達の場合は DELIVER_SHIPMENT になります。このシナリオでは、PICKUP_SHIPMENT または DELIVER_SHIPMENT のいずれかです。 |
|
Transition |
travelDuration |
期間 | これは、訪問間の移動に費やした時間です。たとえば、この犬のデイケアのシナリオでは、ドライバーはデイケアからコイトタワーまで約 25 分かけてバーニーズ マウンテン ドッグを迎えに行きます。 |
travelDistanceMeters |
整数 | この遷移中に移動した距離(メートル単位)です。たとえば、この犬のデイケアのシナリオでは、ドライバーはデイケアからコイトタワーまで 7 km 移動して、バーニーズ マウンテン ドッグをピックアップします。 | |
waitDuration |
期間 | これは、次の集荷または配達までの待機時間です。この犬のデイケアのシナリオでは、3 番目の移行は 6 分(356 秒)です。これは、ドライバーが午前 9 時 30 分にドロップオフ ウィンドウが開く前にデイケア センターに到着するためです。他の移行では、この値は 0 です。 | |
totalDuration |
期間 | これは、運転と待機を含む移行の合計時間です。たとえば、ドライバーは最初の移動に 25 分(運転 25 分、待機 0 分)を費やし、3 回目の移動で保育園に戻るのに 27 分(運転 21 分、待機 6 分)を費やします。 | |
startTime |
タイムスタンプ | これは移動が開始される時刻です。前の訪問の完了時間(最初の移行の場合は車両の開始時間)と一致します。犬のデイケアのシナリオでは、最初の移動はドライバーがデイケアを出発する午前 7 時 55 分に開始され、2 番目の移動はドライバーがコイトタワーを出発する午前 8 時 25 分に開始されます。 | |
Metrics |
aggregatedRouteMetrics |
オブジェクト(AggregatedMetrics) |
これは、すべてのルートの指標の合計です。この犬のデイケアのシナリオでは、これらは 1 台のバンの合計指標です。 |
usedVehicleCount |
整数 | これは、ソリューションで使用される車両の数です。この犬のデイケアのシナリオでは、1 台のバンのみを使用します。 | |
earliestVehicleStartTime |
タイムスタンプ | これは、すべての車両の中で最も早い開始時間です。この犬のデイケアのシナリオでは、バンのルートは午前 7 時 55 分に始まります。 | |
latestVehicleEndTime |
タイムスタンプ | これは、すべての車両の中で最も遅い終了時刻です。この犬のデイケアのシナリオでは、バンのルートは午前 9 時 40 分に終了します。 | |
totalCost |
数値 | これはソリューションの合計費用です。この犬のデイケアのシナリオでは、ルートプラン全体の費用は 1 日あたり 147.22 です(47.22 のドライバーの賃金と 100 のスキップされた配送ペナルティを含む)。 |
|
costs |
オブジェクト(マップ) | これは、カテゴリ別の合計費用の内訳です。この犬のデイケアのシナリオでは、オプティマイザーは、1 時間あたりの費用と、スキップされたジャーマン シェパードのペナルティ費用に基づいてルートの費用を計算しました。 | |
AggregatedMetrics |
performedShipmentCount |
整数 | これは、正常にルート設定された配送の数です。この犬のデイケアのシナリオでは、ドライバーは 2 匹の犬を搬送します。 |
travelDuration |
期間 | これは、移動に費やされた合計時間です。この犬のデイケアのシナリオでは、ドライバーは 79 分間移動します。 | |
waitDuration |
期間 | これは、待機時間の合計です。この犬のデイケアのシナリオでは、ドライバーはデイケア センターで 6 分間(356 秒)アイドリングし、ドロップオフ ウィンドウが開くのを待ちます。 | |
delayDuration |
期間 | これは、駐車用に予約された時間など、移行属性を使用して定義する追加の期間です。この犬のデイケアのシナリオでは、リクエストで移行属性を定義していないため、この値は 0 です。 | |
breakDuration |
期間 | これは、休憩に費やした合計時間です。この犬のデイケアのシナリオでは、休憩はありません。 | |
visitDuration |
期間 | これは、訪問時にサービスを提供した時間の合計です。この犬のデイケアのシナリオでは、20 分(1 回の訪問につき 5 分、4 回の訪問)です。 | |
totalDuration |
期間 | これは、すべての期間コンポーネントの合計です。この犬のデイケアのシナリオでは、合計時間は 105 分(6, 296 秒)です。 | |
travelDistanceMeters |
整数 | これは、合計移動距離(メートル単位)です。この犬のデイケアのシナリオでは、ドライバーは合計 31.5 km 移動します。 | |
performedShipmentPenaltyCostSum |
ダブル | これは、実行されたすべての配送のペナルティ費用の合計です。このシナリオでは、ドライバーがバーニーズ マウンテン ドッグとチワワ(それぞれペナルティ費用が 1000)を乗せたため、2000 になります。 |
|
VehicleFullness |
maxFullness |
数値 | これは、すべての VehicleFullness フィールドの中で最も高い利用率です。この犬のデイケアのシナリオでは、ドライバーが午前中のシフト全体(リクエストで 5 時間と定義)のうち 105 分しかバンを運転しないため、この値は 0.35 になります。 |
activeSpan |
数値 | これは、ルートプランの営業時間に対するドライバーの合計シフト時間の比率です。数値が低いほど、ドライバーが営業日のうち車両を運転する時間が短いことを意味します。この犬のデイケアのシナリオでは、ドライバーが 5 時間のシフト中に 105 分間バンを運転するため、この値は 0.35 になります。 | |
SkippedShipment |
index |
整数 | これは、元のリクエストのゼロから始まる配送のインデックスです。 このシナリオでは、2 はジャーマン シェパードを表します。 |
label |
文字列 | これは、リクエストで配送に指定したラベルです。 | |
penaltyCost |
数値 | これは、オプティマイザーがこの配送をスキップしたときに発生するペナルティ費用です。これは、リクエストで指定した penaltyCost と一致します。 |