你真的懂TSP嗎
阿新 • • 發佈:2022-03-17
整數規劃-模型
2022年2月26日
TSP問題
有一個郵遞員,他每天負責向100個客戶的家門口送一份報紙,他希望走最短的總路程來完成配送任務,這是TSP問題最原始的場景。用理論描述就是:找一個路徑最小的哈密頓迴路(Hamiltonian cycle) 。
哈密頓迴路:也稱為一筆畫問題,就是從一個點出發不重複的走完所有的點,最後在回到出發點。我們現在希望為郵遞員找到這個最短的哈密頓迴路。
求解
關於求解TSP問題的方法,有很多,但是他們之間的效率也是千差萬別,比如我們本篇推文介紹基於整數規劃的一類求解思路這也是最主流的效果最好的,可以拓展到非常大的規模的一類解法,可以說是正統解法,當然還有其他解法,比如動態規劃等,這裡先挖一個坑,有時間小編一定把動態規劃的思路的程式碼一同奉上。
模型
這裡我們提供兩個模型,分別是對稱TSP和非對稱TSP,假設我們我們將報亭標號為1,且客戶的數量加上報亭一共為n;cij表示從i到j的距離。
分析
雖然我們把模型寫出來了,但是我們必須得知道每個約束的作用是什麼,只有清楚的知道當前這一步是為什麼,我們才知道下一步得往哪裡走,對吧。
對比:
- 目標函式:沒有區別;
- Asymmetric的(1)(2)在Symmetric中變成了(5),這三個約束我們一般稱為“度約束”。 在非對稱的情況cij和cji是不同的,所以我們從i走到j和從j走到i是不同的。所以我們需要針對每個點的出度和入度進行約束;但是對稱的情況則不用卻分從i到j還是從j到i,為了避免求解模型的時候還是將x
- Asymmetric的(3)在Symmetric中變成了(6),這兩個約束可以稱為“消除子環約束”,為什麼需要這個約束呢?我們先把這個約束從兩個模型中去掉,來看看,會發現有一種不合法的情況會出現,如如圖1所示:
- 最後(4)和(7)約束限制,決策變數必須為整數,以為一條邊的存在不能是小數的。
這個結果顯然是不對的,因為它沒有做到一筆畫,而是分了兩筆;但是如果沒有“消除子環約束”我們的模型將會把上述模型視為合法的,但是真正的最優結果應該是
在下期的推文中我們將介紹,如何藉助cplex構造:割平面演算法(cutting plane)和分支定界演算法,來求解問題。小編到時候會提供程式碼哦,還不快快關注一下,哈哈哈。