遺傳起源
它起源於達爾文的演化論,是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型。
主要特點
其主要特點是群體搜尋策略和群體中個體之間的資訊交換,搜尋不以梯度資訊為基礎。
用途它尤其適用於處理傳統搜尋方法難於解決的複雜和非線性問題,可廣泛應用於組合優化、機器學習、自適應控制、
規劃設計和人工生命等領域。
演算法原理
1.基本術語
1)初始種群:原始個體的集合。
2)編碼:問題引數按某種形式編制的**。
3)染色體:編碼後的串,也叫個體。
4)基因:染色體編碼中的位。
5)適應度:個體適應環境的能力,常用適應度函式值表示,是區分群體中個體優
劣的標準。
6)遺傳運算元:產生新一代群體的方法,主要包括選擇運算元、交叉運算元和變異運算元。
7)複製:通過遺傳運算元,選擇適應度高的染色體作為下一代
2.編碼
編碼機制是遺傳演算法的基礎。遺傳演算法不是對研究物件直接進行討論,而是通過某種編碼機制把物件統一賦予由特定符號(字母)按一定順序排成的串。遺傳演算法從代表問題可能潛在解集的乙個種群開始的,而乙個種群則由經過基因(gene)編碼(coding)的一定數目的個體(individual)組成,每個個體實際上是染色體(chromosome)帶有特徵的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因組合,它決定了個體的形狀和外部表現。因此,在一開始需要實現從表現型到基因型的對映即編碼工作。由於仿照基因編碼的工作很複雜,我們往往進行簡化,如二進位制形式,實值編碼和知識編
3.適應度函式
ga 淘汰個體的原則是適應能力的強弱。個體的適應能力以適應度函式 f ( x )的值來判別的,這個值稱為適應度值(fitness)。
f ( x )的構成與目標函式有關,往往是目標函式的變種。適應度函式的處理有:目標函式的確定、目標函式到適應度函式的對映、適應度值
調整等。目標函式與具體問題緊密相關。
4.遺傳運算元
選擇運算元的作用就是依據「適者生存」的原則,按照種群中各個個體的適應度從種群中挑選一部分個體複製給下一代。選擇操作要考慮到選擇的個體數量和選擇哪些個體
的問題。主要運用的方法有:輪盤賭選擇、隨機遍歷抽樣、區域性選擇、截斷選擇、錦標賽選擇等。
交叉運算元又稱重組(recombination)運算元或配對(breeding)運算元。當許多染色體相同或後代的染色體與上代差別不大時,可通過染色體交叉產生新一代染色體。
交叉操作分兩步進行:首先,按交叉概率cp (0.6~0.9)選取兩個染色體,每個染色體由多個位(基因)組成。然後,沿著兩個染色體的基因按照一定策略進行互換,得到兩
個新的染色體。交叉策略包括位交叉、段交叉和部分匹配交叉等。
位交叉:隨機選擇一對個體的乙個或多個位進行基因互換。
段交叉:將乙個個體中的一段與另乙個體中的相應段互換。
部分匹配交叉:兩個染色體互換乙個基因段,並將染色體其他段中與交換段中相同的基因反交換為被交換段中相應位的基因。
變異操作增加了 ga 尋找到最優解的能力,與選擇、交叉運算元結合在一起,避免了選擇運算元和交叉運算元引起的某些資訊永久性丟失,保證了 ga 的有效性。變異發生的概
率mp 極低,一般在 0.01 到 0.2 之間。
變異操作一般方法是:根據mp 確定要變異的個體,選擇乙個個體,隨機地選擇乙個變異基因。若為二進位制編碼,將變異位上 0 換為 1 或 1 換為 0;若是實值編碼,將變異
位換為乙個隨機數。重複上述步驟,直到所有要變異的個體完成變異。
遺傳演算法是模擬生物在自然環境中的遺傳和進化過程而形成的一種並行全域性搜尋
演算法。演算法描述如下:
步驟 1:隨機產生種群,個體數目一定,每個個體表示為染色體的基因編碼;
步驟 2:計算個體的適應度,並判斷是否符合優化準則,若符合,輸出最佳個體及
其代表的最優解,並結束計算;否則轉向第三步;
步驟 3:依據適應度選擇再生個體,適應度高的個體被選中的概率高,適應度低的
個體可能被淘汰;
步驟 4:按照一定的交叉概率和交叉方法,生成新的個體;
步驟 5:按照一定的變異概率和變異方法,生成新的個體;
步驟 6:由交叉和變異產生新一代種群,返回第二步。
遺傳演算法中的優化準則,一般依據問題的不同有不同的確定方式。例如:可以採用
以下準則之一作為判斷條件:
1.種群中個體的最大適應度超過預先設定值;
2.種群中個體的平均適應度超過預先設定值;
3.世代數超過預先設定值;
GenSample演算法初讀 遺傳演算法初識
之前對於遺傳演算法的學習有些囫圇吞棗,知道大致思想是自然選擇 優勝劣汰,通過大自然一代又一代的選擇將適合的基因和物種逐漸保留下來,但是中間過程是如何實現的卻並不清楚。這次有緣讀了加利福尼亞大學幾位老師寫的關於在不平衡資料集上進行過取樣相關的 他們巧妙地將遺傳演算法用於過取樣的過程中,生成了一種新取樣...
python遺傳演算法 Python 遺傳演算法實現
關於遺傳演算法 遺傳演算法是仿照自然界中生物進化而產生的一類優化演算法。個人感覺遺傳演算法簡單粗暴,適應性廣。關於遺傳演算法的介紹網上有很多了,這裡按照我自己的理解簡單概括一下。編碼解碼,將待優化的引數編碼為dna序列,最簡單直接的為二進位制編碼 即有兩種鹼基的dna鏈 生成隨機初代 選擇,適應度 ...
遺傳演算法 python 簡書 遺傳演算法
優化的演算法有很多種,從最基本的梯度下降法到現在的一些啟發式演算法,如遺傳演算法 ga 差分演化演算法 de 粒子群演算法 pso 和人工蜂群演算法 abc 舉乙個例子,遺傳演算法和梯度下降 梯度下降和遺傳演算法都是優化演算法,而梯度下降只是其中最基礎的那乙個,它依靠梯度與方向導數的關係計算出最優值...