負荷需要と上限は、容量の管理に使用できる制約の一種です。この制約では、配送の必要な容量と車両の最大容量を指定します。これにより、これらの制約に基づいてルート割り当てを最適化できます。
負荷の需要と上限は、次のような目標をサポートできます。
- 車両の過積載を防止する。
- 荷物の集荷と配達に伴う車両の積載量の変化をモニタリングします。
- 大型車両と大型荷物のペアリングを優先します。
負荷の需要と上限は、次のプロパティで指定します。
loadDemandsは、特定の配送に必要な容量を指定します。loadLimitsは、特定の車両の最大容量を指定します。
構造
図に示すように、負荷の需要と上限は次のように構成されています。
loadDemandsはShipmentのプロパティです。1 つのShipmentに複数の負荷需要を設定できます。loadLimitsはVehicleのプロパティです。Vehicleには複数の負荷上限を設定できます。
Essentials のチェックリスト
次のチェックリストでは、読み込みに関連する潜在的なミスを防ぐために必要な知識について説明します。このリストは、リクエストの検証とレスポンスのトラブルシューティングに役立ちます。
プロパティ
このセクションでは、負荷の需要と上限のプロパティについて説明します。
読み込みのタイプ
荷物の種類は、配送と車両に等しく適用する文字列キーです。1 つの積載タイプが、配送の積載需要と車両の積載制限に適用されます。
読み込みタイプでは、プロトコル バッファのマップタイプの構文を使用します。負荷タイプに名前を付けるときは、負荷のタイプとその単位を記述する識別子を使用します。例: weightKg、volume_gallons、palletcount、frequencyDaily。
Load、LoadLimit
Load オブジェクトと LoadLimit オブジェクトには、配送と車両の容量要件を定義する特定のプロパティが含まれています。次の表に、これらのプロパティを示します。
| オブジェクト | 親 | プロパティ | プロパティのタイプ | プロパティの説明 |
|---|---|---|---|---|
Load |
loadDemands |
amount |
文字列(int64 形式) | 指定されたタイプの配送の容量要件を定義します。 |
LoadLimit |
loadLimits |
maxLoad |
文字列(int64 形式) | 指定されたタイプの車両の最大積載量を定義します。 |
例
このセクションでは、次の 3 種類の例について説明します。
コードサンプル
次の例は、loadDemands タイプを文字列として設定し、amount プロパティを int64 形式の文字列として設定できる負荷需要の構造を示しています。
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
次の例は、負荷制限の最も基本的な構造を示しています。loadLimits タイプを文字列として設定し、maxLoad プロパティを int64 形式の文字列として設定できます。
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
シナリオ例
このセクションでは、犬のデイケア ビジネスを運営していて、限られた数のクレートを搭載した車両で数匹の犬を輸送するルートを最適化するシナリオについて説明します。
各配送は、一定数の犬をピックアップする 1 つの停車地を表します。この例では、各配送には異なる集荷場所(世話をする犬の家)があり、すべての配送には同じ配送場所(犬のデイケアの建物)があります。
この例では、リクエストのプロパティ値は次のとおりです。
| 親 | プロパティ | タイプ | 値 | シナリオ |
|---|---|---|---|---|
loadDemands |
読み込みのタイプ | 文字列 | dogUnit |
配送の荷物の種類を定義します。この例では dogUnit を使用しています。各 dogUnit は 1 匹の犬を表します。 |
loadDemands |
amount |
数値 | 1 回目の配送: 12 回目の配送: 3 |
定義された負荷タイプの数量を指定します。この例では、2 つの配送を定義しています。最初の配送では 1 匹の犬を集荷し、2 つ目の配送では 3 匹の犬を集荷します。 |
loadLimits |
負荷タイプ | 文字列 | dogUnit |
車両に適用される積載量制限のタイプを定義します。上限を関連付けるには、この値が配送の積載タイプと一致している必要があります。 |
loadLimits |
maxLoad |
数値 | 6 |
車両が運搬できる積載タイプの最大数量を指定します。この例では、最大容量が 6 dogUnit の車両が 1 台のみあり、各 dogUnit は 1 つの犬用ケージを表します。 |
次の図は、車両の積載量上限、各配送の積載量需要、各配送が車両の積載量上限をどのように消費するかを示しています。

この例では、各配送の積載需要と車両の積載制限には次の影響があります。
オプティマイザーは、車両が犬を輸送するルートを生成する際に問題が発生しません。車両は最大 6 匹の犬を運ぶことができ、4 匹の犬のみをピックアップします。
車両の積載制限が 6
dogUnitであるということは、この車両に積載できるのはあと 2 匹だけということになります。犬の数が積載量の上限を超えた場合、オプティマイザーは集荷の 1 つをスキップするか、適切な車両に割り当てます。
事前定義されたタイプのセットはないことに注意してください。この例では、犬の重量を制限するために、負荷タイプを犬の単位から重量単位に変更できます。また、犬の幅や高さを制限するために、線形測定に変更することもできます。この柔軟性により、特定のニーズに合わせて負荷の需要と上限を調整できます。
リクエストの例
次の例は、サンプル シナリオの値を組み込んだ基本的な optimizeTours リクエストの構造を示しています。
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "One bernese mountain dog", "loadDemands": { "dogUnit": { "amount": "1" } } }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "Three chihuahuas", "loadDemands": { "dogUnit": { "amount": "3" } } } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "loadLimits": { "dogUnit": { "maxLoad": "6" } }, "costPerKilometer": 1.0 } ] } }
この例とは異なり、1 つの配送に複数の積載需要を設定でき、1 台の車両に複数の積載制限を設定できるため、車両のルートを最適化する際に考慮すべき複雑な制約を指定できます。
ソフトロードの上限
車両の loadLimits に softMaxLoad と costPerUnitAboveSoftMax を追加することで、積載量の上限をソフト制約として設定できます。これにより、オプティマイザーは、コストをかけて車両の最大積載量を超過することを許可し、積載量の上限を厳守することよりもルートの完了を優先します。
maxLoad と softMaxLoad を一緒に使用して、ハードとソフトの両方の負荷制限を設定できます。この場合、softMaxLoad は超過可能な負荷を設定し、maxLoad は超過できないハードリミットを設定します。両方を使用する場合、maxLoad は softMaxLoad より大きくする必要があります。
プロパティ
次の表に、負荷需要と上限のソフト制約プロパティを示します。
| 親 | プロパティ名 | プロパティのタイプ | プロパティの説明 |
|---|---|---|---|
loadLimits |
softMaxLoad |
文字列(int64 形式) | 車両の推奨最大積載量。車両の積載量がこの値を超えると、費用が発生します。 |
loadLimits |
costPerUnitAboveSoftMax |
数値 | softMaxLoad を超える積載量の単位あたりのコスト。softMaxLoad を使用する場合は、このフィールドは必須です。費用の詳細については、費用モデルの主なコンセプトをご覧ください。 |
コードサンプル
次の例は、loadLimits のソフト制約プロパティの構造を示しています。
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }