段艷明 肖輝輝 譚黔林 趙翠芹
(河池學院大數(shù)據(jù)與計算機學院 河池 546300)
隨著科學技術(shù)的日新月異,云計算、人工智能、5G、傳感網(wǎng)、大數(shù)據(jù)和腦科學等眾多新技術(shù)新理論和社會經(jīng)濟的高速發(fā)展,許多科學研究和實際工程問題日益復雜化,其各領(lǐng)域中所涉及的各類復雜優(yōu)化問題的處理,越發(fā)成為社會各行各業(yè)迫切需要解決的問題,這些問題的求解對優(yōu)化技術(shù)提出了更高的要求,即求解精度要高,計算速度要快,穩(wěn)定性要好,而傳統(tǒng)的優(yōu)化方法(如Lagrange 乘數(shù)法及單純形法等)在解決這些復雜優(yōu)化問題時存在計算精度不高且耗時過長等不足。為了解決這些求解優(yōu)化問題存在的瓶頸,人類需要尋求新的方法和途徑。受自然界進化規(guī)律和生物群體智能行為的啟發(fā),一系列智能算法不斷被提出,并且由于這些元啟發(fā)式智能算法具有不需要傳統(tǒng)優(yōu)化方法所需要的連續(xù)、可微等限制條件的優(yōu)點,這為解決復雜的優(yōu)化問題提供了一種新途徑和新思路。
依據(jù)顯花植物繁殖機理,Yang 設(shè)計了一種名為花授粉算法(Flower Pollination Algorithm,F(xiàn)PA)的智能優(yōu)化算法[1],由于該算法實現(xiàn)過程簡單且具有較好的全局探索和局部開采平衡能力等優(yōu)點,使其在大量優(yōu)化領(lǐng)域取得了成功應用。當前,該算法已被成功應用到企業(yè)投資分配[2]、醫(yī)學[3]、能源[4~7]、傳感網(wǎng)[8]等領(lǐng)域。然而該算法與其他智能算法一樣,也存在一些不足,如算法演化后期計算速度慢、容易早熟,尋優(yōu)精度不高,魯棒性差等缺陷,導致其在解決大量復雜優(yōu)化問題時獲得的結(jié)果不盡人意。為了克服這些算法存在上述的不足,提高其收斂能力,當前眾多學者依據(jù)各種智能算法的特征和優(yōu)缺點,運用了諸多的策略和方法對其進行了改進,構(gòu)建了許多優(yōu)化能力更強的新算法模型,使得大量的工程優(yōu)化問題得到更好的解決。因此,許多學者也對FPA 算法進行了深入改進研究,如Singh等[9]利用函數(shù)適應度值對轉(zhuǎn)換概率p 進行動態(tài)調(diào)整,并取得了較好的效果;Tawhid 等[10]利用鯨魚優(yōu)化算法的搜索獵物策略和攻擊獵物方法替換了FPA 算法的全局搜索策略,構(gòu)建了一種新的混合算法WOFPA(Whale Optimization Algorithm and Flower Pollination Algorithm),其性能與對比算法相比,得到了一定程度的提升,但該算法增加了較多的參數(shù),降低了算法的靈活性,并只在低維上驗證了其性能的優(yōu)越性,沒有在高維得到驗證,使其缺少了說服力;Gálvez等[11]為了改進標準FPA 算法在優(yōu)化多模態(tài)問題時,僅依靠其萊維飛行策略和授粉穩(wěn)定性機制無法找到多個最優(yōu)解的缺點,提出一種多模態(tài)花授粉算法MFPA(Multimodal Flower Pollination Algorithm),其思想是在基本花授粉的基礎(chǔ)上加入記憶機制識別潛在的全局和局部最優(yōu)解,引入一種新的選擇機制確保解的多樣性,融入凈化記憶處理方法循環(huán)消除重復的解,通過對14 個標準測試函數(shù)的優(yōu)化,驗證了其有效性,且性能優(yōu)于對比算法;El-Shahat 等[12]提出了一種改進的花授粉算法,該算法利用懲罰函數(shù)對每個解進行評估,對解中的不可行解運用FRIO(Flower Repair and Improve Operator)進行處理,經(jīng)過全局搜索或者局部搜索后,產(chǎn)生的新解再與全局最優(yōu)解進行交叉操作,然后采用S函數(shù)對改進算法進行離散化,并對多維背包問題進行求解,其優(yōu)化性能要強于對比算法。
從上述可知,當前的改進方法對FPA算法的優(yōu)化性能具有一定的提升,但這些改進的FPA算法的優(yōu)化能力還有較大的提升空間,且一些改進策略降低了算法的靈活性和增加了算法的復雜性。為此,本文提出了一種自適應骨干花授粉算法(Adaptive Bare Bones Flower Pollination Algorithm,ABFPA),算法把骨干思想利用到FPA算法的局部搜索部分,通過自適應搜索中心的高斯變異對花朵個體進行位置更新,在此基礎(chǔ)上進一步利用指數(shù)變異進行位置優(yōu)化;同時,在保留基本FPA 算法的個體信息共享思想的基礎(chǔ)上增加信息共享的個體數(shù)量,更大程度上進行個體的有效信息交換。實驗結(jié)果表明ABFPA 算法簡單且高效,尋優(yōu)效果好,收斂速度快,魯棒性好,與現(xiàn)有經(jīng)典的改進FPA算法相比,亦顯示出良好的競爭力。
FPA 算法是依據(jù)顯花植物繁殖機理而設(shè)計的一種優(yōu)秀的智能優(yōu)化算法。從其仿生原理可知,其全局搜索策略是模擬植物繁殖的異花授粉過程,而植物異花傳粉過程具有萊維飛行特征,這使FPA算法具有良好的探索能力,F(xiàn)PA 算法的局部搜索機制是源于植物繁殖的自花授粉過程。同時,學者Yang 通過參數(shù)p 較好地處理了算法的探索和開采的平衡問題。
然而,從算法的局部搜索方程可知,其局部搜索是通過兩個隨機的個體進行信息共享,增強了算法的種群多樣性,但單純地通過兩個隨機個體的信息共享來實現(xiàn)局部搜索,缺少個體位置更新的引導性,信息共享程度低,因此,F(xiàn)PA算法的局部優(yōu)化能力較弱,制約著算法的優(yōu)化性能。
針對FPA 算法的局部搜索方程存在的不足和骨干思想的優(yōu)點,本文提出了把骨干思想融入到FPA 算法的局部搜索策略中,運用高斯變異的隨機分布策略來保持種群的多樣性,同時對高斯分布的搜索中心進行自適應調(diào)整,達到個體根據(jù)算法的進化程度來進行高斯變異;高斯變異增強了種群多樣性,但分散的個體也導致局部搜索速度和精度降低,并易脫離全局最優(yōu)位置,為此在高斯變異的基礎(chǔ)上進一步進行指數(shù)變異,使個體即保持多樣性又較集中在最優(yōu)區(qū)域,從而提高算法的局部搜索速度和精度;另外,通過0.5 的概率進行二分交叉,對FPA 算法的局部搜索方程再增加一個隨機個體,通過兩組個體的差分矢量來擾動個體的進化,進而更大程度上增強了種群的多樣性和開采能力。
依據(jù)PSO算法的仿生原理可知,種群在演化過程中每個解都要利用進化中的兩個最優(yōu)個體(全局和個體)進行更新,文獻[13]提出每個種群個體都收斂于其自身的歷史最優(yōu)值和全局最優(yōu)值的加權(quán)平均值,與算法的參數(shù)設(shè)置關(guān)系不大。在此基礎(chǔ)上,2003年Kenedy等提出BBPSO算法,該算法中的高斯分布是以pbest和gbest為兩點的固定模式進行搜索,而錯過了所有有效區(qū)域或盡可能多的區(qū)域,忽略了種群中的普通個體,未能利用到更多個體所攜帶的有用信息,限制了種群的多樣性和算法的優(yōu)化性能,導致算法易陷入局部極值,這是現(xiàn)有的骨干算法存在的主要問題。另外,由于事先并不知道pbest和gbest的相對位置,當算法陷入局部最優(yōu)時,依靠隨機產(chǎn)生的變異個體來跳出局部極值具有一定的難度。針對以上分析,本文把骨干思想引入FPA 算法的同時對高斯變異的搜索中心均值μ和方差δ進行自適應調(diào)整,增強花朵個體的多樣性。
首先,確定花朵i在d維進行更新時的榜樣花朵xm。利用式(1)計算變量b,隨機產(chǎn)生一個數(shù)a∈(0,1),若a>b,xm為當前種群中的一個隨機花朵,否則,xm為全局最優(yōu)花朵,如式(2)所示:
其中,xi是隨機花朵個體,xbest是全局最優(yōu)花朵個體。
接著,確定高斯分布的均值μ。以最小化問題為例,按照式(3)~(6)計算μ的取值范圍[μmin,μmax],按式(7)得到高斯分布的均值μ:
式(3)中的fmax和fmin分別為當前種群的最大值和最優(yōu)值,其擴展因子w的范圍為(-1,1)。當花朵i優(yōu)于榜樣花朵m時,有f(xm)>f(xi),w為正值,μ值向著當前花朵i的方向擴展;當花朵i劣于榜樣花朵m時,有f(xm)<f(xi),w為負值,μ值向著榜樣花朵m的方向擴展。在算法迭代初期,種群較為分散,花朵i遠離榜樣花朵m,則xi和xm相差較大,f(xm)和f(xi)的差異也較大,擴展因子 ||w也較大,進而B2值也較大,最終使得μ的取值范圍中較多地為較優(yōu)花朵的區(qū)域,更多地關(guān)注了較優(yōu)花朵;隨著迭代的進行,種群趨于集中,xi和xm的差異逐漸減小,f(xm)和f(xi)的差異也逐漸減小,擴展因子 ||w較小,μ的取值范圍也逐漸縮小。因此,自適應高斯變異的方差μ滿足算法前期的勘探能力和后期的開采能力的性能要求。
然后,確定高斯分布的方差δ。若花朵i即為上一代的最優(yōu)個體,則根據(jù)式(8)計算方差δ,否則,按式(9)計算方差δ:
其中,Ub為函數(shù)的取值范圍的上限,Lb為函數(shù)的取值范圍的下限,xi為當前花朵位置。
最后,通過式(10)得到高斯分布的花朵位置:
通過高斯分布得到隨機的花朵個體,很大程度上增大了種群中每個個體之間的差異性,從而達到改善算法的局部搜索能力,但也在某種程度上降低了算法的局部搜索速度和精度。因此,本文在高斯分布的基礎(chǔ)上再采用指數(shù)變異,使高斯分布的隨機個體進一步向最優(yōu)位置靠攏。指數(shù)公式為
標準FPA 算法的局部授粉(優(yōu)化)部分是單純通過隨機的兩個個體之間的矢量差來進行信息共享,在本文算法中除了通過高斯變異和指數(shù)變異來改進局部優(yōu)化部分外,還遵循了標準FPA算法的局部授粉(優(yōu)化)思想,依然利用了個體信息的共享,只不過在此基礎(chǔ)上,通過0.5的概率進行二分叉,當產(chǎn)生的隨機數(shù)小于0.5 時進行高斯變異和指數(shù)變異,否則把進行信息共享的個體增加到3個,通過1組1個隨機個體與當前個體的差分矢量和1組兩個隨機個體的差分矢量來擾動個體的進化,這樣就更大程度上提高了個體信息的共享程度,個體信息共享的公式為
其中,ε1,ε2 分別是[0,1]上服從均勻分布的隨機數(shù),是在種群中隨機選擇的三個個體。這樣,當產(chǎn)生的隨機數(shù)大于0.5時,利用式(12)替換FPA 算法中的局部搜索方程進行個體間的信息共享。
根據(jù)以上分析,ABFPA 算法的具體實施步驟如下。
step1:對ABFPA 算法的參數(shù)n、p、D、Max_iter賦初值;
step2:求解每個解的值,并記錄所有值中的最小值或最大值和其相應的解
step3:如果p>rand,執(zhí)行全局搜索,并判斷新產(chǎn)生的解是否越界,如果越界做越界處理;
step4:如果p<rand,生成隨機變量r;
step5:當r<0.5,則執(zhí)行step6,否則執(zhí)行step8;
step6:利用式(10)對個體的位置進行更新;
step7:對step6 的個體再運用式(11)對其位置進行更新;
step8:采用式(12)對個體的位置進行更新;
step9:對step7 或step8 產(chǎn)生的新解做越界處理;
step10:求解step3或step7或step8產(chǎn)生的新解的值,并記錄所有值中的最小值或最大值和其相應的解;
step11:如迭代次數(shù)大于閾值Max_iter,則進化結(jié)束,并輸出所有解中的最優(yōu)解和其相應的適應度值,否則,轉(zhuǎn)step3繼續(xù)演化。
從上述ABFPA 算法的進化過程可知,ABFPA算法與基本FPA算法的框架基本類似,但對其局部搜索部分進行了改進,以0.5的概率進行二分叉,一部分進行自適應搜索中心高斯變異和指數(shù)變異,另一部分增加了進行信息共享的個體。
為了驗證本文算法的有效性、可行性和正確性,本文對四類典型的優(yōu)化測試函數(shù)(求解問題)進行求解,函數(shù)的詳情見表1,且本文對所求函數(shù)的解都是求其最小值。為了全面客觀評價新算法的性能優(yōu)勢,本文運用新算法與現(xiàn)有經(jīng)典的改進FPA算法對比實驗及分析,具體包括:1)收斂精度對比分析;2)非參數(shù)統(tǒng)計檢驗;3)穩(wěn)定性和收斂速度對比分析,還包括基本FPA算法的對比。
表1 本文采用的典型測試函數(shù)
為了測試ABFPA 算法與現(xiàn)有經(jīng)典的改進FPA算法在性能上是否具有不錯的競爭力,本文選用目前有代表性的四種改進算法進行對比,分別是混合差分進化花授粉算法(a hybrid differential evolution-flower pollination algorithm,DE-FPA)[14],基于精英反向?qū)W習的花授粉算法(Elite Opposition-based Flower Pollination Algorithm,EOFPA)[15],改進的花授粉算法(Modified Flower Pollination Algorithm,MFPA)[16],基于廣義反向?qū)W習的改進花授粉算法(Modified Generalised Oppsition-based Flower Pollination Algorithm,MGOFPA)[16]。
本文的所有參數(shù)值分別設(shè)立為種群大小n=50,最大演化次數(shù)Max_iter=200;所有算法的參數(shù)p取相同的值0.8,其他參數(shù)取自相關(guān)文獻中;DE-FPA 算法的參數(shù)CR 和F 分別取值為0.9 和0.5。為了降低實驗偏差,每種對比算法在其每個求解問題上都單獨執(zhí)行30 次。各種對比算法的尋優(yōu)結(jié)果如表2 所示,其中“-/≈/?”符號分別表明本文算法的收斂精度低于、相當于或高于對比優(yōu)化算法,“w/t/l”符號分別說明ABFPA算法與對比算法對比,在求解問題上,有w 個優(yōu)化結(jié)果好于比較算法,有t個尋優(yōu)結(jié)果與比較算法相當,有l(wèi)個優(yōu)化效果劣于比較算法,最優(yōu)結(jié)果用加粗凸顯。
對表2進行分析可知,在12個函數(shù)中,ABFPA、EOFPA、MGOFPA 算法各自取得7 個、5 個和1 個理論解,其他算法都沒取得理論解,這表明ABFPA 算法的尋優(yōu)能力明顯好于其他算法。算法具體在4類求解問題上的求解結(jié)果是在第1 類測試函數(shù)上,ABFPA、MGOFPA 和EOFPA 算法分別獲得了4 個、1 個和兩個理論解,其他兩個算法均沒有達到理論解,這表明ABFPA 比對比算法更適合用來求解這類問題;對于第2 類多峰高維函數(shù),ABFPA 算法與EOFPA 算法的效果基本持平,優(yōu)勢不是很大,但要優(yōu)于其他對比算法,且從表4 中的函數(shù)f7的平均迭代次數(shù)可知,ABFPA 算法的求解速度要顯著快于比較算法;在第3 類低維多峰的函數(shù)中,ABFPA 算法優(yōu)勢不大;在第4 類多峰帶旋轉(zhuǎn)的高維函數(shù)上,ABFPA 算法和EOFPA 算法性能相當,但遠遠好于其余算法。ABFPA 算法的收斂性能總體上要明顯地優(yōu)于對比算法,展示出了較強的競爭力。
表2 5種改進算法的優(yōu)化均值偏差和標準差
為了更客觀評價對比算法的綜合性能,本文采用非參數(shù)統(tǒng)計檢驗(Friedman 檢驗)進行實驗對比分析,其結(jié)果如表3 所示。對比算法的Rankings 值越小,其性能表現(xiàn)越突出,則排名越前。
從表3 中可知,ABFPA 算法的Rankings 值最小,在所有對比算法中,排在第一位,這表明ABFPA 算法的整體性能好于其他算法,具有良好的角逐力。
表3 5種FPA的Friedman檢驗(D=30,4)
為了對ABFPA 算法的穩(wěn)定性和收斂速度進行分析,驗證其穩(wěn)定性和求解速度的優(yōu)勢,實驗結(jié)果如表4 所示。本文在每個求解問題上都設(shè)置了一個尋優(yōu)精度邊界值,若每種對比算法收斂到上述設(shè)定的閾值(邊界值)且進化代數(shù)已大于一定的代數(shù)(本文設(shè)置為3000),則斷定該算法對該求解問題尋優(yōu)失??;其他參數(shù)設(shè)置同上,對比算法在每個求解問題上獨立執(zhí)行30 次;計算出SR(執(zhí)行成功率,執(zhí)行成功率=算法找到求解精度邊界值所需要的代數(shù)/算法總的執(zhí)行代數(shù))值和mean_iter(平均進化代數(shù))值,對比算法的SR 越大且mean_iter 越小,其性能越優(yōu),表4 中符號“NA”表示對比算法尋優(yōu)受挫,最優(yōu)結(jié)果用加粗凸顯。
表4 6種算法的尋優(yōu)成功率及平均迭代次數(shù)
從表4 的最后一行的平均尋優(yōu)成功率和收斂迭代次數(shù)可以看出,F(xiàn)PA 和MFPA 算法的平均尋優(yōu)成功率為0%;ABFPA 的尋優(yōu)成功率為87%,均收斂迭代次數(shù)為418,較明顯地優(yōu)于對比算法。這說明ABFPA 算法的穩(wěn)定性最強,ABFPA 算法的求解速度是所有算法中最快的。
本文對基本FPA 算法的搜索策略進行了理論分析,發(fā)現(xiàn)其存在著的不足,制約著該算法的優(yōu)化性能。為了提高其收斂能力,本文提出了一種自適應骨干花授粉算法。為了驗證新算法的有效性和先進性,從解的質(zhì)量、魯棒性和收斂速度等多方面進行了實驗對比分析,實驗結(jié)果驗證了改進算法是行之有效的。通過較豐富的實驗結(jié)果證明,與具有代表性的其他改進算法相比,新算法的優(yōu)化能力具有一定的優(yōu)勢。
在今后的工作中,如何利用新算法來處理能源、運輸?shù)葘嵺`中各類復雜的優(yōu)化問題進行進一步研究。