1. 程式人生 > >一個例子理清楚遺傳演算法

一個例子理清楚遺傳演算法

一、 遺傳演算法的三個主要操作

1、選擇
2、交配
3、變異

遺傳演算法廣泛的應用於最優化問題求解之中!

簡單遺傳演算法SGA的實現步驟:
1、編碼
2、評價
3、適應函式
4、交配規則
5、停止條件

二、選擇採用的演算法

採用確定性演算法:

這裡寫圖片描述

交配規則:

這裡寫圖片描述

變異:
就是將隨機指定某個位進行變異,0變成1,1變成0!目的是近親繁殖的時候出來的資料變化不大,需要變異新的基因以跳出區域性最優解。

例題

這裡寫圖片描述

1、編碼:採用二進位制形式編碼,由於變數的最大值31,固採用5個位即可表達全部的值。

由於x的定義域是[0, 31]間的整數,剛好可以用5位二進位制數表示,因此可以用5位二進位制數表示該問題的解,即染色體。如00000表示x=0,10101表示x=21,11111表示x=31等。 

2、適應函式,這裡可以直接採用f(x)上面的函式作為適應函式。
假設群體的規模N=4,交配概率Pc=100%,變異概率Pm=1%。
設隨機生成的初始群體為:
01101,11000,01000,10011
這裡選擇的演算法採用上面的確定演算法:得到第0代如下
這裡寫圖片描述

配對進行交配,其中交配位是隨機選擇的rand(5):位的話是從左邊往右邊數。

這裡寫圖片描述

交配的結果得到第一代的情況表:

這裡寫圖片描述

繼續交配:

這裡寫圖片描述

由第1代和第0代的結果可知交配結果變化不是很大,因而需要選擇變異!
變異位也是隨機。

這裡寫圖片描述

得到第二代的情況表:

這裡寫圖片描述

交配結果:

這裡寫圖片描述

看到下面的圖,平均值已經趨近於平緩,因此可以停止交配,關於停止交配的終止條件可以是:1、到達設定的迭代次數,2、輸出結果日漸平緩
這裡寫圖片描述

最後得到的問題最優解為:
x:11111
對應的整數是x=31