使用遺傳演算法解決TSP問題

2021-06-06 13:14:30 字數 646 閱讀 1156

遺傳演算法顧名思義就是模擬生物界的自然選擇原理,比如對於tsp問題,遺傳演算法大體上是可以先隨機生成一組大量的解空間,作為乙個初始的種群,然後按照一定的策略讓種群自由交叉(也就是傳說中的交配),變異。按照一定的策略淘汰種群中不符合預期目的的個體。

目前大多數遺傳演算法使用的是根據隨機生成的概率與給定的交叉,變異概率相比來決定是否交叉,變異,但是筆者覺得這種演算法雖然更符合自然界的隨機交配原則,但是對於解決tsp問題比較盲目,有時候可能走過多彎路。

1、隨機生成乙個初始種群

2、計算種群中每個個體的代價,在tsp中也就是路徑和。選出最小的兩組路徑ab,和代價最大的路徑cd。

3、ab交叉,產生兩個子代ef,大多數情況下ef的代價肯定是小於cd的(ps:帥哥和美女生出的兒子肯定很帥嘛)

用ef替代cd,這樣就把種群中兩個比較差的個體淘汰掉了。

4、變異這一步,還是使用全部變異的好,有利於種群的進化。對於每個個體隨機個概率和給定的概率比較來決定是否變異。

5、計算種群中代價最大的和最小的路徑差,如果路徑差值小於10的話說明種群已經趨於穩定,跳轉6,,否則跳轉2,繼續交叉變異,進化

6、現在種群的代價已經趨於穩定了,算是可以結束了。代價最小的路徑即為tsp的最優解。

完此演算法雖然和正統教材上的演算法不一樣,但是個人覺得這樣效率更高些。如有疏漏還請指正。

tsp問題 遺傳演算法解決

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

遺傳演算法解決TSP問題

基本原理在 中有注釋 1 include2 include 3 include 4 include5 include 6 using std string 7 8struct position9 1617 double tsp int n,struct position position,int t...

遺傳演算法模擬解決TSP問題

include include include include include define cities 10 城市的個數 define maxx 100 迭代次數 define pc 0.8 交配概率 define pm 0.05 變異概率 define num 10 種群的大小 int bes...