本節說明轉送解析器的一些選項。
搜尋限制
搜尋限制會在解題達到指定上限後終止,例如: 時間長度上限或找到的解決方案數量你可以設定搜尋 通過解題工具的搜尋參數限制。詳情請見 時間限制:範例。
下表說明最常見的搜尋限制。
名稱 | 類型 | 預設 | 說明 |
---|---|---|---|
solution_limit
|
int64 | kint64max | 僅限解決方案數量 產生的結果。 |
time_limit.seconds
|
int64 | kint64max | 限制花費的時間 (以秒為單位): 相關資訊 |
lns_time_limit.seconds
|
int64 | 100 | 將時間限制(秒): 每個本地搜尋鄰點的完成搜尋。 |
第一項解決方案策略
第一種解決方案是解題工具用來找出
解決方案下表列出 first_solution_strategy
的選項。
選項 | 說明 |
---|---|
AUTOMATIC
|
讓解析器根據 找出解決之道 |
PATH_CHEAPEST_ARC
|
從路徑「start」開始並連線至 產生最便宜路線路段的節點,然後將路線延伸 疊代的最後一個節點上新增至路徑。 |
PATH_MOST_CONSTRAINED_ARC
|
與PATH_CHEAPEST_ARC 類似,但弧形
評估時,我們會使用較喜歡的選取器
先限制弧形如要將選取器指派給轉送模型,請使用
ArcIsMoreConstrainedThanArc() 方法。 |
EVALUATOR_STRATEGY
|
與 PATH_CHEAPEST_ARC 類似,不過弧形成本
評估時,系統會使用傳入
SetFirstSolutionEvaluator() 。 |
SAVINGS
|
節能演算法 (Clarke 和 Wright)。 參考 Clarke,G.&Wright、J.W。 「將車輛從中央車站安排為指定數量的車輛」 營運研究部門,Vol.12, 1964,第 568-581。 |
SWEEP
|
清除演算法 (Wren &Holliday)。 參考 Anthony Wren 和Alan Holliday 電腦排程的車輛排程 從一或多處營運據點到供應點的營運數量 Research Quarterly (1970-1977),Vol.23,第 3 號 (9 月、1972),第 333-344 頁。 |
CHRISTOFIDES
|
Christofides 演算法 (實際上是 基數演算法使用盡量提高比對 (而非最大值) 這不代表估算大約 3/2 的機率 或銷售專員的指標)。適用於 擴充路徑,直到無法插入節點為止。 參考 Nicos Christofides,以及新的經驗法則分析: 旅人業經歷問題,美國工業大學研究所報告 388 管理,CMU,1976 年。 |
ALL_UNPERFORMED
|
將所有節點設為停用狀態。只在節點時尋找解決方案 為選用項目 (屬於接種限制的一環,但會有一定的罰金)。 |
BEST_INSERTION
|
將成本最低的 擁有最低位置的節點插入費用的依據是 轉送模型的成本函數截至 2012 年 2 月,這項功能僅適用於含有 選用的節點 (有一定的罰金) |
PARALLEL_CHEAPEST_INSERTION
|
將
價格最低的節點插入費用是根據
弧形成本函數速度比 BEST_INSERTION 快。 |
LOCAL_CHEAPEST_INSERTION
|
將每項解決方案
擁有最低位置的節點插入費用是根據弧形計算
成本函數各節點的 PARALLEL_CHEAPEST_INSERTION 差異
獲選進行插入這裡的節點會按照
建立。速度比 PARALLEL_CHEAPEST_INSERTION 快。 |
GLOBAL_CHEAPEST_ARC
|
疊代連結兩個節點 最便宜的路線路段。 |
LOCAL_CHEAPEST_ARC
|
選取含有未繫結繼子的第一個節點,並 並連結到產生最便宜路線區段的節點。 |
FIRST_UNBOUND_MIN_VALUE
|
選取含有未繫結繼子的第一個節點
並連線至第一個可用的節點這相當於
CHOOSE_FIRST_UNBOUND 策略結合 ASSIGN_MIN_VALUE (請參閱
constraint_solver.h)。 |
搜尋狀態
您可以使用轉送模型的 status
方法傳回搜尋的狀態。
以下是列印搜尋狀態的 Python 程式碼:
print("Solver status: ", solver.status())
這會列印具有下列含義的整數:
值 | 說明 |
---|---|
0 |
ROUTING_NOT_SOLVED :問題尚未解決。 |
1 |
ROUTING_SUCCESS :已成功解決問題。 |
2
|
ROUTING_PARTIAL_SUCCESS_LOCAL_OPTIMUM_NOT_REACHED :已解決問題
成功呼叫 RoutingModel.Solve() 但本機
則尚未達到最佳化要求。讓您有更多時間可以改善
解決方案 |
3 |
ROUTING_FAIL :找不到問題的解決方案。 |
4 |
ROUTING_FAIL_TIMEOUT :已達尋找解決方案的時間上限。 |
5 |
ROUTING_INVALID :模型、模型參數或旗標無效。 |
6 |
ROUTING_INFEASIBLE :經證實不可行。 |
區域搜尋選項
下表列出本地搜尋策略 (又稱為 後製)。 請參閱變更搜尋策略一文。 ,瞭解設定這些選項的範例。
選項 | 說明 |
---|---|
AUTOMATIC |
讓解題工具選取代謝式。 |
GREEDY_DESCENT |
當地人開始採用改良 (成本降低) 區域搜尋鄰點 已達下限。 |
GUIDED_LOCAL_SEARCH |
使用引導式區域搜尋功能逃離當地 Minima。(請參閱 引導式區域搜尋) 這通常為車輛路線規劃最有效率的統合式。 |
SIMULATED_ANNEALING |
運用模擬陰道來逃離局部 minima (參閱 Simulated Annealing)。 |
TABU_SEARCH |
使用 Tabu 搜尋來逃離局部 minima (參閱 Tabu 搜尋)。 |
GENERIC_TABU_SEARCH |
使用 Tabu 搜尋來找解解決方案的目標價值,藉此逃離當地 。 |
傳播控制項
名稱 | 類型 | 預設 | 說明 |
---|---|---|---|
use_full_propagation
|
布林值 | 正確 | 使用具有完整傳播功能的限制條件 採用轉送模型,而非只有「輕度」傳播。100% 只有在使用深度優先搜尋或模型時,才需要套用傳播 但需要強烈傳播才能確定 變數。將這項設定變更為 true 會降低 而且在所有情況下都會增加記憶體消耗量。 |