在要求中插入的解決方案,包括哪些造訪必須受到限制,以及如何限制。
JSON 表示法 |
---|
{ "routes": [ { object ( |
欄位 | |
---|---|
routes[] |
要插入的解決方案路徑。原始解決方案可能會省略部分路線。路線和略過的運送作業必須符合 |
skipped |
要插入的解決方案已略過出貨。部分項目可能會從原始解決方案中省略。請參閱 |
constraint |
針對零或多個車輛群組,指定放寬限制的時機和程度。如果這個欄位為空白,則所有非空白的車輛路線都會受到完全限制。 |
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
的 relaxations
:一個只設定 thresholdVisitCount
,另一個只設定 thresholdTime
。如果造訪符合多個 relaxations
的條件,系統會套用最寬鬆的層級。因此,從車輛啟程到依序造訪路線,再到車輛結束行程,放鬆程度會越來越高,也就是說,放鬆程度不會隨著路線的進行而降低。
路線造訪的時間和順序若不符合任何 relaxations
的門檻條件,就會受到完全限制,且無法在這些序列中插入造訪。此外,如果車輛的起點或終點不符合任何放寬條件,則會固定時間,除非車輛為空車。
JSON 表示法 |
---|
{
"level": enum ( |
欄位 | |
---|---|
level |
在 |
threshold |
可套用放寬 RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如 |
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 相同,但車輛也放寬限制:在門檻時間點或之後,訪客可完全免費,且可能不會執行。 |