轮盘赌算法原理
輪盤賭算法的基本思想是:各個(gè)個(gè)體被選中的概率與其適應(yīng)度函數(shù)值大小成正比,它是為了防止適應(yīng)度數(shù)值較小的個(gè)體被直接淘汰而提出的。
為了弄清輪盤賭算法,我搜集了相關(guān)的文獻(xiàn)和教材,發(fā)現(xiàn)很多文章都喜歡把輪盤賭算法與遺傳算法、蟻群算法、蜂群算法等混入一起來(lái)解釋,這樣輪盤賭算法中就會(huì)冒出什么染色體、遺傳下一代、信息正反饋、信息素、雇傭蜂等詞語(yǔ),看起來(lái)“高大上”,這樣也使得簡(jiǎn)單實(shí)用的輪盤賭算法在理解和實(shí)現(xiàn)上都變得復(fù)雜。話說(shuō),輪盤賭算法是可以應(yīng)用到遺傳算法、蟻群算法中去,但其算法的機(jī)理和遺傳算法、蟻群算法是相互獨(dú)立的,它的實(shí)現(xiàn)機(jī)理和遺傳算法、蟻群算法、蜂群算法等沒有任何關(guān)系,也沒有什么染色體、遺傳下一代、信息正反饋等高大上的詞匯。
輪盤賭算法的核心在于兩個(gè)概率和個(gè)體選擇策略:
(1)個(gè)體選擇概率
(2)累積概率
(3)如何選擇某個(gè)個(gè)體
1、個(gè)體個(gè)體選擇概率比較好理解,適應(yīng)度數(shù)值越高,它被選中的概率就越大,使用以下公式來(lái)表示。
其中,xi為某個(gè)個(gè)體。
2、累積概率把各個(gè)個(gè)體的概率使用不同長(zhǎng)度的線段來(lái)表示,這些線段組合成一條直線,直線的長(zhǎng)度為1(各個(gè)個(gè)體概率之和),這樣在該直線中,某段的線段最長(zhǎng),就代表該個(gè)體被選中的概率越大。它的機(jī)理為:
(一)任意選擇所有個(gè)體的一個(gè)排列序列(這個(gè)序列可以隨便排,因?yàn)槭悄尘€段之間的長(zhǎng)度為代表某個(gè)體的選擇概率)
(二)任意個(gè)體的累積概率為該個(gè)體對(duì)應(yīng)的前幾項(xiàng)數(shù)據(jù)的累加和。
某個(gè)個(gè)體的累加概率公式如下:
這樣,如果某個(gè)個(gè)體的適應(yīng)度數(shù)值高,它所對(duì)應(yīng)的個(gè)體選擇概率就會(huì)越大,通過累積概率轉(zhuǎn)換后對(duì)應(yīng)的線段會(huì)越長(zhǎng)。
?
3、選擇某個(gè)個(gè)體策略為在區(qū)間[0 1]中隨機(jī)產(chǎn)生一個(gè)數(shù),看看該數(shù)字落在那個(gè)區(qū)間,很明顯,對(duì)于適應(yīng)度值較大的個(gè)體,對(duì)應(yīng)的線段長(zhǎng)度會(huì)長(zhǎng),這樣隨機(jī)產(chǎn)生的數(shù)字落在此區(qū)間的概率就大,該個(gè)體被選中的概率也大。同時(shí),對(duì)于適應(yīng)度較小的個(gè)體,線段長(zhǎng)度會(huì)相對(duì)較短,隨機(jī)數(shù)字在該區(qū)間的概率相對(duì)較小,但是也有被選中的可能,避免了適應(yīng)度數(shù)值較小的個(gè)體被直接淘汰的問題。
綜上,輪盤賭算法的實(shí)現(xiàn)步驟為
(i)初始化各個(gè)個(gè)體的適應(yīng)度值(適應(yīng)度值就是某個(gè)數(shù)值,什么數(shù)據(jù)都可以,只是對(duì)于不同的問題,這個(gè)適應(yīng)度值代表的意義不一樣)
(ii)根據(jù)公式計(jì)算各個(gè)個(gè)體的個(gè)體選擇概率和累積概率
(iii)在區(qū)間[0 1]之間隨機(jī)生成一個(gè)數(shù),判斷該數(shù)落在哪個(gè)區(qū)間內(nèi),如果落在某個(gè)區(qū)間,則該區(qū)間被選中。
例子:使用輪盤賭算法根據(jù)各個(gè)個(gè)體被選中的概率與其適應(yīng)度函數(shù)值大小成正比原理,使用了[0.23 0.65 0.38 0.96 0.14 0.76 0.99 0.76 0.56 0.77];%10個(gè)模擬適應(yīng)度值做了實(shí)驗(yàn),計(jì)算了3次,每次循環(huán)100次。根據(jù)算法思想應(yīng)該為適應(yīng)度值越大,該個(gè)體被選擇的概率也就越大,也就是說(shuō)這100次中該個(gè)體被選中的次數(shù)應(yīng)該越多。
第一次: 3 8 8 16 3 17 19 9 3 14
第二次: 2 10 8 15 1 8 18 12 11 15
第三次: 4 15 3 19 6 8 14 13 9 9
可以看到,對(duì)于適應(yīng)度值為0.14的個(gè)體,這3次中選中的次數(shù)分別為:3、1、6,而對(duì)于適應(yīng)度為0.99的個(gè)體,這3次中選中的次數(shù)分別為:19,18,14。基本滿足了輪盤賭算法的原理。輪盤賭算法matlab實(shí)現(xiàn)的代碼如下,由于每次的判斷數(shù)都是隨機(jī)的,大家使用的該算法得到的測(cè)試結(jié)果肯定和上面3次的效果不一樣,每次但是適應(yīng)度大的個(gè)體被選中的次數(shù)一般都會(huì)多于適應(yīng)度較小的個(gè)體。
總結(jié)
- 上一篇: matlab多维数组
- 下一篇: 插值,拟合,逼近的区别理解