本發(fā)明涉及一種花朵授粉算法的優(yōu)化方法,尤其是涉一種基于自適應(yīng)高斯變異的花朵授粉算法的優(yōu)化方法。
背景技術(shù):
優(yōu)化問(wèn)題中最核心問(wèn)題是在可行域中求解其全局最優(yōu)解或最優(yōu)解集,然后在從這些最優(yōu)解或解集中找到問(wèn)題的最優(yōu)解。然而隨著問(wèn)題規(guī)模的擴(kuò)大,求解所需的時(shí)間成指數(shù)倍增加,或是對(duì)優(yōu)化函數(shù)要求連續(xù)可導(dǎo)等,因此,開發(fā)簡(jiǎn)單高效的優(yōu)化算法是研究者們的關(guān)注的焦點(diǎn)?;诜律鷮W(xué)的群智能優(yōu)化算法是解決優(yōu)化問(wèn)題簡(jiǎn)單有效的途徑,群智能算法是模擬生物界中某種生物的某些行為特征用于解決現(xiàn)實(shí)中的實(shí)際優(yōu)化問(wèn)題。
花朵授粉算法(Flower Pollination Algorithm,FPA)是一種全局隨機(jī)優(yōu)化算法。FPA假設(shè)每棵植物僅開一朵花,每朵花只產(chǎn)生一個(gè)花粉配子,且每朵花為求解優(yōu)化問(wèn)題的一個(gè)解,通過(guò)概率PC控制交叉授粉和自花授粉之間的轉(zhuǎn)換。該算法的主要思想:首先初始化種群,然后對(duì)種群個(gè)體進(jìn)行適應(yīng)值評(píng)價(jià),找出適應(yīng)值最優(yōu)的個(gè)體作為當(dāng)前全局最優(yōu)解,最后不斷迭代執(zhí)行交叉授粉和自花授粉兩個(gè)操作算子,直到滿足收斂條件為止。該算法采用萊維(Levy)飛行機(jī)制,通過(guò)參數(shù)PC較好地實(shí)現(xiàn)了局部搜索與全局搜索的自由轉(zhuǎn)換,具有較強(qiáng)的全局尋優(yōu)能力。同時(shí)該算法融合了布谷鳥和蝙蝠算法(Bat Algorithm,BA)的優(yōu)點(diǎn),具有參數(shù)少、實(shí)現(xiàn)簡(jiǎn)單、易調(diào)節(jié)等優(yōu)點(diǎn),因此被廣泛應(yīng)用于多目標(biāo)函數(shù)優(yōu)化、生產(chǎn)調(diào)度、文本聚類等多領(lǐng)域。
然而該算法與其他群智能算法(粒子群、蝙蝠算法等)類似,存在(1)局部深度搜索能力差、尋優(yōu)精度低;(2)易陷入局部最優(yōu)、后期收斂速度慢等問(wèn)題;(3)同時(shí)該算法不適用于高維復(fù)雜多極值函數(shù)優(yōu)化問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明的目的是提供一種基于自適應(yīng)高斯變異的花朵授粉算法的優(yōu)化方法,解決花朵授粉算法局部深度搜索能力弱、易陷入局部最優(yōu)、后期收斂速度慢的問(wèn)題。
本發(fā)明技術(shù)方案如下:一種基于自適應(yīng)高斯變異的花朵授粉算法的優(yōu)化方法,依次包括以下步驟,
步驟一、初始化基本參數(shù)和種群位置,包括設(shè)置種群規(guī)模為NP,最大迭代次數(shù)為itermax,交叉授粉概率PC、最小收斂精度Fmin以及搜索空間D;在D維空間中隨機(jī)生成NP個(gè)點(diǎn)作為初始種群其中t為當(dāng)前迭代次數(shù)
步驟二、計(jì)算個(gè)體適應(yīng)度值,確定當(dāng)前全局最優(yōu)個(gè)體,并記錄其位置信息;
步驟三、判斷目標(biāo)函數(shù)是否收斂:若是則轉(zhuǎn)步驟十一,否則轉(zhuǎn)步驟四;
步驟四、若i<NP,轉(zhuǎn)步驟五,否則t=t+1,轉(zhuǎn)步驟六;
步驟五、在[0,1]上生成一個(gè)隨機(jī)數(shù)rand,若rand<PC,則按照交叉授粉方式更新Xt i位置并進(jìn)行越界處理;否則按照自花授粉方式更新Xti位置并進(jìn)行越界處理,i=i+1,轉(zhuǎn)步驟四;
步驟六、計(jì)算所有個(gè)體適應(yīng)度值并進(jìn)行升序排列,分成m個(gè)模因組,并將當(dāng)前最優(yōu)個(gè)體的適應(yīng)度值及其空間位置信息記錄到公示牌中;
步驟七、確定每個(gè)模因組中最優(yōu)個(gè)體Xb和最差個(gè)體Xw;并更新Xw的位置;當(dāng)所有模因組均完成更新操作時(shí),混合所有個(gè)體形成新種群;
步驟八、重新計(jì)算新種群適應(yīng)度值并確定當(dāng)前全局最優(yōu)個(gè)體X’g,若f(X’g)<f(Xg),則更新公示牌中的信息;
步驟九、判斷是否滿足變異條件:若公示牌中的適應(yīng)度值f(xi)連續(xù)Q代未變化或|變化量|<μ,且迭代次數(shù)>Q-1,則對(duì)Xg進(jìn)行高斯變異,其中Q、μ為預(yù)設(shè)閾值;若優(yōu)于原Xg,則用代替Xg,并更新公示牌中的信息;否則,丟棄變異后的解;
步驟十、若t<itermax或f(xg)>Fmin,轉(zhuǎn)步驟三進(jìn)入下一次迭代;否則轉(zhuǎn)步驟十一;
步驟十一、輸出最優(yōu)值及其對(duì)應(yīng)個(gè)體的位置信息。
所述步驟二中,計(jì)算個(gè)體適應(yīng)度值,確定當(dāng)前全局最優(yōu)個(gè)體是根據(jù)選定的目標(biāo)函數(shù)計(jì)算當(dāng)前所有種群個(gè)體的適應(yīng)值f(xi),并選取適應(yīng)度值最小的個(gè)體。
所述步驟三中,判斷目標(biāo)函數(shù)是否收斂是將計(jì)算出的種群個(gè)體的最優(yōu)適應(yīng)度值與目標(biāo)函數(shù)的理論最優(yōu)值進(jìn)行比較,若其在誤差范圍內(nèi),則目標(biāo)函數(shù)收斂,若不在誤差范圍內(nèi),則目標(biāo)函數(shù)不收斂。
所述步驟五中,按照交叉授粉方式更新Xt i位置并進(jìn)行越界處理是按以下公式進(jìn)行:
為花粉i在第t迭代時(shí)的位置,g*為當(dāng)前全局最優(yōu)位置,γ為比例因子,L(λ)為服從Levy飛行的步長(zhǎng)矢量,當(dāng)L>0時(shí),
λ=3/2,Γ(λ)為標(biāo)準(zhǔn)伽馬函數(shù),s為移動(dòng)步長(zhǎng),
U服從均值為零,標(biāo)準(zhǔn)差為δ2的高斯分布,V服從標(biāo)準(zhǔn)正態(tài)分布;
按照自花授粉方式更新Xti位置并進(jìn)行越界處理是按以下公式進(jìn)行:
ε為[0,1]上服從均勻分布的常數(shù),和為同一品種上不同花朵的花粉,1≤j,k≤NP且j≠k≠i。
所述步驟六中,分成m個(gè)模因組是將排序后的前m個(gè)個(gè)體依次放入第1個(gè)、2個(gè)、…、第m個(gè)模因組中,然后將m+1~2m個(gè)個(gè)體再依次放入第1個(gè)、2個(gè)、…、第m個(gè)模因組中,依次類推,直至分配完畢。
所述步驟六中,所述公示牌設(shè)置t行,第一行為第一次迭代過(guò)程中全局最優(yōu)個(gè)體的適應(yīng)度值及空間位置;第二行為第二次迭代過(guò)程中全局最優(yōu)個(gè)體的適應(yīng)度值及空間位置;第t行為第t次迭代過(guò)程中全局最優(yōu)個(gè)體的適應(yīng)度值及空間位置。
所述步驟七種,最差個(gè)體Xw的位置的更新策略是:
Dj=rand×(Xb-Xw),
Xw′=Xw+Dj,||Dj||≤Dmax,
Dj為j維上的移動(dòng)距離,其值不允許超過(guò)最大移動(dòng)步長(zhǎng)Dmax,rand為[0,1]上的隨機(jī)數(shù),Xg為全局最優(yōu)個(gè)體,Xw'為更新后的個(gè)體,執(zhí)行更新操作后,若適應(yīng)度值f(Xw')≤f(Xw),則用Xw'替換Xw;否則用Xg代替Xb,重新執(zhí)行更新策略;若f(Xw)仍未變化,則隨機(jī)產(chǎn)生一個(gè)Xw'代替Xw。
所述步驟九中,對(duì)Xg進(jìn)行高斯變異是按以下公式進(jìn)行
為高斯變異產(chǎn)生的新解,α為[0,1]上的遞減變量,N(0,1)服從μ=0、δ2=1的標(biāo)準(zhǔn)高斯分布。
本發(fā)明首先對(duì)種群進(jìn)行分組并更新各分組中較差個(gè)體的位置,從而增強(qiáng)個(gè)體的局部搜索能力并增強(qiáng)種群多樣性;然后通過(guò)公示牌判斷算法是否陷入局部最優(yōu),若是則進(jìn)行高斯變異操作,從而有效的提高算法跳出陷入局部的能力,增強(qiáng)種群多樣性,加快算法收斂速度。
本發(fā)明所提供的技術(shù)方案的優(yōu)點(diǎn)在于:
1、提高算法的局部搜索能力;
2、在一定程度上有效避免陷入局部最優(yōu);
3、增強(qiáng)種群多樣性,加快算法收斂速度。
附圖說(shuō)明
圖1為本發(fā)明方法流程示意圖。
圖2為f1收斂曲線(D=30)。
圖3為f2收斂曲線(D=50)。
圖4為f3收斂曲線(D=30)。
圖5為f4收斂曲線(D=50)。
圖6為f5收斂曲線(D=2)。
圖7為f6收斂曲線(D=50)。
圖8為f1在高維函數(shù)上的收斂曲線。
圖9為f2在高維函數(shù)上的收斂曲線。
圖10為f3在高維函數(shù)上的收斂曲線。
圖11為f4在高維函數(shù)上的收斂曲線。
具體實(shí)施方式
下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,但不作為對(duì)本發(fā)明的限定。
請(qǐng)結(jié)合圖1,基于自適應(yīng)高斯變異的花朵授粉算法的優(yōu)化方法的具體實(shí)施是這樣的:
步驟一、初始化基本參數(shù)和種群位置,初始化基本參數(shù)包括設(shè)置種群規(guī)模為NP,最大迭代次數(shù)為itermax,交叉授粉概率PC、最小收斂精度Fmin以及搜索空間D等,初始化種群位置:在可行域中(D維空間中)隨機(jī)生成NP個(gè)點(diǎn)作為初始種群其中t為當(dāng)前迭代次數(shù),D為搜索空間;
步驟二、根據(jù)選定的目標(biāo)函數(shù)計(jì)算當(dāng)前所有種群個(gè)體的適應(yīng)值f(xi)(以最小化為例),并選取適應(yīng)度值最小的個(gè)體作為當(dāng)前全局最優(yōu)個(gè)體,并記錄其對(duì)應(yīng)的空間位置信息;
步驟三、判斷目標(biāo)函數(shù)是否收斂,將計(jì)算出的種群個(gè)體的最優(yōu)適應(yīng)度值與目標(biāo)函數(shù)的理論最優(yōu)值進(jìn)行比較,若其在誤差范圍內(nèi),則認(rèn)為目標(biāo)函數(shù)收斂,
|fmin-Fmin|<Δ
其中,fmin為實(shí)驗(yàn)中所得到最優(yōu)值,F(xiàn)min為目標(biāo)函數(shù)理論最優(yōu)值,Δ為誤差范圍,若是則轉(zhuǎn)步驟十一,否則轉(zhuǎn)步驟四;
步驟四、若i<NP,轉(zhuǎn)步驟五,否則t=t+1,轉(zhuǎn)步驟六;
步驟五、在[0,1]上生成一個(gè)隨機(jī)數(shù)rand,若rand<PC,則按照交叉授粉方式更新位置并進(jìn)行越界處理,
為花粉i在第t迭代時(shí)的位置,g*為當(dāng)前全局最優(yōu)位置,γ為比例因子,用于控制移動(dòng)步長(zhǎng),L(λ)為服從Levy飛行的步長(zhǎng)矢量,當(dāng)L>0時(shí),萊維分布計(jì)算公式如下:
λ=3/2,Γ(λ)為標(biāo)準(zhǔn)伽馬函數(shù),s為移動(dòng)步長(zhǎng),其取值直接影響算法的收斂性,因此FPA采用曼特尼亞算法產(chǎn)生最有效步長(zhǎng)s,
U服從均值為零,標(biāo)準(zhǔn)差為δ2的高斯分布,V服從標(biāo)準(zhǔn)正態(tài)分布;
否則按照自花授粉方式更新位置并進(jìn)行越界處理,
ε為[0,1]上服從均勻分布的常數(shù),和為同一品種上不同花朵的花粉,1≤j,k≤NP且j≠k≠i,
i=i+1,轉(zhuǎn)步驟四;
步驟六、計(jì)算所有個(gè)體適應(yīng)度值并進(jìn)行升序排列,將排序后的種群按以下公式分配到m個(gè)模因組中,每個(gè)模因組中包含n個(gè)個(gè)體且滿足關(guān)系NP=m×n,
其中Mk表示第k個(gè)模因組,即將排序后的前m個(gè)個(gè)體依次放入第1個(gè)、2個(gè)、…、第m個(gè)模因組中,然后將m+1~2m個(gè)個(gè)體再依次放入第1個(gè)、2個(gè)、…、第m個(gè)模因組中,依次類推,直至分配完畢;
確定當(dāng)前最優(yōu)個(gè)體及其適應(yīng)度值,并將其空間位置信息記錄到公示牌中。公示牌是為了判斷算法是否陷入局部最優(yōu)而引入的,主要用于記錄最優(yōu)個(gè)體的適應(yīng)度值及位置信息,其結(jié)構(gòu)如表所示:
其中,第一行為第一次迭代過(guò)程中全局最優(yōu)個(gè)體的適應(yīng)度值及空間位置;第二行為第二次迭代過(guò)程中全局最優(yōu)個(gè)體的適應(yīng)度值及空間位置;第t行為第t次迭代過(guò)程中全局最優(yōu)個(gè)體的適應(yīng)度值及空間位置;即每次迭代過(guò)程中都要記錄全局最優(yōu)個(gè)體的適應(yīng)度值和其對(duì)應(yīng)的位置信息;
步驟七、確定每個(gè)模因組中最優(yōu)、最差個(gè)體Xb和Xw;并更新Xw的位置,當(dāng)所有模因組均完成更新操作時(shí),混合所有個(gè)體形成新種群,具體包括以下步驟:
步驟701、以最小化為例,每個(gè)模因組中適應(yīng)度值最小的個(gè)體為最優(yōu)個(gè)體(即第一個(gè)個(gè)體)用Xb表示,適應(yīng)度值最大的個(gè)體為最差個(gè)體(即最后一個(gè)個(gè)體)用Xw表示;
步驟702、每次迭代過(guò)程中對(duì)各模因組中最差個(gè)體Xw的位置進(jìn)行更新,其更新策略為:
Dj=rand×(Xb-Xw)
Xw′=Xw+Dj,||Dj||≤Dmax
其中,Dj為j維上的移動(dòng)距離,其值不允許超過(guò)最大移動(dòng)步長(zhǎng)Dmax,rand為[0,1]上的隨機(jī)數(shù),Xb和Xw分別為模因組中最優(yōu)和最差個(gè)體,Xg為全局最優(yōu)個(gè)體,Xw'為更新后的個(gè)體。
步驟703、執(zhí)行更新操作后,若適應(yīng)度值f(Xw')≤f(Xw),則用Xw'替換Xw;否則用Xg代替Xb,重新執(zhí)行更新策略;若f(Xw)仍未變化或變化很小,則隨機(jī)產(chǎn)生一個(gè)Xw'代替Xw;當(dāng)所有模因組都完成依次組內(nèi)迭代時(shí),混合所有個(gè)體形成新種群;
步驟八、根據(jù)目標(biāo)函數(shù)重新計(jì)算新種群的適應(yīng)度值,確定當(dāng)前全局最優(yōu)個(gè)體X’g;將當(dāng)前全局最優(yōu)個(gè)體的適應(yīng)度值與公示牌的最優(yōu)值進(jìn)行比較,若f(X’g)<f(Xg),則更新公示牌中的信息;
步驟九、判斷是否滿足變異條件:若公示牌中的適應(yīng)度值f(xi)連續(xù)Q代未變化或變化很小(|變化量|<μ),且迭代次數(shù)>Q-1,則對(duì)Xg進(jìn)行高斯變異。若優(yōu)于原Xg,則用代替Xg,并更新公示牌中的信息;否則,丟棄變異后的解。具體是:
步驟901、在算法中設(shè)置兩個(gè)閾值Q和μ,當(dāng)公示牌中的適應(yīng)度值連續(xù)Q代沒有改變或|變化量|<μ時(shí),則視該算法陷入局部最優(yōu)。此時(shí),算法將自動(dòng)引入高斯變異策略,即利用以下公式對(duì)當(dāng)前的全局最優(yōu)解Xg進(jìn)行高斯變異,使種群個(gè)體跳出局部最優(yōu),增強(qiáng)種群多樣性。
其中,為高斯變異產(chǎn)生的新解,α為[0,1]上的遞減變量,N(0,1)服從μ=0、δ2=1的標(biāo)準(zhǔn)高斯分布。
步驟902、若更新后的個(gè)體優(yōu)于原Xg,則用取代Xg,所有個(gè)體在的帶領(lǐng)下向著最優(yōu)解的方向移動(dòng)。否則,丟棄變異后的解。
步驟十、若t<itermax||f(xg)>Fmin,轉(zhuǎn)步驟三進(jìn)入下一次迭代;否則轉(zhuǎn)步驟十一。
步驟十一、輸出最優(yōu)值及其對(duì)應(yīng)個(gè)體的位置信息。
使用了六個(gè)標(biāo)準(zhǔn)的測(cè)試函數(shù)并使用Matlab R2012b驗(yàn)證算法的有效性,并與BA、混合蛙跳算法、FPA進(jìn)行比較。其中f1為單峰、f2~f6為多峰函數(shù),測(cè)試函數(shù)如下:
函數(shù)在xi=0處取得全局最優(yōu)值min(f1(x))=0,其中i=1,2,…,n。
2)
函數(shù)在xi=0處取得全局最優(yōu)值min(f2(x))=0,其中i=1,2,…,n。
3)
函數(shù)在xi=0處取得全局最優(yōu)值min(f3(x))=0,其中i=1,2,…,n。
4)
函數(shù)在xi=0處取得全局最優(yōu)值min(f4(x))=0,其中i=1,2,…,n。
5)
函數(shù)在xi=0處取得全局最優(yōu)值min(f5(x))=-1,其中i=1,2。
6)
函數(shù)在xi=0處取得全局最優(yōu)值min(f6(x))=0,其中i=1,2,…,n。
結(jié)合圖2至圖7可知,對(duì)于函數(shù)f1~f6,本發(fā)明方法(IFPA)以最快的收斂速度最先收斂到理論最優(yōu)值,混合蛙跳算法(Shuffled Frog Leaping Algorithm,SFLA)次之,BA和FPA收斂速度最慢甚至無(wú)法找到理論最優(yōu)值。
四種算法在固定迭代次數(shù)下的尋優(yōu)性能比較
由表1可知:IFPA的最優(yōu)值、平均值、最差值均小于其他三種算法;標(biāo)準(zhǔn)差最小,算法性能最穩(wěn)定;尋優(yōu)成功率最高。對(duì)于函數(shù)f2~f4,BA、FPA無(wú)法找到目標(biāo)函數(shù)最優(yōu)解,而IFPA可快速收斂到理論最優(yōu)值。SFLA尋優(yōu)成功率相對(duì)BA、FPA較高,但仍低于IFPA,且標(biāo)準(zhǔn)差相對(duì)較大,不如IFPA穩(wěn)定。在固定迭代次數(shù)下,相比于其他三種算法,改進(jìn)的IFPA具有較快的收斂速度和較高的尋優(yōu)精度,且算法穩(wěn)定性、魯棒性較好。
為了驗(yàn)證IFPA的收斂性,首先固定函數(shù)收斂精度,然后分別對(duì)四種算法進(jìn)行50次獨(dú)立實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表2所示。
表2四種算法在固定精度下的尋優(yōu)性能的比較
由表2可知,IFPA以最小的收斂次數(shù)達(dá)到各函數(shù)所設(shè)定的固定精度;平均收斂次數(shù)明顯小于其他三種算法,且收斂成功率最高。對(duì)于函數(shù)f1,IFPA的收斂成功率比FPA高了73%;對(duì)于函數(shù)f5,IFPA在第1次迭代時(shí)即收斂到最優(yōu)值;對(duì)于函數(shù)f2~f4,IFPA分別在平均18.21、109.18、157.26次收斂到理論最優(yōu)值,對(duì)于f1和f6,BA和SFLA雖以100%的成功率收斂到固定精度,但其最小、平均收斂代數(shù)均大于IFPA。由此可見,在固定收斂精度下,IFPA收斂性明顯優(yōu)于其他三種算法,收斂速度得到明顯提高。
表3IFPA與FPA算法運(yùn)行時(shí)間的比較
由表3可知:IFPA對(duì)種群進(jìn)行分組、合并、再分組,對(duì)于f1~f6,其最小、平均運(yùn)行時(shí)間比FPA略長(zhǎng)但相差不大。
為了驗(yàn)證IFPA在高維復(fù)雜函數(shù)上的有效性,分別在不同維度時(shí),對(duì)f1~f4進(jìn)行測(cè)試,結(jié)果如圖8至圖11所示,IFPA在求解高維復(fù)雜函數(shù)時(shí),收斂速度不會(huì)隨著維度增加而陷入“維數(shù)災(zāi)難”。IFPA在高維時(shí)的尋優(yōu)精度和收斂速度與低維相比,相差不大,受到較小影響。
以下面的目標(biāo)函數(shù)(多峰函數(shù))為例:
其中函數(shù)在xi=0處取得全局最優(yōu)值min(f(x))=0,其中i=1,2,…,n。
初始化基本參數(shù):為較全面的驗(yàn)證改進(jìn)算法的可行性和有效性,將與BA、SFLA、FPA三種算法進(jìn)行比較。實(shí)驗(yàn)中各參數(shù)設(shè)置如下:所有算法的種群規(guī)模NP=20,最大迭代次數(shù)itermax=2000;IFPA:PC=0.8,,F(xiàn)min=min(f(x))=0,D=n,Δ=10-3,Q=3,μ=10-4,m=4,n=5;FPA:PC=0.8;BA:A=0.25,r=0.5,α=0.95,γ=0.05;SFLA:m=4,n=5。
初始化種群位置:在n維搜索空間中隨機(jī)生成20個(gè)點(diǎn)作為初始種群的位置,20個(gè)花粉的位置如下表所示,并令t=0,i=1,其中t為當(dāng)前迭代次數(shù),i為第i只花粉正在執(zhí)行更新操作。
根據(jù)述目標(biāo)函數(shù)f(x)計(jì)算20個(gè)花粉對(duì)應(yīng)的適應(yīng)度值,如表所示:
將進(jìn)行排序,選取適應(yīng)度值最小的的位置作為全局最優(yōu)位置,并令
判斷算法是否收斂,當(dāng)滿足下面公式時(shí),則認(rèn)為函數(shù)收斂到最優(yōu)值。
其中,為當(dāng)前t次迭代時(shí)的全局最優(yōu)值,F(xiàn)min=min(f(x))=0為目標(biāo)函數(shù)理論最優(yōu)值,Δ=10-3為誤差范圍。
若i<20,即本輪迭代還未完成時(shí),轉(zhuǎn)步驟五,繼續(xù)進(jìn)行本輪迭代;否則,當(dāng)i≥20時(shí),即20個(gè)花粉均完成一次更新操作,t=t+1,轉(zhuǎn)步驟六,進(jìn)入下一次迭代。
在[0,1]上生成一個(gè)隨機(jī)數(shù)rand,若rand<0.8,則進(jìn)行交叉授粉,按式(2)更新位置并進(jìn)行越界處理;若rand≥0.8,進(jìn)行自花授粉,按式(5)更新位置并進(jìn)行越界處理。
根據(jù)述目標(biāo)函數(shù)f(x)計(jì)算20個(gè)花粉對(duì)應(yīng)的適應(yīng)度值,如表所示:
將按升序進(jìn)行排序,將排序后種群按(6)分到m個(gè)模因組中,即將排序后的前m個(gè)個(gè)體依次放入第1個(gè)、2個(gè)、…、第m個(gè)模因組中,然后將m+1~2m個(gè)個(gè)體再依次放入第1個(gè)、2個(gè)、…、第m個(gè)模因組中,依次類推,直至分配完畢。分組完成后,各模因組中的個(gè)體分別為:1、5、9、13、17;2、6、10、14、18;3、7、11、15、19;4、8、12、16、20。
然后將排序后的第一個(gè)花朵(全局最優(yōu)個(gè)體的)的相關(guān)信息存入公示牌中。
確定每個(gè)模因組中最優(yōu)、最差個(gè)體Xb和Xw,即各模因組中最優(yōu)、最差個(gè)體分別為1、17;2、18;3、19;4、20;然后更新各模因組中最差個(gè)體Xw的位置,即分別更新第17、18、19、20個(gè)花粉的位置。當(dāng)所有模因組都完成一次組內(nèi)迭代時(shí),混合所有個(gè)體形成新種群。
根據(jù)目標(biāo)函數(shù)f(x)重新計(jì)算新種群(20個(gè)個(gè)體)的適應(yīng)度值,并確定當(dāng)前全局最優(yōu)個(gè)體
將當(dāng)前全局最優(yōu)個(gè)體的適應(yīng)度值與公示牌的最優(yōu)值進(jìn)行比較,若則更新公示牌中的信息。
當(dāng)公示牌中的適應(yīng)度值連續(xù)3代沒有改變或|變化量|<10-4時(shí),則視該算法陷入局部最優(yōu)。此時(shí),算法將自動(dòng)引入高斯變異策略,即利用式(8)對(duì)當(dāng)前的全局最優(yōu)解Xg進(jìn)行高斯變異,使得種群個(gè)體具有跳出局部最優(yōu)的能力,并增強(qiáng)種群多樣性。
若更新后的個(gè)體優(yōu)于原Xg,則用取代Xg,所有個(gè)體在的帶領(lǐng)下向著最優(yōu)解的方向移動(dòng)。否則,丟棄變異后的解。
當(dāng)?shù)螖?shù)t小于實(shí)驗(yàn)中所設(shè)定的最大迭代次數(shù)2000時(shí),或者實(shí)驗(yàn)中目標(biāo)函數(shù)最優(yōu)值大于所設(shè)定的最小收斂精度(f(xg)>0)時(shí),則進(jìn)行下一次迭代,重新進(jìn)行迭代求解。
輸出最優(yōu)值及對(duì)應(yīng)的位置信息