張水平,王麗娜
江西理工大學(xué) 信息工程學(xué)院,江西 贛州 341000
求解最優(yōu)化問題一直都是計(jì)算機(jī)工程、生產(chǎn)調(diào)度、人工智能等領(lǐng)域廣泛關(guān)注的一個(gè)問題。近年來,以粒子群算法(PSO)[1]、蟻群算法(ACO)[2]、遺傳算法(GA)[3]等為代表的群智能算法為人們求解復(fù)雜問題提供了強(qiáng)有力的工具。果蠅優(yōu)化算法(Fruit Fly Optimization Algorithm,F(xiàn)OA)[4-5]是潘文超博士在2011年提出的一種新型的仿生類元啟發(fā)式智能優(yōu)化算法,它是通過模仿自然界中果蠅利用其敏銳的嗅覺和尖銳的視覺的覓食行為而設(shè)計(jì)的一種演化式計(jì)算的新算法。FOA 調(diào)節(jié)參數(shù)較少,操作簡單,具有易于構(gòu)建的代碼框架,可塑性強(qiáng),只要調(diào)節(jié)好核心參數(shù),就較容易應(yīng)用于多個(gè)領(lǐng)域去解決實(shí)際問題。吳小文等[6]和劉立群等[7]將果蠅優(yōu)化算法與主流群體智能算法的尋優(yōu)性能進(jìn)行對(duì)比,結(jié)果如表1所示。實(shí)驗(yàn)結(jié)果表明,果蠅優(yōu)化算法相比于其他群智能算法計(jì)算量較小運(yùn)行時(shí)間短,在迭代次數(shù)較低時(shí),收斂精度和收斂速度要比其他群智能算法更高更快,因此全局尋優(yōu)能力很強(qiáng)。以上的各種優(yōu)勢使其一經(jīng)提出便受到國內(nèi)外眾多學(xué)者的關(guān)注和研究。在應(yīng)用上,果蠅優(yōu)化算法屬于一種研究方法,無領(lǐng)域限制,已被應(yīng)用于多個(gè)學(xué)科領(lǐng)域[8]。本文總結(jié)了果蠅優(yōu)化算法從提出到現(xiàn)在國內(nèi)外對(duì)其研究的主要成果,包括在候選解產(chǎn)生機(jī)制、搜索步長以及飛行策略等方面的改進(jìn)和在復(fù)雜函數(shù)優(yōu)化、參數(shù)優(yōu)化、調(diào)度及物流問題等方面的應(yīng)用,為FOA的推廣應(yīng)用提供有效的資料,最后提出FOA 在算法改進(jìn)和實(shí)際應(yīng)用方面研究的新方向。
果蠅廣泛地存在于全球溫帶及熱帶氣候區(qū),相較于其他生物,果蠅具有更發(fā)達(dá)的嗅覺和視覺,果蠅通過敏銳的嗅覺發(fā)現(xiàn)食物源的位置,并分享給其他的果蠅或者接收其他果蠅分享而來的信息,比較得出氣味最優(yōu)的果蠅個(gè)體位置,同時(shí)利用自身發(fā)達(dá)的視覺發(fā)現(xiàn)食物和同伴聚集的位置向該位置飛去,形成新的果蠅群體中心,如此重復(fù)操作,直到找到食物。根據(jù)果蠅群體覓食行為特征,標(biāo)準(zhǔn)FOA可大致分為以下幾個(gè)步驟:
表1 FOA與其他群智能算法尋優(yōu)性能對(duì)比結(jié)果
(1)初始化果蠅種群規(guī)模(Sizepop)和最大迭代次數(shù)(Maxgen),初始化果蠅群體位置X_axis、Y_axis。
(2)每一只果蠅個(gè)體利用嗅覺搜索食物時(shí),賦予其隨機(jī)的搜索方向和距離:
(3)由于一開始不知道食物的位置,因此先計(jì)算果蠅個(gè)體到原點(diǎn)的間距Disti,再計(jì)算味道濃度判定值Si:
(4)把味道濃度判定值Si代入到味道濃度判定函數(shù)(適應(yīng)度函數(shù)或目標(biāo)函數(shù)),計(jì)算出味道濃度值Smelli:
(5)找出果蠅種群中味道濃度值最優(yōu)的那個(gè)果蠅,并記錄此果蠅的位置信息和相應(yīng)的味道濃度值:
(6)保留最優(yōu)的味道濃度值bestSmell,并利用視覺飛往步驟(5)記錄的最優(yōu)位置,進(jìn)行位置更新,形成新的果蠅種群中心:
(7)開始迭代尋優(yōu),重復(fù)執(zhí)行步驟(2)~(5),之后判斷最優(yōu)味道濃度值是否優(yōu)于歷史最優(yōu)味道濃度值,若是且當(dāng)前迭代次數(shù)小于Maxgen,則執(zhí)行步驟(6)。
從表1 中可以看出,F(xiàn)OA 雖然計(jì)算量較小,復(fù)雜度較簡單,全局尋優(yōu)性能良好,但是此算法容易過早收斂,穩(wěn)定性不強(qiáng),易陷入局部最優(yōu)。針對(duì)FOA的不足,近年來眾多學(xué)者做了大量的改進(jìn)研究,改進(jìn)思路主要從種群初始位置、候選解產(chǎn)生機(jī)制、搜索步長、多種群協(xié)同搜索、飛行策略以及設(shè)計(jì)混合算法等方面入手。
果蠅種群初始值的選擇直接影響了算法本身的收斂速度和精度。當(dāng)種群初始位置選取的當(dāng)時(shí),算法的收斂速度快且尋優(yōu)精度高;反之算法的收斂速度慢,尋優(yōu)精度低,且易陷入局部最優(yōu)。因此,種群初始位置的改進(jìn)是十分有必要的。目前已有的改進(jìn)分析如下。
韓俊英等[9]提出了一種反向?qū)W習(xí)策略的果蠅優(yōu)化算法,此算法是以一定的概率利用反向?qū)W習(xí)的策略來搜索反向解,之后從正向解和反向解中選擇最好的作為種群初始值。王行甫等[10]利用佳點(diǎn)集產(chǎn)生的點(diǎn)無重復(fù)點(diǎn)且均勻分布等特性,提出了用佳點(diǎn)集方法在規(guī)定的區(qū)域內(nèi)產(chǎn)生點(diǎn),再從中選取最優(yōu)的點(diǎn)作為果蠅群體初始位置。張水平等[11]通過等價(jià)替換來增大初始位置數(shù)量,之后根據(jù)混沌變量的遍歷性和規(guī)律性,利用混沌映射確定種群初始位置。
由于味道濃度判定值(Si)為距離的倒數(shù),因此FOA不能找到帶有負(fù)值的最優(yōu)解,且Si不遵循均勻分布,易收斂于坐標(biāo)原點(diǎn),F(xiàn)OA找到非零最優(yōu)解的概率極低,非常容易陷入坐標(biāo)原點(diǎn)附近的局部最優(yōu)。因此,算法的適用范圍受到了極大的限制。針對(duì)以上缺陷,目前已有的改進(jìn)策略如下:
(1)張勇等[12]提出加入有效因子α和避免局部最優(yōu)因子β對(duì)果蠅優(yōu)化算法進(jìn)行改進(jìn),具體表達(dá)式如下:
(2)王念等[13]針對(duì)FOA 不能找到帶有負(fù)值的最優(yōu)解,提出了如下候選解產(chǎn)生機(jī)制:
其中,rand()為[0,1]之間的隨機(jī)數(shù),當(dāng)sign的數(shù)為負(fù)值時(shí),則可得到負(fù)的候選解,但這種改進(jìn)策略并沒有解決候選解不均勻分布的性質(zhì),仍然易陷入坐標(biāo)原點(diǎn)附近的局部最優(yōu)。
(3)信成濤等[14]同樣針對(duì)FOA不能找到帶有負(fù)值的最優(yōu)解,提出了如下候選解產(chǎn)生機(jī)制:
其中,rangemax 是單個(gè)果蠅搜索范圍,rand為[0,1]的隨機(jī)數(shù)。此改進(jìn)方法利用余弦函數(shù)的對(duì)稱性和周期性,使得候選解Si可以取負(fù)值,取值范圍擴(kuò)展為[-rangemax,rangemax],且因?yàn)橛嘞液瘮?shù)的周期性,在一定程度上減小了算法陷入坐標(biāo)原點(diǎn)附近的局部最優(yōu)的概率,但是仍沒有解決候選解分布不均勻的問題,不能在指定范圍內(nèi)均勻搜索。
(4)Cheng等[15]提出直接把Xi作為味道濃度判定值Si,Xi在全局搜索范圍內(nèi)隨機(jī)初始化,這種生成機(jī)制真正的候選解為Xi,使得改進(jìn)后的果蠅優(yōu)化算法在整個(gè)有效搜索范圍內(nèi)遵循均勻分布,提高了算法的尋優(yōu)精度以及求解非線性優(yōu)化問題的能力。改進(jìn)的果蠅優(yōu)化算法Smelli的表達(dá)式為:
搜索步長是群智能算法的關(guān)鍵參數(shù)之一,在標(biāo)準(zhǔn)果蠅優(yōu)化算法中搜索步長為固定值,若搜索步長過大,果蠅的局部搜索能力變?nèi)?,反之,容易陷入局部最?yōu)使算法精度降低。改進(jìn)的策略一般是將搜索步長的固定值改為動(dòng)態(tài)的自適應(yīng)值。相關(guān)改進(jìn)策略如下:
(1)常鵬等[16]引入了速度進(jìn)化因子Sd和果蠅群體聚集度因子Jd,使算法根據(jù)實(shí)際情況動(dòng)態(tài)調(diào)整搜索步長R和搜索距離Dist的大小,來提高算法的尋優(yōu)性能。相關(guān)公式如下(優(yōu)化目標(biāo)為最小值時(shí)):
其中,R0為搜索初始值,sm為自適應(yīng)調(diào)整因子,Sd為當(dāng)前全局最優(yōu)味道濃度值與上一次迭代的最優(yōu)味道濃度值的比值,Jd為當(dāng)前全局最優(yōu)味道濃度值與當(dāng)前迭代的前N次味道濃度平均值的比值,β1為Sd的權(quán)重系數(shù),β2為Jd的權(quán)重系數(shù)。此改進(jìn)方法雖在一定程度上提高了算法的收斂精度,但根據(jù)上述公式可推出sm的取值范圍為[1-β1,1+β2],因此其跳出局部最優(yōu)的能力并不強(qiáng),實(shí)驗(yàn)結(jié)果也表明在測試Rosenbrock函數(shù)時(shí)算法陷入了局部極小值。
(2)牛勇力等[17]通過自適應(yīng)修改個(gè)體認(rèn)知因子c1和群體引導(dǎo)因子c2的大小來調(diào)整搜索步長值。改進(jìn)策略如下:
其中,c1=exp(min(Smell))-1 ,c2=1-c1,mean(X) 和mean(Y)是所有果蠅個(gè)體在此次迭代過程中位置的平均值。此改進(jìn)策略避免了算法早熟,能跳出局部最優(yōu),提高了全局搜索能力,且具有更高的收斂精度和更快的收斂速度。但沒有對(duì)候選解產(chǎn)生機(jī)制進(jìn)行改進(jìn),無法求解最優(yōu)解含負(fù)值的優(yōu)化問題,極大地限制了算法的適用范圍。
(3)王詠梅等[18]提出了一種新的動(dòng)態(tài)搜索步長計(jì)算公式,此搜索步長計(jì)算公式充分考慮了全局與局部尋優(yōu)能力的平衡,在算法迭代初期,搜索步長較大,使得算法在初期有較好的全局搜索能力,隨著迭代次數(shù)的增加,搜索步長逐漸減小,以提升算法的局部搜索能力,并且當(dāng)算法的全局最優(yōu)解不再更新時(shí),搜索步長會(huì)增大以跳出局部最優(yōu),有較好的跳出局部極值的能力。具體計(jì)算公式如下:
其中,g為當(dāng)前迭代次數(shù),rsMax、rsMin分別為最大搜索步長和最小搜索步長,ΔGbest是當(dāng)前全局最優(yōu)味道濃度值與上一次迭代所得的最優(yōu)味道濃度值的差值,t表示當(dāng)前反向搜索的次數(shù),T表示需要反向搜索的總次數(shù)。此改進(jìn)方法在提高算法尋優(yōu)精度的同時(shí),犧牲了較大的時(shí)間和空間復(fù)雜度,可以考慮結(jié)合多種群策略,減少反向搜索的次數(shù),以降低時(shí)間復(fù)雜度。
(5)Cheng等[15]通過對(duì)高斯正態(tài)分布進(jìn)行變換,設(shè)計(jì)了一種自適應(yīng)調(diào)整的搜索步長,整個(gè)迭代過程搜索步長逐漸減小,且較好地平衡了全局尋優(yōu)能力和局部尋優(yōu)能力。在迭代初期,搜索步長減小得極慢,隨著迭代次數(shù)的增加,開始緩慢地減小搜索步長,保證算法在迭代初期能夠在全局搜索領(lǐng)域內(nèi)進(jìn)行充分的搜索,提高全局搜索能力,降低陷入局部最優(yōu)的概率;之后,再快速減小搜索步長,到迭代中后期之后,又開始緩慢減小搜索步長,以保證算法在后期局部尋優(yōu)的能力,大大提高了算法的尋優(yōu)精度。具體數(shù)學(xué)表達(dá)式如下:
其中,frM決定了高斯分布的高度,δ的取值范圍為[5,10]。同時(shí),引入了少量精英果蠅,精英果蠅搜索步長不隨迭代遞減,提高了算法后期跳出局部最優(yōu)的能力。此改進(jìn)策略雖然提高了算法的尋優(yōu)精度,但算法前期為了充分搜索全局,搜索步長減小得極慢,因此在實(shí)驗(yàn)中算法前期收斂速度相比于其他對(duì)比算法要更慢。
FOA在搜索過程中易陷入局部最優(yōu),因喪失種群多樣性而早熟收斂[19]。多種群協(xié)同搜索通過設(shè)計(jì)合理的種群數(shù)量維持種群多樣性以及設(shè)計(jì)合理的種群間信息交換策略來提高搜索精度和搜索效率。目前已有的改進(jìn)策略分析如下:
(1)張前圖等[20]提出當(dāng)果蠅個(gè)體離當(dāng)代種群最差個(gè)體更近時(shí),將其劃分到以當(dāng)代最差個(gè)體為中心的較差子群,當(dāng)果蠅個(gè)體離當(dāng)代種群最優(yōu)個(gè)體更近時(shí),則劃分到以當(dāng)代最優(yōu)個(gè)體為中心的較優(yōu)子群,依照此規(guī)則將果蠅種群動(dòng)態(tài)地一分為二,兩個(gè)子群執(zhí)行不同的搜索策略,同時(shí)通過最優(yōu)個(gè)體的改變和子群的重組進(jìn)行兩個(gè)子群間的信息交換。此算法改進(jìn)策略提高了種群多樣性,平衡了算法的全局和局部的搜索能力,能更好地跳出局部最優(yōu)。但是改進(jìn)后的算法并沒有解決只能求解非負(fù)最優(yōu)解的問題。
(2)胡麗芳等[21]提出子群A和子群B交替搜索的雙子群果蠅優(yōu)化算法。兩個(gè)子群的群體位置由當(dāng)前迭代結(jié)果與上一次迭代結(jié)果相比較來交替取值。在標(biāo)準(zhǔn)果蠅優(yōu)化算法中,所有果蠅個(gè)體都向最優(yōu)果蠅個(gè)體聚集,削弱了算法后期的種群多樣性,加大了算法陷入局部最優(yōu)的風(fēng)險(xiǎn),此策略的優(yōu)點(diǎn)是增加了種群多樣性,且當(dāng)子群A搜索步長過小導(dǎo)致算法早熟時(shí),子群B的搜索步長則會(huì)比較大,此時(shí),可用子群B取代子群A,改變算法的搜索空間,避免陷入局部最優(yōu)。子群A與子群B的搜索步長公式如下:
其中L0為搜索步長初始值,n為當(dāng)前的迭代次數(shù),N為最大迭代次數(shù)。
李棟等[22]和Wu 等[23]也均提出了雙種群策略,兩個(gè)種群分別強(qiáng)調(diào)局部搜索和全局搜索,后者在雙子群策略基礎(chǔ)上同時(shí)結(jié)合了云模型理論,提出了一種基于云模型的雙種群FOA。
(3)張強(qiáng)等[24]用自適應(yīng)分組策略來模擬自然界中生物的領(lǐng)域特性,并且在進(jìn)化過程中設(shè)置一個(gè)果蠅精英池。將果蠅種群分成m個(gè)規(guī)模相同的子群,把果蠅種群內(nèi)的個(gè)體按味道濃度值降序排列,將前m個(gè)果蠅依次分配給m個(gè)子群,則第m+1 個(gè)果蠅進(jìn)入第1個(gè)子群,依次類推,并采用貪心策略用當(dāng)代最優(yōu)果蠅個(gè)體更新果蠅精英池的個(gè)體,將果蠅精英池中的個(gè)體進(jìn)行差分變異操作去改進(jìn)最優(yōu)果蠅個(gè)體的搜索方式。計(jì)算精英果蠅池內(nèi)果蠅個(gè)體的方差,以此來衡量果蠅精英池內(nèi)果蠅個(gè)體的離散程度,作為分析個(gè)體多樣性的標(biāo)準(zhǔn)。方差越低,果蠅個(gè)體分布越密集,味道濃度值變化緩慢,個(gè)體多樣性降低。在迭代后期,當(dāng)味道濃度值變化緩慢,精度不變化次數(shù)達(dá)到設(shè)定上限值時(shí),將整個(gè)種群分為拓展群體和優(yōu)勢群體,分別用反向混沌算法和改進(jìn)粒子群算法優(yōu)化拓展群體和優(yōu)勢群體,避免陷入局部最優(yōu)和提高尋優(yōu)精度。鄭曉龍等[25]也采用了多種群機(jī)制,并利用個(gè)體間的差分信息作為協(xié)同搜索機(jī)制,提高了種群多樣性和搜索效率。
由于FOA 算法的全局搜索能力不足,算法易早熟陷入局部最優(yōu),因此改進(jìn)果蠅的飛行策略,尤其是果蠅的飛行方向與距離是非常有必要的。近年來已有的研究分析如下:
Wang 等[26]提出了一種概率飛行策略,果蠅每次搜索時(shí)都會(huì)以一定概率選定飛行范圍,且范圍越大概率越小,此飛行策略的改進(jìn)提高了算法的搜索精度。王行甫等[10]以一定概率執(zhí)行柯西變異對(duì)果蠅群體中最優(yōu)個(gè)體進(jìn)行擾動(dòng),對(duì)變異后的種群進(jìn)行二次尋優(yōu),提高了算法跳出局部極值的能力和尋優(yōu)效率。張水平等[27]提出加入精英個(gè)體,在算法初期以線性遞減的牽引因子來誘導(dǎo)精英個(gè)體協(xié)同尋優(yōu),在算法后期采用搜索空間壓縮的搜索策略,此改進(jìn)方法能提高算法跳出局部最優(yōu)的能力。盛超等[28]在FOA中加入跳躍機(jī)制,當(dāng)濃度方差值連續(xù)低于設(shè)定閾值且低于設(shè)定閾值總次數(shù)到達(dá)設(shè)定上限時(shí),利用t分布的隨機(jī)性和散布特性更新果蠅位置使算法跳出局部最優(yōu)。Fan等[29]引入了一種有效的鯨魚狩獵策略來代替原始FOA 的隨機(jī)搜索計(jì)劃,并通過21 種測試函數(shù)進(jìn)行性能測試,以驗(yàn)證其有效性,統(tǒng)計(jì)數(shù)據(jù)表明,已改進(jìn)的算法有效地?cái)U(kuò)大了原始FOA的勘探和開發(fā)能力。Li等[30]采用種群中最好的果蠅誘導(dǎo)最差果蠅飛行的策略,當(dāng)連續(xù)幾次迭代果蠅狀態(tài)仍未更新,則會(huì)被隨機(jī)生成的果蠅所取代,這種策略可以幫助算法跳出局部最優(yōu)。石建平等[31]提出雙策略協(xié)同進(jìn)化的搜索方法,策略一是使當(dāng)前果蠅向精英個(gè)體學(xué)習(xí)的同時(shí),引入種群中不同果蠅個(gè)體之間的差異信息,以確保搜索結(jié)果的多樣性,提高全局搜索能力,避免算法只向最優(yōu)個(gè)體學(xué)習(xí),喪失種群多樣性,陷入局部最優(yōu)。策略二是對(duì)歷史最優(yōu)個(gè)體利用自身記憶信息去構(gòu)建差分向量,該策略能有效加快算法的收斂速度。兩個(gè)策略交替使用,在迭代前期以較大概率使用策略二進(jìn)行搜索,加快前期的收斂速度;在迭代后期則以較大概率使用策略一進(jìn)行搜索,避免向最優(yōu)個(gè)體聚集而陷入局部最優(yōu),有較好的跳出局部極值的能力,合理地平衡了算法的全局搜索與局部搜索的能力。
果蠅優(yōu)化算法具有簡單易實(shí)現(xiàn)的搜索框架,故很容易與其他方法相結(jié)合,構(gòu)造出能較好地平衡局部搜索能力與全局搜索能力的混合算法。
潘欣等[32]將FOA與差分進(jìn)化算法相結(jié)合,對(duì)每次迭代產(chǎn)生的果蠅群體進(jìn)行若干次變異、交叉、選擇等差分演化操作,增加種群多樣性,提高算法的執(zhí)行效率和收斂速度。使用了12個(gè)基準(zhǔn)函數(shù)對(duì)改進(jìn)后的算法進(jìn)行性能測試,結(jié)果表明新算法在收斂速度和精度上明顯優(yōu)于FOA。王龍飛等[33]將FOA與遺傳算法相結(jié)合,運(yùn)用交叉運(yùn)算的思想,把前一次迭代產(chǎn)生的果蠅群體一分為二兩兩交叉組合,得到新的子代群體,重新計(jì)算最優(yōu)味道濃度值,判斷是否優(yōu)于交叉前最優(yōu)個(gè)體味道濃度值,選出二者之間更優(yōu)的最優(yōu)果蠅個(gè)體位置作為下一次迭代的種群初始位置,此方法在迭代過程中增加了種群多樣性,提高了算法跳出局部最優(yōu)的能力,但是較大程度上增加了算法的復(fù)雜度,運(yùn)行效率并不高。賀智明等[34]提出一種基于元胞自動(dòng)機(jī)的果蠅優(yōu)化算法(CAFOA),以FOA 為主框架,在尋優(yōu)過程中引入元胞自動(dòng)機(jī)演化規(guī)則。對(duì)6種經(jīng)典測試函數(shù)進(jìn)行性能測試,仿真實(shí)驗(yàn)結(jié)果表明CAFOA相比FOA平均收斂精度提高10%,且具有較好的穩(wěn)定性。Szczypta 等[35]將FOA 與混合遺傳算法相結(jié)合,并應(yīng)用到參數(shù)優(yōu)化控制和結(jié)構(gòu)選擇之中。劉成忠等[36]將FOA與混合蛙跳算法相結(jié)合,提出了局部深度搜索的混合果蠅優(yōu)化算法(SFOALDS)。實(shí)驗(yàn)結(jié)果表明,SFOALDS有較強(qiáng)的全局搜索能力,且在求解高維函數(shù)時(shí)優(yōu)勢更加明顯。
自果蠅優(yōu)化算法提出以來便受到了眾多學(xué)者的廣泛關(guān)注與研究。目前,F(xiàn)OA已在多個(gè)領(lǐng)域得到廣泛應(yīng)用。
檢驗(yàn)算法性能的重要標(biāo)準(zhǔn)之一是對(duì)復(fù)雜函數(shù)的尋優(yōu)能力,因此,有眾多學(xué)者致力于求解復(fù)雜函數(shù)優(yōu)化問題。張曉茹等[37]提出一種微果蠅優(yōu)化算法用于求解多模態(tài)函數(shù)優(yōu)化問題,實(shí)驗(yàn)結(jié)果表明在偏高維多模態(tài)函數(shù)優(yōu)化問題上具有較好的應(yīng)用潛力。Wu等[38]用基于云模型的FOA測試了包括單峰和多峰的多個(gè)復(fù)雜復(fù)合函數(shù),實(shí)驗(yàn)結(jié)果表明其性能要優(yōu)于其他群智能算法。Wang等[39]將FOA 應(yīng)用于求解離散的多維背包問題。張健等[40]采用分群策略和動(dòng)態(tài)半徑來改進(jìn)果蠅優(yōu)化算法,并應(yīng)用在多目標(biāo)搜索領(lǐng)域解決了多目標(biāo)背包問題。臧文龍等[41]引入避免局部最優(yōu)因子來改進(jìn)FOA 的多目標(biāo)問題。Niu 等[42]提出基于差分操作的FOA,并用于求解最優(yōu)解不在零點(diǎn)的高維復(fù)雜函數(shù)。朱志同等[43]將改進(jìn)的果蠅優(yōu)化算法用于求解混合整數(shù)非線性規(guī)劃問題,實(shí)驗(yàn)結(jié)果表明,在算法穩(wěn)定性、收斂速度等方面,改進(jìn)的果蠅算法相比于粒子群算法及差分進(jìn)化算法要更優(yōu)。FOA 在復(fù)雜函數(shù)優(yōu)化方面的應(yīng)用較多,尤其是在高維、多峰函數(shù)優(yōu)化方面的應(yīng)用,但在多約束條件函數(shù)優(yōu)化、離散函數(shù)優(yōu)化等方面的應(yīng)用研究相對(duì)來說還比較少。
寧劍平等[44]利用遞減步長的果蠅優(yōu)化算法(DS-FOA)優(yōu)化支持向量機(jī)模型的懲罰因子參數(shù)和核函數(shù)參數(shù),仿真實(shí)驗(yàn)結(jié)果表明,DS-FOA 與 FOA、PSO 和 GA 算法相比,優(yōu)化參數(shù)的支持向量機(jī)回歸模型回歸效果好,均方誤差最低。針對(duì)大多數(shù)支持向量機(jī)僅考慮邊距,而忽略半徑,Gu等[45]利用FOA建立了一種基于半徑-邊距的支持向量機(jī)模型,該模型考慮了邊距的最大化和半徑信息最小化。利用FOA 對(duì)懲罰因子參數(shù)優(yōu)化。針對(duì)8 個(gè)UCI 數(shù)據(jù)集和8 個(gè)比較算法,評(píng)估了所提出的方法的有效性。實(shí)驗(yàn)結(jié)果驗(yàn)證了其可以產(chǎn)生更合適的模型參數(shù)并降低計(jì)算成本,從而產(chǎn)生較高的分類精度。南敬昌等[46]將改進(jìn)的FOA 用于優(yōu)化廣義回歸神經(jīng)網(wǎng)絡(luò)的光滑因子,并應(yīng)用于預(yù)測電壓駐波比參數(shù)和天線的S11 參數(shù)。Zhou 等[47]在FOA 中引入了模糊密度機(jī)制,以增強(qiáng)果蠅個(gè)體的搜索能力,將改進(jìn)后的果蠅優(yōu)化算法用于優(yōu)化半監(jiān)督親和力傳播模型的參數(shù)。并利用改進(jìn)的模型來分析地震數(shù)據(jù),聚類結(jié)果表明,該模型具有較好的應(yīng)用價(jià)值。程宏偉等[48]為提高預(yù)測接地網(wǎng)腐蝕速率的精度,利用改進(jìn)后的果蠅優(yōu)化算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的閾值和初始權(quán)值,并通過實(shí)驗(yàn)驗(yàn)證了其有效性與可靠性。陳明揚(yáng)等[49]利用改進(jìn)的FOA 優(yōu)化回聲狀態(tài)網(wǎng)絡(luò)參數(shù)并用于預(yù)測旅游需求。郭曉蕓等[50]利用定向變步長的果蠅優(yōu)化算法優(yōu)化概率神經(jīng)網(wǎng)絡(luò)(PNN)參數(shù),用于診斷變壓器故障。李明輝等[51]將改進(jìn)的果蠅優(yōu)化算法用于PID 參數(shù)優(yōu)化。張亭亭等[52]同樣對(duì)PID參數(shù)進(jìn)行優(yōu)化,并應(yīng)用于電地?zé)釡囟瓤刂葡到y(tǒng)。隨著“中國制造2025”計(jì)劃的出臺(tái),制造業(yè)的未來已經(jīng)從“中國制造”轉(zhuǎn)變?yōu)椤爸袊悄苤圃臁保@意味著智能技術(shù)的新時(shí)代已經(jīng)來臨,Wang等[53]運(yùn)用果蠅優(yōu)化算法對(duì)多元回歸進(jìn)行優(yōu)化,構(gòu)建模型,有效地預(yù)測中國智能技術(shù)產(chǎn)業(yè)的企業(yè)經(jīng)營績效,實(shí)驗(yàn)結(jié)果表明,果蠅優(yōu)化算法具有較好的多元回歸優(yōu)化能力,明顯提高了預(yù)測性能。為了增強(qiáng)Z-Score 財(cái)務(wù)預(yù)警模型預(yù)警能力,康彩紅等[54]用改進(jìn)的FOA 來優(yōu)化Z-Score模型的參數(shù),測試結(jié)果驗(yàn)證了此算法,有效地提高了Z-Score財(cái)務(wù)預(yù)警模型預(yù)測能力。FOA在參數(shù)優(yōu)化方面的應(yīng)用主要是對(duì)支持向量機(jī)參數(shù)、神經(jīng)網(wǎng)絡(luò)參數(shù)、PID控制器參數(shù)等其他參數(shù)進(jìn)行優(yōu)化,用于預(yù)測電力負(fù)荷、旅游需求、企業(yè)經(jīng)營績效等不同領(lǐng)域的各種指標(biāo),且都達(dá)到了一定的預(yù)測效果。
Fu等[55]結(jié)合隨機(jī)模擬方法,提出了一種多目標(biāo)離散果蠅優(yōu)化算法,并應(yīng)用于多目標(biāo)集成拆卸-再加工-再裝配調(diào)度問題,需要同時(shí)考慮多目標(biāo)和不確定性,達(dá)到最大完工時(shí)間和總延誤最小化的目標(biāo)。為了解決分布式置換流水線調(diào)度問題,王凌等[56]提出了混合離散果蠅優(yōu)化算法,并通過仿真實(shí)驗(yàn)驗(yàn)證了此算法的有效性。黃元元等[57]將混合果蠅優(yōu)化算法應(yīng)用于分布式異構(gòu)并行機(jī)調(diào)度問題,實(shí)驗(yàn)結(jié)果表明此算法具有較好的穩(wěn)定性。蘇楷等[58]提出了一種改進(jìn)的FOA,用于求解以運(yùn)輸成本最小為目標(biāo)的露天礦運(yùn)輸調(diào)度問題。吳斌等[59]利用矩陣編碼方法重構(gòu)FOA 并用于解決員工現(xiàn)場服務(wù)調(diào)度問題。秦書婷等[60]針對(duì)物流配送路線規(guī)劃問題,考慮配送路程以及配送點(diǎn)之間能否直接通行等因素,引入基因互換和鄰域探測搜索對(duì)FOA 進(jìn)行改進(jìn)。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的算法所得到的配送路線方案非常合理??傊?,F(xiàn)OA在解決流水線調(diào)度、運(yùn)輸調(diào)度、一般物流配送等問題的應(yīng)用都取得了不錯(cuò)的效果,但對(duì)動(dòng)態(tài)不確定需求下的庫存、配送等問題的應(yīng)用研究還相對(duì)較少。
劉亞如等[61]提出將FOA與支持向量機(jī)相結(jié)合,并應(yīng)用于火災(zāi)圖像識(shí)別,實(shí)驗(yàn)結(jié)果表明此方法對(duì)火災(zāi)圖像識(shí)別準(zhǔn)確率有所提高,對(duì)火災(zāi)檢測具有實(shí)際應(yīng)用價(jià)值。李美麗[62]以平均結(jié)構(gòu)相似度作為目標(biāo)函數(shù),利用改進(jìn)的FOA優(yōu)化脈沖耦合神經(jīng)網(wǎng)絡(luò)參數(shù),對(duì)源圖像進(jìn)行融合。對(duì)醫(yī)學(xué)圖像的融合以及可見光與毫米波圖像的融合進(jìn)行仿真實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果顯示圖像融合效果優(yōu)于常用方法。為了解決圖像分割效率不足問題,宋杰等[63]提出自適應(yīng)變步長的FOA,優(yōu)化大津法圖像分割閾值。實(shí)驗(yàn)結(jié)果表明此改進(jìn)雖在優(yōu)化閾值方面效果比其他算法好,但當(dāng)閾值數(shù)較大時(shí),其穩(wěn)定性有所下降。今后,可在提高算法穩(wěn)定性上繼續(xù)深入研究。Zhang 等[64]利用FOA 對(duì)最小二乘支持向量回歸的兩個(gè)參數(shù)進(jìn)行優(yōu)化,訓(xùn)練最小二乘支持向量回歸來學(xué)習(xí)退化圖像和原始圖像之間的映射關(guān)系。通過所獲取的映射,可以恢復(fù)退化的圖像。實(shí)驗(yàn)結(jié)果表明,該方法能獲得滿意的修復(fù)效果。與BP神經(jīng)網(wǎng)絡(luò)回歸、SVR方法和Lucy-Richardson算法相比,其恢復(fù)速度更快,并具有更好的性能。近年來,F(xiàn)OA在圖像上的應(yīng)用主要還是結(jié)合其他算法及方法對(duì)圖像進(jìn)行圖像識(shí)別、圖像融合、圖像分割等操作。除此之外,F(xiàn)OA 的應(yīng)用還涉及了很多其他領(lǐng)域。段艷明等[65]利用改進(jìn)的FOA 求解旅行商問題,其改進(jìn)的算法在算例規(guī)模較小時(shí)能快速收斂到已知最優(yōu)解,在算例規(guī)模較大時(shí)也能接近理論最優(yōu)解。為了增強(qiáng)在結(jié)構(gòu)中粘滯阻尼器的抗震減震效果,伍宏科等[66]利用基于云端模型的FOA優(yōu)化建筑粘滯阻尼器布置方案,并通過實(shí)驗(yàn)證明了該方案的可行性,提高了抗震減震的效果。更多FOA 相關(guān)應(yīng)用研究可見文獻(xiàn)[67-69]。
本文歸納總結(jié)了果蠅優(yōu)化算法的相關(guān)改進(jìn)與應(yīng)用,對(duì)搜索步長、飛行策略等關(guān)鍵改進(jìn)方法進(jìn)行了詳細(xì)說明,對(duì)參數(shù)優(yōu)化、調(diào)度、物流等相關(guān)應(yīng)用進(jìn)行了分類匯總,歸納梳理了近幾年的研究進(jìn)展。雖然FOA 具有結(jié)構(gòu)簡單、易于構(gòu)建的代碼框架、可操作性強(qiáng)等優(yōu)點(diǎn),但目前依舊處在探索階段,發(fā)展還不夠成熟。未來對(duì)FOA 的理論研究、算法改進(jìn)及實(shí)際應(yīng)用還有很大的發(fā)展空間。
(1)理論研究:目前,對(duì)FOA 的理論研究非常少。FOA的視覺搜索和嗅覺搜索是決定FOA性能的核心要素,將其對(duì)FOA 的影響作出理論性的分析是非常值得研究的一個(gè)方向,可以對(duì)算法的改進(jìn)作出理論性的指導(dǎo)。對(duì)算法的全局優(yōu)化與局部優(yōu)化能力的平衡也需要更加深入的理論分析。除此之外,還可以從理論上去分析影響收斂速度的因素以及參數(shù)的敏感性等,為FOA實(shí)際應(yīng)用提供有力的理論支撐。
(2)算法改進(jìn):可以根據(jù)FOA的算法流程做出相應(yīng)改進(jìn)。種群初始位置是影響算法收斂速度和精度的直接因素,目前針對(duì)種群初始位置改進(jìn)的方法并不多,是值得關(guān)注的方向。讓候選解能均勻地分布于解空間,用于解決非零最優(yōu)解的復(fù)雜函數(shù),增加算法的適用范圍也是今后值得關(guān)注的研究方向。提升FOA全局搜索能力的重要手段之一是增加種群多樣性,如何設(shè)計(jì)合理的種群數(shù)量以及種群間高效的信息交換策略,是可深入研究的方向。果蠅種群的進(jìn)化方向是有一定規(guī)律性的,可考慮研究進(jìn)化方向的規(guī)律,設(shè)計(jì)合理的坐標(biāo)變換公式,如計(jì)算前兩次進(jìn)化方向間的夾角,以一定權(quán)重指導(dǎo)群體中一部分果蠅做具有方向性的搜索,以加快尋優(yōu)速度。還可考慮借鑒其他生物群體趨利避害、競爭、分工等行為,引入新的搜索策略。設(shè)計(jì)混合算法是算法改進(jìn)的重要途徑,目前已有一些將FOA 與其他算法相結(jié)合的改進(jìn)研究,未來可繼續(xù)研究將FOA 有所不足的地方(易早熟、穩(wěn)定性不強(qiáng)等)與其他算法在這些不足之處卻有優(yōu)勢的算法相結(jié)合,優(yōu)勢互補(bǔ),提高算法的適用性、高效性。
(3)實(shí)際應(yīng)用:FOA已在多個(gè)領(lǐng)域得到應(yīng)用,但大部分研究還是將FOA 用于參數(shù)優(yōu)化和組合優(yōu)化方面,而在更具現(xiàn)實(shí)意義的離散優(yōu)化、多目標(biāo)優(yōu)化、約束優(yōu)化以及動(dòng)態(tài)不確定性等領(lǐng)域應(yīng)用較少。可以分析現(xiàn)有的優(yōu)先關(guān)系法、隨機(jī)權(quán)重、目標(biāo)簡化等方法的優(yōu)缺點(diǎn),將尋優(yōu)策略與有效的多目標(biāo)處理方法相融合,利用熵分析、主分量分析等手段對(duì)多目標(biāo)問題進(jìn)行降維處理。也可以考慮參考模糊集、隨機(jī)圖、約束滿足等理論和方法,提出較為高效地用于解決不確定性問題的果蠅優(yōu)化算法。還可以考慮與分支定界法、割平面法等精確算法相結(jié)合,利用FOA快速得出解的取值范圍,之后再用精確算法求出最優(yōu)解。未來的研究工作可在離散組合優(yōu)化、多個(gè)調(diào)度目標(biāo)的協(xié)同優(yōu)化、其他不確定問題的擴(kuò)展、自適應(yīng)算法的設(shè)計(jì)以及其他調(diào)度指標(biāo)的優(yōu)化等方面不斷拓展。