參考:http://blog.sina.com.cn/s/blog_67c17d1c01017hyt.html
1、基本思想:個體被選中的概率與其適應度函數值成正比
設群體大小為n,個體i的適應度為Fi,則個體i被選中遺傳到下一代群體的概率為:
2、工作過程:
設想群體全部個體的適當性分數由一張餅圖來代表 (見圖)。
群體中每一染色體指定餅圖中一個小塊。塊的大小與染色體的適應性分數成比例,適應性分數愈高,它在餅圖中對應的小塊所占面積也愈大。為了選取一個染色體,要做的就是旋轉這個輪子,直到輪盤停止時,看指針停止在哪一塊上,就選中與它對應的那個染色體。
若產生的隨機數是0.81,則6號個體被選中。
由此可以看出:
1、輪盤賭算法與個體的排列順序有關;
c++實現:
int RouletteWheelSelection() { srand(0);//定義rand觸發隨機值得初始值
double m=rand()/double(RAND_MAX); //產生一個[0,1)的隨機值;
int Probability_Total=0; int Selection=0
for(int i=0;i<SIZE;i++) //SIZE是個體數量的大小 { Probability_Total=Probability_Total+Probability[i]; if(Probability_Total>=m) { Selection=i; break; } return Selection; }