曹巖楓,徐 誠
(南京理工大學機械工程學院,南京 210094)
果蠅優化算法[1]是中國臺灣學者潘文超提出的一種基于果蠅覓食行為的全局優化算法。果蠅優化算法和其他優化算法相比,具有算法簡單、程序實現容易、調節參數較少、計算量小、能夠實現全局尋優且收斂快等特點。近年來,一些學者針對防止算法早熟收斂進行了改進[2-4],果蠅優化算法在廣義回歸神經網絡參數優化與支持向量機參數優化等領域應用較多[5-7],但目前果蠅優化算法在多目標工程問題領域的應用還較少。
本文在搜索空間、味道濃度判定值定義以及尋優策略等方面,對原始的果蠅優化算法進行改進,提出了改進的多目標果蠅算法,使得改進后的算法性能大大提高。并將改進的多目標果蠅優化算法成功應用于全彈道優化設計中,效果較好。
果蠅優化算法是一種源于對果蠅覓食行為模擬的全局優化算法。果蠅擁有優于其他物種的嗅覺及視覺,能夠通過嗅覺器官搜集空氣中的各種氣味,飛近食物后再用靈敏的視覺確定食物的位置,最后飛向食物。根據果蠅搜尋食物的特性,果蠅優化算法可歸納為以下幾個必要的步驟:
1)初始化種群規模N,最大迭代次數gmax,隨機初始化果蠅種群初始位置(Xaxis,Yaxis);
2)隨機設定果蠅個體的搜索方向Rrandom和搜索距離h:

其中,Rrandom為0到1之間的隨機數。
3)由于無法得知食物源的位置,因此,先估算果蠅個體與原點的距離D,再求倒數計算得到味道濃度判定值S:

4)將味道濃度判定值S代入味道濃度判定函數,計算出果蠅個體當前位置的味道濃度:

5)找出果蠅種群中味道濃度最佳的果蠅:

6)保留果蠅群體的最佳味道濃度及其對應的坐標,此時果蠅群體利用視覺定位后飛向該位置:

7)進入迭代尋優,重復執行步驟2)~5),并判斷最佳味道濃度是否優于前一迭代最佳味道濃度,若是則執行步驟6)。
果蠅優化算法利用果蠅尋找食物的群體協作和信息共享機制搜索最優解,全局尋優能力較強;算法采用實數編碼,程序簡單,計算量較小;果蠅優化算法需要調節的參數只有3個,與其他優化算法相比明顯減少了由于參數選取不當對算法性能產生影響的機會。盡管果蠅優化算法自提出以來就得到了國內外學者的廣泛關注,并在一些工程應用中表現良好,但仍存在一些缺陷需要改進。
原始的果蠅優化算法中味道濃度判定值S定義為果蠅個體與原點的距離D的倒數,D為坐標X和Y的算術平方根,如此定義的S存在2個缺陷:1)由于果蠅飛行的坐標系是對稱的,對稱位置的坐標計算得到的味道濃度判定值S是相等的,這會導致浪費計算時間;2)由于S>0,因此,果蠅優化算法不能求解定義域包含負數的優化問題。原始的果蠅優化算法會將每一代果蠅群體中最佳味道濃度個體對應的坐標作為下一代群體的起始位置,并且只有一個群體,這在解決復雜問題時會導致陷入局部最優。此外,實際工程問題往往要考慮多個優化目標,原始的果蠅優化算法不能很好地適應多目標優化問題。
針對以上的缺陷,本文對原始的果蠅優化算法做了如下改進:
1)原始果蠅優化算法中果蠅的飛行空間是對稱的,整個空間可以分為8個部分。為了減少重復的計算結果,節省計算時間,僅保留圖1中陰影部分所示的一個部分作為果蠅的飛行空間。果蠅個體的位置由式(7)確定:


圖1 改進后的果蠅飛行空間
2)原始的果蠅優化算法中,味道濃度判定值S不能取負值并且不能約束取值范圍,不能夠適應實際工程問題求解的需求。改進后的味道濃度判定值S由式(8)確定:

其中,[L,U]為 Si的取值范圍。
3)原始的果蠅優化算法在找出果蠅種群中味道濃度最佳的果蠅位置后,果蠅群體利用視覺定位后飛向該位置,算法只有一個果蠅種群,這使得在求解復雜問題時搜索全局最優解的表現不夠理想。本文引入若干個子種群代替單一的果蠅種群,每個子種群都在飛行空間中獨立地搜索味道濃度最佳的位置,從而有效提高算法全局搜索的能力。在求解多目標優化問題時,引入多個子種群可以有效提高最優解集中解的多樣性。
4)求解多目標優化問題的過程就是尋找Pareto最優解的過程。本文將快速非支配排序以及擁擠距離排序的方法引入果蠅優化算法。快速非支配排序能夠幫助算法提高收斂速度,擁擠距離排序的方法能夠避免早熟以及提高最優解集中解的多樣性。
基于以上改進,能夠解決多目標優化問題的改進果蠅優化算法的步驟如下:
1)初始化子種群數Ns,各子種群的個體數Np,最大迭代次數gmax,在設計空間中均勻隨機初始化果蠅各子種群初始位置(Xi_axis,Yi_axis),初始非支配前沿解集F0=?;
2)隨機設定果蠅個體的搜索方向Rrandom和搜索距離h,計算出第i個子種群中第j個果蠅個體的位置(Xij,Yij):

3)計算果蠅個體的味道濃度判定值Sij:

其中,(L,U)為 Sij的取值范圍。
4)將果蠅個體的味道濃度判定值Sij代入味道濃度判定函數,計算出果蠅個體當前位置的味道濃度Smellij:

其中,M為目標函數的數量。
5)對每個子種群中的個體進行非支配排序,將第g代所有子種群的非支配解存放到Qg中,將Qg與上一代非支配前沿解集Fg-1合并產生Tg;

6)對集合Tg中的個體進行非支配排序,得到的非支配解存放到新的非支配前沿解集Fg中。然后對Fg中的個體進行擁擠距離排序,取排序得到的前Ns個個體的位置作為各子種群新的起始位置;
7)進入迭代尋優,如果 g≥gmax,輸出 Fgmax作為Pareto最優解集;否則,重復執行步驟2)~6)。
全彈道優化設計模型是將內彈道、外彈道及終點效應等多個分系統結合成一個有機整體,對其進行全局的優化設計,尋求滿足最優目標性能時的各設計參數。本文應用改進的多目標果蠅算法對其進行尋優。
全彈道仿真模型涉及的各分系統的分析模型較為復雜,公式繁多,可參考相關文獻,本文僅對各分系統模型作簡要描述。
3.1.1 內彈道仿真模型
內彈道仿真模型[8]采用混合裝藥經典內彈道模型,采用4階龍格-庫塔法求解內彈道微分方程,計算在給定薄火藥質量mω1、厚火藥質量mω2及藥室容積V0的條件下,彈丸在內彈道時期的最大膛壓pmax及其出炮口時的初速v0。
3.1.2 外彈道仿真模型
采用包括彈丸自轉在內的4自由度外彈道計算模型[8],計算在給定彈丸初速 v0、射角 θ0、彈丸尾錐長度H1以及頭部高度H3的條件下,彈丸飛行至終點時的速度vc、落角θc及射程L。
3.1.3 彈丸終點效應仿真模型
采用殺傷威力計算模型[9],計算在給定彈丸有效殼體結構參數(如圖2)、給定落角θc及落速vc時彈丸的殺傷面積A。同時,由彈丸結構尺寸與炸藥質量mzy計算出的彈丸質量也作為內、外彈道計算時的輸入。計算殺傷面積時,假設彈丸爆炸后所產生的破片均為自然破片,選用A-S殺傷準則,并采用球形靶對彈丸殺傷面積進行積分。

圖2 彈丸有效殼體結構尺寸示意圖
對于火炮來講,殺傷面積與射程是重要的戰術技術指標,本文以彈丸的殺傷面積A與火炮射程L作為全彈道優化的目標函數。
以殺傷面積與射程作為全彈道模型靈敏度分析時的響應,采用拉丁立方法,對各設計參數進行靈敏度分析,綜合考慮各參數對殺傷面積和射程的影響,選取薄火藥質量 mω1、厚火藥質量 mω2、藥室容積 V0、彈丸結構參數 R1、R2、r2、H2、H3等 8 個參數作為全彈道優化模型的設計變量。
多目標果蠅算法參數選擇:子種群數Ns=10,各子種群的個體數Np=50,最大迭代次數gmax=500,為了平衡算法全局搜索和局部搜索的能力,每一代果蠅個體中有80%的搜索距離h=100,其余個體的搜索距離h=1。運用Matlab編程,對該模型進行優化求解,得到Pareto前沿如圖3所示,可以看出,改進的多目標果蠅算法全局搜索能力強,求得的Pareto前沿解分布均勻,解的多樣性好。根據工程經驗選取其中一個最優解如表1所示。與初始設計[8]對比,彈丸的殺傷面積A從1 352.20 m2提高到2 021.62 m2,提高了49.51%,與此同時,火炮射程L從15.90 km提高到22.77 km,提高了43.21%,性能得到了明顯提升。優化結果表明,改進多目標果蠅算法能夠滿足實際工程問題求解的需求。

圖3 Pareto最優解集
本文提出了一種改進的多目標果蠅算法,通過對味道濃度判定值的改進、引入多個子種群以及引入對多目標解集進行快速非支配排序和擁擠距離排序的方法,提高了果蠅算法解決實際工程問題的能力。同時,將改進的多目標果蠅算法應用到全彈道優化設計當中,進一步證明了該算法的有效性。

表1 優化前后各參數對比