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