關曉穎 謝盛嘉 陳 果
1(廣東食品藥品職業(yè)學院軟件學院 廣東 廣州 510520)2(廣東女子職業(yè)技術(shù)學院應用設計學院 廣東 廣州 511450)3(南京航空航天大學民航學院 江蘇 南京 210016)
參數(shù)優(yōu)化是通過優(yōu)化方法不斷調(diào)整設計變量,使得設計結(jié)果不斷接近參數(shù)的目標值。參數(shù)優(yōu)化的效果既取決于所采用的優(yōu)化方法,同時也受給定的參數(shù)初始取值區(qū)間影響。在實際的應用中,參數(shù)的初始取值區(qū)間有時會憑經(jīng)驗給出,就會出現(xiàn)參數(shù)解不一定在初始取值區(qū)間內(nèi),這將影響最終的參數(shù)優(yōu)化效果。因為參數(shù)解與給定的初始取值區(qū)間之間存在兩種情況:解包含在給定的初始取值區(qū)間內(nèi)和解不包含在給定的初始取值區(qū)間內(nèi)。對于前者,當參數(shù)的取值區(qū)間在算法的整個運行過程中固定不變時,將會導致最終找到的參數(shù)優(yōu)化結(jié)果并不是正確解,因此,希望提高方法的搜索效率和提高解的質(zhì)量;對于后者,希望能夠動態(tài)調(diào)整區(qū)間,降低對初始區(qū)間的準確要求,并能最終高效率找到正確解。
遺傳算法由于其隱含的并行性和全局尋優(yōu)能力,廣泛應用于參數(shù)優(yōu)化[1-7]。但是,基本都默認參數(shù)解包括在初始區(qū)間,雖然也有一些學者提出了調(diào)整參數(shù)取值區(qū)間的方法[8-11],但提出的改進方法主要是縮小搜索區(qū)間,并沒有突破原來的參數(shù)取值區(qū)間,沒有考慮到解不在參數(shù)的初始取值區(qū)間外的情況。有鑒于此,本文提出多群體遺傳算法動態(tài)調(diào)整區(qū)間的參數(shù)優(yōu)化方法(MGADAI)。該方法能夠在算法的運行過程中動態(tài)調(diào)整參數(shù)取值區(qū)間,使得參數(shù)初始取值區(qū)間不是一直都是固定的,而是根據(jù)群體當前的運行情況動態(tài)調(diào)整,降低了對參數(shù)初始取值區(qū)間的準確度要求;并且,由于參數(shù)取值區(qū)間不斷在變化,特別進化后期,調(diào)整到更準確的區(qū)間,大大提高算法的效率和解的質(zhì)量。另外,采用多個群體并各自獨立執(zhí)行遺傳算法操作,定期交流信息相互學習,既有效地改善基本遺傳算法的“早熟”現(xiàn)象,也有利于后代向更好的方向進化。
MGADAI流程如圖1所示,GA流程如圖2所示。
圖1 MGADAI的流程
圖2 GA流程
算法具體實現(xiàn)過程如下:
(1) 給出參數(shù)的初始取值區(qū)間。
(2) 根據(jù)參數(shù)的取值區(qū)間產(chǎn)生隨機數(shù),完成各群體個體初始化,形成初始種群。
(3) 假設有M群體,則各群體獨立采用GAi(i=1,2,…,M)進行參數(shù)優(yōu)化。
(4) 當各群體獨立迭化到指定代數(shù)d,就進行信息交流;即根據(jù)各群體的當前優(yōu)化結(jié)果,計算得到新的參數(shù)取值區(qū)間,實現(xiàn)區(qū)間的動態(tài)調(diào)整。
(5) 得到參數(shù)新的取值區(qū)間后,各群體根據(jù)新的參數(shù)取值區(qū)間重新進行個體初始化,形成新種群;接著各自繼續(xù)執(zhí)行GA操作。
(6) 直到滿足終止條件結(jié)束,輸出結(jié)果。
由于先驗知識等原因,對于所要優(yōu)化的參數(shù)初始取值區(qū)間不一定能夠準確給出,就會出現(xiàn)如圖3(a)和圖3(b)兩種情況,其中:[a,b]為參數(shù)的初始取值區(qū)間;c為參數(shù)解。參數(shù)解與給定的初始取值區(qū)間存在兩種情況:解包含在給定的初始取值區(qū)間(圖3(a));解不包含在給定的初始取值區(qū)間(圖3(b))。
(a) 解在初始取值區(qū)間內(nèi)
(b) 解在初始取值區(qū)間外圖3 參數(shù)解與初始取值區(qū)間的關系
當出現(xiàn)圖3(b)這種情況,如果算法的設計對于參數(shù)的取值區(qū)間在整個運行過程中都是固定不變,將會導致參數(shù)解無法在給定的取值區(qū)間內(nèi)找到。因此,如果在算法運行過程中,各群體能夠?qū)⒏髯援斍八阉髑闆r互相分享和學習,從而挖掘出包含高質(zhì)量解的區(qū)間,并動態(tài)調(diào)整參數(shù)取值區(qū)間,這樣就可以避免圖3(b)這種情況所帶來的不足。同時,也降低了對參數(shù)初始取值區(qū)間的精確度要求;另外,由于參數(shù)取值區(qū)間不斷在變化,特別是在進化后期,區(qū)間不斷收窄,將大大提高算法效率和解的質(zhì)量。
動態(tài)調(diào)整參數(shù)區(qū)間的方法具體如下。
具體實現(xiàn)步驟如下:
(1) 當前最優(yōu)個體b1,b2,…,bm的適應度分別為f1,f2,…,fm。
(2) 計算最優(yōu)個體bi(i=1,2,…,m)的權(quán)重:
(1)
(3) 計算每個基因的加權(quán)平均aj(1≤j≤n):
(2)
(4) 計算當前各群體最優(yōu)個體在第j個基因的散布程度。將wi作為權(quán)重,修正第j個基因值與均值的距離,同時也避免異常點帶來的敏感性。
(3)
(5) 計算各基因的新取值區(qū)間:
currLowerj=aj-sqrt(dj)
currUpperj=aj+sqrt(dj)
(4)
(6) 為了進一步加強更新后的參數(shù)取值區(qū)間的可靠性,新的參數(shù)取值區(qū)間將綜合考慮初始取值區(qū)間、至今找到的最優(yōu)個體的取值區(qū)間、各群體迭代d代調(diào)整后的取值區(qū)間。
假設第j個基因(1≤j≤n)的初始取值區(qū)間為(initLowerj,initUpperj),至今找到的最優(yōu)個體的取值區(qū)間為(gLowerj,gUpperj),各群體迭代d代調(diào)整后的取值區(qū)間為(currLowerj,currUpperj),則調(diào)整后的第j個基因的取值區(qū)間(lowerj,upperj)為:
lowerj=0.3×initLowerj+0.3×gLowerj+0.4×currLowerj
upperj=0.3×initUpperj+0.3×gUpperj+0.4×currUpperj
(5)
至此,各基因新的取值區(qū)間調(diào)整完畢。各群體按照新的取值區(qū)間重新初始化個體,繼續(xù)執(zhí)行GA進行優(yōu)化。
遷移時機反映了各群體在什么時候進行信息的交流和遷移,如果這個時機選擇不當,會降低優(yōu)化的性能。對于遷移時機,可以采用的方法有:
(1) 各群體每迭代固定的代數(shù)后,就進行信息交流和遷移;這種方法的關鍵是選擇合適的固定代數(shù)。
(2) 以反映當前種群狀況的某個(些)特性作為遷移依據(jù),當優(yōu)化達到一定條件時才進行遷移。這種方法的關鍵是評價特性的選擇。
本文采用上述的第1種方法,預先設定一個最大停滯代數(shù)d,當各群體都滿足停滯條件時,就暫停優(yōu)化,進行參數(shù)區(qū)間的調(diào)整。
由于每個群體都獨立地在相同的參數(shù)取值區(qū)間進行初始化種群,接著執(zhí)行遺傳算法的選擇、交叉和變異等操作,當各群體迭代d代后,就暫停進化,進行各群體的交流和更新參數(shù)取值區(qū)間。
本文算法采用的遺傳算法是對簡單遺傳算法的變異算子進行了改進,采用了差分變異和均勻變異相結(jié)合的方法,實現(xiàn)區(qū)間外探索和區(qū)間內(nèi)開發(fā)。下面介紹改進遺傳算法的主要實現(xiàn)技術(shù)。
(1) 編碼。采用實數(shù)編碼。設所研究的問題共有n個參數(shù)需要優(yōu)化,則每個參數(shù)就作為個體的一個基因,即每個個體由n個基因組成,若干個體就形成了種群。
(2) 選擇算子和交叉算子。選擇算子:由于求解的最小化問題,選用錦標賽選擇算子。錦標賽選擇的核心思想是,一次隨機抽出若干個染色體(個體),并將這組染色體中適應度最大的個體選入下一代。不斷重復這個過程,直到達到種群規(guī)模為止。
交叉算子:采用單點交叉和固定的交叉概率pc,即各個體根據(jù)交叉概率pc決定是否參與交配,不參與的個體直接放入下一代;需要參與交配的,則每次選出2個個體交換各自的部分基因,形成2個新的子代個體放入下一代。
(3) 變異算子。變異算子的作用主要是提高種群的多樣性,防止早熟。本文算法采用差分變異和均勻變異相結(jié)合的變異算子,除了增加種群的多樣性和提高解的精度外,還提供機會給個體基因向區(qū)間外進行不斷探索,這樣有利于解決當解不在初始取值區(qū)間時產(chǎn)生的找不到解的問題。對于任一個群體,假設種群規(guī)模為popsize,則其中的k個個體的基因采用差分變異,剩下的popsize-k個個體的基因采用均勻變異。
差分變異:在每一個新個體的生成過程中用到了父代多個個體的線性組合。首先在k個個體中隨機選出3個個體,使用式(6)計算新個體在基因位i的取值。
hi=r1(i)+F×(r2(i)-r3(i))
(6)
式中:rj(i)表示個體rj(j=1,2,3)rj的第i個基因值;1≤i≤n,n為個體的基因數(shù)目;F為縮放因子,一般是取值范圍為[0,2]的常量,用于控制差分向量的擾動程度。本文F=0.5。差分變異除了提高種群多樣性外,還可以通過縮放因子,給k個個體的某些基因位提供機會在初始取值區(qū)間外取值。當更新基因取值區(qū)間時,就有機會擴展初始取值區(qū)間,解決當正確解不在初始取值區(qū)間所帶來的問題。
均勻變異:對于popsize-k個個體中的每個個體,根據(jù)變異概率pm選出要變異的基因,然后在該基因的取值區(qū)間內(nèi)產(chǎn)生一個隨機數(shù)來取代該基因的值。
采用文獻[12]提供的求最小值的8個標準函數(shù)作為算例,如表1所示。這8個標準函數(shù)f1-f8都是高維問題,維數(shù)n=30,其中:f1-f5是單峰函數(shù);f6-f8是存在很多局部最優(yōu)解的多峰函數(shù)。
表1 標準函數(shù)
續(xù)表1
由于遺傳算法的定義是適應度越高,個體的生存能力越強,所以遺傳算法的適應度函數(shù)定義為:
F(x)=-fabs(f(x)-fmin)
(7)
式中:fmin為表1中的“最小值”,也就是誤差越小,對應的適應度就越高,反之亦然。
為了驗證算法的性能,下面將給出參數(shù)在兩種情況下的初始取值區(qū)間,分別是函數(shù)最小值時,其對應的最小值坐標(稱為“參數(shù)解”)包含在初始取值區(qū)間內(nèi)(稱為“區(qū)間內(nèi)”)和最小值坐標不包含在初始取值區(qū)間內(nèi)(稱為“區(qū)間外”),如表2所示。
表2 參數(shù)的兩種初始取值區(qū)間
本文算法(MGADAI)采用多群體并定期交流信息,信息遷移時機的選擇很關鍵,太早交流不利于分享到當前種群更優(yōu)的信息,太遲交流容易導致算法進化停滯。所以下面首先在不同的遷移時機對算法的性能進行比較,從而選取合適的遷移時機用于后面的算法測試。
另外,MGADAI以基本遺傳算法(SGA)為基礎,采用均勻變異和差分變異相結(jié)合的變異算子,同時采用多群體且每個群體獨立執(zhí)行遺傳算法操作搜索問題的解,并定期交流分享信息,實現(xiàn)參數(shù)取值區(qū)間的動態(tài)調(diào)整。因此,為了分析算法各方面的改進性能,MGADAI與單群體遺傳算法(Single Genetic Algorithm, Single-GA)、差分進化遺傳算法(Different Evolution and Genetic Algorithm,DEGA)、簡單遺傳算法(SGA)進行比較,研究分析差分變異、均勻變異、多群體在兩種不同初始取值區(qū)間的參數(shù)下,對算法最終優(yōu)化效果的作用。四種算法主要的區(qū)別在于變異算子、是否采用多群體技術(shù)、遷移時機與調(diào)整參數(shù)取值區(qū)間這四個方面,具體如表3所示。
表3 四種算法的變異算子及其他參數(shù)
為了保證比較的有效性,四種算法的相同參數(shù)設定如下:種群規(guī)模popsize=100,算法最大迭代次數(shù)是10 000代,錦標賽選擇算子,單點交叉算子,交叉概率為0.7,變異概率為0.05;同時,為了減少統(tǒng)計誤差,每種算法各運行50次。
算法驗證將從遷移時機、參數(shù)區(qū)間動態(tài)調(diào)整過程、與其他3種算法在最優(yōu)解、均值、方差和收斂速度等方面的性能進行比較;其中,遷移時機的測試是為了驗證多群體遷移時機太早或太晚對優(yōu)化結(jié)果的影響,從而選出合適的遷移時機用于后續(xù)的驗證測試。
將遷移時機在以下4種情況下的優(yōu)化結(jié)果進化比較及分析,其中“最優(yōu)解”是指50次測試中找到的最優(yōu)解,“平均值”是指50次結(jié)果的平均。其中表4和表5中的d取值表示各群體獨立迭代d代后才進行遷移或交流。
表4 不同遷移時機8個標準函數(shù)的最優(yōu)解和平均值(區(qū)間內(nèi))
表5 不同遷移時機8個標準函數(shù)的最優(yōu)解和平均值(區(qū)間外)函數(shù)
可以看出,參數(shù)取值區(qū)間無論是區(qū)間內(nèi)還是區(qū)間外,總體來說d=20和d=50時8個標準函數(shù)的最優(yōu)解總體比d=5或d=100時的結(jié)果更優(yōu);而對于d=20和d=50兩種情況,當d=20時,函數(shù)f3和f5占有明顯的優(yōu)勢。因此,下面算法的測試選擇的遷移時機選擇d=20,即各群體獨立迭代20代后就進行交流。
由于8個標準函數(shù)都是高維函數(shù),同一個函數(shù)的各參數(shù)初始取值區(qū)間都是相同的,因此,下面將對每個函數(shù)只取一維顯示其取值區(qū)間的調(diào)整過程。另外,由于算法的最大迭代數(shù)是10 000,各群體都是迭代20代后才進行交流并調(diào)整取值區(qū)間,本文算法MGADAI采用4個群體,因此算法終止時共進行了125次區(qū)間調(diào)整。由于大部分函數(shù)經(jīng)過45次調(diào)整后,取值區(qū)間變化不大甚至不變,趨于穩(wěn)定,所以圖4和圖5的參數(shù)取值區(qū)間調(diào)整過程一般選取前45次,有個別函數(shù)則需要進行稍多些的調(diào)整才基本穩(wěn)定(例如函數(shù)f5)。在圖4和圖5中,橫坐標表示參數(shù)取值區(qū)間的調(diào)整次數(shù),縱坐標表示區(qū)間上、下邊界的取值;fi-xi表示函數(shù)fi的第i維參數(shù)。
(a) f1-x1 (b) f2-x2
(c) f3-x3 (d) f4-x4
(e) f5-x5 (f) f6-x6
(g) f7-x7 (h) f8-x8圖4 8個標準函數(shù)的其中一維參數(shù)取值區(qū)間的動態(tài)調(diào)整過程(區(qū)間內(nèi))
(a) f1-x1 (b) f2-x2
(c) f3-x3 (d) f4-x4
(e) f5-x5 (f) f6-x6
(g) f7-x7 (h) f8-x8圖5 8個標準函數(shù)的其中一維參數(shù)取值區(qū)間的動態(tài)調(diào)整過程(區(qū)間外)
由圖4可以看出,參數(shù)取值區(qū)間是“區(qū)間內(nèi)”的情況下,參數(shù)區(qū)間的每次調(diào)整都是在不斷地收窄,這表明了各群體當前各自找到的最優(yōu)個體所對應的參數(shù)解都比較集中,說明參數(shù)的最優(yōu)解在該區(qū)域的概率很大,這時就可以收窄當前取值區(qū)間,使得后續(xù)的進化在更窄的區(qū)域內(nèi)搜索,大大加快了求解的速度。
由圖5可以看出,參數(shù)取值區(qū)間是“區(qū)間外”的情況下,參數(shù)的取值區(qū)間不斷地向參數(shù)解的方向靠攏,說明各群體當前找到的最優(yōu)個體對區(qū)間調(diào)整具有很好的導向性。圖4和圖5驗證了參數(shù)取值區(qū)間動態(tài)調(diào)整方法是可行且有效的。
2.3.1最優(yōu)解、平均值和標準差
下面分別對參數(shù)的初始取值區(qū)間為“區(qū)間內(nèi)”和“區(qū)間外”這兩種情況,對4種算法各運行50次,并根據(jù)50次測試結(jié)果統(tǒng)計出最優(yōu)解(Best)、平均值(Mean)和標準差(Std.Dev),結(jié)果分別如表6和表7所示。
表6 四種算法8個標準函數(shù)在區(qū)間內(nèi)的最優(yōu)解、平均值和標準差
可以看出:
(1) 函數(shù)最小值時各參數(shù)解包含在初始取值區(qū)間內(nèi)(即表2的“區(qū)間內(nèi)”列),4種算法的最優(yōu)解都接近函數(shù)的最小值,但接近的程度還是有明顯的不同。
(2) 4種算法中,DEGA在函數(shù)f2找到的最優(yōu)解的精度最高,達到10-55數(shù)量級,但從標準差可看出穩(wěn)定性不太好;這反映了差分變異有潛力找到精度高的解,但不穩(wěn)定,需要與其他方法結(jié)合,發(fā)揮差分變異潛力的同時保證其穩(wěn)定性。
(3) Single-GA與DEGA、SGA相比,Single-GA的優(yōu)化結(jié)果明顯優(yōu)于它們,說明均勻變異與差分變異相結(jié)合的變異算子,有利于提高求解精度。
(4) MGADAI在Single-GA的基礎上,采用了多群體且實施定期交流信息,并根據(jù)各群體最優(yōu)個體的信息動態(tài)調(diào)整參數(shù)取值區(qū)間,使得進化更有導向性。因此,MGADAI在7個標準函數(shù)找到的最優(yōu)解都遠遠優(yōu)于其他3種算法。特別是函數(shù)f1、f3、f7和f8的最優(yōu)解達到10-11數(shù)量級以上。同時,7個標準函數(shù)在50次運行結(jié)果的平均值都非常接近最優(yōu)解,標準差也很小,表明算法的穩(wěn)定性好(f5穩(wěn)定性稍差些)。
表7 四種算法8個標準函數(shù)在區(qū)間外的最優(yōu)解、平均值和標準差
可以看出:(1) 當參數(shù)的取值區(qū)間為“區(qū)間外”時,SGA的最優(yōu)解與函數(shù)最小值相差非常大。
(2) DEGA在函數(shù)f2表現(xiàn)非常出色,找到的最優(yōu)解精度很高,在函數(shù)f1和f7找到的最優(yōu)解也還可以。由于DEGA采用差分變異算子,參數(shù)的取值有機會突破當前的取值區(qū)間,適當在取值區(qū)間外進行探索;但從標準差可以看出,穩(wěn)定比較差。而SGA采用均勻變異算子,參數(shù)的取值一直都是在初始取值區(qū)間,這說明了當參數(shù)解在初始取值區(qū)間外時,如果參數(shù)的取值區(qū)間一直沒有調(diào)整,并且遺傳算子沒有機會適當在取值區(qū)間外進行探索,這將嚴重影響算法最終的優(yōu)化效果。
(3) 由于Single-GA采用了均勻變異與差分變異相結(jié)合的變異算子,差分變異通過縮放因子F,給某些個體的基因(參數(shù))提供機會在初始取值區(qū)間外取值,實現(xiàn)在取值區(qū)間外進行搜索,所以Single-GA即使在區(qū)間外情況下得到的最優(yōu)解也相對比較理想。
(4) MGADAI則在Single-GA的基礎上,采用了多群體且定期交流,并動態(tài)調(diào)整參數(shù)的取值區(qū)間,因此,即使在區(qū)間外的情況下,也能找到與在區(qū)間內(nèi)相差不大的結(jié)果,并明顯優(yōu)于其他3種算法,從標準差可看出算法總體穩(wěn)定好。因此,MGADAI能有效降低對參數(shù)初始取值區(qū)間準確度的要求。
2.3.2收斂速度
對于單峰問題,由于不存在陷入局部最優(yōu)的問題,因此在算法性能上更加注重收斂速度與求解精度;而對于多峰函數(shù),由于存在多個局部最優(yōu)解,所以算法很容易陷入局部最優(yōu),因此算法更加注重的是全局搜索能力。由于求解精度在表6和表7進行了比較,MGADAI取得了明顯的優(yōu)勢,下面就主要比較4種算法的收斂速度或全局搜索能力。下面選取表1中的單峰函數(shù)f1和多峰函數(shù)f8對4種算法分別在單峰和多峰問題上的性能進行比較和分析。
程序迭代的最大代數(shù)是10 000,為了更清晰地觀察及比較4種算法的尋優(yōu)結(jié)果,在程序結(jié)束前設置20個輸出點,表8為f1在區(qū)間內(nèi)和區(qū)間外的20個輸出點及其對應的尋優(yōu)結(jié)果。表9為f8在區(qū)間內(nèi)和區(qū)間外的20個輸出點及其對應的尋優(yōu)結(jié)果。另外,由于SGA和DEGA在區(qū)間外情況下大部分函數(shù)(SGA是全部函數(shù))的最優(yōu)解與函數(shù)的最小值相差太大,因此對于區(qū)間外情況,只進行MGADAI與Single-GA這兩種算法的收斂速度或全局搜索能力的比較。
表8 四種算法單峰函數(shù)f1在區(qū)間內(nèi)和區(qū)間外的測試結(jié)果
表9 四種算法多峰函數(shù)f8在區(qū)間內(nèi)和區(qū)間外的測試結(jié)果
可以看出:
(1) 對于單峰函數(shù)f1,參數(shù)取值區(qū)間是區(qū)間內(nèi)和區(qū)間外時,MGADAI的收斂速度明顯優(yōu)于其他算法。
(2) 當參數(shù)取值區(qū)間是區(qū)間內(nèi)時,MGADAI在4 000代已經(jīng)收斂到最優(yōu)解;當參數(shù)取值區(qū)間是區(qū)間外時,則在5 000代收斂到最優(yōu)解;對于多峰函數(shù)f8,也同樣獲得明顯的優(yōu)勢。這說明了算法在求解問題的過程,采用多群體以及定期交流,各個群體能夠及時共享這些階段性成果,并動態(tài)調(diào)整參數(shù)取值區(qū)間,通過參數(shù)取值區(qū)間的調(diào)整,后代能在相對更準確的取值區(qū)間內(nèi)搜索,最終使得在單峰函數(shù)的收斂速度、多峰函數(shù)的全局搜索能力大大增強。
(3) 同時,結(jié)合前面表6和表7解的精度,可以得到MGADAI以更快的速度找到更優(yōu)的值。
2.3.3算法找到的最優(yōu)解所對應的參數(shù)解
前面對4種算法的求解精度和收斂速度進行了分析比較。下面將對表1的8個標準函數(shù)找到最優(yōu)解時(在“區(qū)間內(nèi)”和“區(qū)間外”兩種情況下),該函數(shù)的參數(shù)x1-x30優(yōu)化結(jié)果進行比較分析。根據(jù)表6和表7的比較分析可知SGA和DEGA找到的8個函數(shù)最優(yōu)解總體相對較差,而Single-GA與MGADAI算法找到的最優(yōu)解更接近,所以下面就只將MGADAI和Single-GA算法的參數(shù)優(yōu)化結(jié)果與參數(shù)解(圖中“True value”)進行比較,結(jié)果分別如圖6和圖7所示。
(a) 函數(shù)f1 (b) 函數(shù)f2
(c) 函數(shù)f3 (d) 函數(shù)f4
(e) 函數(shù)f5 (f) 函數(shù)f6
(g) 函數(shù)f7 (h) 函數(shù)f8圖6 8個標準函數(shù)最優(yōu)解所對應的30個參數(shù)優(yōu)化結(jié)果(區(qū)間內(nèi))
(a) 函數(shù)f1 (b) 函數(shù)f2
(c) 函數(shù)f3 (d) 函數(shù)f4
(e) 函數(shù)f5 (f) 函數(shù)f6
(g) 函數(shù)f7 (h) 函數(shù)f8圖7 8個標準函數(shù)最優(yōu)解所對應的30個參數(shù)優(yōu)化結(jié)果(區(qū)間外)
可以看出,不管參數(shù)的初始取值區(qū)間是區(qū)間內(nèi)還是區(qū)間外,MGADAI都取得明顯的優(yōu)勢,8個標準函數(shù)最優(yōu)解時所對應的30個參數(shù)優(yōu)化結(jié)果基本都與參數(shù)的正確解相等或者非常接近正確解。特別是參數(shù)取值區(qū)間在區(qū)間外的情況下,雖然參數(shù)解不在初始取值區(qū)間,但參數(shù)的優(yōu)化結(jié)果也很理想。
本文提出一種多群體遺傳算法動態(tài)調(diào)整區(qū)間的參數(shù)優(yōu)化方法,采用多群體遺傳算法,設計了差分變異和均勻變異相結(jié)合的變異算子,以及區(qū)間動態(tài)調(diào)整方法,并采用8個標準函數(shù)(高維的單峰函數(shù)和多峰函數(shù))對算法的性能進行驗證,并與其他算法進行比較,結(jié)論如下:
(1) 多群體遷移時機對算法性能有較大的影響,遷移時機太早或太晚都不利于及時分享到當前群體更有用的信息。
(2) 通過觀察在算法運行過程中參數(shù)區(qū)間的調(diào)整過程,驗證了參數(shù)區(qū)間動態(tài)調(diào)整方法的正確性。這也啟示我們要關注算法運行過程中的信息,挖掘出有用的信息,引導各群體向更優(yōu)的方向進化。
(3) 與其他三種算法在最優(yōu)解、平均值、標準差和收斂速度等方面比較,本文方法均具有明顯優(yōu)勢,充分驗證了本文方法的正確有效性。