負荷需要と上限は、容量の管理に使用できる制約の一種です。荷物の必要な容量と車両の最大容量を指定します。これにより、これらの制約に基づいてルート割り当てを最適化できます。
負荷の需要と上限は、次のような目的をサポートできます。
- 車両の積みすぎを防ぐ。
- 荷物の集荷と配達に伴う車両の積載量の変化をモニタリングします。
- 車両が特定の場所を訪問できる回数を制限します。
負荷需要と上限は、次のプロパティで指定します。
loadDemands
には、特定の配送に必要な容量を指定します。loadLimits
には、特定の車両の最大容量を指定します。
構造
図に示すように、負荷需要と上限は次のように構成されています。
loadDemands
はShipment
のプロパティです。Shipment
には複数の負荷需要を設定できます。loadLimits
はVehicle
のプロパティです。Vehicle
には複数の負荷上限を設定できます。
プロパティ
このセクションでは、負荷需要と上限のプロパティについて説明します。
読み込みのタイプ
積載タイプは、荷物の積載量の種類と車両の積載量の上限を識別する文字列キーです。負荷タイプには次の重要な特性があります。
- ユーザー定義: ユーザーが定義する負荷タイプです。負荷タイプの事前定義されたシステム変数はありません。
- 共有: 荷物タイプは、配送と車両間で共有することを目的としています。つまり、積載タイプが一致する場合のみ、荷物は車両の容量の上限まで使用されます。車両に特定の種類の積載制限が指定されていない場合、その種類の積載量に制限はありません。
読み込みタイプを表す文字列キーには、プロトコル バッファのマップタイプ構文を使用します。問題を回避するため、これらの文字列キーはnull にできません。負荷タイプに名前を付けるときは、負荷のタイプと単位を記述する識別子を使用することをおすすめします。例: weightKg、volume_gallons、palletcount、frequencyDaily。
Load
、LoadLimit
Load
オブジェクトと LoadLimit
オブジェクトには、配送と車両の容量要件を定義する特定のプロパティが含まれています。次の表に、これらのプロパティを示します。
オブジェクト | 親 | プロパティ | プロパティのタイプ | プロパティの説明 |
---|---|---|---|---|
Load |
loadDemands |
amount |
文字列(int64 形式) | 指定されたタイプで配送の容量要件を定義します。 |
LoadLimit |
loadLimits |
maxLoad |
文字列(int64 形式) | 指定されたタイプの車両の最大積載量を定義します。 |
例
次の例は、loadDemands
タイプを文字列として、amount
プロパティを int64 形式の文字列として設定できる負荷需要の構造を示しています。
"loadDemands": {
"MATCHING_LOAD_TYPE ": {
"amount": "YOUR_LOAD_AMOUNT "
}
}
次の例は、負荷の上限の最も基本的な構造を示しています。ここでは、loadLimits
型を文字列として設定し、maxLoad
プロパティを int64 形式の文字列として設定できます。
"loadLimits": {
"MATCHING_LOAD_TYPE ": {
"maxLoad": "YOUR_MAX_LOAD "
}
}
試してみる
上記のコードサンプルを使用して、架空のシナリオを作成します。このシナリオでは、重量が 10 kg の荷物と、100 kg を運ぶことができる車両があります。
loadDemands
の例では、読み込みタイプをweightKg
として定義します。これを行うと、
loadLimits
の例の負荷タイプも入力され、負荷タイプが共有されます。車両の上限を使用するには、loadDemands
とloadLimits
のタイプが一致している必要があります。同じ
loadDemands
の例で、amount
プロパティを10
に設定します。つまり、荷物の重量は 10 キログラムです。
loadLimits
の例では、maxLoad
プロパティを100
に設定します。つまり、車両は最大 100 キログラムを運ぶことができます。
事前定義されたタイプのセットはありません。この例では、キログラムをポイントに変更したり、体重ではなく長さの測定値に変更したりできます。この柔軟性により、負荷需要と上限を特定のニーズに合わせて調整できます。
リクエストの例
次の例は、shipment に loadDemands
、vehicle に loadLimits
を含む基本的な optimizeTours
リクエストの構造を示しています。
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 00.000000, "longitude": 00.000000 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 00.000000, "longitude": 00.000000 } } ], "loadDemands": { "MATCHING_LOAD_TYPE ": { "amount": "YOUR_LOAD_AMOUNT " } } } ], "vehicles": [ { "startLocation": { "latitude": 00.000000, "longitude": 00.000000 }, "endLocation": { "latitude": 00.000000, "longitude": 00.000000 }, "costPerKilometer": 1.0, "loadLimits": { "MATCHING_LOAD_TYPE ": { "maxLoad": "YOUR_MAX_LOAD " } } } ] } }
配送には複数の積載量の要件があり、車両には複数の積載量の上限があるため、フリートのルートを最適化する際に考慮すべき複雑な制約を指定できます。