王 貞,支俊陽,李旭飛,崔軻軻
1.北方民族大學 數學與信息科學學院,銀川 750021
2.咸陽師范學院 數學與信息科學學院,陜西 咸陽 712000
實際工程優化問題大多被構建為約束優化問題,例如:焊接梁結構設計、拉力/壓力彈簧設計、壓力容器最小費用優化等。約束的存在增加了問題的求解難度,因此研究者們設計了多種策略來處理約束,如ε約束法[1]、多目標優化法[2]、罰函數法[3]等。此外,隨著智能優化算法的發展,研究者們還通過改進智能優化算法提高求解約束優化問題的性能。2015年,龍文等[4]提出了一種改進的螢火蟲算法,加快算法求解約束優化問題的收斂速度,避免其陷入局部最優。2018年,劉三陽等[5]提出了一種協同進化教與學優化算法,使得隨著種群的進化懲罰因子及約束容忍度自適應調整,提高了算法求解約束優化問題的效率。2019年,Wang等[6]為了平衡收斂性與多樣性、目標函數與約束違反,提出了一種約束優化的復合差分進化方法來求解約束優化問題。2020年,顧啟元等[7]提出一種改進的水波優化算法,提高了算法求解約束優化問題的收斂精度。
人工蜂群算法(ABC)是Karaboga[8]于2005年提出的一種智能優化算法,它具有控制參數少,收斂速度快等優點。2010年,Zhu等[9]為了提高ABC算法的開發能力,采用Gbest引導種群進行搜索,提出了GABC算法。Mezura等[10]通過使用等式約束動態容忍機制及修改三種蜜蜂搜索方程,提出了Elitist-ABC算法。2011年,Karaboga等[11]提出了改進的ABC算法(MABC),使用Deb選擇規則替換ABC原有的選擇方式。Kang等[12]提出了一種基于Hooke Jeeves模式搜索的混合Hooke Jeeves ABC算法。2017年,Bansal等[13]在雇傭蜂和觀察蜂階段通過結合基于個體移動適應度概率的概念,對GABC進行了改進。2018年,Gao等[14]提出了一種基于人工蜂群算法(ABC)的新機制,該算法由兩種新的學習策略-方向學習和精英學習組成,相互補充,提高算法的性能。王志剛等[15]在雇傭蜂和觀察蜂階段動態調整搜索維數,提出多搜索策略協同進化的人工蜂群算法。2020年,郭佳等[16]提出了IMABC算法,將算法的進化過程分為兩個階段,減少算法隨機搜索的同時避免了算法的早熟。莫建麟等[17]提出了ABCIS算法,放棄了傳統的貪婪選擇機制并通過智能搜索與特殊劃分的方式提升了算法的搜索性能。盡管對ABC算法的研究取得了很多成果,但大部分人工蜂群算法在求解約束優化問題時,在搜索過程中僅采用單一搜索方程,很難平衡種群的收斂性與多樣性,使算法易陷入局部最優。在保留較優個體時,僅使用一種策略,難以平衡種群的目標函數與約束違背。
為了解決上述問題,本文提出了一種復合人工蜂群算法(composite artificial bee colony algorithm,CABC)來求解約束優化問題。算法中使用了不同的搜索方程平衡種群的多樣性與收斂性,來提高算法的收斂精度。通過ε約束和可行性準則結合的方式選擇個體,促使種群向可行區域靠近,同時平衡目標函數與約束,極大地提高了算法的探索能力。通過將CABC算法用于求解CEC 2006和CEC 2010測試函數,并應用到3個工程優化問題上檢驗了算法的性能。
受到蜜蜂采蜜行為的啟發[8],在ABC中,食物源位置對應優化問題的一個候選解,每個食物源的質量代表其對應候選解的適應度值。
在初始化階段,隨機生成一個均勻分布含SN個食物源的初始種群,每個食物源x i(i=1,2,…,SN)的維數為D,每個解通過下面方式來初始化:

其中,x i是種群中的第i個解,xmin,j和xmax,j分別是第j維的下界和上界,rand是[0,1]范圍內分布的隨機數。在雇傭蜂階段,種群探索新食物源,通過如下形式更新:

其中,j∈[1,2,…,D],k∈[1,2,…,SN],k≠i。φij是在[-1,1]中隨機產生的數。產生新解之后,在xi和新解v i之間保留更好的食物源。對于每個食物源x i的適應度值fit i以如下方式計算:

其中,f i代表解xi的目標函數值。
開采食物源后,雇傭蜂返回蜂巢,通過搖擺舞與跟隨蜂分享食物源的位置和質量信息。在跟隨蜂階段,跟隨蜂依據雇傭蜂分享的信息計算食物源xi的選擇概率prob i:

其中,maxf it i是種群中的最大適應度值。跟隨蜂通過輪盤賭選擇食物源,并根據式(2)進行更新。
若任何食物源的開采達到limit次,則放棄該食物源,對應的雇傭蜂就會轉化為偵查蜂,在整個搜索空間中根據式(1)探索新的食物源。人工蜂群算法流程如下。
算法1人工蜂群算法
步驟1利用式(1)進行種群初始化,設定算法的所有參數。食物源數量SN,最大迭代次數maxGen,當前代數gen=1,最大開采次數limit。
步驟2雇傭蜂根據式(2)搜索新的食物源vi,通過式(3)計算新食物源的適應度值fit i。比較x i和vi的適應度值保留較好的食物源。
步驟3利用式(4)計算跟隨蜂選擇食物源的概率,通過式(2)選擇一個食物源進行更新。計算新食物源的適應度值,根據其適應度值選擇要保留的食物源。
步驟4如果有食物源達到最大開采次數,則根據式(1)產生一個新食物源。
步驟5識別是否滿足滿足終止條件,若滿足終止條件,則輸出最優解,否則轉至步驟2。
原始ABC算法僅僅使用一種搜索方程,難以平衡種群的收斂性與多樣性,影響了算法的性能。因此,CABC算法在雇傭蜂階段使用三種不同的搜索方程產生三個新食物源。在這三個新食物源之間根據可行性準則保留較優新食物源,將得到的新食物源再與舊食物源之間基于ε約束進行比較,保留較優食物源。這樣可以平衡種群的收斂性與多樣性,同時兼顧目標函數與約束的有效信息。
在原始的人工蜂群算法中,蜂群的搜索方程往往是對解進行一維變異,但這樣將會導致種群中的個體過于關注自身的信息,進而忽略了其他個體以及優秀個體的信息。但若對種群中個體的每一維都進行變異,種群過度吸收其他個體的信息而忽略了自身的信息,丟失個體在尋優過程中得到的優良信息。所以在雇傭蜂階段種群需要由最優個體引導并隨機選取部分維進行變異來保證種群的收斂性,但這樣將會造成種群的多樣性有所損失。為了平衡種群的收斂性與多樣性,需要由鄰居個體引導并對其每一維都進行變異來維持種群的多樣性。因此在雇傭蜂階段采用如式(5)、(6)兩個搜索方程產生新的蜜源:

其中,k∈{1,2,…,SN},k≠i,j=[1,2,…,D],φi∈[-1,1]是均勻分布的隨機數,D為問題的維數。

其中,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]是均勻分布的隨機數,φi∈[-0.75,0.75]是均勻分布的隨機數,D為問題的維數。在式(6)中,F隨著代數的增加而減小:

首先利用式(5)對雇傭蜂進行變異,生成第一個新食物源v1,通過對每一維都進行變異維持了種群的多樣性。其次選取具有最小目標函數值的個體xbest,利用式(6)對雇傭蜂部分維進行變異,生成第二個新食物源v2,通過具有最小目標函數值個體的引導促使種群快速收斂。最后選取具有最小約束違反程度的個體xbest,利用式(6)對雇傭蜂部分維進行變異,生成第三個新食物源v3,通過具有最小約束違反程度個體的引導幫助種群快速進入可行域。若種群中具有最小目標函數值的個體不止一個,則選取具有最小目標函數值中具有最小約束違反程度的個體;若種群中具有最小約束違反程度的個體不止一個,則選擇具有最小約束違反程度個體中具有最小目標函數值的個體。
由于在雇傭蜂階段采用了兩種最優引導策略和一種多樣性引導策略,增強了算法的收斂性,對于種群的多樣性有所損失。為了平衡種群的收斂性與多樣性,所以在跟隨蜂階段采用如下搜索方程維持種群的多樣性。

其中,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]是均勻分布的隨機數。
在偵察蜂階段仍使用與原始ABC相同的搜索方程(1)產生新的個體,通過隨機搜索幫助種群跳出局部最優。因為雇傭蜂及觀察蜂階段的搜索方程促使更多距離種群較遠的個體進入種群中,在進化過程中維持了種群的多樣性,使算法更容易跳出局部最優。
可行性準則是Deb[18]于2000年提出的約束處理方法。由于其原理簡單、方便執行、收斂速度快,被研究者廣泛使用。在可行性準則中,采用如下規則來比較個體:
(1)兩個個體均為可行解,具有最小目標函數值的個體占優。
(2)一個個體為可行解,另一個個體為不可行解,可行個體占優。
(3)兩個個體都為不可行解,約束違背程度小的個體占優。
由于可行性規則較為嚴格的特性,如果可行區域在整個空間中占比較小,不可行解將難以被選入下一代種群中,因此種群很難進入可行區域。為了加快種群的收斂,除可行解外,需要特別關注位于可行區域邊界的不可行解,因為這些解可能攜帶優良解的基因。這就需要一種約束處理方法保留位于可行區域邊界的解以便在進化過程中對這些解進一步開發,幫助種群快速進入可行區域。
ε約束是Takahama和Sakai[1]提出的有代表性的約束處理技術,它可以放松約束,讓約束違反程度低目標函數值小的個體有機會被選入下一代種群,使得算法能夠探測到可行區域邊緣的優良解,進而指導種群搜索到最優區域。ε約束中比較兩個個體xi和x j時,稱xi優于x j當且僅當:

在式(9)中,ε隨著代數的增加而下降:

其中,gen代表當前代數,maxGen代表最大迭代次數,ε0代表在當前代種群中個體的最大約束違反程度。
本文采用ε約束和可行性準則兩種約束條件處理方法進行解的比較與選擇。通過ε約束促使位于可行區域邊界的不可行解有機會進入下一代種群,引導種群進入可行區域。通過使用可行性準則對進化過程中產生的解進行更嚴格的選擇,促進算法收斂。
受文獻[12]的啟發,在CABC算法中,極小化約束優化問題第i個食物源的適應度值為:


式(11)中fito i為第i個食物源的原值適應度值:其中,SP∈[1.0,2.0]是選擇壓力,SP=1.5是最佳選擇。rank i是第i個個體在整個種群中排序后的位置。
在計算rank時,先對種群中個體根據約束違背值進行排序,在這個排序基礎上再對種群中個體基于其目標函數值進行排序。由于跟隨蜂選擇食物源的概率為:

所以通過這種排序的方法使得種群中個體約束違背程度且目標函數值小的個體總是位于前方,也就是說在下一代種群中優先選擇那些可行且目標函數值小的個體。若種群中的個體全部是不可行的,這種排序方式就退化為僅依靠約束違背程度進行排序,這樣具有較小約束違背程度的個體有著更大的概率進入下一代種群,從而引導種群向可行區域靠近。若種群中的個體都是可行的,該排序方式就僅依靠目標函數值進行排序,具有更小目標函數的個體有著更大的概率進入下一代種群,增強了算法的開發能力。
算法2給出了CABC算法的基本框架。初始化過程中,算法在搜索區域內隨機產生食物源。在雇傭蜂階段,采用一種隨機搜索方程與兩種最優引導方程產生三個新的食物源。這樣能夠提高算法的收斂能力,并且保證種群的多樣性。在這三個新食物源中根據可行性規則選擇要保留的新食物源,促使種群向可行區域靠近。在產生的新食物源與舊食物源之間根據ε約束保留優良個體,這種保留機制對約束條件有著一定的放松,促使種群中約束違反程度低且目標函數值小的個體有機會進入下一代種群,這樣有利于保留較好的不可行解,促進算法收斂。在跟隨蜂階段采用隨機搜索方程,平衡了種群的收斂性與多樣性。
算法2復合人工蜂群算法
步驟1設置算法參數,食物源數量SN,最大迭代次數maxGen,當前代數gen=1,最大開采次數limit。利用式(1)進行種群初始化。
步驟2雇傭蜂按照式(5)、(6)搜索新的食物源,計算新食物源目標函數值、約束違反程度。利用可行性規則在產生的三個新食物源中選出一個較優新食物源。
步驟3利用ε約束在新食物源與舊食物源之間進行選擇,保留較優食物源。
步驟4利用式(13)計算跟隨蜂選擇食物源的概率,并選擇一個食物源進行更新。根據式(8)搜索新食物源,計算新食物源的目標函數值,約束違反程度。根據可行性規則在新食物源和舊食物源之間進行選擇,保留較優食物源。
步驟5如果有食物源達到最大開采次數,則根據式(1)重新初始化一個食物源。
步驟6識別是否滿足滿足終止條件,若滿足終止條件,則輸出最優解,否則轉至步驟2。
為了從理論上驗證CABC算法的性能,進行如下所述分析。
2.5.1 算法的尋優能力分析
CABC算法在雇傭蜂階段使用三種不同的搜索方程平衡種群的收斂性與多樣性,通過將可行性準則和ε約束結合的方式促使位于可行區域邊界的不可行個體有機會進入下一代種群,引導種群快速進入可行區域,提高了算法的全局探索能力。使用新的適應度值計算方式更容易識別種群中高質量個體,并且跟隨蜂階段采用輪盤賭方式在高質量個體附近進行搜索,提高了算法的局部探索能力,使得種群向較優個體靠近,保證了算法的收斂。
當種群中大部分個體位于可行區域中,這就需要盡可能多地保留種群中高質量個體的信息。在雇傭蜂階段由具有最小約束違反程度的個體引導的搜索方程已經變成由具有最小目標函數的可行解引導,因此算法將在最優個體附近進一步開發,提高了算法的局部尋優能力。隨著迭代次數的增加,逐漸確定了可行區域的大致位置,這時不需要不可行個體引導種群的搜索方向,ε約束逐漸演變為可行性準則引導種群在可行區域內部搜索,促使算法收斂到最優值。另一方面由于在雇傭蜂及跟隨蜂階段采用多維隨機變異操作,保證了種群的多樣性,偵察蜂階段采用隨機搜索的方式,使種群更容易跳出局部最優,避免了算法的早熟。
為了進一步說明CABC算法的尋優能力,對IEEE CEC2006[19]中g08測試函數的種群分布特征進行實驗,實驗結果如圖1所示,其中圖1(e)、(f)右上角為種群分布的局部放大圖,percent代表當前種群的可行性比例。從圖中可以直觀地看出,在進化初期,種群可行性比例不斷增加,說明了CABC算法將可行性準則和ε約束結合能夠幫助高質量不可行個體進入下一代種群,從而引導種群快速進入可行區域。隨著迭代次數的增加,種群中個體逐漸向最優個體附近聚集并且具有良好的分散性,說明了利用多維隨機變異操作和最優引導變異操作使CABC算法在迭代過程中始終進行全局搜索和局部搜索,在已有經驗的基礎上對較優個體附近區域進一步探索且保持了種群的多樣性,平衡了算法的探索能力和開發能力。

圖1 測試函數g08上種群分布變化圖Fig.1 Variation of population distribution on test function g08
2.5.2 算法的時間復雜度分析
由算法1可知ABC算法的時間復雜度為O(maxGen×SN×D),其中max Gen是最大迭代次數,SN是食物源數量,D是問題的維數。與ABC算法相比,CABC算法初始化的時間復雜度為O(SN×D)。CABC算法在雇傭蜂階段通過不同搜索方程產生了三個新種群,其時間復雜度為O(3×maxGen×SN×D)。所以CABC算法的時間復雜度為O(SN×D+3×maxGen×SN×D+maxGen×SN×D),即O(max Gen×SN×D)。所以CABC算法的時間復雜度為O(maxGen×SN×D),與ABC算法相同。
2.5.3 算法的空間復雜度分析
由算法1可知ABC算法的空間復雜度為O(SN×D)。與ABC算法相比,CABC算法在雇傭蜂階段通過不同搜索方程產生了三個新種群,其空間復雜度為O(3×SN×D),即O(SN×D)。所以CABC算法的空間復雜度為O(SN×D),與ABC算法相同。
為了系統地驗證CABC算法求解約束優化問題的性能,在兩組標準測試函數上對CABC算法和其他算法進行了比較。測試函數包括IEEE CEC2006中的20個測試函數[19],IEEE CEC2010的18個測試函數[20],它們涵蓋了強非線性、多模態、極小可行區域等各種特性。測試函數詳情見文獻[19-20]。
為了使CABC算法的結果和其他改進算法的結果進行對比,在這里將算法的迭代次數達到最大迭代次數作為算法的終止條件。按照對比算法在對應文獻中設置的最大評估次數設置本文的最大迭代次數,使得CABC算法的最大評估次數小于或者等于對比算法的最大評估次數。最大迭代次數max Gen的設置和種群規模NP的設置在表1中給出。食物源數量SN=1/2×NP。所有算法的最大開采次數lim it=SN×D,F0=0.5。實驗中各個算法均進行30次獨立實驗,并取其平均值作為最終實驗結果。

表1 參數設置Table 1 Parameter settings
將CABC算法應用于IEEE CEC2006中的20個測試函數的求解。與ABC算法進行了比較,實驗結果如表2所示,加粗部分表示具有良好的結果。表中best、mean、worst、std、percent分別代表算法獨立運行30次找到的最好值、平均值、最差值、標準差、可行性比例。可以看出在20個測試函數中除了g02、g18外,CABC算法的平均值和標準差均優于或者類似于ABC算法的優化結果。ABC算法在測試函數g05、g13、g17、g20上找不到可行解。CABC算法僅在g20函數上找不到可行解。圖2為CABC與ABC算法在部分測試函數上的收斂曲線圖。從圖中可以直觀地看出,CABC算法在收斂精度與收斂速度方面明顯優于ABC算法。

圖2 IEEE CEC2006部分測試函數上CABC與ABC的收斂曲線Fig.2 Convergence curve of CABC and ABC on partial test functions in IEEE CEC2006

表2 IEEE CEC2006 20個測試函數上CABC與ABC的優化結果Table 2 Optimization results of CABC and ABC on 20 benchmark test functions in IEEE CEC2006
將CABC算法同文獻[13]中的MGABC、BSFABC、GABC、MABC、LFABC的實驗結果進行比較,最大評估次數和文獻[13]中設置相同,比較結果如表3所示。可以看出在測試函數g01、g03、g04、g06、g07、g08、g10、g11、g12、g15、g16、g19上CABC算法獲得的平均目標函數值均優于其他算法獲得的平均目標函數值,除g07、g10測試函數外,CABC算法得到的標準差均小于其他算法得到的標準差,這表明CABC具有更好的穩定性。

表3 IEEE CEC2006 20個測試函數上CABC與各種改進ABC的優化結果Table 3 Optimization results of CABC and various improved ABC on 20 benchmark test functions in IEEE CEC2006
將CABC算法同文獻[7]中CGWO、E-BRM及文獻[21]中PSO、HCS-LSAL算法的優化結果進行比較,比較結果如表4所示。可以看出在測試函數g01、g03、g04、g06、g08、g11、g12上均值和標準差均優于其他算法。在測試函數g05、g07、g09、g13上尋找到的平均最優值非常接近最優值。這表明CABC算法能夠有效求解約束優化問題。

表4 IEEE CEC 2006 13個測試函數上CABC與其他算法的優化結果Table 4 Optimization results of CABC and other algorithms on 13 benchmark test functions in IEEE CEC 2006
為了進一步驗證CABC算法的性能,將CABC算法應用于IEEE CEC2010中18個測試函數的求解。
在10維上CABC算法與文獻[14]中的LL-CABC及文獻[10]中的Elitist-ABC進行了比較,最大評估次數與原文獻中設置的相同。實驗結果如表5所示,可以看出CABC算法在測試函數C01、C02、C03、C04、C05、C06、C09、C10、C14、C15、C17、C18上平均值優于其他算法,其中除C01、C06外標準差均小于其他算法。Elitist-ABC在測試函數C04、C11上找不到可行解。ABC與LL-ABC在測試函數C03、C04、C05、C06、C09、C10、C11、C12上找不到可行解。CABC僅在測試函數函數C11、C12上找不到可行解。

表5 IEEE CEC2010 10維18個測試函數上CABC與各種改進ABC算法的優化結果Table 5 Optimization results of CABC and various improved ABC algorithms on 18 benchmark test functions with dimension 10 in IEEE CEC2010
在30維上CABC算法與文獻[14]中的LL-CABC以及文獻[10]中的Elitist-ABC進行了比較,最大評估次數與原文獻中設置的相同。實驗結果如表6所示,可以看出CABC算法在測試函數C01、C02、C05、C06、C09、C10、C15、C16、C17、C18上平均值優于其他算法,其中除C01、C02外標準差均小于其他算法。Elitist-ABC在測試函數C03、C04、C11、C12上找不到可行解;ABC與LL-ABC在測試函數C03、C04、C05、C06、C09、C10、C11上找不到可行解,CABC僅在測試函數C03、C04、C11上找不到可行解。綜上所述,CABC算法求解約束優化問題可行有效。
為了檢驗CABC算法在實際工程問題中的有效性,本文將其應用于3個實際工程問題中,即焊接橋梁結構設計優化問題、拉力/壓力彈簧結構設計優化問題、壓力容器最小設計優化問題。為了使CABC算法的結果可以和文獻[4-5,14]的結果進行對比,將算法迭代次數達到最大迭代次數作為算法的終止條件。并且按照原文獻設置的最大評估次數將最大迭代次數設置為maxGen=1 000。
3.4.1 焊接梁設計問題
該問題是在滿足約束條件的情況下使其總費用達到最小,它的決策變量是h(x1)、l(x2)、t(x3)、b(x4),問題的模型為:


式中:


通過CABC算法求解焊接梁設計問題,與ABC算法和文獻[4]中CDE、CPSO算法以及文獻[14]中LL-ABC算法比較結果如表7所示。由表可知,在求解焊接梁設計優化問題時CABC算法在最優值計算及算法的穩定性上明顯優于ABC、CDE、CPSO、LL-ABC算法。圖3為ABC、LL-CABC、CABC算法在焊接梁設計優化問題上的收斂曲線圖。從圖中可以直觀地看出,CABC算法在收斂精度和收斂速度方面明顯優于ABC、LL-CABC算法。

圖3 各個算法在焊接梁設計問題上的收斂曲線Fig.3 Convergence curve of each algorithm in welding beam design

表7 各個算法在焊接梁設計上的優化結果Table 7 Optimization results of each algorithm in welding beam design
3.4.2 拉力/壓力彈簧設計問題
該問題是在滿足約束條件的情況下使其質量達到最小,它的數學模型如下:

式中:
0.25≤x1≤1.30,0.05≤x2≤2.00,2.00≤x3≤15.00
用CABC算法求解壓力/拉力彈簧設計優化問題,與ABC算法和文獻[4]中CDE、CPSO算法以及文獻[14]中LL-ABC算法比較結果如表8所示。由表可知,在求解拉力壓力彈簧設計優化問題時CABC算法在最優值計算及算法穩定性上明顯優于ABC、CDE、CPSO、LL-ABC算法。圖4表示ABC、LL-ABC、CABC在拉力/壓力彈簧設計設計優化問題上的收斂曲線圖,從圖中可以直觀地看出,CABC算法在收斂精度和收斂速度方面明顯優于ABC、LL-CABC算法。

圖4 各個算法在壓力/拉力彈簧設計問題上的收斂曲線Fig.4 Convergence curves of each algorithm in pressure/tension spring design

表8 各個算法在拉伸/壓縮彈簧設計上的優化結果Table 8 Optimization results of each algorithm in pressure/tension spring design
3.4.3 壓力容器設計最小費用問題
該問題的主要目標是在滿足一定約束的條件下使得費用最小,它的數學模型如下:

式中:
1≤x1≤99,1≤x2≤99,10≤x3≤200,10≤x4≤200
用CABC算法求解壓力容器設計最小費用問題,與ABC算法和文獻[5]中CDE、TLBO算法以及文獻[14]中LL-CABC算法比較結果如表9所示。由表可知,在求解壓力容器設計最小費用優化問題時CABC算法在最優值及算法穩定性上明顯優于ABC、CDE、TLBO、LLCABC算法。圖5表示ABC、LL-CABC、CABC在壓力容器設計最小費用優化問題上的收斂曲線圖,從圖中可以直觀地看出,CABC算法在收斂精度和收斂速度方面明顯優于ABC、LL-CABC算法。

表9 各個算法在壓力容器設計上的優化結果Table 9 Optimization results of each algorithm in pressure vessel design

圖5 各個算法在壓力容器設計問題上的收斂曲線Fig.5 Convergence curve of each algorithm in pressure vessel design
本文提出CABC算法來求解約束優化問題。通過對兩個標準測試集及3個實際工程優化問題的實驗可知,CABC算法的搜索方程可以有效平衡種群的多樣性和收斂性。將ε約束和可行性準則相結合進行約束處理,可以有效地平衡目標函數和約束。改進的適應度函數可以識別優良個體,增加了算法的開發能力。實驗證明本文提出的CABC算法能夠有效地解決約束優化問題。