1. 程式人生 > >進化計算讀書筆記(二)

進化計算讀書筆記(二)

第二章 進化計算的基本原理

2.1 經典遺傳演算法

1.二進位制編碼

​ 一個串長為m的二進位制數b1b2...bmb_1b_2...b_m,其中bi=0b_i=0或1,i=1,…,m,其表示的最小整數為0,最大整數為11...1=2m111...1=2^m-1。共可以表示2m2^m個整數,分別為0,1,…,2m12^m-1

​ 假設變數x變化範圍為x[a,b]x \in [a,b],解得精度為10α10^{-\alpha}。將[a,b]的兩個等分為若干個小區間,只用二進位制數表示等分點和區間的端點。為達到精度要求,只要將[a,b]等分成(b-a)*1

0α10^{\alpha}個小區間。將等分點(包括端點)的最好點作為解得近似,則最優解和最好點的距離不超過精度。m應滿足(ba)×10α+12m(b-a) \times 10^\alpha+1 \le 2^m,同時m-1應滿足:$2^{m-1}<(b-a) \times 10^\alpha+1 $,因此m應該滿足$2^{m-1}-1<(b-a) \times 10^\alpha\le 2^m-1 $

編碼方法:m位二進位制數中最小為0,最大為2m12^m-1,共2m2^m個整數,故當二進位制的位數為m時,用[0,2m1][0,2^m-1]

]便可表示所有的整數。將m位的整數與[a,b]中的等分點一一對應。

解碼方法:設B=bm1bm2...b0B=b_{m-1}b_{m-2}...b_{0}為任一個m位的二進位制數,則B對應的十進位制數為x1=i=0m1bi2ix^1=\sum_{i=0}^{m-1}b_i2^i。用如下變換將x1x^1對應於[a,b]中的等分點x,x=a+(ba)×x!/(2m1)x=a+(b-a)\times x^!/(2^m-1)

2.初始群體

隨機產生N個m位的二進位制數。N稱為群體規模。

3.適應度函式

比偶較常見的取法:

對於maxf(x)\max f(x),取Fit(x)=f(x)fminFit(x)=f(x)-f_{min},其中,fminf_{min}f(x)f(x)的下界。

對於minf(x)\min f(x),取Fit(x)=fmaxf(x)Fit(x)=f_{max}-f(x),其中,fmaxf_{max}f(x)f(x)的上界。

一般要滿足:取正值,x越好,Fit(x)越大。

4.選擇運算元(賭輪選擇方法)

(1)準備

​ 計算群體中每個個體xix_i被選擇的概率,即pi=Fit(xi)/j=1NFit(xj)p_i=Fit(x_i)/\sum_{j=1}^NFit(x_j)

注意pi0,andp1+p2+...+pN=1p_i \ge 0,and\quad p_1+p_2+...+p_N=1

​ 計算xix_i的累加概率,即qi=j=1ip(j),i=1,2,3,...,Nq_i=\sum_{j=1}^ip(j),i=1,2,3,...,N

(2)選擇

​ 根據概率將圓盤形的賭輪等分成N個扇形,在進行選擇時,可假象隨機轉動一下賭輪,若指標落入第r個扇形內,則選擇個體xrx_r。這樣,重複N次,便可選出N個個體。

​ 上述可用以下數學方法在計算機上實現。將[0,1]區間依次分成長度為p1p1...pNp_1p_1...p_N的小區間,按均勻分佈在[0,1]中產生一個隨機數,這個數落在第幾個小區間,就選擇第幾個個體參加交叉。(例如,r&lt;q1r&lt;q_1,則選擇x1x_1,若qi1rqi,i&gt;1q_{i-1} \le r\le q_i,i&gt;1則選擇xix_i參加遺傳)這樣,重複N次,便可選出N個個體。

​ 這種選擇的特點是:個體適應度越大,他被選擇的機會越多。

5.遺傳運算元

(3)交叉

​ 我們以單點交叉為例:假設x1=000101001...1,x2=110010110...0x_1=000101001...1,x_2=110010110...0是被選擇交叉的一對,他們的串長為l,隨機選取1,…,l-1位中的一位,如第k位(從左往右),交換第k位右端部分的二進位制串後得到兩個後代。

(4)變異

​ 先取定變異概率pmp_m(一般較小,pm0.05p_m \le0.05),對交叉後代集中每個後代的每一位,產生一個隨機數r[0,1]r \sub[0,1],若rpmr \le p_m,則將該位取反,否則該位不變。(或對每一個個體產生一個隨機數若該個體被選中,隨機選擇一位進行變異)

6.選擇下一代群體P(t+1)

​ 在P(t)O1,...,ONP(t) \cup {O_1,...,O_N}中按照某種法則選出N個個體,組成下一代群體P(t+1)。(比如選出最好的個體等等)

2.2 模式定理

​ 模式定理證明群體中適應度高的個體,其生存的機會概率就可能高。

1.概念

(1)萬用字元(或無關符或任意符)。在一個{0,1,*}中組成的字串中,*叫做萬用字元,它既可以表示0,也可以表示1。因此它是不確定字元。

(2)模式(schema)。一個由{0,1,*}中字元構成的字串稱為模式,它表示將字串中的每一個*都用0和1替換後所得的所有可能的字串的集合。記作HH

(3)模式階(schema order)。模式HH中確定字元(0和1)的個數稱為模式的H的階,記作O(H)O(H)

(4)定義距(defining length)。模式HH中的第一個(最左邊)確定字元的位置到最後一個確定字元的位置間的距離,即最後一個確定字元(0或1)的位數(從左算起)減去第一個確定字元的位數,記作δ(H)\delta(H)

2.模式定理

定義:設P(t)=x1,x2,...,xNP(t)={x^1,x^2,...,x^N}表示第t代群體,Fit(x)為適應度函式,則稱

f(H,t)=1Hp(t)xHP(t)Fit(x)f(H,t)=\frac 1 {\vert H\cap p(t) \ \vert }\sum_{x \sub H\cap P(t)}Fit(x)

為模式HH的平均適應度。其中,Hp(t){\vert H\cap p(t) \ \vert }表示$H\cap p(t) P(t)中元素的個數,即P(t)中含有H$中元素的個數。

模式定理:設經典遺傳演算法的交叉和變異概率分別為