リクエストに挿入されたソリューション。制約する必要がある訪問と、制約する方法に関する情報が含まれます。
| JSON 表現 |
|---|
{ "routes": [ { object ( |
| フィールド | |
|---|---|
routes[] |
挿入するソリューションのルート。一部のルートは元のソリューションから除外される場合があります。ルートとスキップされた配送は、 |
skippedShipments[] |
挿入するソリューションのスキップされた配送。一部は元のソリューションから省略される場合があります。 |
constraintRelaxations[] |
車両の 0 個以上のグループについて、制約を緩和するタイミングと緩和量を指定します。このフィールドが空の場合、空でないすべての車両ルートが完全に制約されます。 |
ConstraintRelaxation
車両のグループについて、訪問の制約が緩和されるしきい値と緩和されるレベルを指定します。skipped_shipment フィールドにリストされている配送はスキップされるように制約されます。つまり、実行できません。
| JSON 表現 |
|---|
{
"relaxations": [
{
object ( |
| フィールド | |
|---|---|
relaxations[] |
|
vehicleIndices[] |
訪問制約
|
リラクゼーション
relaxations が空の場合、routes のすべての訪問の開始時間と順序が完全に制約され、これらのルートに新しい訪問を挿入または追加することはできません。また、車両が空の場合(つまり、訪問がなく、モデルで usedIfRouteIsEmpty が false に設定されている場合)を除き、routes の車両の開始時刻と終了時刻は完全に制約されます。
relaxations(i).level は、次の条件を満たす訪問 #j に適用される制約緩和レベルを指定します。
route.visits(j).start_time >= relaxations(i).threshold_timeANDj + 1 >= relaxations(i).threshold_visit_count
同様に、次の条件を満たす場合、車両の始動は relaxations(i).level に緩和されます。
vehicleStartTime >= relaxations(i).threshold_timeANDrelaxations(i).threshold_visit_count == 0と車両の終了は、次の条件を満たす場合にrelaxations(i).levelに緩和されます。vehicleEndTime >= relaxations(i).threshold_timeANDroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
訪問が thresholdVisitCount または thresholdTime を満たす場合に緩和レベルを適用するには、同じ level を持つ 2 つの relaxations を追加します。1 つは thresholdVisitCount のみ設定し、もう 1 つは thresholdTime のみ設定します。1 回のアクセスが複数の relaxations の条件を満たしている場合は、最も制限の緩いレベルが適用されます。その結果、車両の出発からルートの訪問順序を経て車両の終了まで、緩和レベルはより緩和されます。つまり、ルートの進行に伴って緩和レベルは低下しません。
relaxations のしきい値条件を満たさないルート訪問のタイミングと順序は完全に制約され、これらの順序に訪問を挿入することはできません。また、車両が空でない限り、車両の開始または終了が緩和条件を満たしていない場合、時間は固定されます。
| JSON 表現 |
|---|
{
"level": enum ( |
| フィールド | |
|---|---|
level |
|
thresholdTime |
緩和 RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: |
thresholdVisitCount |
緩和
|
レベル
しきい値条件を満たした場合に、1 回の訪問とその後の訪問に適用されるさまざまな制約緩和レベルを表します。
次の列挙型は、緩和の度合いが低い順に並んでいます。
| 列挙型 | |
|---|---|
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 と同じですが、車両も緩和されます。しきい値時間以降の訪問は完全に無料になり、実行されない可能性があります。 |