輪盤賭隨機選擇算法


本文轉載自 https://my.oschina.net/u/1412321/blog/192454

一、遺傳算法的應用

函數優化(遺傳算法的經典應用領域);
組合優化(實踐證明,遺傳算法對於組合優化中的NP完全問題,如0-1背包問題,TSP等,非常有效);
自動控制;

機器人智能控制;

組合圖像處理和模式識別;

人工生命;

遺傳程序設計;



二、遺傳學基本概念與術語

基因型(genotype):性狀染色體的內部表現;

表現型(phenotype):染色體決定性狀的外部表現,或者說,根據基因型形成的個體;

進化(evolution):逐漸適應生存環境,品質不斷得到改良。生物的進化是以種群的形式進行的。

適應度(fitness):度量某個物種對於生存環境的適應程度。

選擇(selection):以一定的概率從種群中選擇若干個個體。一般,選擇過程是一種基於適應度的優勝劣汰的過程。

復制(reproduction):細胞分裂時,遺傳物質DNA通過復制而轉移到新產生的細胞中,新細胞就繼承了舊細胞的基因。

交叉(crossover):兩個染色體的某一相同位置處DNA被切斷,前后兩串分別交叉組合形成兩個新的染色體。也稱基因重組或雜交;

變異(mutation):復制時可能(很小的概率)產生某些復制差錯,變異產生新的染色體,表現出新的性狀。

編碼(coding):DNA中遺傳信息在一個長鏈上按一定的模式排列。

          遺傳編碼可看作從表現型到基因型的映射。

解碼(decoding):基因型到表現型的映射。

個體(individual):指染色體帶有特征的實體;
種群(population):個體的集合,該集合內個體數稱為種群的大小;



三、遺傳算法的基本思路


在開始介紹一個實例之前,有必要了解一下輪盤賭選擇法,因為基本遺傳算法就是用的這個選擇策略。

輪盤賭選擇
又稱比例選擇方法.其基本思想是:各個個體被選中的概率與其適應度大小成正比.

具體操作如下:
(1)計算出群體中每個個體的適應度f(i=1,2,…,M),M為群體大小;
(2)計算出每個個體被遺傳到下一代群體中的概率;

       

(3)計算出每個個體的累積概率;

       (q[i]稱為染色體x[i] (i=1, 2, …, n)的積累概率)

     

(4)在[0,1]區間內產生一個均勻分布的偽隨機數r;
(5)若r<q[1],則選擇個體1,否則,選擇個體k,使得:q[k-1]<r≤q[k] 成立;
(6)重復(4)、(5)共M次



四、一個簡單的實例

1. 產生初始種群

s1= 13 (01101)

s2= 24 (11000) 

s3= 8   (01000)

s4= 19 (10011)


2. 計算適應度

假定適應度為f(s)=s^2 ,則

f (s1) = f(13) = 13^2 = 169

f (s2) = f(24) = 24^2 = 576

f (s3) = f(8) = 8^2 = 64

f (s4) = f(19) = 19^2 = 361

3. 選擇

染色體的選擇概率為:

染色體的累計概率為:

根據上面的式子,可得到:

例如設從區間[0, 1]中產生4個隨機數: 

   r1 = 0.450126,    r2 = 0.110347 

   r3 = 0.572496,    r4 = 0.98503 

4. 交叉

基本遺傳算法(SGA)中交叉算子采用單點交叉算子。

單點交叉運算

5. 變異

6. 至下一代,適應度計算→選擇→交叉→變異,直至滿足終止條件


五、遺傳算法應用

這里使用具體的應用例子:函數優化

  • 問題的提出

     一元函數求最大值:

用微分法求取f(x)的最大值:

可求得最大值點:f(1.85)=3.85

0. 編碼

     表現型:x
     基因型:二進制編碼(串長取決於求解精度)
     串長與精度之間的關系:
     若要求求解精度到6位小數,區間長度為2-(-1)=3,即需將區間分為3/0.000001=3&times;106等份。
          所以編碼的二進制串長應為22位。

1. 產生初始種群

     產生的方式:隨機
     產生的結果:長度為22的二進制串
     產生的數量:種群的大小(規模),如30,50,…
          1111010011100001011000
          1100110011101010101110
          1010100011110010000100
          1011110010011100111001  
          0001100101001100000011    
          0000011010010000000000

2. 計算適應度

     不同的問題有不同的適應度計算方法
     本例:直接用目標函數作為適應度函數
     ①將某個體轉化為[-1,2]區間的實數:
        s=<1000101110110101000111> → x=0.637197
     ②計算x的函數值(適應度):
        f(x)=xsin(10πx)+2.0=2.586345

     (0000000000000000000000)→-1
     (1111111111111111111111)→2

     上面的①其實就是二進制與十進制之間的轉換:
     第一步,將一個二進制串(b21b20…b0)轉化為10進制數:
        

      第二步,x’對應的區間[-1,2]內的實數:

     

3. 遺傳操作

    選擇:輪盤賭選擇法;
    交叉:單點交叉;
    變異:小概率變異

  • 模擬結果

     設置的參數:
     種群大小50;交叉概率0.75;變異概率0.05;最大代數200。
     得到的最佳個體:
     smax=<1111001100111011111100>;
     xmax=1.8506;
     f(xmax)=3.8503;

  • 運行結果



六、總結

編碼原則
完備性(completeness):問題空間的所有解都能表示為所設計的基因型;
健全性(soundness):任何一個基因型都對應於一個可能解;
非冗余性(non-redundancy):問題空間和表達空間一一對應。

適應度函數的重要性
     適應度函數的選取直接影響遺傳算法的收斂速度以及能否找到最優解。
     一般而言,適應度函數是由目標函數變換而成的,對目標函數值域的某種映射變換稱為適應度的尺度變換(fitness scaling)。

適應度函數設計不當有可能出現欺騙問題:
(1)進化初期,個別超常個體控制選擇過程;
(2)進化末期,個體差異太小導致陷入局部極值。

欺騙問題舉例:

可以想象一下,假設地球像類似災難電影《后天》一樣,出現有毒的霧霾,喜馬拉雅山脈下有100只猴子(種群大小),只有爬上珠穆朗瑪峰頂端的猴子才能生存下來,

因為喜馬拉雅山脈有很多山峰,我們以高度作為適應度,case(1):如果不在珠峰的猴子若比在珠峰半山腰的猴子要高,因為種群大小不變,在珠峰的猴子可能就會被淘汰;

case(2):100只猴子都不在珠峰;

1. 選擇的作用:優勝劣汰,適者生存;

2. 交叉的作用:保證種群的穩定性,朝着最優解的方向進化;

3. 變異的作用:保證種群的多樣性,避免交叉可能產生的局部收斂;

下圖很好地表現了遺傳算法的精髓。

遺傳算法的特點

  • 自組織、自適應和自學習性
    在編碼方案、適應度函數及遺傳算子確定后,算法將利用進化過程中獲得的信息自行組織搜索。

  • 本質並行性
    內在並行性與內含並行性

  • 不需求導
    只需目標函數和適應度函數

  • 概率轉換規則
    強調概率轉換規則,而不是確定的轉換規則


七、補充

因為遺傳算法的每個操作對不同的應用選擇的策略各有優劣,所以具體情況,具體分析,在此附上:

1. 選擇

適應度計算:
按比例的適應度函數(proportional fitness assignment)
基於排序的適應度計算(Rank-based fitness assignment)

選擇算法:
輪盤賭選擇(roulette wheel selection)

隨機遍歷抽樣(stochastic universal selection)
局部選擇(local selection)
截斷選擇(truncation selection)
錦標賽選擇(tournament selection)

2. 交叉

因為編碼分二進制和浮點數編碼,所以交叉和變異都有兩類;

實值重組(real valued recombination):

離散重組(discrete recombination)

中間重組(intermediate recombination)

線性重組(linear recombination)

擴展線性重組(extended linear recombination)

二進制交叉(binary valued crossover):

單點交叉(single-point crossover)

多點交叉(multiple-point crossover)

均勻交叉(uniform crossover)

洗牌交叉(shuffle crossover)

縮小代理交叉(crossover with reduced surrogate)

3. 變異

實值變異
二進制變異

另外,遺傳算法背后的理論支撐——模式定理,可以在對遺傳算法有深入研究和優化的時候再詳看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM