リクエストに挿入されたソリューション。制限する必要がある訪問とその方法に関する情報が含まれます。
JSON 表現 |
---|
{ "routes": [ { object ( |
フィールド | |
---|---|
routes[] |
挿入するソリューションのルート。一部のルートが元のソリューションから除外される場合があります。ルートおよびスキップされた配送は、 |
skipped |
注入するソリューションの配送をスキップしました。一部は元のソリューションから省略される場合があります。 |
constraint |
車両のグループを 1 つ以上指定し、制約を緩和するタイミングと緩和度を指定します。このフィールドが空の場合、空ではないすべての車両ルートが完全に制約されます。 |
ConstraintRelaxation
車両のグループに対して、訪問に関する制約を緩和するしきい値と緩和レベルを指定します。skipped_shipment
フィールドにリストされている配送はスキップされるように制約されています。つまり、実行できません。
JSON 表現 |
---|
{
"relaxations": [
{
object ( |
フィールド | |
---|---|
relaxations[] |
|
vehicle |
訪問制約
|
リラクゼーション
relaxations
が空の場合、routes
のすべての訪問の開始時間と順序は完全に制約され、これらのルートに新しい訪問を挿入または追加することはできません。また、車両が空の場合(つまり、訪問がなく、モデルで usedIfRouteIsEmpty
が false に設定されている場合)を除き、routes
の車両の開始時間と終了時間は完全に制約されます。
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
を持つ 2 つの relaxations
を追加します。1 つは thresholdVisitCount
のみを設定し、もう 1 つは thresholdTime
のみを設定します。1 回のアクセスが複数の relaxations
の条件を満たしている場合は、最も緩いレベルが適用されます。その結果、車両の始点からルートの訪問を経て車両の終点に至るまで、リラックス レベルはよりリラックスした状態になります。つまり、ルートが進むにつれてリラックス レベルが低下することはありません。
relaxations
のしきい値条件を満たさないルート訪問のタイミングと順序は完全に制約され、これらのシーケンスに訪問を挿入することはできません。また、車両の始発または終発が緩和条件を満たしていない場合、車両が空でない限り、時刻は固定されます。
JSON 表現 |
---|
{
"level": enum ( |
フィールド | |
---|---|
level |
|
threshold |
緩和 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
threshold |
緩和
|
レベル
訪問に適用される制約緩和レベルと、しきい値条件を満たした場合に適用される制約緩和レベルを指定します。
以下の列挙は、緩和の度合いが強い順に並べられています。
列挙型 | |
---|---|
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 と同じですが、車両も緩和されています。しきい値時間以降の訪問は完全に無料であり、実行されなくなる可能性があります。 |