遺傳算法(GA)


來自:https://blog.csdn.net/u010451580/article/details/51178225

  

遺傳算法是模仿生物進化機制的隨機全局搜索和優化方法。借鑒達爾文進化論和孟德爾的遺傳學說。

 

相關術語:

  基因型(genotype):性狀染色體的內部表現;

  表現形(phenotype):性狀外部表現。或個體的外部表現。

  進化(evolution):種群逐漸適應生存環境。生物進化是以種群的形式進行。

  適應度(fitness):度量某個物種對生存環境的適應程度。

  選擇(selection):以一定的概率從種群中選擇若干個個體。一般,選擇過程是基於適應度的優勝劣汰的過程。

  復制(reproduction):細胞分裂時,DNA通過復制轉移到新細胞,新細胞繼承舊細胞的基因。

  交叉(crossover):兩個染色體相同位置DNA被切斷,前后兩串分別交叉組合成兩個新染色體。

  變異(mutation):復制時小概率產生差錯,產生新染色體,表現出新性狀。

  編碼(coding):DNA中遺傳信息在一個長鏈上按一定模式排列。

  解碼(decoding):基因型到表現型的映射。

 

  遺傳算法中每條染色體對應遺傳算法的一個解決方案,用適應性函數衡量解決方案的優劣。所以從一個基因組到其解的適應度形成一個映射。遺傳算法過程可以看作是一個多元函數求最優解的過程

 

實例:已知一元函數 f(x) = xsin(10πx)+2   x∈[-1,2],求函數最大值。

“袋鼠跳”問題

  函數曲線理解成山峰和山谷的組成,設想得到的每個解就是一只袋鼠,求最大值轉換為袋鼠不斷的向更高處跳,直到最高的山峰。

爬山法:

  爬山法中,袋鼠只上坡,沒下坡,但不能保證是全局最高峰

模擬退火:

  模擬退火中,袋鼠喝醉了,而且隨機地大跳很長時間。運氣好的話,從一個山峰跳過山谷,到了另外一個更高的山峰上。但最后,它漸漸清醒了並朝着它所在的峰頂跳去

遺傳算法:

  遺傳法中,有很多袋鼠,降落到不同地方,這些袋鼠不知道它們的任務是尋找全局最高峰。但每過幾年,就在一些海拔較低的山峰射殺一些袋鼠,並希望存活的袋鼠是多產的,在所處地方生兒育女。最后袋鼠都聚攏到全局最高峰上。

 

遺傳算法實現過程:

  • 首先尋找一種對問題潛在解進行“數字化”編碼的方案。
  • 然后用隨機數初始化一個種群(那么第一批袋鼠被隨意分散在山上),種群里面的個體就是這些數字化的編碼。
  • 接下來,通過適當的解碼(得到袋鼠的位置坐標),用適應性函數對每個基因個體做一次適應度評估(袋鼠爬的越高,適應度越高)。
  • 用選擇函數按照某種規定擇優選擇(每隔一段時間,射殺海拔較低的袋鼠,保持袋鼠總數平衡)。
  • 讓個體基因變異(讓袋鼠隨機跳跳)。
  • 然后產生子代(希望存活下來的袋鼠多產,在那生兒育女)。

遺傳算法並不保證獲得問題最優解,它的最大優點在於不必操心如何“找”最優,只是“否定”不好的(把表現不好的,射殺)。

 

遺傳算法一般步驟:

  1. 評估每條染色體所對應個體的適應度。
  2. 遵照適應度越高,選擇概率越大原則,從中群中選擇兩個個體作為父方和母方。
  3. 抽取父母雙方的染色體,進行交叉,產生子代。
  4. 對子代的染色體進行變異。
  5. 重復2,3,4步驟,直到新種群產生。

 

遺傳算法過程的細節: 

繪制袋鼠的染色體——基因編碼方式

  • 采用二進制編碼,如:010010011011011110111110
  • 采用浮點數編碼,如:1.2 –3.3 – 2.0 –5.4 – 2.7 – 4.3
  • 采用符號編碼。

  在遺傳算法中關心的是袋鼠的位置(海拔低的被射殺),所以以袋鼠的位置作為特征進行編碼,具體來說位置就是橫坐標。 接着建立表現型到基因型的映射關系。就是如何用編碼來變現出袋鼠所在的橫坐標。由於橫坐標是一個實數,說透了我們就是對這個實數編碼。

  袋鼠的染色體就是橫坐標上實數的二進制編碼

 

物競天擇——適應性評分與選擇函數

1.物競——適應度函數

袋鼠的海拔高度作為它的適應性評分。即適應度函數直接返回函數值就行了。

2.天擇——選擇函數

常用選擇方法——輪盤賭

比如有5條染色體,他們所對應的適應度評分分別為:5,7,10,13,15。

所以累計總適應度為:

所以各個個體被選中的概率分別為:

注:還有精英選擇機制

 

遺傳變異——基因重組(交叉)與基因突變

這兩種遺傳操作,二進制編碼與浮點型編碼處理上很大差異。

1. 基因重組、交叉

(1)、二進制編碼

類似高中生物中同源染色體的聯會過程(隨機把其中幾個位於同一位置的編碼進行交換,產生新的個體。)

(2)、浮點數編碼

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM