最近在寫自己的小論文,想用遺傳算法的東西來改進自己的算法,所以要認真學習一下。
進化算法就是一種對給定問題求最優解的隨機搜索方法。該進化搜索主要受到一下幾個部分的影響:
編碼:與染色體一樣,對問題的編解碼
適應度函數:用於求適應度的函數,表示個體的生存能力
初始化:種羣的初始化
選擇:選擇算子
繁殖:繁殖算子
進化算法各部分實現的不同,會形成不同的進化計算方法:
遺傳算法(Genetic Algorithm GA),以基因進化爲模型
遺傳編程(Genetic Programming GP),以遺傳算法爲模型,但個體爲程序,表示爲樹
進化規劃(Evolutionary Programming EP),對進化中自適應行爲的模擬(如表型進化)
進化策略(Evolution Strategies, ES),用於對進化過程中的控制變量進行建模,如進化的進化
差分進化(Differential Evolution, DE),類似於遺傳算法,不同之處在其所使用繁殖機制
文化進化(Cultural Evolution,EC),用於對種羣文化的進化及對文化如何影響個體的基因和表現型的進化的建模
協同進化(Co-evolution,CoE), 模擬初始“愚蠢的”個體如何通過合作或者競爭來獲取必要性狀得意生存的進化過程。
染色體的表示
在進化計算中,每個個體都代表一個優化問題的備選解。性狀是指最優化問題所搜索的變量,每個需要優化的變量被稱爲基因。在設計進化算法中,一個重要的步驟是找到備選解的合適的表示方案,如染色體。遺傳算法的經典表示形式是一個定長二進制向量。在
如果變量爲0/1類型,則染色體的長度爲
初始種羣
進化算法是一種基於種羣的隨機搜索算法。產生初始種羣的標準方法是在可行域中產生隨機值,並分配給每個染色體的每個基因。初始種羣的大小會影響計算複雜性和空間探索能力。
適應度函數
適應度函數可以用目標函數來表示,它描述了最優化問題。目標函數所期待的輸入數據表示形式不一定與染色體的表示形式一致,若不一致,則需要一組更完整的適應度函數。適應度函數的形式有,無約束優化問題,帶約束優化問題,多目標優化問題,動態噪聲問題。