李會榮,任春年,魏倩茹
(商洛學院 數(shù)學與計算機應(yīng)用學院,陜西商洛 726000)
教與學優(yōu)化算法(Teaching-Learning-Based Optimization,TLBO)是由 Rao 等[1]模擬班級教學過程提出一種新型群體智能優(yōu)化算法。教與學優(yōu)化算法與其它群智能優(yōu)化算法類似,都是基于種群的元啟發(fā)式隨機優(yōu)化算法,具有算法原理簡單、參數(shù)少、尋優(yōu)性能好、易于實現(xiàn)等優(yōu)點,目前已經(jīng)在函數(shù)優(yōu)化、多目標優(yōu)化、工程參數(shù)優(yōu)化等領(lǐng)域得到了廣泛的應(yīng)用[2-4]。然而,TLBO算法在求解高維復雜優(yōu)化問題時會出現(xiàn)早熟收斂、收斂速度較慢等問題,通常不能收斂到全局最優(yōu)[5]。為此,許多研究者對TLBO算法進行了改進,例如,Rao等[5]將變異算子和精英策略融入到TLBO算法中,提出了一種精英教與學優(yōu)化(ETLBO)算法。于坤杰等[6]提出了一種基于反饋的精英教與學優(yōu)化(FETLBO)算法,該算法在ETLBO算法中融入反饋機制,可以增加教師與學困生之間的反饋交流,有效增強了算法的局部搜索能力。李會榮等[7]提出了一種自適應(yīng)教學因子,將差分變異策略融入到TLBO算法中,提出了一種融合差分變異的教-學優(yōu)化算法,增強了算法的尋優(yōu)性能。李麗榮等[8]在教學階段引入非線性動態(tài)學習因子和動態(tài)隨機搜索策略,提出了一種具有動態(tài)自適應(yīng)學習機制的教與學優(yōu)化算法。歐陽城添等[9]利用Tent映射反向?qū)W習策略初始化種群。在教學階段,對教師個體執(zhí)行天牛須搜索算法;在學習階段,對學生個體進行混合變異,提出了一種新的融合改進天牛須搜索的教與學優(yōu)化算法。王培崇等[10]利用Chebyshev混沌映射初始化種群,利用動態(tài)學習因子維持種群的多樣性,對教師個體將執(zhí)行共軛梯度搜索,對種群內(nèi)適應(yīng)度較差的學生個體利用反向?qū)W習和高斯學習進行了二次學習優(yōu)化,提出了一種改進的混合混沌共軛梯度法教與學優(yōu)化算法。黎延海等[11]引入隨機交叉策略和“自學”策略來提高算法的全局尋優(yōu)能力,提出了一種基于隨機交叉-自學策略的教與學優(yōu)化算法。上述這些改進算法雖然能夠較好地提高TLBO算法的性能,但往往需要引入額外算子或者算法后期會出現(xiàn)早熟收斂現(xiàn)象。為了改善TLBO算法求解高維復雜問題的能力,本文結(jié)合正弦余弦算法,提出一種基于正弦余弦的自適應(yīng)改進的教與學優(yōu)化(ASCTLBO)算法。該算法在教學階段引入自適應(yīng)教學因子和非線性慣性權(quán)重,增強算法局部搜索能力。在學習階段通過正弦余弦算法維持種群的多樣性,提高算法的全局搜索能力。
基本TLBO算法通過利用教師知識水平與班級學生學習的平均水平之間的差異來促進學生之間相互學習,以此來提高班級的整體學習水平[12]。在基本TLBO算法中,班級學生總?cè)藬?shù)為種群規(guī)模,學生的學習成績即為適應(yīng)度值,教師表示整個種群學習成績最好者。TLBO算法分為教學與學習兩個階段,教學階段是學生向教師學習,學習階段是學生之間互相學習。假設(shè)種群規(guī)模為N,空間維數(shù)為n,每個學生表示為Xi={Xi1,Xi2,…,Xin},用適應(yīng)度函數(shù) f(Xi)表示第 i個學生的學習水平。
在教學階段,教師通過向?qū)W生傳授知識提高班級的整體學習水平,希望班級的平均學習水平Xm向自身Xi靠近。因此教學階段的迭代方程為:
其中,Xi和Xi,new分別表示第i個學生學習前和學習后的知識水平,表示班級全體學生的平均知識水平,Xt表示教師的知識水平,rand是區(qū)間[0,1]的隨機數(shù);TF是教學因子,反映教師對班級整體學習水平的影響,一般取值為1或2,即表示為:
利用學生個體學習水平(即目標函數(shù)值)來衡量學習者個體的優(yōu)劣,如果適應(yīng)度函數(shù)f(Xi,new) 學習階段主要依靠學生個體之間相互學習而提高班級整體學習水平。學生Xi隨機向?qū)W生Xj進行差異性學習,迭代方程為: 如果適應(yīng)度函數(shù) f(Xi,new) 在基本TLBO算法中,教學因子影響著班級平均學習水平的變化。由式(2)可知,取值為1或2,表示在學習過程中學生沒有學到任何知識,或者學到了教師所傳授的全部知識。但是在實際教學過程中,由于教學任務(wù)、教學重難點及學生接受知識能力不同等因素影響,導致面對簡單知識點學生接受能力較強,面對重難點時學生接受能力較弱。在TLBO算法中,TF越小表示搜索步長越小,搜索能力較弱,收斂速度較慢。而TF越大表示搜索步長較大,搜索能力較強,收斂速度較快。為此,將教學因子TF隨迭代次數(shù)自適應(yīng)調(diào)整為: 其中,TFmin表示最小教學因子,t表示當前迭代的次數(shù),T表示最大的迭代次數(shù)。 從式(4)可以看出,隨著算法的迭代次數(shù)增加,TF從1+TFmin線性遞減到TFmin。當算法開始迭代時,教學因子TF為1+TFmin,表示學生學習知識的能力較強,同時算法的全局搜索能力增強。隨著迭代次數(shù)的增加,教學因子逐漸趨于TFmin,表示在學習過程中,學習難度增強,學生接受知識的能力降低,同時算法的局部搜索能力增強(本文中取TFmin=1)。 在教學階段,教師通過“教”階段提高班級的整體學習水平。從式(1)可以看出,學生要么學習到教師傳授的所有知識,要么沒有學習到任何知識,與班級學生學習實際情況并不符合,忽視了不同學生的學習差異。為此,引入自適應(yīng)慣性權(quán)重,將迭代方程式(1)更新為: 其中,ω∈[0,1]為慣性權(quán)重,本文取 θ=2,如圖1所示。由式(5)可得,在算法早期,學生主要是向教師學習,隨著迭代次數(shù)的增加,ω逐漸增大,學生維持自身學習的能力逐漸增強,對教師的依賴性逐漸減弱。這種機制和生活中的實際教學情況一致,早期學生主要是向教師學習,學習效率高。隨著班級平均水平不斷增長,教學難度變化,學生學習效率開始下降,因此,學生會選擇性地學習教師講授的知識,從而增強了算法的局部搜索能力。 圖1 迭代次數(shù)對慣性權(quán)重ω的影響 在學習階段,學生選擇的教師非常重要,影響整個班級的學習水平。考慮到班級內(nèi)學生個體選擇的最優(yōu)教師可能不同,學生最終學習情況也會不相同。如果學生找到局部最優(yōu)教師時,大量學生個體會向?qū)ふ业降木植孔顑?yōu)教師學習,從而使得整個種群停滯不前,種群的多樣性減弱,容易出現(xiàn)早熟收斂現(xiàn)象。針對此現(xiàn)象,本文在“學”階段引入正弦余弦算法[13],通過利用正弦余弦算法的震蕩變化性質(zhì),保持種群的多樣性,使得算法的全局搜索能力提高。 其中,λ 為調(diào)節(jié)系數(shù),本文取 λ=3,rδ在迭代前期遞減速度慢,所以rδ在前期權(quán)重較大,有利于提高算法在全局的搜索能力,迭代次數(shù)大于1/3時,曲線轉(zhuǎn)折幅度較大,之后進入局部尋優(yōu),隨著迭代次數(shù)增加,rδ逐漸減為0,有利于算法前期在全局搜索能力增強,后期局部搜索能力增強[14]。圖2為步長因子r1、rδ隨迭代次數(shù)變化曲線圖。 圖2 迭代次數(shù)對步長因子r1、rδ的影響 由于TLBO算法在整個尋優(yōu)過程中,個體更新會受到自身的影響,引入非線性權(quán)重α,使得個體在更新過程中自身的影響呈非線性變化,如圖3所示,在算法初期,α值較小,個體更新時受到自身的影響較小,全局搜索能力增強。在算法后期,α值較大,個體受到自身影響較大,增強局部搜索能加強算法的收斂速度。因此將學習階段式(3)表示為: 圖3 迭代次數(shù)對非線性權(quán)重α的影響 其中,r2∈[0,2π]決定學生個體學習的位置,r3∈[0,2]決定教師對學生個體的影響,r4∈[0,1]的隨機數(shù),控制算法使用正弦函數(shù)還是余弦函數(shù)。 綜上,提出ASCTLBO算法的實現(xiàn)步驟為: 步驟1 設(shè)置種群規(guī)模N,空間維數(shù)n,最大迭代次數(shù)T,當前迭代次數(shù)t=1。 步驟 2 初始化種群 X={X1,X2,…,Xm},計算適應(yīng)度函數(shù)f(Xi)。 步驟3 教學階段按式(4)~式(6)更新個體,保留最優(yōu)個體。 步驟4學習階段根據(jù)正弦余弦算法,按式(4)、式(8)、式(9)更新個體。 步驟5 令t=t+1,返回到步驟3,直到滿足停止條件或達到最大迭代次數(shù),迭代停止,輸出最優(yōu)解。 為驗證提出ASCTLBO算法的性能,選取9個標準測試函數(shù)進行數(shù)值試驗[15],測試函數(shù)的表達式如表1所示(n表示空間的維數(shù)),并與TLBO[1]、ITLBO[16]、DSLTLBO[8]、CMDEATLBO[17]進行比較。在表1中,函數(shù)的最優(yōu)值均為0,其中f1~f5為單峰函數(shù),f6~f9為多峰函數(shù)。 表1 測試函數(shù) 參數(shù)設(shè)置為:種群規(guī)模N=30,最大迭代次數(shù)T=500,教學因子最小值TFmin=1。其它參數(shù):λ=3,θ=2。得到的最優(yōu)值(Opt)和最優(yōu)值的方差(SD)如表2所示,最優(yōu)值加粗表示。本文采用的測試環(huán)境為:Intel(R)Core(TM)i7-9750H 2.60GHz CPU,16GB內(nèi)存;Windows11操作系統(tǒng);MATLAB R2020a軟件。 表2 單峰測試函數(shù)結(jié)果對比 數(shù)據(jù)維數(shù)分別為30維、50維、100維下進行試驗,每次試驗獨立運行30次,試驗結(jié)果如表2和表3所示,其中Opt、SD分別表示每組試驗運行30次的最優(yōu)值與方差。 表3 多峰測試函數(shù)結(jié)果對比 從表2可以看出,提出ASCTLBO算法、CMDEATLBO算法在單峰函數(shù)f1~f4中均達到最優(yōu)值,方差均為0,但是在單峰函數(shù)f5中,提出ASCTLBO算法的性能明顯優(yōu)于其余四種相比較的算法,從而表明提出ASCTLBO算法在單峰函數(shù)上具有明顯優(yōu)勢。由表3可知,提出ASCTLBO算法在多峰函數(shù)f6、f7和f9均取到理論最優(yōu)值0,而在 f8上,ITLBO、DSLTLBO、CMDEATLB 和提出ASCTLBO算法取得最優(yōu)值為8.88×10-16,但是在測試函數(shù)f8、f9中,提出ASCTLBO算法的方差明顯優(yōu)于其他算法。從表2和表3可以看出,無論在單峰函數(shù)還是多峰函數(shù),無論是低維還是高維,提出ASCTLBO算法在最優(yōu)值、標準差方面的性能都優(yōu)于其他算法。 為了分析提出ASCTLBO算法的收斂速度,圖4和圖5給出在50維數(shù)下f1~f9的最優(yōu)值隨著迭代次數(shù)的收斂曲線圖,其中橫坐標為迭代次數(shù),縱坐標為取常用對數(shù)。 圖4 50維數(shù)下f1~f4的最優(yōu)值的收斂曲線 圖5 50維數(shù)下f5~f9的最優(yōu)值的收斂曲線 由圖4和圖5可以看出,提出的ASCTLBO算法在收斂速度與精度上均優(yōu)于其他四個算法,說明了自適應(yīng)慣性權(quán)重和正弦余弦算法在前期有著較強的全局搜索能力,加快了收斂速度。其中ASCTLBO算法在 f1、f2、f3、f4收斂曲線下降速度最快,只有 f2收斂曲線在后期稍微變慢,在迭代350次時與DSLTLOB算法交叉,說明ASCTLBO算法引入正弦余弦算法增強了全局搜索能力。f6、f7收斂曲線可以看出,ASCTLBO算法收斂性能優(yōu)于TLBO、ITLBO、DSLTLBO和CMDEATLBO算法,在運行20次內(nèi)就找到全局最優(yōu)值。只有f5和f8收斂曲線在迭代后期出現(xiàn)平緩現(xiàn)象,陷入局部最優(yōu),但是收斂速度和精度還是優(yōu)于相比較的算法。f9收斂曲線圖在迭代前200次內(nèi)多次出現(xiàn)平緩趨勢,最后趨于下降。進一步驗證了引入的自適應(yīng)慣性權(quán)重有著較強的局部搜索能力,避免算法陷入局部最優(yōu)解。 算法的復雜度決定了算法運行所消耗的時間,時間越長,算法越復雜,運行效率就會降低。如表4所示,9個測試函數(shù)在相同維數(shù)下,ASCTLBO算法運行耗時均少于其他四種算法,且耗時低于TLBO算法。隨著維數(shù)的增加,整體運行時間變長,但ASCTLBO算法耗時依舊是五種算法中最少的。說明引進的自適應(yīng)慣性權(quán)重和正弦余弦算法并沒有增加算法的復雜度,進一步顯示出提出的ASCTLBO算法的優(yōu)越性。 表4 算法運行時間 為驗證提出ACSTLBO算法在工程設(shè)計優(yōu)化中的性能,選取約束工程優(yōu)化—壓縮彈簧設(shè)計問題[18]進行數(shù)值試驗。首先利用罰函數(shù)法將其轉(zhuǎn)化為無約束優(yōu)化問題,再利用提出ACSTLBO算法進行求解。參數(shù)設(shè)置為:迭代次數(shù) T=500,λ=3,θ=2。壓縮彈簧設(shè)計是在一定的約束條件下尋找最小化的彈簧重量,其中約束條件主要有最小偏差(g1)、剪切應(yīng)力(g2)、震蕩頻率(g3)、外徑限制(g4)、彈簧金屬絲平均直徑 d(x1)、彈簧圈平均直徑 D(x2)和彈簧有效圈數(shù) N(x3),則數(shù)學模型: 目標函數(shù): 約束條件: 邊界約束: 在壓縮彈簧設(shè)計問題上試驗結(jié)果如表5所示。由表5可以看出,與TLBO、ITLBO、DSLTLBO及CMDEATLBO算法相比,提出的ASCTLBO算法性能最優(yōu),最小值為0.012 685,從而表明ASCTLBO算法在復雜工程優(yōu)化問題的求解中是有效的。 表5 壓縮彈簧設(shè)計問題比較 針對基本TLBO算法的不足,提出一種基于正弦余弦的自適應(yīng)教與學優(yōu)化(ASCTLBO)算法。在教學階段,引入非線性教學因子和自適應(yīng)慣性權(quán)重,使得當前個體向全局最優(yōu)個體學習,保證種群的多樣性。在學習階段,利用正弦余弦算法的震蕩變化特性,有效保持了種群的多樣性。數(shù)值試驗表明,提出的ASCTLBO算法在全局搜索能力、收斂速度和收斂精度上都優(yōu)于其比較的算法,同時提出ASCTLBO算法在解決壓縮彈簧設(shè)計實際問題上具有明顯的優(yōu)越性。1.2 學習階段
2 基于正弦余弦的自適應(yīng)教學優(yōu)化算法(ASCTLBO)
2.1 自適應(yīng)教學因子
2.2 自適應(yīng)慣性權(quán)重

2.3 正弦余弦算法


3 結(jié)果與分析
3.1 測試函數(shù)


3.2 收斂精度分析

3.3 收斂曲線分析


3.4 算法復雜度分析

3.5 工程優(yōu)化問題應(yīng)用

4 結(jié)論