劉國(guó)春,費(fèi) 強(qiáng),趙武云,戴 飛
(1.酒泉奧凱種子機(jī)械股份有限公司, 甘肅 酒泉 735000; 2.甘肅農(nóng)業(yè)大學(xué), 甘肅 蘭州 730070)
基于Matlab遺傳算法優(yōu)化工具箱的應(yīng)用*
劉國(guó)春1,費(fèi) 強(qiáng)2,趙武云2,戴 飛2
(1.酒泉奧凱種子機(jī)械股份有限公司, 甘肅 酒泉 735000; 2.甘肅農(nóng)業(yè)大學(xué), 甘肅 蘭州 730070)
主要介紹了Matlab遺傳算法優(yōu)化工具箱的特點(diǎn)和功用。根據(jù)其在函數(shù)求解優(yōu)化的作用,結(jié)合非線(xiàn)性函數(shù)問(wèn)題的優(yōu)化實(shí)例進(jìn)行函數(shù)求解,利用Matlab神經(jīng)網(wǎng)絡(luò)工具箱對(duì)求解結(jié)果進(jìn)行驗(yàn)證,說(shuō)明了遺傳算法工具箱相比其它編程工具大大簡(jiǎn)化了編程工作, 優(yōu)化結(jié)果更加準(zhǔn)確。
遺傳算法;Matlab;優(yōu)化;神經(jīng)網(wǎng)絡(luò)
遺傳算法在應(yīng)用過(guò)程中必須要編制大量的程序進(jìn)行優(yōu)化計(jì)算, 因而對(duì)不同的專(zhuān)業(yè)人員應(yīng)用該方法帶來(lái)不便。Matlab語(yǔ)言是一種高效率的用于科學(xué)工程計(jì)算的高級(jí)語(yǔ)言, 它的語(yǔ)法規(guī)則簡(jiǎn)單,更貼近人的思維方式,通俗易懂,簡(jiǎn)便易學(xué)[1]。尤其是Matlab軟件有著豐富的各種專(zhuān)業(yè)的工具箱供各專(zhuān)業(yè)應(yīng)用。其中,較有名的工具有英國(guó)Sheffield 大學(xué)Peter Fleming教授等開(kāi)發(fā)的遺傳算法工具箱;另一個(gè)是美國(guó)北Carolina州立大學(xué)ChistopherHouck 等開(kāi)發(fā)的工具箱GAOT[2]。此外,在Matlab中提供了一個(gè)遺傳算法與直接搜索工具箱(gads),可用命令行調(diào)用或用圖形用戶(hù)界面(GUI)進(jìn)行使用,也可添加自己編制的函數(shù)進(jìn)一步增加功能[3]。 Matlab添加了對(duì)約束條件的處理,只需編制相應(yīng)的約束函數(shù)的M文件即可,使其應(yīng)用功能進(jìn)一步增強(qiáng)。因此基于Matlab的遺傳算法工具箱的推出,可以為不同的專(zhuān)業(yè)領(lǐng)域解決問(wèn)題提供更加方便和簡(jiǎn)潔的操作。
1.1 遺傳算法原理
遺傳算法是由美國(guó)Michigan大學(xué)的John Holland教授在20世紀(jì)60年代提出的,它是模擬生物在自然環(huán)境中的遺傳和進(jìn)化過(guò)程而形成的一種自適應(yīng)全局優(yōu)化概率搜索算法[4-5]。理論基礎(chǔ)來(lái)源于生物的自然選擇理論和基因遺傳學(xué)原理。它是將問(wèn)題域的可行解看作是群體的/染色體0, 將其置于問(wèn)題的/環(huán)境0中, 根據(jù)適者生存的原則, 從中選擇出適應(yīng)環(huán)境的/染色體0進(jìn)行復(fù)制, 即再生, 通過(guò)交叉、變異兩種基因操作產(chǎn)生出新一代更適合環(huán)境的/染色體0群,這樣一代代不斷改進(jìn), 最后收斂到一個(gè)最適合環(huán)境的個(gè)體上,求得問(wèn)題的最佳解。遺傳算法提供了一種求解復(fù)雜系統(tǒng)優(yōu)化問(wèn)題的模式,它不依賴(lài)于問(wèn)題的具體領(lǐng)域,對(duì)問(wèn)題的求解種類(lèi)有很強(qiáng)的魯棒性, 現(xiàn)已幾乎滲透到從工程到社會(huì)科學(xué)的諸多領(lǐng)域, 廣泛用于函數(shù)優(yōu)化、組合優(yōu)化、生產(chǎn)調(diào)度、機(jī)器學(xué)習(xí)、自動(dòng)控制、圖像處理和人工生命等領(lǐng)域[6]。
1.2 遺傳算法的特點(diǎn)
(1) 不是從一個(gè)點(diǎn)開(kāi)始搜索最優(yōu)解,而是從一個(gè)種群開(kāi)始進(jìn)行并行搜索,搜索軌道有多條,具有良好的并行性,因而可有效地防止搜索過(guò)程收斂于局部最優(yōu)解, 更利于搜索到全局最優(yōu)解。
(2) 遺傳算法只需利用目標(biāo)函數(shù)的取值信息,無(wú)需梯度等高價(jià)信息和其它信息,對(duì)問(wèn)題的依賴(lài)性小,因而適用于大規(guī)模、非線(xiàn)性函數(shù)優(yōu)化及無(wú)解析表達(dá)式的目標(biāo)函數(shù)的優(yōu)化, 有較廣的應(yīng)用性。
(3) 遺傳算法的擇優(yōu)機(jī)制是一種軟決策, 加上其良好的并行性, 使它具有良好的全局優(yōu)化性能和穩(wěn)健性。
(4) 遺傳算法采用概率搜索技術(shù), 是一種不確定性的搜索方法,不同于傳統(tǒng)的確定性的搜索方法, 更有利于得到最優(yōu)解[7]。
1.3 遺傳算法在函數(shù)優(yōu)化中的應(yīng)用
函數(shù)優(yōu)化是遺傳算法的經(jīng)典應(yīng)用領(lǐng)域,也是遺傳算法進(jìn)行性能評(píng)價(jià)的常用算例,許多人構(gòu)造出了各種各樣復(fù)雜形式的測(cè)試函數(shù):連續(xù)函數(shù)和離散函數(shù)、凸函數(shù)和凹函數(shù)、低維函數(shù)和高維函數(shù)、單峰函數(shù)和多峰函數(shù)等。對(duì)于一些非線(xiàn)性、多模型、多目標(biāo)的函數(shù)優(yōu)化問(wèn)題,用其它優(yōu)化方法較難求解,而遺傳算法可方便的得到較好的結(jié)果。
Matlab遺傳算法工具箱(GAOT)實(shí)現(xiàn)遺傳算法的步驟和其他編程語(yǔ)言實(shí)現(xiàn)遺傳算法的流程一樣,也需解決編碼方式、初始群體的建立、選擇算子、交叉算子、變異算子、評(píng)價(jià)函數(shù)及終止標(biāo)準(zhǔn)等問(wèn)題,遺傳算法工具箱GAOT包括了許多實(shí)用的函數(shù), 這些函數(shù)按照功能可分為以下幾類(lèi):主界面函數(shù)、選擇函數(shù)、演化函數(shù)、其它的一些終止函數(shù)、二進(jìn)制表示函數(shù)、演示程序等等.Matlab的遺傳算法工具箱核心函數(shù)GAOT V5其主程序ga.m提供了遺傳算法工具箱與外部的接口。在Matlab環(huán)境下,執(zhí)行g(shù)a.m并設(shè)定相應(yīng)的參數(shù),就可完成優(yōu)化GAOT通過(guò)編寫(xiě)GA.m基本操作的M文件和主程序的M文件來(lái)實(shí)現(xiàn)和改進(jìn)GA.m。他首先對(duì)優(yōu)化問(wèn)題進(jìn)行分析,建立優(yōu)化數(shù)學(xué)模型,定義適應(yīng)函數(shù)(對(duì)于約束優(yōu)化問(wèn)題,還需確定約束條件,給出約束函數(shù))。然后利用文件編輯器將這些函數(shù)寫(xiě)入到能返回函數(shù)值的M文件中,這樣就把函數(shù)表達(dá)式寫(xiě)入Matlab系統(tǒng)中。最后在命令窗口執(zhí)行M文件,就可得到優(yōu)化解。
問(wèn)題一:在x∈[-1,1]條件下對(duì)下列函數(shù)分別求最小值Fun1min ,Fun2min ,Fun3min,。
(1) 建立fun1.m ,fun2.m,fun3.m無(wú)約束函數(shù)文件,保存在我的文檔/matlab文件夾下。
Fun1:function f=fun1(x)
f=-99.58+0.022*x(1)+0.030*x(2)+0.012*x(3)+0.0008*x(4)-0.021*x(1)^2-0.018*x(2)^2+0.080*x(3)^2-0.016*x(4)^2+0.004*x(1)*x(2)+0.0025*x(1)*x(3)+0.005*x(1)*x(4)-0.015*x(2)*x(3)-0.015*x(2)*x(4)-0.0025*x(3)*x(4);
Fun2:unction f=fun2(x)
f=4.30+0.18*x(1)+0.25*x(2)+0.032*x(3)+0.12*x(4)+0.16*x(1)^2+0.15*x(2)^2+1.1*x(3)^2+0.18*x(4)^2+0.087*x(1)*x(2)-0.038*x(1)*x(3)-0.06*x(1)*x(4)-0.23*x(2)*x(3)-0.077*x(2)*x(4)+0.07*x(3)*x(4);
Fun3:function f=fun3(x)
f=0.46+0.019*x(1)+0.029*x(2)+0.006*x(3)+0.011*x(4)+0.016*x(1)^2+0.018*x(2)^2+0.11*x(3)^2+0.016*x(4)^2+0.01*x(1)*x(2)+0.003*x(1)*x(3)-0.005*x(1)*x(4)-0.01*x(2)*x(3)-0.008*x(2)*x(4)+0.005*x(3)*x(4);
(2) 打開(kāi)Matlab程序-點(diǎn)擊框圖左下角的start-點(diǎn)擊toolboxes-點(diǎn)擊Genetic Algorithm and direct search-點(diǎn)擊Genetic Algorithm tool(gatool)。分別對(duì)上述三個(gè)無(wú)約束函數(shù)進(jìn)行最優(yōu)化求解,在工具箱中設(shè)置solver為ga-Genetic Algorithm ,fitness function指要求解的目標(biāo)函數(shù)如@fun1設(shè)置變量數(shù)number of variables為4,區(qū)間為lower:[-1 -1 -1 -1] upper:[1 1 1 1],點(diǎn)擊start開(kāi)始運(yùn)行,三個(gè)函數(shù)求解運(yùn)行結(jié)果如圖1~3所示。
(3) 運(yùn)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱對(duì)求解結(jié)果進(jìn)行驗(yàn)證,打開(kāi)Matlab程序-點(diǎn)擊框圖左下角的start-點(diǎn)擊toolboxes-點(diǎn)擊more-點(diǎn)擊optimizationtool,分別對(duì)上述三個(gè)無(wú)約束函數(shù)進(jìn)行最優(yōu)化求解,在工具箱中設(shè)置solver為fmincon-constrained nonlinear minimization,Algorithm為active set,Objiective function指要求解的目標(biāo)函數(shù)如@fun1,設(shè)置起點(diǎn)start point為[0 0 0 0],區(qū)間為lower:[-1 -1 -1 -1],upper:[1 1 1 1],點(diǎn)擊start開(kāi)始運(yùn)行,三個(gè)函數(shù)求解運(yùn)行結(jié)果如圖4~6所示。
圖1 Fun1 圖2 Fun2
圖3 Fun3 圖4 Fun1的驗(yàn)證
圖5 Fun2的驗(yàn)證 圖6 Fun3的驗(yàn)證
(4) 兩種算法結(jié)果分析
兩種算法結(jié)果對(duì)照如表1所列。
表1 兩種算法結(jié)果對(duì)照
問(wèn)題二:對(duì)非線(xiàn)性不等式約束函數(shù)最優(yōu)化求解。
已知:x∈[-1,1],Cx≤0
0.8fun1min≤fun1≤1.2fun1min
0.8fun2min≤fun2≤1.2fun2min
fun1-1.2fun1min≤0
-fun1+0.8fun1min≤0
fun2-1.2fun2min≤0
-fun2+0.8fun2min≤0
所以編寫(xiě)新的約束函數(shù)M文件myfun3_c.m:
function c=myfun3_c(x)
c=[-99.58+0.022*x(1)+0.030*x(2)+0.012*x(3)+0.0008*x(4)-0.021*x(1)^2-0.018*x(2)^2+0.080*x(3)^2-0.016*x(4)^2+0.004*x(1)*x(2)+0.0025*x(1)*x(3)+0.005*x(1)*x(4)-0.015*x(2)*x(3)-0.015*x(2)*x(4)-0.0025*x(3)*x(4)-119.65353;99.58-0.022*x(1)-0.030*x(2)-0.012*x(3)-0.0008*x(4)+0.021*x(1)^2+0.018*x(2)^2-0.080*x(3)^2+0.016*x(4)^2-0.004*x(1)*x(2)-0.0025*x(1)*x(3)-0.005*x(1)*x(4)+0.015*x(2)*x(3)+0.015*x(2)*x(4)+0.0025*x(3)*x(4)+79.75686;4.30+0.18*x(1)+0.25*x(2)+0.032*x(3)+0.12*x(4)+0.16*x(1)^2+0.15*x(2)^2+1.1*x(3)^2+0.18*x(4)^2+0.087*x(1)*x(2)-0.038*x(1)*x(3)-0.06*x(1)*x(4)-0.23*x(2)*x(3)-0.077*x(2)*x(4)+0.07*x(3)*x(4)-4.9;
-4.30-0.18*x(1)-0.25*x(2)-0.032*x(3)-0.12*x(4)-0.16*x(1)^2-0.15*x(2)^2-1.1*x(3)^2-0.18*x(4)^2-0.087*x(1)*x(2)+0.038*x(1)*x(3)+0.06*x(1)*x(4)+0.23*x(2)*x(3)+0.077*x(2)*x(4)-0.07*x(3)*x(4)+3];
求函數(shù)的最小值及對(duì)應(yīng)的x1、x2、x3、x4和fun1,fun2的值。運(yùn)用兩種算法求解結(jié)果如圖7、8和表2所示。
圖7 遺傳算法求解結(jié)果 圖8 神經(jīng)網(wǎng)絡(luò)求解結(jié)果
算法函數(shù) 遺傳算法工具箱求的結(jié)果神經(jīng)網(wǎng)絡(luò)工具箱求的結(jié)果myfun30.5872260.5872283Fun1-99.4800-99.48001Fun25.4791045.4792693
從問(wèn)題一和問(wèn)題二的結(jié)果對(duì)照表中,可得出兩者算法的結(jié)果誤差率小于0.1%,二者結(jié)果近似相等,說(shuō)明遺傳算法算出的結(jié)果真實(shí)可行。從兩者算法的過(guò)程及圖形上可得出遺傳算法過(guò)程簡(jiǎn)單,效率更高,不用設(shè)置起點(diǎn),算法更加全面,結(jié)果更加準(zhǔn)確。
實(shí)例表明,基于 Matlab 的遺傳算法優(yōu)化工具箱提供了一個(gè)標(biāo)準(zhǔn)的、可擴(kuò)展的、簡(jiǎn)單的算法,對(duì)于難以定義或不便于進(jìn)行數(shù)學(xué)建模優(yōu)化的問(wèn)題, 該工具箱具有很好的適用性( 它不需要對(duì)目標(biāo)函數(shù)的相關(guān)信息有所了解),同時(shí)有較快的收斂速度和較高的計(jì)算精度,使用者可避免繁重的編程工作,提高計(jì)算效率。
[1] 陳永春. Matlab M語(yǔ)言高級(jí)編程[M].北京:清華大學(xué)出版社,2004.
[2] 雷英杰,張善文.Matlab遺傳算法工具箱及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社, 2005.
[3] 薛定宇,陳陽(yáng)泉.高等應(yīng)用數(shù)學(xué)問(wèn)題的Matlab解法[M].北京:清華大學(xué)出版社,2004.
[4] 周琛琛.基于Matlab遺傳算法工具箱的函數(shù)優(yōu)化問(wèn)題求解[J].現(xiàn)代計(jì)算機(jī),2006(12): 84-86.
[5] 周正武,丁同梅,田毅紅,等.Matlab 遺傳算法優(yōu)化工具箱(GAOT)的研究與應(yīng)用[J].機(jī)械研究與應(yīng)用,2006,6(19):69- 71.
[6] 張德豐.Matlab神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2009.
[7] 陸澤浩.基于遺傳算法的人工智能優(yōu)化研究[J].廣西輕工業(yè),2012(4):77-80.
[8] 許 波,余建平,彭志平,朱興統(tǒng),等.改進(jìn)非支配排序遺傳算法求解多目標(biāo)Agent聯(lián)盟[J].系統(tǒng)仿真學(xué)報(bào),2012(9):1-5.
[9] 呂亭亭,馬小平,陳 力,等.基于遺傳算法優(yōu)化的跳汰機(jī)排料系統(tǒng)YID控制仿真[J].工礦自動(dòng)化,2013(1):67-70.
[10] 朱永強(qiáng),魯聰達(dá).齒輪的遺傳算法優(yōu)化設(shè)計(jì)[J].機(jī)械研究與應(yīng)用,2003,2(16):46-50.
Application of Genetic Algorithm Optimization Toolbox Based on Matlab
LIU Guo-chun1, FEI Qiang1, ZHAO Wu-yun1,DAI Fei2
(1.GansuJiuquanOKSeedMachineryCo.,Ltd,JiuquanGansu735000,China;2.GansuAgriculturalUniversity,LanzhouGansu730070,China)
The characteristics and functions of MATLAB genetic algorithm optimization toolbox is mainly introduced . According to its function for solving optimization effect, combined with the optimization of nonlinear functions function model, using the MATLAB neural network toolbox to solve were tested, the results shows that genetic algorithm toolbox compared to other programming tools greatly simplify the programming, the optimization results are more accurate.
genetic algorithm; Matlab; optimization; neural network
2014-02-24
“十二五”國(guó)家科技支撐計(jì)劃項(xiàng)目“西北綠洲農(nóng)牧循環(huán)技術(shù)集成與示范”(編號(hào):2012BAD14B10)。
劉國(guó)春(1972- ),男,甘肅金塔人,工程師,碩士,主要從事種子加工技術(shù)方面研究工作。
趙武云(1966- ),男,甘肅蘭州人,教授,碩導(dǎo),主要從事農(nóng)業(yè)工程技術(shù)與裝備研究方面的工作。
TP301.6
A
1007-4414(2014)02-0071-03