李麗榮,楊 坤,王培崇*
(1.河北地質(zhì)大學(xué)藝術(shù)設(shè)計學(xué)院,石家莊 050031;2.河北地質(zhì)大學(xué)信息工程學(xué)院,石家莊 050031;3.河北地質(zhì)大學(xué)人工智能與機(jī)器學(xué)習(xí)研究室,石家莊 050031)
教與學(xué)優(yōu)化(Teaching & Learning Based Optimization,TLBO)[1-2]算法是Rao 等于2010 年提出的一種原理簡單、高效的啟發(fā)式算法。TLBO算法通過“教”和“學(xué)”兩種操作模擬了一個自然教學(xué)班中種群學(xué)習(xí)進(jìn)化的過程。由于其收斂性能較好且易于實(shí)現(xiàn),已經(jīng)成為了群智能算法中求解全局優(yōu)化問題常用的算法之一[2-5]。雖然TLBO 在數(shù)字圖像處理、背包問題、車間調(diào)度、聚類等多個領(lǐng)域得到了成功的應(yīng)用,并展現(xiàn)了其優(yōu)勢,但也顯現(xiàn)出了算法的諸多不足和弱點(diǎn),如:在求解較高維度問題時,算法容易早熟、收斂速度較慢且解的精度較低等[4]。
為了提高算法的性能,克服TLBO 的弱點(diǎn),國內(nèi)外的專家和學(xué)者相繼提出了多種改進(jìn)機(jī)制。如:該算法的創(chuàng)始人Rao等[6]提出了一種基于精英思想的改進(jìn)教與學(xué)優(yōu)化(Elite TLBO,ETLBO)算法,應(yīng)用精英個體適當(dāng)替換種群內(nèi)的劣質(zhì)個體,提高算法的收斂速度,但是該算法往往會使種群的多樣性降低較快,容易造成算法陷入局部最優(yōu)。文獻(xiàn)[7]中提出了一種約束教與學(xué)優(yōu)化算法(Improved & Constrained TLBO,ICTLBO),該算法將種群初始劃分為多個子種群,并通過種群的平均位置和子種群內(nèi)最好位置之間的差異引導(dǎo)子種群的收斂方向,且在收斂過程中子種群間互相交換信息;在“學(xué)”階段,還引入了個體的自我學(xué)習(xí)策略,來抑制算法的過早收斂。文獻(xiàn)[8]中在研究對比蝙蝠算法和教與學(xué)優(yōu)化算法的基礎(chǔ)上,提出了一種融合局部搜索的混合蝙蝠教與學(xué)優(yōu)化算法(TLBO with local search and BA,TLBO-RLS),該算法將蝙蝠算法的局部搜索機(jī)制集成在TLBO的優(yōu)化過程中,并應(yīng)用該算法成功解決了“Team workshop problem 25”問題。Zhang等[9]提出應(yīng)用對數(shù)螺旋策略和三角變異策略的思想,來解決TLBO算法容易早熟的問題。算法在“教”算子中,引入對數(shù)螺旋策略學(xué)習(xí)機(jī)制,來加快算法的收斂;在“學(xué)”算子中,利用三角變異策略進(jìn)一步提高當(dāng)前個體的探索和開發(fā)能力。該算法被命名為LMTLBO(TLBO with LogarithMic spiral and triangular mutation)。針對ETLBO 算法中種群多樣性降低過快的問題,于坤杰等[10]提出了一種基于反饋的精英教與學(xué)優(yōu)化算法(Elitist Teaching-Learning-Based Optimization algorithm based on Feedback,F(xiàn)ETLBO),該算法在“學(xué)”階段中增加了劣質(zhì)個體與教師個體間反饋交流的機(jī)制,抑制種群的過早收斂,并通過實(shí)驗(yàn)證明了算法的有效性。文獻(xiàn)[11]中提出了一種具有自主學(xué)習(xí)行為的TLBO(Self -Learning TLBO,SLTLBO)算法。在該算法中,種群中的個體首先執(zhí)行標(biāo)準(zhǔn)的“教”和“學(xué)”兩個算子;然后,根據(jù)自己與種群內(nèi)的最佳個體、最差個體之間的距離,自主完成多樣性學(xué)習(xí),并執(zhí)行基于高斯搜索的反思式學(xué)習(xí)。
上述的眾多改進(jìn)機(jī)制雖然能夠較好地改善TLBO的性能,但往往需要引入較多的額外算子或機(jī)制。為了改善TLBO算法在求解高維度問題時的能力,通過引入較少的算子克服其弱點(diǎn),借鑒頭腦風(fēng)暴優(yōu)化(Brain Storm Optimization,BSO)[12-14]產(chǎn)生新個體的方法,提出了一種融合頭腦風(fēng)暴機(jī)制的改進(jìn)教與學(xué)優(yōu)化(Improved TLBO with Brain Storm Optimization,ITLBOBSO)算法。將該算法在11個無約束標(biāo)準(zhǔn)測試函數(shù)和2個有約束工程優(yōu)化問題上進(jìn)行仿真實(shí)驗(yàn),驗(yàn)證了算法的有效性。
頭腦風(fēng)暴優(yōu)化算法是近年來熱門的一個群智能算法,該算法模擬多人之間通過激烈的思想碰撞,從而產(chǎn)生出新方法或新策略的學(xué)習(xí)過程。從直觀上看,基于人類創(chuàng)新思維過程的模擬一定程度上要優(yōu)于其他受動物群居行為啟發(fā)的群智能算法[15]。
教與學(xué)優(yōu)化算法也是一種模擬人類集體學(xué)習(xí)行為的群智能算法,該算法具有兩個算子,分別是最優(yōu)個體向其余個體執(zhí)行“教”和學(xué)生之間互相“學(xué)”。前者引導(dǎo)種群逐漸向最優(yōu)個體所在空間收斂;后者賦予種群一定的發(fā)散能力,避免算法早熟。分析BSO和TLBO兩個算法的基本原理并結(jié)合生活中的群體學(xué)習(xí)行為可知,群體內(nèi)的個體通過思維碰撞提升自身狀態(tài)的效果要明顯優(yōu)于個體間的相互“學(xué)”行為的效果。源于此,基于頭腦風(fēng)暴機(jī)制設(shè)計“學(xué)”算子,并替換標(biāo)準(zhǔn)TLBO算法中的“學(xué)”算子。借鑒文獻(xiàn)[15]中的相關(guān)思想,該算子為式(1):
式(1)中的Xr視問題的性質(zhì)取min(Xr1,Xr2) 或max(Xr1,Xr2),Xr1和Xr2為在種群內(nèi)隨機(jī)選擇的個體。其他參數(shù)說明如下:
1)α∈[0.5,1)為隨機(jī)數(shù),β=1-α。當(dāng)前個體Xi生成的新狀態(tài)值取決于自身的原狀態(tài)值,以及自身與Xr的差距。以上轉(zhuǎn)換權(quán)重參數(shù)的設(shè)計是出于這樣一種考慮:“在任何學(xué)習(xí)過程中,個體Xi都有保持自身狀態(tài)的趨勢”,可以較好地抑制算法早熟。
2)Cauch(0,1)為柯西函數(shù)。由于“教”算子使算法趨于收斂,所以在這里引入柯西函數(shù),利用其較強(qiáng)的變異能力保證算法具有一定的發(fā)散性,以能夠搜索更為廣闊的空間。
3)δ由式(2)計算得到,其中rand(0,1)為(0,1)內(nèi)的隨機(jī)數(shù),logsig(*)為對數(shù)sigmoid的傳遞函數(shù),Tmax是算法的最大迭代次數(shù),t為當(dāng)前迭代次數(shù),k是改變logsig(*)函數(shù)的斜率。多次實(shí)驗(yàn)表明,k適合在[0.3,0.6]取值。分析式(2)可知δ的范圍為(0,1),且隨著迭代次數(shù)自適應(yīng)變化,該參數(shù)與柯西變異結(jié)合,有利于算法早期的探索和后期的開發(fā)。
算法1 ITLBOBSO。
輸入:種群規(guī)模,迭代次數(shù)等參數(shù);
輸出:最佳個體Xt(t)。
步驟1 迭代計數(shù)器t=0,在解空間內(nèi)隨機(jī)生成種群pop(t)。
步驟2 計算全部個體的適應(yīng)度,選擇最優(yōu)個體作為教師Xt(t)。
步驟3 執(zhí)行“教”算子。
步驟4 執(zhí)行式(1)的“學(xué)”算子。
步驟5 算法滿足終止條件(精度要求或迭代次數(shù)滿足),則輸出最佳個體Xt(t),終止算法;否則轉(zhuǎn)步驟2。
設(shè)迭代次數(shù)為t,種群規(guī)模為n,分析ITLBOBSO算法,主要操作在步驟3和步驟4,兩個步驟時間復(fù)雜度均是O(n),則算法的時間復(fù)雜度為O(t*n)。使用數(shù)組存儲種群,則空間復(fù)雜度為O(n)。
應(yīng)用C 語言實(shí)現(xiàn)算法ITLBOBSO,選擇11 個50 維的Benchmark 函數(shù)來測試該算法的性能,可接受解的目標(biāo)精度為0.000 1。選擇近年來較為經(jīng)典的幾個改進(jìn)算法,如:ETLBO、TLBO-RLS、FETLBO、LMTLBO、DAEDTLBO[16]參與對比。ITLBOBSO 算法的種群規(guī)模d設(shè)為30,其中f1、f2、f3、f4、f5、f7、f8、f9的迭代次數(shù)為3 000,其余函數(shù)為5 000 次,斜率k=0.4。其他算法的參數(shù)設(shè)置參考各自文獻(xiàn)。所有算法均獨(dú)立運(yùn)行30次,以消除隨機(jī)性和其他因素的影響。
分析表1,函數(shù)f1、f2、f3、f4都是較易優(yōu)化的函數(shù),ITLBOBSO算法表現(xiàn)出了較好的求解能力,它在f1、f2、f3上的解均是最優(yōu)的,在f4上的解略低于FETLBO 算法。穩(wěn)定性的對比方面,ITLBOBSO算法在f4上略遜于FETLBO和LMTLBO,而在其他函數(shù)上則最優(yōu)。函數(shù)f5為多峰,ITLBOBSO算法的表現(xiàn)略差,其解的質(zhì)量和方差均較FETLBO和LMTLBO算法低了0.01個數(shù)量級,但仍然優(yōu)于其他幾個算法。f6的解空間非對稱,對算法的搜索能力以及克服早熟的能力要求均較高,ITLBOBSO算法表現(xiàn)優(yōu)異,無論是解精度還是解方差均超越了其他算法。在f7、f8兩個測試函數(shù)上,ITLBOBSO表現(xiàn)仍然優(yōu)秀,解的精度是最優(yōu)的,但是在f8的方差上較FETLBO 和LMTLBO 低。在函數(shù)f9上ITLBOBSO、FETLBO、LMTLBO 三個算法的解精度相當(dāng),但是ITLBOBSO 算法的解方差要稍差。f10、f11是較難優(yōu)化的多峰函數(shù),存在多個局部極值點(diǎn)且解空間內(nèi)存在陷阱,ITLBOBSO算法表現(xiàn)得較為一般,解的精度均較FETLBO和LMTLBO兩個算法低,但是該算法的解方差與FETLBO、LMTLBO基本相當(dāng)。
表1 無約束測試函數(shù)上的結(jié)果對比(均值/方差)Tab.1 Comparison of results on unconstrained benchmark functions(Mean/Std)
續(xù)表
表2列出了算法的成功收斂次數(shù)(S)、成功收斂所需迭代次數(shù)(I)和運(yùn)算時間(t)。從表中數(shù)據(jù)可以看出,ITLBOBSO算法在所有函數(shù)上的收斂成功次數(shù)均非常高,只是在f6、f10、f11上要遜于FETLBO或LMTLBO算法。在成功收斂所需迭代次數(shù)對比方面,本文算法在函數(shù)f1、f2、f3、f4、f6、f7、f9、f10上均高于FETLBO和LMTLBO兩個算法,在其他的幾個函數(shù)上,ITLBOBSO的迭代次數(shù)均最少。觀察對比算法的運(yùn)算時間,ITLBOBSO和其他的算法均是互有勝負(fù),但是大多數(shù)是較少的運(yùn)行時間,表現(xiàn)比較優(yōu)秀。取30次運(yùn)算中最好的1次和最壞1次結(jié)果的均值,繪制了其中4個算法在f1、f2、f3、f4、f5、f6這6個函數(shù)上的收斂曲線,分別為圖1(a)~(f)。從圖中的結(jié)果可以看出,ITLBOBSO的收斂速度明顯要優(yōu)于另外3個算法,在較少的迭代次數(shù)內(nèi),適應(yīng)度值快速下降,使種群快速集中于最優(yōu)個體周圍進(jìn)行精細(xì)搜索。另外,從表1和表2中的數(shù)據(jù)可以看出ITLBOBSO解的精度以及收斂速度明顯優(yōu)于DAEDTLBO算法。
圖1 算法的演化曲線對比Fig.1 Comparison of evolution curves of algorithms
表2 無約束測試函數(shù)上的結(jié)果對比(成功次數(shù)/迭代次數(shù)/時間)Tab.2 Comparison of results on unconstrained benchmark functions(successful number/iteration number/time)
續(xù)表
續(xù)表
在算法ITLBOBSO的早期,當(dāng)前個體保持向最優(yōu)個體收斂的趨勢,同時由于受“學(xué)”算子的影響,個體也在不斷搜索更為廣闊的區(qū)域,避免種群過早地收斂到最優(yōu)個體所在區(qū)域而使算法陷入早熟。在算法的后期,如果種群聚集在全局最優(yōu)解所在區(qū)域,則個體會利用“學(xué)”算子保持自身狀態(tài),對所在區(qū)域進(jìn)行精細(xì)搜索,提高算法的解精度。如果種群被局限于局部最優(yōu)解所在區(qū)域,“學(xué)”算子中的柯西函數(shù),也會賦予種群一定的變異能力,使個體逃離約束。綜上所述,所提出算法的“教”和“學(xué)”算子可以很好地協(xié)調(diào),保證種群全局搜索和局部勘探之間的平衡。
為了測試算法在約束問題上的求解能力,選擇工程中兩個常見的優(yōu)化問題:壓力容器設(shè)計優(yōu)化和張力彈簧問題[17]進(jìn)行實(shí)驗(yàn),兩個問題的詳細(xì)資料請參見文獻(xiàn)[17]。
1)壓力容器設(shè)計優(yōu)化問題。
這是一個帶約束復(fù)雜結(jié)構(gòu)優(yōu)化問題,追求的目標(biāo)是最小化總成本(含:成型代價、材料代價和焊接代價)。Ts(x1)表示半球形風(fēng)頭厚度,Th(x2)為圓柱形壓力容器的溶度,R(x3)是半徑,L(x4)代表圓柱段長度。該問題的目標(biāo)函數(shù)為式(3),約束條件為式(4):
其中:1×0.062 5 ≤x1,x2≤99×0.062 5,10 ≤x3,x4≤200。
將TLBO和ITLBOBSO 兩個算法的種群規(guī)模設(shè)為50,獨(dú)立運(yùn)行30 次,取結(jié)果的平均值,然后與SzAPSO(PSO with Search space zoomed factor and attractor)、SAMGA(Self-Adaptive Migration model Genetic Algorithm)、GSDE(DE with Gaussian random walk and individual Selection strategies)等算法進(jìn)行對比。結(jié)果分別列于表3和表4,表中所列其他算法的數(shù)據(jù)取自文獻(xiàn)[17]。從表3 的數(shù)據(jù)可以看出,ITLBOBSO 算法求得的Ts(x1)、Th(x2)、R(x3)、L(x4)4 個分量以及在總成本上僅遜于GSDE 算法,明顯優(yōu)于其他參與對比的算法。但是,本算法的評價次數(shù)要比GSDE少很多。
表3 壓力容器設(shè)計問題上的結(jié)果對比Tab.3 Result comparison of pressure vessel design
表4 壓力容器設(shè)計問題中的約束函數(shù)值對比Tab.4 Constrained function values comparison in pressure vessel design
2)張力彈簧設(shè)計問題。
該問題也是工程上的經(jīng)典優(yōu)化問題,目標(biāo)是在滿足撓度、剪應(yīng)力和振動頻率等約束條件下,追求所設(shè)計的質(zhì)量最小。它包含有3 個變量分別是:彈簧的線圈直徑w(x1)、彈簧的平均直徑d(x2)和彈簧的有效線圈數(shù)L(x3)。該問題的目標(biāo)函數(shù)為(5),約束為(6),實(shí)驗(yàn)數(shù)據(jù)列于表5、6。
表5 算法在張力彈簧問題上的結(jié)果對比Tab.5 Result comparison of design of tension/compression springs
表6 彈簧設(shè)計問題的約束函數(shù)值對比Tab.6 Comparison of constrained function values in design of tension/compression springs
其中:0.05 ≤x1≤2,0.25 ≤x2≤1.3,2.0 ≤x3≤15.0。
從表5、6 的結(jié)果可以看出,ITLBOBSO 和GSDE 算法的表現(xiàn)要優(yōu)于其他的算法,雖然在總代價上要稍遜于GSDE 算法,但是本算法所需的評價次數(shù)卻要比GSDE 算法少很多,說明ITLBOBSO 算法既可以保證求解的精度,收斂速度也比較快。綜合以上兩個實(shí)驗(yàn)的對比結(jié)果,可知道在約束函數(shù)問題的優(yōu)化上,ITLBOBSO算法具有較好的穩(wěn)定性和精度。
通過吸收BSO 算法中的優(yōu)秀思想,將標(biāo)準(zhǔn)TLBO 中的“學(xué)”算子修改為基于頭腦風(fēng)暴討論式的“學(xué)”算子,以期通過個體之間的思想碰撞實(shí)現(xiàn)種群內(nèi)的信息交流和互相學(xué)習(xí),提升種群的狀態(tài)。在新的“學(xué)”算子中引入柯西變異機(jī)制,賦予個體跳出局部最優(yōu)約束的能力。選擇了11 個經(jīng)典的Benchmark 函數(shù)和工程上的兩個帶有約束的優(yōu)化問題進(jìn)行了仿真實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法的收斂速度、解精度和魯棒性均較標(biāo)準(zhǔn)TLBO 有明顯提升。TLBO 算法出現(xiàn)時間較短,也存在一些弱點(diǎn),下一步將會深入研究該算法的演化原理,借鑒傳統(tǒng)演化算法的優(yōu)點(diǎn)實(shí)現(xiàn)優(yōu)勢互補(bǔ)。探索TLBO 算法新的應(yīng)用領(lǐng)域也是主要的研究方向之一。