リクエストに注入されるソリューション(制限が必要な訪問や、どのように制限する必要があるかに関する情報を含む)。
JSON 表現 |
---|
{ "routes": [ { object ( |
フィールド | |
---|---|
routes[] |
挿入するソリューションのルート。元のソリューションから一部のルートが省略されている場合があります。ルートとスキップされた配送は、 |
skippedShipments[] |
注入するソリューションの出荷をスキップした。元のソリューションから一部が省略されている場合があります。 |
constraintRelaxations[] |
0 個以上の車両グループの場合は、制約を緩和するタイミングと程度を指定します。このフィールドが空の場合、空でない車両ルートはすべて完全な制約を受けます。 |
ConstraintRelaxation
車両のグループについて、訪問に対する制約をどのしきい値でどのレベルに緩和するかを指定します。skipped_shipment
フィールドにリストされている配送は、スキップすることが制限されているため、実行できません。
JSON 表現 |
---|
{
"relaxations": [
{
object ( |
フィールド | |
---|---|
relaxations[] |
|
vehicleIndices[] |
訪問の制約
|
リラクゼーション
relaxations
が空の場合、routes
へのすべての訪問の開始時間と順序は完全に制限され、新しい訪問をそれらのルートに挿入したり追加したりすることはできません。また、routes
での車両の開始時間と終了時間には、完全に制約があります。ただし、車両が空である(訪問がなく、モデルで usedIfRouteIsEmpty
が false に設定されている)場合を除きます。
relaxations(i).level
は、次の条件を満たす訪問 #j に適用する制約緩和レベルを指定します。
route.visits(j).start_time >= relaxations(i).threshold_time
かつj + 1 >= relaxations(i).threshold_visit_count
同様に、次の条件を満たす場合、車両の始動は relaxations(i).level
に緩和されます。
vehicleStartTime >= relaxations(i).threshold_time
かつrelaxations(i).threshold_visit_count == 0
。次の条件を満たす場合、車両終了点はrelaxations(i).level
に緩和されます。vehicleEndTime >= relaxations(i).threshold_time
かつroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
訪問が thresholdVisitCount
または thresholdTime
を満たす場合に緩和レベルを適用するには、同じ level
を持つ relaxations
を 2 つ追加します。1 つは thresholdVisitCount
のみ、もう 1 つは thresholdTime
のみを設定します。訪問が複数の relaxations
の条件を満たす場合は、最も緩和されたレベルが適用されます。その結果、車両の始点から経路の訪問を経て車両の終点まで、リラクゼーションのレベルはより緩やかになります。つまり、リラクゼーションのレベルは、ルートが進むにつれて下がりません。
どの relaxations
のしきい値も満たさない訪問のタイミングと順序は完全に制限され、訪問はこれらの順序に挿入できません。また、車両の始動または終点がリラクゼーションの条件を満たさない場合、車両が空でない限り、時間は固定されます。
JSON 表現 |
---|
{
"level": enum ( |
フィールド | |
---|---|
level |
|
thresholdTime |
リラクゼーション RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
thresholdVisitCount |
リラクゼーション
|
レベル
訪問に適用されるさまざまな制約緩和レベルと、しきい値条件を満たしたときにその後に適用される制約緩和レベルを表します。
以下の一覧は、リラックスしている順に表示されています。
列挙型 | |
---|---|
LEVEL_UNSPECIFIED |
暗黙的なデフォルトのリラクゼーション レベル: 制約は緩和されません。つまり、すべての訪問が完全に制約されます。 この値は |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
訪問の開始時間と車両の開始/終了時間は緩和されますが、各訪問は同じ車両にバインドされたままとなり、訪問の順序を観察する必要があります。訪問のタイミングと車両の前に訪問を挿入することはできません。 |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
RELAX_VISIT_TIMES_AFTER_THRESHOLD と同じですが、訪問シーケンスも緩和されます。訪問は単に車両にバインドされたままになります。 |
RELAX_ALL_AFTER_THRESHOLD |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD と同じですが、車両も緩和されています。しきい値時間以降は完全に無料であるため、行方不明になる可能性があります。 |