リクエストに挿入されたソリューション。制限する必要がある訪問とその方法に関する情報が含まれます。
| JSON 表現 | 
|---|
| { "routes": [ { object ( | 
| フィールド | |
|---|---|
| routes[] | 
 挿入するソリューションのルート。一部のルートが元のソリューションから除外される場合があります。ルートおよびスキップされた配送は、 | 
| skippedShipments[] | 
 注入するソリューションの配送をスキップしました。一部は元のソリューションから省略される場合があります。 | 
| constraintRelaxations[] | 
 車両のグループを 1 つ以上指定し、制約を緩和するタイミングと緩和度を指定します。このフィールドが空の場合、空ではないすべての車両ルートが完全に制約されます。 | 
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_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 | 
 
 | 
| 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と同じですが、車両も緩和されています。しきい値時間以降の訪問は完全に無料であり、実行されなくなる可能性があります。 |