1. 程式人生 > >旅行商(TSP)及相關問題列表

旅行商(TSP)及相關問題列表

1, 旅行商問題(Traveling Salesman Problem, TSP)

這個問題字面上的理解是:有一個推銷員,要到n個城市推銷商品,他要找出一個包含所有n個城市的具有最短路程的環路。

TSP的歷史很久,最早的描述是1759年尤拉研究的騎士周遊問題,即對於國際象棋棋盤中的64個方格,走訪64個方格一次且僅一次,並且最終返回到起始點。

TSP由美國RAND公司於1948年引入,該公司的聲譽以及線性規劃這一新方法的出現使得TSP成為一個知名且流行的問題。

2、中國郵遞員問題(Chinese Postman Problem CPP)

同樣的問題,在中國還有另一個描述方法:一個郵遞員從郵局出發,到所轄街道投遞郵件,最後返回郵局,如果他必須走遍所轄的每條街道至少一次,那麼他應如何選擇投遞路線,使所走的路程最短?這個描述之所以稱為中國郵遞員問題, 因為是我國學者管梅古谷教授於1962年提出的這個問題並且給出了一個解法。

3、“一筆畫”問題(Drawing by one line)


還有一個用圖論語言的描述方式:平面上有n個點,用最短的線將全部的點連起來。稱為“一筆畫”問題。

4、配送路線問題(Route of Distribution)

TSP問題在物流中的描述是對應一個物流配送公司,欲將n個客戶的訂貨沿最短路線全部送到。如何確定最短路線。

TSP問題最簡單的求解方法是列舉法。它的解是多維的、多區域性極值的、趨於無窮大的複雜解的空間,搜尋空間是n個點的所有排列的集合,大小為(n-1)!。可以形象地把解空間看成是一個無窮大的丘陵地帶,各山峰或山谷的高度即是問題的極值。求解TSP,則是在此不能窮盡的丘陵地帶中攀登以達到山頂或谷底的過程。

5、多回路運輸問題(Vehicle Routing Problem, VRP)


多回路運輸問題在物流中的解釋是對一系列客戶的需求點設計適當的路線,使車輛有序地通過它們,在滿足一定的約束條件下,如貨物需求量、傳送量、交發貨時間、車輛載重量限制、行駛里程限制、時間限制等等,達到一定的優化目標,如里程最短、費用最少、時間最短,車隊規模最少、車輛利用率高。

VRP問題和TSP問題的區別在於:客戶群體的數量大,只有一輛車或一條路徑滿足不了客戶的需求,必須是多輛交通工具以及運輸工具的行車順序兩個問題的求解。相對於TSP問題,VRP問題更復雜,求解更困難,但也更接近實際情況。

6、多個旅行商問題(Multiple TSP)

由於限制條件的增加,TSP問題可以衍生出多個旅行商問題(MTSP),就是一個出發點,m個旅行商的TSP,即所訪問的客戶沒有需求,車輛沒有裝載的限制,優化目標就是要遍歷所有的客戶,達到總里程最短。

VRP問題是MTSP問題的普遍化,當客戶的需求不僅僅是被訪問,而是有一定容積和重量的商品的裝載和解除安裝,涉及到不同種類和型號或不同載重量車輛的排程策略時,MTSP問題轉換為VRP問題。

7、最近鄰點法(Nearest Neighbor)


這是一種用於解決TSP問題的啟發式演算法。方法簡單,但得到的解並不十分理想,可以作為進一步優化的初始解。求解的過程一共四步:首先從零點開始,作為整個迴路的起點,然後找到離剛剛加入到迴路的上一節點最近的一個節點,並將其加入到迴路中。重複上一步,直到所有的節點都加入到迴路中,最後,將最後一個加入的節點和起點連線起來,構成了一個TSP問題的解。

8、最近插入法(Nearest Insertion)

最近插入法是另一個TSP問題的求解方法。它的求解過程也是4步:首先從一個節點出發,找到一個最近的節點,形成一個往返式子迴路;在剩下的節點中,尋找一個離子迴路中某一節點最近的節點,再在子迴路中找到一個弧,使弧的兩端節點到剛尋找到的最近節點的距離之和減去弧長的值最小,實際上就是把新找到的節點加入子迴路以後使得增加的路程最短,就把這個節點增加到子迴路中。重複以上過程,直到所有的節點都加入到子迴路中。最近插入法比最近鄰點法複雜,但可以得到相對比較滿意的解。

9、節約里程法(Saving Algorithm)

節約演算法是用來解決運輸車輛數目不確定的VRP問題的最有名的啟發式演算法。它的核心思想是依次將運輸問題中的兩個迴路合併為一個迴路,每次使合併後的總運輸距離減小得幅度最大,直到達到一輛車的裝載限制時,再進行下一輛車的優化。優化過程分為並行方式和序列方式兩種。

10、掃描演算法(Sweep Algorithm)

它也是求解車輛數目不限制的VRP問題的啟發式演算法。求解過程同樣是4步:以起始點為原點建立極座標系,然後從最小角度的兩個客戶開始建立一個組,按逆時針方向將客戶逐個加入到組中,直到客戶的需求總量超出了車輛的載重定額。然後建立一個新的組,繼續該過程,直到將全部客戶都加入到組中