遺傳算法簡介


第一次用Markdown來寫東西,這里將現代優化計算方法這門課做的PPT上的內容整理一下。

遺傳算法簡介

遺傳算法是進化算法的一種。一般認為遺傳算法是由John H. Holland於1975正式提出的,之后Holland及其研究團隊還不斷完善遺傳算法理論。遺傳算法是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。目前,遺傳算法作為一種重要的最優化方法得到廣泛應用。

​ 該算法的基本思想是模擬自然界優勝劣汰的進化現象,把搜索空間映射為遺傳空間,把可能的解編碼成一個向量——染色體,向量的每個元素稱為基因。通過不斷計算各染色體的適應度選擇最好的染色體,獲得最優解。

遺傳算法相關概念

下面介紹遺傳算法主要的相關概念,主要以二進制編碼為例。

個體——隨機產生n條染色體,也稱個體。以某種字符串形式的編碼表示,字符串中的字符也就稱為基因。雖然在生物學上染色體和個體是完全不同的兩個概念,但是在遺傳算法中表示的是同一件事,即待優化問題的n個解。

群體——即產生的n個個體合在一起稱之為群體。

基因、個體、群體

上圖表示解為二維變量基因、個體、群體的關系,其中A1、A2、A3、A4為個體。

選擇——選擇一些個體來產生下一代。一種常用的選擇策略是 “比例選擇”,也就是個體被選中的概率與其適應度函數值成正比。假設群體的個體總數是N,那么一個體\(x_i\)被選中的概率為\(P(x_i)=\frac{f(x_i)}{\sum_{i=1}^Nf(x_i)}\)。比例選擇算法就是所謂的“輪盤賭算法”。

輪盤賭示意圖

適應度函數——用於評價某個染色體的適應度,用\(f(x)\)表示。有時需要區分染色體的適應度函數與問題的目標函數。適應度函數與目標函數是正相關的,可對目標函數作一些變形來得到適應度函數。

交叉——對於選中用於繁殖下一代的個體(父代)隨機選擇部分染色體片段進行交換,產生子代。

變異——在遺傳算法中會對上步產生的子代以一定的概率進行基因突變,以獲取到更多不同的子代,即增加群體的多樣性。

交叉、變異

算法流程

  1. 置交叉發生的概率、種群規模、終止進化的代數等相關參數
  2. 隨機生成初始種群
  3. 計算適應度
  4. 判斷終止條件(一般為達到規定迭代次數、 適應度無顯著變化)
  5. 按照選擇策略,選擇用於生成子代的父代
  6. 交叉
  7. 對交叉產生的個體進行變異產生子代即新一代種群,回到3.
遺傳算法流程圖
本文部分內容參考:

http://wap.sciencenet.cn/blog-2970729-1219191.html?mobile=1
https://towardsdatascience.com/introduction-to-genetic-algorithms-including-example-code-e396e98d8bf3


免責聲明!

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



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