王 貞,支俊陽(yáng),李旭飛,崔軻軻
1.北方民族大學(xué) 數(shù)學(xué)與信息科學(xué)學(xué)院,銀川 750021
2.咸陽(yáng)師范學(xué)院 數(shù)學(xué)與信息科學(xué)學(xué)院,陜西 咸陽(yáng) 712000
實(shí)際工程優(yōu)化問(wèn)題大多被構(gòu)建為約束優(yōu)化問(wèn)題,例如:焊接梁結(jié)構(gòu)設(shè)計(jì)、拉力/壓力彈簧設(shè)計(jì)、壓力容器最小費(fèi)用優(yōu)化等。約束的存在增加了問(wèn)題的求解難度,因此研究者們?cè)O(shè)計(jì)了多種策略來(lái)處理約束,如ε約束法[1]、多目標(biāo)優(yōu)化法[2]、罰函數(shù)法[3]等。此外,隨著智能優(yōu)化算法的發(fā)展,研究者們還通過(guò)改進(jìn)智能優(yōu)化算法提高求解約束優(yōu)化問(wèn)題的性能。2015年,龍文等[4]提出了一種改進(jìn)的螢火蟲(chóng)算法,加快算法求解約束優(yōu)化問(wèn)題的收斂速度,避免其陷入局部最優(yōu)。2018年,劉三陽(yáng)等[5]提出了一種協(xié)同進(jìn)化教與學(xué)優(yōu)化算法,使得隨著種群的進(jìn)化懲罰因子及約束容忍度自適應(yīng)調(diào)整,提高了算法求解約束優(yōu)化問(wèn)題的效率。2019年,Wang等[6]為了平衡收斂性與多樣性、目標(biāo)函數(shù)與約束違反,提出了一種約束優(yōu)化的復(fù)合差分進(jìn)化方法來(lái)求解約束優(yōu)化問(wèn)題。2020年,顧啟元等[7]提出一種改進(jìn)的水波優(yōu)化算法,提高了算法求解約束優(yōu)化問(wèn)題的收斂精度。
人工蜂群算法(ABC)是Karaboga[8]于2005年提出的一種智能優(yōu)化算法,它具有控制參數(shù)少,收斂速度快等優(yōu)點(diǎn)。2010年,Zhu等[9]為了提高ABC算法的開(kāi)發(fā)能力,采用Gbest引導(dǎo)種群進(jìn)行搜索,提出了GABC算法。Mezura等[10]通過(guò)使用等式約束動(dòng)態(tài)容忍機(jī)制及修改三種蜜蜂搜索方程,提出了Elitist-ABC算法。2011年,Karaboga等[11]提出了改進(jìn)的ABC算法(MABC),使用Deb選擇規(guī)則替換ABC原有的選擇方式。Kang等[12]提出了一種基于Hooke Jeeves模式搜索的混合Hooke Jeeves ABC算法。2017年,Bansal等[13]在雇傭蜂和觀(guān)察蜂階段通過(guò)結(jié)合基于個(gè)體移動(dòng)適應(yīng)度概率的概念,對(duì)GABC進(jìn)行了改進(jìn)。2018年,Gao等[14]提出了一種基于人工蜂群算法(ABC)的新機(jī)制,該算法由兩種新的學(xué)習(xí)策略-方向?qū)W習(xí)和精英學(xué)習(xí)組成,相互補(bǔ)充,提高算法的性能。王志剛等[15]在雇傭蜂和觀(guān)察蜂階段動(dòng)態(tài)調(diào)整搜索維數(shù),提出多搜索策略協(xié)同進(jìn)化的人工蜂群算法。2020年,郭佳等[16]提出了IMABC算法,將算法的進(jìn)化過(guò)程分為兩個(gè)階段,減少算法隨機(jī)搜索的同時(shí)避免了算法的早熟。莫建麟等[17]提出了ABCIS算法,放棄了傳統(tǒng)的貪婪選擇機(jī)制并通過(guò)智能搜索與特殊劃分的方式提升了算法的搜索性能。盡管對(duì)ABC算法的研究取得了很多成果,但大部分人工蜂群算法在求解約束優(yōu)化問(wèn)題時(shí),在搜索過(guò)程中僅采用單一搜索方程,很難平衡種群的收斂性與多樣性,使算法易陷入局部最優(yōu)。在保留較優(yōu)個(gè)體時(shí),僅使用一種策略,難以平衡種群的目標(biāo)函數(shù)與約束違背。
為了解決上述問(wèn)題,本文提出了一種復(fù)合人工蜂群算法(composite artificial bee colony algorithm,CABC)來(lái)求解約束優(yōu)化問(wèn)題。算法中使用了不同的搜索方程平衡種群的多樣性與收斂性,來(lái)提高算法的收斂精度。通過(guò)ε約束和可行性準(zhǔn)則結(jié)合的方式選擇個(gè)體,促使種群向可行區(qū)域靠近,同時(shí)平衡目標(biāo)函數(shù)與約束,極大地提高了算法的探索能力。通過(guò)將CABC算法用于求解CEC 2006和CEC 2010測(cè)試函數(shù),并應(yīng)用到3個(gè)工程優(yōu)化問(wèn)題上檢驗(yàn)了算法的性能。
受到蜜蜂采蜜行為的啟發(fā)[8],在ABC中,食物源位置對(duì)應(yīng)優(yōu)化問(wèn)題的一個(gè)候選解,每個(gè)食物源的質(zhì)量代表其對(duì)應(yīng)候選解的適應(yīng)度值。
在初始化階段,隨機(jī)生成一個(gè)均勻分布含SN個(gè)食物源的初始種群,每個(gè)食物源x i(i=1,2,…,SN)的維數(shù)為D,每個(gè)解通過(guò)下面方式來(lái)初始化:
其中,x i是種群中的第i個(gè)解,xmin,j和xmax,j分別是第j維的下界和上界,rand是[0,1]范圍內(nèi)分布的隨機(jī)數(shù)。在雇傭蜂階段,種群探索新食物源,通過(guò)如下形式更新:
其中,j∈[1,2,…,D],k∈[1,2,…,SN],k≠i。φij是在[-1,1]中隨機(jī)產(chǎn)生的數(shù)。產(chǎn)生新解之后,在xi和新解v i之間保留更好的食物源。對(duì)于每個(gè)食物源x i的適應(yīng)度值fit i以如下方式計(jì)算:
其中,f i代表解xi的目標(biāo)函數(shù)值。
開(kāi)采食物源后,雇傭蜂返回蜂巢,通過(guò)搖擺舞與跟隨蜂分享食物源的位置和質(zhì)量信息。在跟隨蜂階段,跟隨蜂依據(jù)雇傭蜂分享的信息計(jì)算食物源xi的選擇概率prob i:
其中,maxf it i是種群中的最大適應(yīng)度值。跟隨蜂通過(guò)輪盤(pán)賭選擇食物源,并根據(jù)式(2)進(jìn)行更新。
若任何食物源的開(kāi)采達(dá)到limit次,則放棄該食物源,對(duì)應(yīng)的雇傭蜂就會(huì)轉(zhuǎn)化為偵查蜂,在整個(gè)搜索空間中根據(jù)式(1)探索新的食物源。人工蜂群算法流程如下。
算法1人工蜂群算法
步驟1利用式(1)進(jìn)行種群初始化,設(shè)定算法的所有參數(shù)。食物源數(shù)量SN,最大迭代次數(shù)maxGen,當(dāng)前代數(shù)gen=1,最大開(kāi)采次數(shù)limit。
步驟2雇傭蜂根據(jù)式(2)搜索新的食物源vi,通過(guò)式(3)計(jì)算新食物源的適應(yīng)度值fit i。比較x i和vi的適應(yīng)度值保留較好的食物源。
步驟3利用式(4)計(jì)算跟隨蜂選擇食物源的概率,通過(guò)式(2)選擇一個(gè)食物源進(jìn)行更新。計(jì)算新食物源的適應(yīng)度值,根據(jù)其適應(yīng)度值選擇要保留的食物源。
步驟4如果有食物源達(dá)到最大開(kāi)采次數(shù),則根據(jù)式(1)產(chǎn)生一個(gè)新食物源。
步驟5識(shí)別是否滿(mǎn)足滿(mǎn)足終止條件,若滿(mǎn)足終止條件,則輸出最優(yōu)解,否則轉(zhuǎn)至步驟2。
原始ABC算法僅僅使用一種搜索方程,難以平衡種群的收斂性與多樣性,影響了算法的性能。因此,CABC算法在雇傭蜂階段使用三種不同的搜索方程產(chǎn)生三個(gè)新食物源。在這三個(gè)新食物源之間根據(jù)可行性準(zhǔn)則保留較優(yōu)新食物源,將得到的新食物源再與舊食物源之間基于ε約束進(jìn)行比較,保留較優(yōu)食物源。這樣可以平衡種群的收斂性與多樣性,同時(shí)兼顧目標(biāo)函數(shù)與約束的有效信息。
在原始的人工蜂群算法中,蜂群的搜索方程往往是對(duì)解進(jìn)行一維變異,但這樣將會(huì)導(dǎo)致種群中的個(gè)體過(guò)于關(guān)注自身的信息,進(jìn)而忽略了其他個(gè)體以及優(yōu)秀個(gè)體的信息。但若對(duì)種群中個(gè)體的每一維都進(jìn)行變異,種群過(guò)度吸收其他個(gè)體的信息而忽略了自身的信息,丟失個(gè)體在尋優(yōu)過(guò)程中得到的優(yōu)良信息。所以在雇傭蜂階段種群需要由最優(yōu)個(gè)體引導(dǎo)并隨機(jī)選取部分維進(jìn)行變異來(lái)保證種群的收斂性,但這樣將會(huì)造成種群的多樣性有所損失。為了平衡種群的收斂性與多樣性,需要由鄰居個(gè)體引導(dǎo)并對(duì)其每一維都進(jìn)行變異來(lái)維持種群的多樣性。因此在雇傭蜂階段采用如式(5)、(6)兩個(gè)搜索方程產(chǎn)生新的蜜源:
其中,k∈{1,2,…,SN},k≠i,j=[1,2,…,D],φi∈[-1,1]是均勻分布的隨機(jī)數(shù),D為問(wèn)題的維數(shù)。
其中,r1,r2,r3∈{1,2,…,SN},r1≠r2≠r3≠i,j=[j1,j2,…,j m],j r∈{1,2,…,D},r∈{1,2,…,m},m∈{1,2,…,[rand×D]},φi∈[-1,1]是均勻分布的隨機(jī)數(shù),φi∈[-0.75,0.75]是均勻分布的隨機(jī)數(shù),D為問(wèn)題的維數(shù)。在式(6)中,F(xiàn)隨著代數(shù)的增加而減?。?/p>
首先利用式(5)對(duì)雇傭蜂進(jìn)行變異,生成第一個(gè)新食物源v1,通過(guò)對(duì)每一維都進(jìn)行變異維持了種群的多樣性。其次選取具有最小目標(biāo)函數(shù)值的個(gè)體xbest,利用式(6)對(duì)雇傭蜂部分維進(jìn)行變異,生成第二個(gè)新食物源v2,通過(guò)具有最小目標(biāo)函數(shù)值個(gè)體的引導(dǎo)促使種群快速收斂。最后選取具有最小約束違反程度的個(gè)體xbest,利用式(6)對(duì)雇傭蜂部分維進(jìn)行變異,生成第三個(gè)新食物源v3,通過(guò)具有最小約束違反程度個(gè)體的引導(dǎo)幫助種群快速進(jìn)入可行域。若種群中具有最小目標(biāo)函數(shù)值的個(gè)體不止一個(gè),則選取具有最小目標(biāo)函數(shù)值中具有最小約束違反程度的個(gè)體;若種群中具有最小約束違反程度的個(gè)體不止一個(gè),則選擇具有最小約束違反程度個(gè)體中具有最小目標(biāo)函數(shù)值的個(gè)體。
由于在雇傭蜂階段采用了兩種最優(yōu)引導(dǎo)策略和一種多樣性引導(dǎo)策略,增強(qiáng)了算法的收斂性,對(duì)于種群的多樣性有所損失。為了平衡種群的收斂性與多樣性,所以在跟隨蜂階段采用如下搜索方程維持種群的多樣性。
其中,k∈{1,2,…,SN},k≠i,j=[j1,j2,…,j m],j r∈{1,2,…,D},r∈{1,2,…,m},m∈{1,2,…,[rand×D]},φi∈[-1,1]是均勻分布的隨機(jī)數(shù)。
在偵察蜂階段仍使用與原始ABC相同的搜索方程(1)產(chǎn)生新的個(gè)體,通過(guò)隨機(jī)搜索幫助種群跳出局部最優(yōu)。因?yàn)楣蛡蚍浼坝^(guān)察蜂階段的搜索方程促使更多距離種群較遠(yuǎn)的個(gè)體進(jìn)入種群中,在進(jìn)化過(guò)程中維持了種群的多樣性,使算法更容易跳出局部最優(yōu)。
可行性準(zhǔn)則是Deb[18]于2000年提出的約束處理方法。由于其原理簡(jiǎn)單、方便執(zhí)行、收斂速度快,被研究者廣泛使用。在可行性準(zhǔn)則中,采用如下規(guī)則來(lái)比較個(gè)體:
(1)兩個(gè)個(gè)體均為可行解,具有最小目標(biāo)函數(shù)值的個(gè)體占優(yōu)。
(2)一個(gè)個(gè)體為可行解,另一個(gè)個(gè)體為不可行解,可行個(gè)體占優(yōu)。
(3)兩個(gè)個(gè)體都為不可行解,約束違背程度小的個(gè)體占優(yōu)。
由于可行性規(guī)則較為嚴(yán)格的特性,如果可行區(qū)域在整個(gè)空間中占比較小,不可行解將難以被選入下一代種群中,因此種群很難進(jìn)入可行區(qū)域。為了加快種群的收斂,除可行解外,需要特別關(guān)注位于可行區(qū)域邊界的不可行解,因?yàn)檫@些解可能攜帶優(yōu)良解的基因。這就需要一種約束處理方法保留位于可行區(qū)域邊界的解以便在進(jìn)化過(guò)程中對(duì)這些解進(jìn)一步開(kāi)發(fā),幫助種群快速進(jìn)入可行區(qū)域。
ε約束是Takahama和Sakai[1]提出的有代表性的約束處理技術(shù),它可以放松約束,讓約束違反程度低目標(biāo)函數(shù)值小的個(gè)體有機(jī)會(huì)被選入下一代種群,使得算法能夠探測(cè)到可行區(qū)域邊緣的優(yōu)良解,進(jìn)而指導(dǎo)種群搜索到最優(yōu)區(qū)域。ε約束中比較兩個(gè)個(gè)體xi和x j時(shí),稱(chēng)xi優(yōu)于x j當(dāng)且僅當(dāng):
在式(9)中,ε隨著代數(shù)的增加而下降:
其中,gen代表當(dāng)前代數(shù),maxGen代表最大迭代次數(shù),ε0代表在當(dāng)前代種群中個(gè)體的最大約束違反程度。
本文采用ε約束和可行性準(zhǔn)則兩種約束條件處理方法進(jìn)行解的比較與選擇。通過(guò)ε約束促使位于可行區(qū)域邊界的不可行解有機(jī)會(huì)進(jìn)入下一代種群,引導(dǎo)種群進(jìn)入可行區(qū)域。通過(guò)使用可行性準(zhǔn)則對(duì)進(jìn)化過(guò)程中產(chǎn)生的解進(jìn)行更嚴(yán)格的選擇,促進(jìn)算法收斂。
受文獻(xiàn)[12]的啟發(fā),在CABC算法中,極小化約束優(yōu)化問(wèn)題第i個(gè)食物源的適應(yīng)度值為:
式(11)中fito i為第i個(gè)食物源的原值適應(yīng)度值:其中,SP∈[1.0,2.0]是選擇壓力,SP=1.5是最佳選擇。rank i是第i個(gè)個(gè)體在整個(gè)種群中排序后的位置。
在計(jì)算rank時(shí),先對(duì)種群中個(gè)體根據(jù)約束違背值進(jìn)行排序,在這個(gè)排序基礎(chǔ)上再對(duì)種群中個(gè)體基于其目標(biāo)函數(shù)值進(jìn)行排序。由于跟隨蜂選擇食物源的概率為:
所以通過(guò)這種排序的方法使得種群中個(gè)體約束違背程度且目標(biāo)函數(shù)值小的個(gè)體總是位于前方,也就是說(shuō)在下一代種群中優(yōu)先選擇那些可行且目標(biāo)函數(shù)值小的個(gè)體。若種群中的個(gè)體全部是不可行的,這種排序方式就退化為僅依靠約束違背程度進(jìn)行排序,這樣具有較小約束違背程度的個(gè)體有著更大的概率進(jìn)入下一代種群,從而引導(dǎo)種群向可行區(qū)域靠近。若種群中的個(gè)體都是可行的,該排序方式就僅依靠目標(biāo)函數(shù)值進(jìn)行排序,具有更小目標(biāo)函數(shù)的個(gè)體有著更大的概率進(jìn)入下一代種群,增強(qiáng)了算法的開(kāi)發(fā)能力。
算法2給出了CABC算法的基本框架。初始化過(guò)程中,算法在搜索區(qū)域內(nèi)隨機(jī)產(chǎn)生食物源。在雇傭蜂階段,采用一種隨機(jī)搜索方程與兩種最優(yōu)引導(dǎo)方程產(chǎn)生三個(gè)新的食物源。這樣能夠提高算法的收斂能力,并且保證種群的多樣性。在這三個(gè)新食物源中根據(jù)可行性規(guī)則選擇要保留的新食物源,促使種群向可行區(qū)域靠近。在產(chǎn)生的新食物源與舊食物源之間根據(jù)ε約束保留優(yōu)良個(gè)體,這種保留機(jī)制對(duì)約束條件有著一定的放松,促使種群中約束違反程度低且目標(biāo)函數(shù)值小的個(gè)體有機(jī)會(huì)進(jìn)入下一代種群,這樣有利于保留較好的不可行解,促進(jìn)算法收斂。在跟隨蜂階段采用隨機(jī)搜索方程,平衡了種群的收斂性與多樣性。
算法2復(fù)合人工蜂群算法
步驟1設(shè)置算法參數(shù),食物源數(shù)量SN,最大迭代次數(shù)maxGen,當(dāng)前代數(shù)gen=1,最大開(kāi)采次數(shù)limit。利用式(1)進(jìn)行種群初始化。
步驟2雇傭蜂按照式(5)、(6)搜索新的食物源,計(jì)算新食物源目標(biāo)函數(shù)值、約束違反程度。利用可行性規(guī)則在產(chǎn)生的三個(gè)新食物源中選出一個(gè)較優(yōu)新食物源。
步驟3利用ε約束在新食物源與舊食物源之間進(jìn)行選擇,保留較優(yōu)食物源。
步驟4利用式(13)計(jì)算跟隨蜂選擇食物源的概率,并選擇一個(gè)食物源進(jìn)行更新。根據(jù)式(8)搜索新食物源,計(jì)算新食物源的目標(biāo)函數(shù)值,約束違反程度。根據(jù)可行性規(guī)則在新食物源和舊食物源之間進(jìn)行選擇,保留較優(yōu)食物源。
步驟5如果有食物源達(dá)到最大開(kāi)采次數(shù),則根據(jù)式(1)重新初始化一個(gè)食物源。
步驟6識(shí)別是否滿(mǎn)足滿(mǎn)足終止條件,若滿(mǎn)足終止條件,則輸出最優(yōu)解,否則轉(zhuǎn)至步驟2。
為了從理論上驗(yàn)證CABC算法的性能,進(jìn)行如下所述分析。
2.5.1 算法的尋優(yōu)能力分析
CABC算法在雇傭蜂階段使用三種不同的搜索方程平衡種群的收斂性與多樣性,通過(guò)將可行性準(zhǔn)則和ε約束結(jié)合的方式促使位于可行區(qū)域邊界的不可行個(gè)體有機(jī)會(huì)進(jìn)入下一代種群,引導(dǎo)種群快速進(jìn)入可行區(qū)域,提高了算法的全局探索能力。使用新的適應(yīng)度值計(jì)算方式更容易識(shí)別種群中高質(zhì)量個(gè)體,并且跟隨蜂階段采用輪盤(pán)賭方式在高質(zhì)量個(gè)體附近進(jìn)行搜索,提高了算法的局部探索能力,使得種群向較優(yōu)個(gè)體靠近,保證了算法的收斂。
當(dāng)種群中大部分個(gè)體位于可行區(qū)域中,這就需要盡可能多地保留種群中高質(zhì)量個(gè)體的信息。在雇傭蜂階段由具有最小約束違反程度的個(gè)體引導(dǎo)的搜索方程已經(jīng)變成由具有最小目標(biāo)函數(shù)的可行解引導(dǎo),因此算法將在最優(yōu)個(gè)體附近進(jìn)一步開(kāi)發(fā),提高了算法的局部尋優(yōu)能力。隨著迭代次數(shù)的增加,逐漸確定了可行區(qū)域的大致位置,這時(shí)不需要不可行個(gè)體引導(dǎo)種群的搜索方向,ε約束逐漸演變?yōu)榭尚行詼?zhǔn)則引導(dǎo)種群在可行區(qū)域內(nèi)部搜索,促使算法收斂到最優(yōu)值。另一方面由于在雇傭蜂及跟隨蜂階段采用多維隨機(jī)變異操作,保證了種群的多樣性,偵察蜂階段采用隨機(jī)搜索的方式,使種群更容易跳出局部最優(yōu),避免了算法的早熟。
為了進(jìn)一步說(shuō)明CABC算法的尋優(yōu)能力,對(duì)IEEE CEC2006[19]中g(shù)08測(cè)試函數(shù)的種群分布特征進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖1所示,其中圖1(e)、(f)右上角為種群分布的局部放大圖,percent代表當(dāng)前種群的可行性比例。從圖中可以直觀(guān)地看出,在進(jìn)化初期,種群可行性比例不斷增加,說(shuō)明了CABC算法將可行性準(zhǔn)則和ε約束結(jié)合能夠幫助高質(zhì)量不可行個(gè)體進(jìn)入下一代種群,從而引導(dǎo)種群快速進(jìn)入可行區(qū)域。隨著迭代次數(shù)的增加,種群中個(gè)體逐漸向最優(yōu)個(gè)體附近聚集并且具有良好的分散性,說(shuō)明了利用多維隨機(jī)變異操作和最優(yōu)引導(dǎo)變異操作使CABC算法在迭代過(guò)程中始終進(jìn)行全局搜索和局部搜索,在已有經(jīng)驗(yàn)的基礎(chǔ)上對(duì)較優(yōu)個(gè)體附近區(qū)域進(jìn)一步探索且保持了種群的多樣性,平衡了算法的探索能力和開(kāi)發(fā)能力。
圖1 測(cè)試函數(shù)g08上種群分布變化圖Fig.1 Variation of population distribution on test function g08
2.5.2 算法的時(shí)間復(fù)雜度分析
由算法1可知ABC算法的時(shí)間復(fù)雜度為O(maxGen×SN×D),其中max Gen是最大迭代次數(shù),SN是食物源數(shù)量,D是問(wèn)題的維數(shù)。與ABC算法相比,CABC算法初始化的時(shí)間復(fù)雜度為O(SN×D)。CABC算法在雇傭蜂階段通過(guò)不同搜索方程產(chǎn)生了三個(gè)新種群,其時(shí)間復(fù)雜度為O(3×maxGen×SN×D)。所以CABC算法的時(shí)間復(fù)雜度為O(SN×D+3×maxGen×SN×D+maxGen×SN×D),即O(max Gen×SN×D)。所以CABC算法的時(shí)間復(fù)雜度為O(maxGen×SN×D),與ABC算法相同。
2.5.3 算法的空間復(fù)雜度分析
由算法1可知ABC算法的空間復(fù)雜度為O(SN×D)。與ABC算法相比,CABC算法在雇傭蜂階段通過(guò)不同搜索方程產(chǎn)生了三個(gè)新種群,其空間復(fù)雜度為O(3×SN×D),即O(SN×D)。所以CABC算法的空間復(fù)雜度為O(SN×D),與ABC算法相同。
為了系統(tǒng)地驗(yàn)證CABC算法求解約束優(yōu)化問(wèn)題的性能,在兩組標(biāo)準(zhǔn)測(cè)試函數(shù)上對(duì)CABC算法和其他算法進(jìn)行了比較。測(cè)試函數(shù)包括IEEE CEC2006中的20個(gè)測(cè)試函數(shù)[19],IEEE CEC2010的18個(gè)測(cè)試函數(shù)[20],它們涵蓋了強(qiáng)非線(xiàn)性、多模態(tài)、極小可行區(qū)域等各種特性。測(cè)試函數(shù)詳情見(jiàn)文獻(xiàn)[19-20]。
為了使CABC算法的結(jié)果和其他改進(jìn)算法的結(jié)果進(jìn)行對(duì)比,在這里將算法的迭代次數(shù)達(dá)到最大迭代次數(shù)作為算法的終止條件。按照對(duì)比算法在對(duì)應(yīng)文獻(xiàn)中設(shè)置的最大評(píng)估次數(shù)設(shè)置本文的最大迭代次數(shù),使得CABC算法的最大評(píng)估次數(shù)小于或者等于對(duì)比算法的最大評(píng)估次數(shù)。最大迭代次數(shù)max Gen的設(shè)置和種群規(guī)模NP的設(shè)置在表1中給出。食物源數(shù)量SN=1/2×NP。所有算法的最大開(kāi)采次數(shù)lim it=SN×D,F(xiàn)0=0.5。實(shí)驗(yàn)中各個(gè)算法均進(jìn)行30次獨(dú)立實(shí)驗(yàn),并取其平均值作為最終實(shí)驗(yàn)結(jié)果。
表1 參數(shù)設(shè)置Table 1 Parameter settings
將CABC算法應(yīng)用于IEEE CEC2006中的20個(gè)測(cè)試函數(shù)的求解。與ABC算法進(jìn)行了比較,實(shí)驗(yàn)結(jié)果如表2所示,加粗部分表示具有良好的結(jié)果。表中best、mean、worst、std、percent分別代表算法獨(dú)立運(yùn)行30次找到的最好值、平均值、最差值、標(biāo)準(zhǔn)差、可行性比例。可以看出在20個(gè)測(cè)試函數(shù)中除了g02、g18外,CABC算法的平均值和標(biāo)準(zhǔn)差均優(yōu)于或者類(lèi)似于ABC算法的優(yōu)化結(jié)果。ABC算法在測(cè)試函數(shù)g05、g13、g17、g20上找不到可行解。CABC算法僅在g20函數(shù)上找不到可行解。圖2為CABC與ABC算法在部分測(cè)試函數(shù)上的收斂曲線(xiàn)圖。從圖中可以直觀(guān)地看出,CABC算法在收斂精度與收斂速度方面明顯優(yōu)于ABC算法。
圖2 IEEE CEC2006部分測(cè)試函數(shù)上CABC與ABC的收斂曲線(xiàn)Fig.2 Convergence curve of CABC and ABC on partial test functions in IEEE CEC2006
表2 IEEE CEC2006 20個(gè)測(cè)試函數(shù)上CABC與ABC的優(yōu)化結(jié)果Table 2 Optimization results of CABC and ABC on 20 benchmark test functions in IEEE CEC2006
將CABC算法同文獻(xiàn)[13]中的MGABC、BSFABC、GABC、MABC、LFABC的實(shí)驗(yàn)結(jié)果進(jìn)行比較,最大評(píng)估次數(shù)和文獻(xiàn)[13]中設(shè)置相同,比較結(jié)果如表3所示??梢钥闯鲈跍y(cè)試函數(shù)g01、g03、g04、g06、g07、g08、g10、g11、g12、g15、g16、g19上CABC算法獲得的平均目標(biāo)函數(shù)值均優(yōu)于其他算法獲得的平均目標(biāo)函數(shù)值,除g07、g10測(cè)試函數(shù)外,CABC算法得到的標(biāo)準(zhǔn)差均小于其他算法得到的標(biāo)準(zhǔn)差,這表明CABC具有更好的穩(wěn)定性。
表3 IEEE CEC2006 20個(gè)測(cè)試函數(shù)上CABC與各種改進(jìn)ABC的優(yōu)化結(jié)果Table 3 Optimization results of CABC and various improved ABC on 20 benchmark test functions in IEEE CEC2006
將CABC算法同文獻(xiàn)[7]中CGWO、E-BRM及文獻(xiàn)[21]中PSO、HCS-LSAL算法的優(yōu)化結(jié)果進(jìn)行比較,比較結(jié)果如表4所示??梢钥闯鲈跍y(cè)試函數(shù)g01、g03、g04、g06、g08、g11、g12上均值和標(biāo)準(zhǔn)差均優(yōu)于其他算法。在測(cè)試函數(shù)g05、g07、g09、g13上尋找到的平均最優(yōu)值非常接近最優(yōu)值。這表明CABC算法能夠有效求解約束優(yōu)化問(wèn)題。
表4 IEEE CEC 2006 13個(gè)測(cè)試函數(shù)上CABC與其他算法的優(yōu)化結(jié)果Table 4 Optimization results of CABC and other algorithms on 13 benchmark test functions in IEEE CEC 2006
為了進(jìn)一步驗(yàn)證CABC算法的性能,將CABC算法應(yīng)用于IEEE CEC2010中18個(gè)測(cè)試函數(shù)的求解。
在10維上CABC算法與文獻(xiàn)[14]中的LL-CABC及文獻(xiàn)[10]中的Elitist-ABC進(jìn)行了比較,最大評(píng)估次數(shù)與原文獻(xiàn)中設(shè)置的相同。實(shí)驗(yàn)結(jié)果如表5所示,可以看出CABC算法在測(cè)試函數(shù)C01、C02、C03、C04、C05、C06、C09、C10、C14、C15、C17、C18上平均值優(yōu)于其他算法,其中除C01、C06外標(biāo)準(zhǔn)差均小于其他算法。Elitist-ABC在測(cè)試函數(shù)C04、C11上找不到可行解。ABC與LL-ABC在測(cè)試函數(shù)C03、C04、C05、C06、C09、C10、C11、C12上找不到可行解。CABC僅在測(cè)試函數(shù)函數(shù)C11、C12上找不到可行解。
表5 IEEE CEC2010 10維18個(gè)測(cè)試函數(shù)上CABC與各種改進(jìn)ABC算法的優(yōu)化結(jié)果Table 5 Optimization results of CABC and various improved ABC algorithms on 18 benchmark test functions with dimension 10 in IEEE CEC2010
在30維上CABC算法與文獻(xiàn)[14]中的LL-CABC以及文獻(xiàn)[10]中的Elitist-ABC進(jìn)行了比較,最大評(píng)估次數(shù)與原文獻(xiàn)中設(shè)置的相同。實(shí)驗(yàn)結(jié)果如表6所示,可以看出CABC算法在測(cè)試函數(shù)C01、C02、C05、C06、C09、C10、C15、C16、C17、C18上平均值優(yōu)于其他算法,其中除C01、C02外標(biāo)準(zhǔn)差均小于其他算法。Elitist-ABC在測(cè)試函數(shù)C03、C04、C11、C12上找不到可行解;ABC與LL-ABC在測(cè)試函數(shù)C03、C04、C05、C06、C09、C10、C11上找不到可行解,CABC僅在測(cè)試函數(shù)C03、C04、C11上找不到可行解。綜上所述,CABC算法求解約束優(yōu)化問(wèn)題可行有效。
為了檢驗(yàn)CABC算法在實(shí)際工程問(wèn)題中的有效性,本文將其應(yīng)用于3個(gè)實(shí)際工程問(wèn)題中,即焊接橋梁結(jié)構(gòu)設(shè)計(jì)優(yōu)化問(wèn)題、拉力/壓力彈簧結(jié)構(gòu)設(shè)計(jì)優(yōu)化問(wèn)題、壓力容器最小設(shè)計(jì)優(yōu)化問(wèn)題。為了使CABC算法的結(jié)果可以和文獻(xiàn)[4-5,14]的結(jié)果進(jìn)行對(duì)比,將算法迭代次數(shù)達(dá)到最大迭代次數(shù)作為算法的終止條件。并且按照原文獻(xiàn)設(shè)置的最大評(píng)估次數(shù)將最大迭代次數(shù)設(shè)置為maxGen=1 000。
3.4.1 焊接梁設(shè)計(jì)問(wèn)題
該問(wèn)題是在滿(mǎn)足約束條件的情況下使其總費(fèi)用達(dá)到最小,它的決策變量是h(x1)、l(x2)、t(x3)、b(x4),問(wèn)題的模型為:
式中:
通過(guò)CABC算法求解焊接梁設(shè)計(jì)問(wèn)題,與ABC算法和文獻(xiàn)[4]中CDE、CPSO算法以及文獻(xiàn)[14]中LL-ABC算法比較結(jié)果如表7所示。由表可知,在求解焊接梁設(shè)計(jì)優(yōu)化問(wèn)題時(shí)CABC算法在最優(yōu)值計(jì)算及算法的穩(wěn)定性上明顯優(yōu)于ABC、CDE、CPSO、LL-ABC算法。圖3為ABC、LL-CABC、CABC算法在焊接梁設(shè)計(jì)優(yōu)化問(wèn)題上的收斂曲線(xiàn)圖。從圖中可以直觀(guān)地看出,CABC算法在收斂精度和收斂速度方面明顯優(yōu)于ABC、LL-CABC算法。
圖3 各個(gè)算法在焊接梁設(shè)計(jì)問(wèn)題上的收斂曲線(xiàn)Fig.3 Convergence curve of each algorithm in welding beam design
表7 各個(gè)算法在焊接梁設(shè)計(jì)上的優(yōu)化結(jié)果Table 7 Optimization results of each algorithm in welding beam design
3.4.2 拉力/壓力彈簧設(shè)計(jì)問(wèn)題
該問(wèn)題是在滿(mǎn)足約束條件的情況下使其質(zhì)量達(dá)到最小,它的數(shù)學(xué)模型如下:
式中:
0.25≤x1≤1.30,0.05≤x2≤2.00,2.00≤x3≤15.00
用CABC算法求解壓力/拉力彈簧設(shè)計(jì)優(yōu)化問(wèn)題,與ABC算法和文獻(xiàn)[4]中CDE、CPSO算法以及文獻(xiàn)[14]中LL-ABC算法比較結(jié)果如表8所示。由表可知,在求解拉力壓力彈簧設(shè)計(jì)優(yōu)化問(wèn)題時(shí)CABC算法在最優(yōu)值計(jì)算及算法穩(wěn)定性上明顯優(yōu)于ABC、CDE、CPSO、LL-ABC算法。圖4表示ABC、LL-ABC、CABC在拉力/壓力彈簧設(shè)計(jì)設(shè)計(jì)優(yōu)化問(wèn)題上的收斂曲線(xiàn)圖,從圖中可以直觀(guān)地看出,CABC算法在收斂精度和收斂速度方面明顯優(yōu)于ABC、LL-CABC算法。
圖4 各個(gè)算法在壓力/拉力彈簧設(shè)計(jì)問(wèn)題上的收斂曲線(xiàn)Fig.4 Convergence curves of each algorithm in pressure/tension spring design
表8 各個(gè)算法在拉伸/壓縮彈簧設(shè)計(jì)上的優(yōu)化結(jié)果Table 8 Optimization results of each algorithm in pressure/tension spring design
3.4.3 壓力容器設(shè)計(jì)最小費(fèi)用問(wèn)題
該問(wèn)題的主要目標(biāo)是在滿(mǎn)足一定約束的條件下使得費(fèi)用最小,它的數(shù)學(xué)模型如下:
式中:
1≤x1≤99,1≤x2≤99,10≤x3≤200,10≤x4≤200
用CABC算法求解壓力容器設(shè)計(jì)最小費(fèi)用問(wèn)題,與ABC算法和文獻(xiàn)[5]中CDE、TLBO算法以及文獻(xiàn)[14]中LL-CABC算法比較結(jié)果如表9所示。由表可知,在求解壓力容器設(shè)計(jì)最小費(fèi)用優(yōu)化問(wèn)題時(shí)CABC算法在最優(yōu)值及算法穩(wěn)定性上明顯優(yōu)于ABC、CDE、TLBO、LLCABC算法。圖5表示ABC、LL-CABC、CABC在壓力容器設(shè)計(jì)最小費(fèi)用優(yōu)化問(wèn)題上的收斂曲線(xiàn)圖,從圖中可以直觀(guān)地看出,CABC算法在收斂精度和收斂速度方面明顯優(yōu)于ABC、LL-CABC算法。
表9 各個(gè)算法在壓力容器設(shè)計(jì)上的優(yōu)化結(jié)果Table 9 Optimization results of each algorithm in pressure vessel design
圖5 各個(gè)算法在壓力容器設(shè)計(jì)問(wèn)題上的收斂曲線(xiàn)Fig.5 Convergence curve of each algorithm in pressure vessel design
本文提出CABC算法來(lái)求解約束優(yōu)化問(wèn)題。通過(guò)對(duì)兩個(gè)標(biāo)準(zhǔn)測(cè)試集及3個(gè)實(shí)際工程優(yōu)化問(wèn)題的實(shí)驗(yàn)可知,CABC算法的搜索方程可以有效平衡種群的多樣性和收斂性。將ε約束和可行性準(zhǔn)則相結(jié)合進(jìn)行約束處理,可以有效地平衡目標(biāo)函數(shù)和約束。改進(jìn)的適應(yīng)度函數(shù)可以識(shí)別優(yōu)良個(gè)體,增加了算法的開(kāi)發(fā)能力。實(shí)驗(yàn)證明本文提出的CABC算法能夠有效地解決約束優(yōu)化問(wèn)題。