很好理解的遺傳演算法例項

2021-09-06 11:56:56 字數 2207 閱讀 5613

遺傳演算法的手工模擬計算演示例子

為更好地理解遺傳演算法的運算過程,以下用手工計算來簡單地模擬遺傳演算法的各

個主要執行步驟。

例:求下述二元函式的最大值:

(1) 個體編碼

遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1, x2 編碼為一種

符號串。本題中,用無符號二進位制整數來表示。

因 x1, x2 為 0 ~ 7之間的整數,所以分別用3位無符號二進位制整數來表示,將它

們連線在一起所組成的6位無符號二進位制數就形成了個體的基因型,表示乙個可

行解。比如,基因型 x=101110 所相應的表現型是:x=[ 5,6 ]。

個體的表現型x和基因型x之間可通過編碼和解碼程式相互轉換。

(2) 初始群體的產生

遺傳演算法是對群體進行的進化操作,須要給其淮備一些表示起始搜尋點的初始

群體資料。

本例中,群體規模的大小取為4,即群體由4個個體組成,每乙個個體可通過隨機

方法產生。

如:011101,101011,011100,111001

(3) 適應度汁算

遺傳演算法中以個體適應度的大小來評定各個個體的優劣程度,從而決定其遺傳

機會的大小。

本例中,目標函式總取非負值,而且是以求函式最大值為優化目標,故可直接

利用目標函式值作為個體的適應度。

(4)  選擇運算

選擇運算(或稱為複製運算)把當前群體中適應度較高的個體按某種規則或模型遺傳到下一代群體中。一般要求適應度較高的個體將有許多其他的機會遺傳到下一代

群體中。                   

本例中,我們採用與適應度成正比的概率來確定各個個體拷貝到下一代群體中

的數量。其詳細操作過程是:

•  先計算出群體中全部個體的適應度的總和  sfi  ( i=1.2,…,m );

•  其次計算出每乙個個體的相對適應度的大小 fi / sfi ,它即為每乙個個體被遺傳

到下一代群體中的概率,

•  每乙個概率值組成乙個區域,全部概率值之和為1;

•  最後再產生乙個0到1之間的隨機數,根據該隨機數出如今上述哪乙個概率區

域內來確定各個個體被選中的次數。

(5)  交叉運算

交叉運算是遺傳演算法中產生新個體的主要操作過程,它以某一概率相互交換某

兩個個體之間的部分染色體。

本例採用單點交叉的方法,其詳細操作過程是:

• 先對群體進行隨機配對;

• 其次隨機設定交叉點位置;

• 最後再相互交換配對染色體之間的部分基因。

(6)  變異運算

變異運算是對個體的某乙個或某一些基因座上的基因值按某一較小的概率進

行改變,它也是產生新個體的一種操作方法。

本例中,我們採用基本位變異的方法來進行變異運算,其詳細操作過程是:

• 首先確定出各個個體的基因變異位置,下表所看到的為隨機產生的變異點位置,

當中的數字表示變異點設定在該基因座處;

• 然後按照某一概率將變異點的原有基因值取反。

對群體p(t)進行一輪選擇、交叉、變異運算之後可得到新一代的群體p(t+1)。

從上表中能夠看出,群體經過一代進化之後,其適應度的最大值、平均值都得

到了明顯的改進。其實,這裡已經找到了最佳個體「111111」。       

[注意]      

須要說明的是,表中有些欄的資料是隨機產生的。這裡為了更好地說明問題,

我們特意選擇了一些較好的數值以便能夠得到較好的結果,而在實際運算過程中

有可能須要一定的迴圈次數才幹達到這個最優結果。

很好的理解遺傳演算法的樣例

遺傳演算法的手工模擬計算演示樣例 為更好地理解遺傳演算法的運算過程,以下用手工計算來簡單地模擬遺傳演算法的各 個主要執行步驟。例 求下述二元函式的最大值 1 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1,x2 編碼為一種 符號串。本題中,用無符號二進位制整數來表示。因 x1...

很好的理解遺傳演算法的樣例

遺傳演算法的手工模擬計算演示樣例 為更好地理解遺傳演算法的運算過程,以下用手工計算來簡單地模擬遺傳演算法的各 個主要執行步驟。例 求下述二元函式的最大值 1 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1,x2 編碼為一種 符號串。本題中,用無符號二進位制整數來表示。因 x1...

很好的理解遺傳演算法的樣例

遺傳演算法的手工模擬計算演示樣例 為更好地理解遺傳演算法的運算過程,以下用手工計算來簡單地模擬遺傳演算法的各 個主要執行步驟。例 求下述二元函式的最大值 1 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1,x2 編碼為一種 符號串。本題中,用無符號二進位制整數來表示。因 x1...