沈佳杰,江 紅,王 肅
(華東師范大學(xué) 信息科學(xué)技術(shù)學(xué)院,上海200241)
差分進(jìn)化算 法 (differential evolution,DE)是 由D.Storn和K.Price在1995年共同提出的一個(gè)在連續(xù)空間內(nèi)啟發(fā)式搜索的隨機(jī)算法[1,2]。由于其優(yōu)良的可擴(kuò)展性和通用性,已經(jīng)廣泛應(yīng)用到各個(gè)領(lǐng)域。但是標(biāo)準(zhǔn)的差分進(jìn)化算法依然存在很多問題,如早熟和對(duì)于在高維多峰函數(shù)條件下難以找到全局最優(yōu)值等等。對(duì)于這一些問題已提出了很多新的解決辦法,如增加新的算子、混合算法等等,對(duì)于差分進(jìn)化算法存在的問題和對(duì)于問題相應(yīng)的改進(jìn)可以參考文獻(xiàn) [3,4]。
本文針對(duì)差分進(jìn)化算法在高維函數(shù)上易早熟和難以找到全局最優(yōu)值的問題,提出一個(gè)基于自適應(yīng)縮放比例因子改進(jìn)的差分進(jìn)化算法,通過理論推導(dǎo)和實(shí)驗(yàn)證明了改進(jìn)的基于自適應(yīng)縮放比例因子差分進(jìn)化算法可以有效地減少算法在高維多峰環(huán)境下的迭代步驟數(shù)以及更好的找到目標(biāo)問題的全局最優(yōu)值。
差分進(jìn)化算法是基于群體智能的進(jìn)化算法,其主要的操作有變異操作、交叉操作和選擇操作,通過這3種不同操作,標(biāo)準(zhǔn)的差分進(jìn)化算法[1,2]可以高效地找出函數(shù)的最優(yōu)值,其主要定義如下:
個(gè)體種群由N個(gè)獨(dú)立的個(gè)體組成,記為
式中:N——種群數(shù)。
每一個(gè)個(gè)體是一個(gè)D維向量,記為
式中:D——問題維數(shù)。
類似于遺傳算法,需要通過差分進(jìn)化算法中的變異、交叉和選擇操作對(duì)種群進(jìn)行變換,從而找出最優(yōu)值點(diǎn)。
1.1.1 變異操作
變異操作的主要作用是對(duì)于不同個(gè)體進(jìn)行差分變換,從而產(chǎn)生新的變異個(gè)體。變異公式如下
新的變異個(gè)體Vi由3個(gè)不同的個(gè)體通過式 (3)計(jì)算而得。
1.1.2 交叉操作
交叉操作的主要作用是生成的實(shí)驗(yàn)個(gè)體與原個(gè)體進(jìn)行交叉操作,從而生成新的變異個(gè)體。交叉操作如下
式中:rand(0,1)為 [0,1]之間隨機(jī)數(shù),CR 為交叉概率其取值在 [0,1]之間,rnbr(i)是指第i個(gè)個(gè)體的向量標(biāo)號(hào)。
如式 (4)所示,交叉操作的本質(zhì)是將變異個(gè)體與原個(gè)體在各個(gè)維度向量上以一定的概率進(jìn)行交叉,生成新的實(shí)驗(yàn)個(gè)體ui。
1.1.3 選擇操作
選擇操作的主要作用是在個(gè)體進(jìn)入下一步迭代時(shí),在現(xiàn)在個(gè)體和實(shí)驗(yàn)個(gè)體中選擇一個(gè)適應(yīng)度較高的個(gè)體生成下一代的種群。選擇操作如式 (5)所示
如式 (5)所示,當(dāng)改進(jìn)實(shí)驗(yàn)個(gè)體的適應(yīng)度大于原來個(gè)體適應(yīng)度值,則采用改進(jìn)后的實(shí)驗(yàn)個(gè)體,其它情況下采用原來個(gè)體。
標(biāo)準(zhǔn)差分算法步驟如下:
步驟1 初始化種群X0進(jìn)入差分進(jìn)化算法,確定CR,將迭代步數(shù)t設(shè)為1,同時(shí)設(shè)定最大迭代步數(shù)tmax。
步驟2 調(diào)用變異操作。通過式 (3),計(jì)算所有個(gè)體的變異個(gè)體。
步驟3 調(diào)用交叉操作。通過式 (4),生成所有個(gè)體的實(shí)驗(yàn)個(gè)體。
步驟4 調(diào)用選擇操作。通過式 (5),判斷生成的實(shí)驗(yàn)個(gè)體是否比現(xiàn)存?zhèn)€體的適應(yīng)度高,如果適應(yīng)度高于現(xiàn)存?zhèn)€體,則讓實(shí)驗(yàn)個(gè)體替當(dāng)前個(gè)體;否則,保留,生成下一代。
步驟5 判斷是否已經(jīng)達(dá)到最優(yōu)值或迭代步驟數(shù)是已經(jīng)超過最大迭代步驟數(shù),如果是,轉(zhuǎn)向步驟6;否則轉(zhuǎn)向步驟2。
步驟6 輸出最優(yōu)值點(diǎn)。
從標(biāo)準(zhǔn)差分進(jìn)化算法可以看出,標(biāo)準(zhǔn)的CR是一定的,極易造成差分進(jìn)化算法的早熟,所以部分文獻(xiàn)針對(duì)于這個(gè)問題提出改進(jìn)CR的計(jì)算方法[5,6]。文獻(xiàn) [5]中將CR的計(jì)算方法改為
式中:g——當(dāng)前算法的步驟數(shù),G——算法整體的迭代步驟上限,CRmin——變異值的最小值,CRmax——變異值的最大值。
其最大的優(yōu)點(diǎn)是在算法開始時(shí),盡量關(guān)注全局范圍的變異情況,而在算法接近于收斂的時(shí)候,更加關(guān)注局部的收斂情況,形成二次變異差分進(jìn)化算法。
除此之外,許多文獻(xiàn)還對(duì)標(biāo)準(zhǔn)差分進(jìn)化算法進(jìn)行了其它方面的改進(jìn),如對(duì)差分進(jìn)化算法交叉和變異操作的改進(jìn)[7,8],對(duì)編碼進(jìn)行優(yōu)化改進(jìn)[9]、對(duì)個(gè)體進(jìn)行排序以提高算法效率[10]、利用信息論中熵的概念提高算法效率[11],以及對(duì)多目標(biāo)問題使用差分進(jìn)化算法的求解,如使用不同的理論對(duì) 進(jìn)化算法進(jìn)行改進(jìn)[12,13]、 進(jìn)化算法綜述[14,15]和對(duì)多目標(biāo)差分算法收斂性的討論[16]。
本文中改進(jìn)的差分進(jìn)化算法的假設(shè)和定義如下:
假設(shè)1:個(gè)體適應(yīng)度為正數(shù),其隨著個(gè)體對(duì)于環(huán)境適應(yīng)能力的增強(qiáng)而變大,即需要將問題歸一為正數(shù)最大值問題。
假設(shè)2:多峰函數(shù)是連續(xù)的且最優(yōu)值點(diǎn)存在且可以被找到。
假設(shè)3:多峰函數(shù)每一維變量是獨(dú)立的影響函數(shù)的取值。
定義1 整個(gè)種群適應(yīng)度的方差稱為適應(yīng)度方差,記為
式中:fi——當(dāng)前個(gè)體的適應(yīng)度,favg——平均適應(yīng)度,N——種群數(shù)。δ2的值越大,說明種群越分散,對(duì)于隨機(jī)搜索越有利;反之,δ2的值越小,說明種群越集中。
定義2 種群整體集中程度反比于種群的方差,稱為早熟比例基數(shù),記為
式中:f——一個(gè)比例系數(shù)。
定義3 個(gè)體的適應(yīng)度相對(duì)于最大適應(yīng)度和最小適應(yīng)度歸一化的值,稱為歸一化適應(yīng)度,記為
定義4 早熟比例基數(shù)與歸一化適應(yīng)度的乘積稱為個(gè)體的健康值,記為Hi=Fsimi*Kbase(10)
當(dāng)個(gè)體的健康值大于某個(gè)閾值,則此個(gè)體稱為優(yōu)勢個(gè)體;當(dāng)個(gè)體的健康值小于該閾值,此個(gè)體稱為劣勢個(gè)體。
根據(jù)以上定義,對(duì)于不同個(gè)體的改進(jìn),Ki計(jì)算公式如下
式中:a——一個(gè)系數(shù),rand(0,1)為 (0,1)之間的隨機(jī)數(shù),Kmin為在健康度較低條件下的K的低維比例因子,Kmax為在健康度較高條件下的K的高維比例因子。
定義5 對(duì)于函數(shù)極值點(diǎn)的第i極值點(diǎn)中第j維存在一個(gè)領(lǐng)域,使得在對(duì)于每一個(gè)個(gè)體的進(jìn)行一次小于比例因子Kminij的變異、交叉和選擇后,落在整個(gè)領(lǐng)域外的實(shí)驗(yàn)個(gè)體的適應(yīng)度值小于原來個(gè)體的值,領(lǐng)域叫做Kminij步長最極值領(lǐng)域。在極值點(diǎn)比例系數(shù)中最小的比例系數(shù)稱為這極值點(diǎn)的最小比例系數(shù),記為Kmini,所有極值點(diǎn)最小比例系數(shù)Kmini的最小值稱為最小比例系數(shù),記為Kmin。
本文中改進(jìn)的差分進(jìn)化算法的算法步驟如下:
步驟1 初始化種群X0進(jìn)入差分進(jìn)化算法,確定CR,將迭代步數(shù)T設(shè)為1,同時(shí)設(shè)定最大迭代步數(shù)Tmax。
步驟2 根據(jù)式 (7)和式 (8),以及現(xiàn)在的迭代步數(shù)T和適應(yīng)度,計(jì)算δ2、比例基值Kbase。
步驟3 根據(jù)式 (9)、式 (10)確定本個(gè)體的健康值Hi,根據(jù)式 (11)計(jì)算當(dāng)前個(gè)體的Ki。
步驟4 根據(jù)式 (3)調(diào)用變異操作,計(jì)算變異個(gè)體。
步驟5 根據(jù)式 (4)和CR進(jìn)行交叉操作,計(jì)算得到實(shí)驗(yàn)個(gè)體。
步驟6 根據(jù)式 (5),調(diào)用選擇操作生成下一代個(gè)體,檢查是否所有的個(gè)體都完成了迭代。如果還有個(gè)體未完成迭代,回到步驟3。
步驟7 判斷是否已經(jīng)達(dá)到最優(yōu)值或迭代步驟數(shù)已經(jīng)超過最大迭代步驟數(shù),如果是轉(zhuǎn)向步驟8,否則轉(zhuǎn)向步驟2。
步驟8 輸出最優(yōu)值點(diǎn)。
本文中改進(jìn)的差分進(jìn)化算法的性質(zhì)及其定理證明如下:
定理1 當(dāng)所有的個(gè)體每一維分量都落在極值而不是最優(yōu)值的Kminij步長最極值領(lǐng)域,且算法的比例系數(shù)值小于對(duì)應(yīng)的最小比例系數(shù)值,即K<Kmin時(shí),則標(biāo)準(zhǔn)差分進(jìn)化算法無法找到最優(yōu)值點(diǎn)。
證明:假設(shè)原先個(gè)體為的個(gè)體編號(hào)是r0,而隨機(jī)選中的個(gè)體的編號(hào)為r1、r2和r3,所以對(duì)于t+1步實(shí)驗(yàn)個(gè)體有以下組成
其中K≤Kmin,xr0j表示r0的第j維的分量,xr1j表示r1的第j維的分量、xr2j表示r2的第j維的分量、xr3j表示r3的第j維的分量。
對(duì)于式 (13),由于實(shí)驗(yàn)個(gè)體中的分量相較于上一步的個(gè)體分量沒有發(fā)生變化,所以只需要討論式 (12)。對(duì)于t+1步的迭代,對(duì)于每一個(gè)個(gè)體的每一維變量有以下兩種可能:
(1)下一步迭代時(shí)跳出r1的最極值領(lǐng)域內(nèi)
由于所有的個(gè)體每一維都在極值而不是最值的Kminij步長最極值領(lǐng)域內(nèi)且差分進(jìn)化算法的比例系數(shù)小于最小比例系數(shù) (即K<Kmin),所以這一維變量的改變必然導(dǎo)致個(gè)體適應(yīng)度值的變小。又因?yàn)槎喾搴瘮?shù)每一維變量是獨(dú)立的影響函數(shù),所以產(chǎn)生的實(shí)驗(yàn)個(gè)體必然小于原個(gè)體的適應(yīng)度值,在選擇步驟中必然會(huì)選擇原個(gè)體,而不是變異個(gè)體。
(2)下一步依然在r1的最極值領(lǐng)域內(nèi)
由于所有的個(gè)體的每一維分量都在極值而不是最優(yōu)值的Kminij步長最極值領(lǐng)域,所以迭代后的個(gè)體也一定不在最優(yōu)值的Kminij步長最極值領(lǐng)域內(nèi),因此不會(huì)達(dá)到最優(yōu)值。
綜上所述,原命題成立。
推論1 當(dāng)多維函數(shù)的維數(shù)和函數(shù)極值點(diǎn)足夠多時(shí),傳統(tǒng)的差分進(jìn)化算法很難找到全局最優(yōu)值點(diǎn)。
證明:隨著函數(shù)維數(shù)和局部極值點(diǎn)的增多,陷入局部極值點(diǎn)的概率將增大,所以隨著函數(shù)維數(shù)和局部極值點(diǎn)增多其越難找到全局最優(yōu)值點(diǎn)。
定理1與推論1說明了標(biāo)準(zhǔn)的差分進(jìn)化算法在多峰函數(shù)條件下,如果比例系數(shù)值選擇過小,則較容易發(fā)生早熟現(xiàn)象,即過早進(jìn)入找到局部最優(yōu)值的搜索而忽略了全局的最優(yōu)值點(diǎn),而如果比例因子取得太大的話,又會(huì)因?yàn)槠涞缍忍?,不利于最?yōu)值點(diǎn)的局部搜索。
定理2 如果高維比例因子足夠大,在迭代步驟數(shù)足夠多的情況下,改進(jìn)差分進(jìn)化算法可以找到最優(yōu)值。
證明:由于迭代步驟足夠多,那么當(dāng)陷入局部極值的個(gè)體必然有n步迭代進(jìn)入式 (11)中高維部分,又因?yàn)楦呔S的步長足夠長,所以必然存在個(gè)體高維的迭代可以跳出局部極值。而與此同時(shí)在最優(yōu)值周圍的個(gè)體,由于迭代步驟足夠多,必然存在個(gè)體通過式 (11)的低維搜索找到最優(yōu)值。
所以改進(jìn)差分進(jìn)化算法可以在迭代步驟數(shù)足夠多的情況下找到最優(yōu)值。
本實(shí)驗(yàn)是在MATLAB2010b環(huán)境下進(jìn)行測試,本文選擇表1所示的5個(gè)函數(shù)作為本實(shí)驗(yàn)的測試函數(shù),其中測試函數(shù)1~5的性質(zhì)各不相同:函數(shù)1、函數(shù)4和函數(shù)5是多峰函數(shù),函數(shù)2和函數(shù)3為單峰函數(shù)。在實(shí)驗(yàn)中分別對(duì)于低維數(shù)據(jù) (2,2,2,3,3)和高維數(shù)據(jù) (2,15,10,10,15)各自獨(dú)立進(jìn)行10次實(shí)驗(yàn),分別對(duì)10次試驗(yàn)迭代次數(shù)的最大值、最小值和平均值進(jìn)行統(tǒng)計(jì)。
表1 模擬使用的測試函數(shù)
為了減少CR對(duì)于實(shí)驗(yàn)結(jié)果的影響,實(shí)驗(yàn)中采用規(guī)定CR為常數(shù)的方法。表2是在低維 (2,2,2,3,3)情況下標(biāo)準(zhǔn)差分進(jìn)化算法和改進(jìn)后的差分進(jìn)化算法迭代步驟數(shù)的對(duì)比,表3是在高維 (2,15,10,10,15)情況下標(biāo)準(zhǔn)差分進(jìn)化算法和改進(jìn)后的差分進(jìn)化算法迭代步驟數(shù)的對(duì)比。
其中SDE代表標(biāo)準(zhǔn)差分進(jìn)化算法,IDE代表本文中的差分進(jìn)化算法。
由表2可知,改進(jìn)差分進(jìn)化算法相較于傳統(tǒng)差分進(jìn)化算法沒有明顯的改進(jìn),在某些函數(shù)上,甚至有時(shí)性能還低于標(biāo)準(zhǔn)的差分進(jìn)化算法,其主要原因是改進(jìn)的差分進(jìn)化算法為了提高對(duì)于全局最優(yōu)值的查找能力,進(jìn)行了不必要的高維搜索。由表3可知,隨著測試函數(shù)維度的增加,在多維函數(shù)4和函數(shù)5中改進(jìn)差分進(jìn)化算法其達(dá)標(biāo)時(shí)的迭代次數(shù)相較傳統(tǒng)的差分進(jìn)化算法明顯減少,甚至在函數(shù)4中,在交叉概率CR為0.2的情況下,有1000次無法迭代出結(jié)果的情況,而改進(jìn)的差分進(jìn)化算法依然可以在最多343步下找到函數(shù)的達(dá)標(biāo)值點(diǎn),這符合推論1和定理2。
圖1 顯示了迭代結(jié)束時(shí)傳統(tǒng)差分進(jìn)化算法和改進(jìn)差分進(jìn)化算法在算法終止時(shí),高維和低維不同環(huán)境下,對(duì)于5個(gè)實(shí)驗(yàn)中的測試函數(shù)的平均最小值。
表2 對(duì)于第一組維數(shù) (2,2,2,3,3)其優(yōu)化結(jié)果前后迭代步數(shù)比較
表3 對(duì)于第一組維數(shù) (2,15,10,10,15)其優(yōu)化結(jié)果前后迭代步數(shù)比較
圖1 低維和高維條件下,差分算法平均最小值的比較
從圖1(a)中可以看出,低維的條件下,改進(jìn)差分進(jìn)化算法與傳統(tǒng)方法找到函數(shù)最小值相似,圖1(b)高維條件下,改進(jìn)后的差分進(jìn)化算法的平均最小值小于或等于標(biāo)準(zhǔn)的差分進(jìn)化算法,尤其是在多維函數(shù)4中其平均值相差較大。
本文中通過對(duì)于標(biāo)準(zhǔn)差分進(jìn)化算法引入自適應(yīng)的比例因子,提出了一個(gè)基于自適應(yīng)比例算子的改進(jìn)的差分進(jìn)化算法,通過實(shí)驗(yàn)分析和理論推導(dǎo)證明改進(jìn)的差分進(jìn)化算法較傳統(tǒng)差分進(jìn)化算法在高維多峰函數(shù)環(huán)境下,可以有效地提高算法對(duì)于全局最優(yōu)值點(diǎn)的查找能力以及減少差分進(jìn)化算法的迭代步驟數(shù),但是由于本文中對(duì)于改進(jìn)的差分進(jìn)化算法的實(shí)驗(yàn)數(shù)量有限,是否可以找出一個(gè)即可以不依賴于函數(shù)先驗(yàn)知識(shí)的通用比例因子的計(jì)算方法,依然是值得研究的問題。
[1]Storn R,Price K.Differential Evolution-a simple and efficient heuristic for global optimization over continuous spaces [J].Journal of Global Optimization,1997,11 (4):341-359.
[2]Storn R,Price K.Minimizing the real functions of the ICEC’96contest by differential evolution [C]//Proceedings of IEEE International Conference on Evolutionary Computation,1996.
[3]LIU Bo,WANG Ling,JIN Yihui.Advances in differential evolution [J].Control and Decision,2007,22 (7):721-729(in Chinese).[劉波,王凌,金以慧.差分進(jìn)化算法的研究進(jìn)展 [J].控制與決策,2007,22 (7):721-729.]
[4]YANG Qiwen,CAI Liang,XUE Yuncan.A survey of differential evolution algorithms [J].Pattern Recognition and Artificial Intelligence,2008,21 (4):506-513 (in Chinese).[楊啟文,蔡亮,薛云燦.差分進(jìn)化算法綜述 [J].模式識(shí)別與人工智能,2008,21 (4):506-513.]
[5]WU Lianghong,WANG Yaonan,YUAN Xiaofang,et al.Differential evolution algorithm with adaptive second mutation[J].Control and Decision,2006,21 (8):898-902 (in Chinese).[吳亮紅,王耀南,袁小芳,等.自適應(yīng)二次變異差分進(jìn)化算法 [J].控制與決策,2006,21 (8):898-902.]
[6]DENG Zexi,CAO Dunqian,LIU Xiaoji,et al.new differential evolution algorithm [J].Computer Engineering and Applications,2008,44 (24):40-42 (in Chinese).[鄧澤喜,曹敦虔,劉曉冀,等.一種新的差分進(jìn)化算法 [J].計(jì)算機(jī)工程與應(yīng)用,2008,44 (24):40-42.]
[7]Zaharie D.Influence of crossover on the behavior of Differential Evolution Algorithms[J].Applied Soft Computing,2009,9(3):1126-1138.
[8]Epitropakis M G,Pavlidis N G,Plagianakos V P,et al.Enhancing differential evolution utilizing proximity-based mutation operators [J].Evolutionary Computation,2011,15 (1):99-119.
[9]HE Yichao,WANG Xizhao,KOU Yingzhan.A binary differential evolution algorithm with hybrid encoding [J].Journal of Computer Research and Development,2007,44 (9):1476-1484(in Chinese).[賀毅朝,王熙照,寇應(yīng)展.一種具有混合編碼的二進(jìn)制差分演化算法 [J].計(jì)算機(jī)研究與發(fā)展,2007,44 (9):1476-1484.]
[10]SHAO Liang.Differential evolutin algorithm based on individual ordering and samplng [J].Computer Engineering and Applications,2012,48 (1):49-52 (in Chinese).[邵梁.基于排序采樣策略的差分演化算法 [J].計(jì)算機(jī)工程與應(yīng)用,2012,48 (1):49-52.]
[11]YONG Longquan,CHEN Tao,ZHANG Jianke.Solving complementarity problem based on maximum differential evolutionary algorithm [J].Application Research of Computers,2010,27 (4):1308-1310 (in Chinese).[雍龍泉,陳濤,張建科.求解互補(bǔ)問題的極大熵差分進(jìn)化算法 [J].計(jì)算機(jī)應(yīng)用研究,2010,27 (4):1308-1310.]
[12]WANG Xiaozhen,LI Peng,YU Guoyan.Multi-objective chaotic differential evolution algorithm with grading second mutation [J].Control and Decision-Making,2011,26 (3):457-163(in Chinese).[王筱珍,李鵬,俞國燕.分階段二次變異的多目標(biāo)混沌差分進(jìn)化算法 [J].控制與決策,2011,26 (3):457-163.]
[13]MENG Hongyun,ZHANG Xiaohua,LIU Sanyang.A differential evolution based on double populations for constrained multi-objective optimization problem [J].Chinese Journal of Computers,2008,31 (2):228-235 (in Chinese).[孟紅云,張小華,劉三陽.用于約束多目標(biāo)優(yōu)化問題的雙群體差分進(jìn)化算法 [J].計(jì)算機(jī)學(xué)報(bào),2008,31 (2):228-235.]
[14]GONG Maoguo,JIAO Licheng,YANG Dongdong,et al.A differential evolution based on double populations for constrained multi-objective optimization problem [J].Journal of Software,2009,20 (2):272-289 (in Chinese).[公茂果,焦李成,楊咚咚,等.進(jìn)化多目標(biāo)優(yōu)化算法研究 [J].軟件學(xué)報(bào),2009,20 (2):272-289.]
[15]XIE Tao,CHEN Huowang,KANG Lishan.Evolutionary algorithms of multi-objective optimization problems [J].Chinese Journal of Computers,2003,26 (8):997-1003 (in Chinese).[謝濤,陳火旺,康立山.多目標(biāo)優(yōu)化的演化算法[J].計(jì)算機(jī)學(xué)報(bào),2003,26 (8):997-1003.]
[16]ZHOU Yuren, MIN Huaqing,XU Xiaoyuan,et al.A multi-objective evolutionary algorithm and its convergence[J].Chinese Journal of Computers,2004,27 (10):1415-1421(in Chinese).[周育人,閔華清,許孝元,等.多目標(biāo)演化算法的收斂性研究 [J].計(jì)算機(jī)學(xué)報(bào),2004,27 (10):1415-1421.]