使用遺傳算法解決TSP問題

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

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

       本文采用的方法是一種修改的遺傳算法,具體如下:

        1、隨機生成一個初始種羣

        2、計算種羣中每個個體的代價,在TSP中也就是路徑和。選出最小的兩組路徑AB,和代價最大的路徑CD。

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

              用EF替代CD,這樣就把種羣中兩個比較差的個體淘汰掉了。

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

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

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

        完

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

        由於代碼比較長,就不貼了,在此可下載http://download.csdn.net/detail/z598751848/4308735

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章