1. 程式人生 > >遺傳演算法(待續)

遺傳演算法(待續)

問題前瞻:

  1. 遺傳演算法為何稱為遺傳演算法?
  2. 編碼方式
  3. 目標函式
  4. 迭代方式
  5. 終止原則
  1. 名字由來 在二十世紀五十年代,生物學家已經知道基因在自然演化中的作用了,他們希望藉助計算機模擬這個過程,嘗試定量研究基因與進化之間的關係.這是遺傳演算法的濫觴.後來有人將其用於解決優化問題,於是產生了遺傳演算法. 遺傳演算法是一種隨機搜尋演算法,從達爾文進化論得到啟發,遵循“優勝劣汰、適者生存”的進化原則。 具體來講,模擬自然界生物種群的進化過程,通過選擇(Selection)、交叉(Crossoer)、變異(Mutation)等機制,在每次迭代中都保留一組適應性優勝的候選個體。重複此過程,經過若干代進化後,得到最優種群。
  2. 演算法組成 2.1 編碼方式–》創造染色體 實現遺傳演算法的第一步就是明確對待求解問題的編碼和解碼方式。編碼之後在解空間中尋找最優解的問題便轉換成了在編碼空間中尋找最優種群/染色體的問題。 對於函式優化,一般有兩種編碼方式,各具有優缺點 a.實數編碼:直接用實數表示基因,容易理解且無需解碼。但容易過早收斂,從而陷入局優。 b.二進位制編碼:穩定性高,種群多樣性大,但所需儲存空間大,需解碼難理解 eg:f(x), x∈[a, b] 一般化解碼公式: x = a + decimal (chromosome)*(b -a)/(2^chromosome_size - 1) a:函式定義域下限 b:函式定義域上限 chromosome:染色體長度

關於個體和染色體: 一個二進位制序列代表一條染色體,個體是染色體的載體蘊含一條染色體,他們都和解空間中的一個可行解對應.官方說法:每個個體實際上是染色體帶有特徵的實體. 2.2 適應度函式 即優化理論中的目標函式.是遺傳算法系統進化的驅動力,進行自然選擇的唯一標準. 他的設計應該具體問題具體制定.

2.3 遺傳運算元之選擇(淘汰不好的) 遺傳運算元賦予種群進化的能力. 選擇是怎樣的機制呢? 每一次迭代種群都會發生變化,具體表現為個體的進出.選擇機制便是從前代種群中挑選出基因優良(適應度高)的多對個體,採用類似於交配的方式使他們優良的基因得以延續. 該如何選擇能保證存優以及利於演算法的收斂性和穩定性呢? a.在選擇之前先對種群中個體按照適應度排序 b.採用輪盤賭(當然還有很多別的選擇),各個個體被選中的概率與其適應度函式值大小成正比. c.除了輪盤賭這種依託概率的隨機選擇方式,還有精英機制:將前代最優個體直接選擇.

2.4 遺傳運算元之交叉(產生新的) 交叉是怎麼的機制呢?//聽起來像是自然界中的交配 兩個待交叉的不同染色體(父母)根據交叉概率按某種方式交換其部分基因 具體怎麼交換呢? 比如:單點交叉法: 2.5 遺傳運算元之變異 變異是什麼機制呢 類似於自然界中的基因突變(為基因多樣性/種群多樣性提供了源頭).我們這裡的人工染色體也將以某種概率發生變異. 怎麼實現? 比如採用單點變異法.

2.6 終止條件 最簡單的方式:限制迭代次數

  1. 評價 優點: a.收斂比較快:相對較短時間內給出一個足夠好的解答 b. c. d. 缺點: a.早熟:早起的優勢基因很快通過交叉散播到整個種群中,使得整個種群過早同一化 b. c.