Route Optimization API の目的は、フリートの車両が複数の場所に立ち寄るルートを計画することです。OptimizeToursRequest
オブジェクトは、これらの車両と位置のプロパティを表し、すべてのエンドポイントのリクエスト本文の主要な構造です。
OptimizeToursRequest
オブジェクトの基本構造は次のとおりです。
model
フィールドには、次の 2 つのキーフィールドを含むShipmentModel
メッセージが保持されます。
このドキュメントでは、次のメッセージ タイプについて説明します。
ShipmentModel
: 配送、利用可能な車両、それらの関係を表すその他のオブジェクトのリストを保持します。Shipment
: 車両が訪問する場所を記述します。実際の集荷と配達の荷物や、車両の運転手がサービスを行う場所を表すことができます。Vehicle
: 配送場所間の交通手段を説明します。各車両は、実際の車両または徒歩で移動する人物に対応します。
ShipmentModel
ShipmentModel
には、ルート最適化問題の要素が格納されます。制約を考慮し、全体的な費用を最小限に抑えながら、一連の車両で実行できる一連の配送が含まれています。
次の表に、ShipmentModel
の関連するプロパティを示します。
プロパティ | 説明 |
---|---|
shipments 、vehicles |
1 つまたは複数の配送と車両の詳細を含む必須オブジェクト。 |
globalStartTime 、globalEndTime |
すべての車両がすべての配送を完了する必要がある時間枠の開始と終了を示します。これらのプロパティは必須ではありませんが、時間制約に準拠している場合にオプティマイザーのパフォーマンスが最大になるため、含めることをおすすめします。 |
ShipmentModel
のプロパティの完全なリストについては、リファレンス ドキュメントをご覧ください。
ShipmentModel
の例
この例では、犬の保育サービスがあり、リクエストの作成を開始します。後で配送と車両を定義するが、まず営業時間と 1 時間あたりの運用コストを設定する。
この例では、リクエストの ShipmentModel
プロパティの値は次のとおりです。
プロパティ | 値 | 説明 |
---|---|---|
globalStartTime |
2024-02-13T00:00:00.000Z | 営業時間の開始日時。 |
globalEndTime |
2024-02-14T06:00:00.000Z | 営業時間の終了日時。 |
次に、シナリオの例の値を組み込んだ ShipmentModel
メッセージのコードサンプルを示します。
{ "model": { "shipments": [ ... ], "vehicles": [ ... ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }
Shipment
Shipment
メッセージ タイプは、ルートで配送できる荷物または実行できるサービスのプロパティ構造を定義します。
図に示すように:
Shipment
メッセージには、実際の配送やサービスに関するすべての情報が含まれています。- すべての
Shipment
メッセージはshipments
フィールドで指定されます。 shipments
フィールドには 1 つ以上のShipment
メッセージが含まれています。
Shipment
メッセージには、少なくとも 1 つの pickups
オブジェクトまたは deliveries
オブジェクトが必要です。これらのオブジェクトの定義は次のとおりです。
pickups
は、配送の集荷場所を定義します。deliveries
は、配送の配送先を定義します。pickups
とdeliveries
の両方に、場所などの詳細を定義するVisitRequest
メッセージ タイプが含まれています。
次の表に、Shipment
メッセージ内の pickups
と deliveries
の構成に基づくさまざまなシナリオを示します。
シナリオ | 説明 |
---|---|
pickups のみ |
荷物の集荷のみを行うことを前提としています。 |
deliveries のみ |
配送物を事前に読み込んでいるか、サービスを提供していることを前提としています。 |
pickups と deliveries の両方 |
割り当てられた車両は、まず集荷を完了してから配達する必要があります。配達を行えるのは、集荷を行った車両のみです。 |
複数の pickups または deliveries |
配送に pickups または deliveries の候補が複数ある場合、オプティマイザーは、費用を最小限に抑え、制約を満たすように、1 つの集荷オプションと 1 つの配送オプションを選択します。 |
Shipment
のプロパティの完全なリストについては、リファレンス ドキュメントをご覧ください。
Shipment
の例
この例では、犬の保育サービスを提供しており、犬を自宅まで迎えに行って保育園に連れて行きます。2 匹の犬の受け取り場所を設定し、配達場所をビジネスに設定します。
- 最初の犬の家はサンフランシスコのコイトタワーにあります。この場所の座標は、緯度 37.8024、経度 -122.4058 です。
- 2 匹目の犬の家は、サンフランシスコのサウス サンセット プレイグラウンド パークにあります。この場所の座標は、緯度 37.7359、経度 -122.5011 です。
- 犬の保育園はサンフランシスコのミッション ドロレス パークにあります。この場所の座標は、緯度 37.759773、経度 -122.427063 です。
以下は、Shipment
メッセージのコードサンプルです。shipments
オブジェクトには、座標の例を含む 2 つの Shipment
メッセージ タイプが含まれています。
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ ... ] } }
Vehicle
Vehicle
メッセージ タイプは、ルートで配送を実行できる車両のプロパティ構造を定義します。
図に示すように:
Vehicle
メッセージには、実際の車両のすべての情報が含まれています。- すべての
Vehicle
メッセージはvehicles
フィールドで指定されます。 vehicles
フィールドには複数のVehicle
メッセージが含まれています。
次の表に、Vehicle
の関連プロパティを示します。
プロパティ | 説明 |
---|---|
startLocation 、endLocation |
最終的な最適化されたルートの一部である車両の出発地と目的地。定義されていない場合、デフォルトで最初の配送の集荷場所と最後の配送の配達場所になります。 |
costPerHour 、costPerKilometer 、costPerTraveledHour |
車両固有の費用パラメータ。API が最適化されたルートを返すには、リクエストに少なくとも 1 つの費用パラメータを設定することをおすすめします。費用の詳細については、費用モデルの基本的なコンセプトをご覧ください。 |
startTimeWindows 、endTimeWindows |
車両がルートを走行できる期間を定義します。これらは、ShipmentModel で設定された globalStartTime と globalEndTime の時間枠内に収まる必要があります。このプロパティは必須ではありませんが、時間制約に準拠している場合にオプティマイザーが最適に動作するため、含めることをおすすめします。 |
Vehicle
の例
この例では、犬の託児サービスを提供しており、1 日の始まりと終わりの車両の位置と、ガソリンの消費量を定義したいと考えています。ShipmentModel
オブジェクト内の globalStartTime
プロパティと globalEndTime
プロパティで定義した時間と一致するため、車両の稼働時間を指定する必要はありません。
この例では、リクエストの Vehicle
プロパティの値は次のとおりです。
プロパティ | 値 | 説明 |
---|---|---|
startLocation |
latitude : 37.759773、longitude : -122.427063 |
車両のルートの開始座標。これは、サンフランシスコのミッション ドロレス パークにある犬のデイケアの所在地と一致します。 |
endLocation |
latitude : 37.759773、longitude : -122.427063 |
車両のルートの終了座標。これは、サンフランシスコのミッション ドロレス パークにある犬のデイケアの所在地と一致します。 |
costPerHour |
27 | 犬のデイケアの車両を運転するドライバーに支払う金額。運転手には 1 時間あたり 27 ドルを支払います。 |
次に、シナリオの例の値を組み込んだ Vehicle
メッセージのコードサンプルを示します。
{ "model": { "shipments": [ ... ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ] } }
Vehicle
のプロパティの完全なリストについては、リファレンス ドキュメントをご覧ください。
完全なリクエストの例
次のコードサンプルは、このドキュメントで説明した ShipmentModel
、Shipment
、Vehicle
の例を組み合わせた完全なリクエストの例を示しています。
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }