摘 要: 采用MATLAB的遺傳算法,利用強(qiáng)大的數(shù)學(xué)計(jì)算能力和遺傳工具箱,在全局搜索空間內(nèi)尋找極值點(diǎn),能夠有效地對(duì)多元多峰值函數(shù)進(jìn)行優(yōu)化,避免了利用傳統(tǒng)優(yōu)化方法在多元多峰值函數(shù)優(yōu)化過(guò)程中陷入局部極值點(diǎn)的優(yōu)化誤區(qū)。同時(shí)簡(jiǎn)要介紹了遺傳算法的特點(diǎn)、流程和優(yōu)化工具箱,通過(guò)實(shí)際編程優(yōu)化,說(shuō)明基于MATLAB的遺傳算法是一種具有良好的全局尋優(yōu)的優(yōu)化工具。
關(guān)鍵詞: 遺傳算法;全局尋優(yōu);多元多峰值函數(shù)優(yōu)化
多元多峰值函數(shù)[1-2]在定義域內(nèi)有多個(gè)局部極值點(diǎn),許多傳統(tǒng)的優(yōu)化方法都是單點(diǎn)搜索,這種點(diǎn)對(duì)點(diǎn)的搜索方法,對(duì)于多元多峰值函數(shù)的搜索空間常常會(huì)陷入局部的某個(gè)單峰的極值點(diǎn)。相反,遺傳算法同時(shí)對(duì)群體中多個(gè)個(gè)體進(jìn)行并行處理[3],即同時(shí)對(duì)搜索空間中的多個(gè)解進(jìn)行評(píng)估,在搜索過(guò)程中能以很大的概率找到全局最優(yōu)。遺傳算法提供了一種求解非線性、多模型、多目標(biāo)等復(fù)雜系統(tǒng)優(yōu)化問(wèn)題的通用框架,它不依賴問(wèn)題領(lǐng)域的具體性,已廣泛應(yīng)用于眾多工程領(lǐng)域,用以解決多變量、多目標(biāo)、多峰值等約束的優(yōu)化問(wèn)題。
1 遺傳算法
1.1 遺傳算法的優(yōu)點(diǎn)
(1)遺傳算法采用不確定性規(guī)則,強(qiáng)調(diào)利用概率轉(zhuǎn)換規(guī)則[4]來(lái)引導(dǎo)搜索過(guò)程;
(2)遺傳算法隨機(jī)產(chǎn)生多個(gè)初始點(diǎn),通過(guò)選擇、交叉和變異三種遺傳操作產(chǎn)生下一代種群;
(3)遺傳算法具有較高的搜索能力和極強(qiáng)的魯棒性;
(4)遺傳算法采用概率的變遷規(guī)則來(lái)指導(dǎo)其搜索方向[5],對(duì)一個(gè)被編碼的參數(shù)空間進(jìn)行高效搜索;
(5)遺傳算法是一個(gè)多學(xué)科相結(jié)合與滲透的產(chǎn)物,其研究方向極其廣泛。
1.2 遺傳算法運(yùn)算流程
完整的遺傳算法的運(yùn)算流程可以用圖1來(lái)描述??梢钥闯?,使用上述三種遺傳算子(選擇、交叉和變異)的遺傳算法的主要運(yùn)算過(guò)程如下:
(1)編碼:遺傳算法在進(jìn)行搜索之前先將解空間的解數(shù)據(jù)表示成遺傳空間的基因型串結(jié)構(gòu)數(shù)據(jù),這些串結(jié)構(gòu)數(shù)據(jù)的不同組合就構(gòu)成了不同的點(diǎn)。
(2)初始群體的生成:隨機(jī)產(chǎn)生N個(gè)初始串結(jié)構(gòu)數(shù)據(jù),每個(gè)串結(jié)構(gòu)數(shù)據(jù)成為一個(gè)個(gè)體,N個(gè)個(gè)體構(gòu)成一個(gè)群體。設(shè)置進(jìn)化代數(shù)計(jì)算器t(t>0)和最大進(jìn)化代數(shù)T。
(3)適應(yīng)度值評(píng)價(jià)檢測(cè):根據(jù)具體問(wèn)題,計(jì)算群體P(t)中各個(gè)個(gè)體的適應(yīng)度。
(4)對(duì)群體中的個(gè)體施加遺傳操作:將選擇、交叉和變異三種遺傳算子作用于群體,實(shí)現(xiàn)群體內(nèi)個(gè)體結(jié)構(gòu)的重組處理。
(5)終止條件判斷:若t≤T,則t←t+1,轉(zhuǎn)到步驟(2);若t>T,則以進(jìn)化過(guò)程中所得到的具有最大適應(yīng)度的個(gè)體作為最優(yōu)解輸出,終止運(yùn)算。
2 基于MATLAB遺傳工具箱的多元多峰值優(yōu)化
遺傳算法工具箱使用MATLAB矩陣函數(shù)為實(shí)現(xiàn)廣泛領(lǐng)域的遺傳算法建立了一套通用工具,這個(gè)遺傳算法工具是用M文件寫成的命令行形式的函數(shù),是完成遺傳算法大部分重要功能的程序集合[6-8]。
MATLAB遺傳工具箱主要參數(shù)含義:
(1)“@fitnessfcn”:計(jì)算適應(yīng)度函數(shù)值的M文件的函數(shù)句柄;
(2)“nvars”:適應(yīng)度函數(shù)中獨(dú)立變量的個(gè)數(shù);
(3)“x”:最終值的到達(dá)點(diǎn);
(4)“fval”:適應(yīng)度函數(shù)在x點(diǎn)的值;
(5)“reason”:算法停止的原因(可選項(xiàng));
(6)“output”:包含關(guān)于算法在每一代性能的結(jié)構(gòu)體(可選項(xiàng));
(7)“population”:最后種群(可選項(xiàng));
(8)“option”:一個(gè)包含遺傳算法選項(xiàng)參數(shù)的結(jié)構(gòu)體(可選項(xiàng))。
如果不設(shè)置選項(xiàng)函數(shù),則遺傳算法使用其本身自帶的缺省選項(xiàng)值。該參數(shù)結(jié)構(gòu)體的自帶默認(rèn)值分別為:種群規(guī)模為20,最大代數(shù)為100,選擇概率為0.8,交叉概率為0.5,變異概率為0.2。也可通過(guò)gaoptimset函數(shù)改變默認(rèn)值,以達(dá)到使用者的需求。
(2)經(jīng)過(guò)50次迭代后的目標(biāo)函數(shù)值如圖4所示。此時(shí),x1=-6.774 6,x2=-7.397 3,minf(x)=-178.519 1。
(3)經(jīng)過(guò)50次迭代后,種群目標(biāo)函數(shù)均值的變化和最優(yōu)解的變化如圖5所示。
本文采用基于MATLAB的遺傳算法,利用強(qiáng)大的數(shù)學(xué)計(jì)算能力和遺傳工具箱,在全局搜索空間內(nèi)尋找極值點(diǎn),能夠有效地對(duì)多元多峰值函數(shù)進(jìn)行優(yōu)化,避免了利用傳統(tǒng)優(yōu)化方法在多元多峰值函數(shù)優(yōu)化過(guò)程中陷入局部極值點(diǎn)的優(yōu)化誤區(qū)。使用者可以避免維護(hù)遺傳算法種群和染色體的數(shù)據(jù)結(jié)構(gòu)的繁重編程工作,節(jié)省了大量編程時(shí)間和精力,將精力集中在遺傳算法的改進(jìn)和具體問(wèn)題的應(yīng)用中。
參考文獻(xiàn)
[1] 李敏強(qiáng),寇紀(jì)淞,林丹,等.遺傳算法的基本理論與應(yīng)用[M].北京:科學(xué)出版社,2003.
[2] 孫小軍,趙天緒,焦建民.多峰極值優(yōu)化問(wèn)題的算法性能分析和比較[J].昆明理工大學(xué)學(xué)報(bào)(理工版),2009,34(5):104-107.
[3] 劉道華,原思聰,鄔長(zhǎng)安,等.面向?qū)ο蟮母倪M(jìn)遺傳算法優(yōu)化設(shè)計(jì)[J].華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,36(7):89-92.
[4] 張曉偉,劉三陽(yáng),遲曉妮.高效求解多峰值全局優(yōu)化的區(qū)間-遺傳算法[J].吉林大學(xué)學(xué)報(bào)(工學(xué)版),2008,38(4):876-879.
[5] 黃江波,付志紅.基于自適應(yīng)遺傳算法函數(shù)優(yōu)化與仿真[J].計(jì)算機(jī)仿真,2011,28(5):237-240.
[6] 雷英杰,張善文,李續(xù)武,等.MATLAB遺傳算法工具箱及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2005.
[7] 劉文強(qiáng),張曉偉.多峰值全局優(yōu)化的混合算法[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(3):43-45.
[8] 王社科.機(jī)械優(yōu)化設(shè)計(jì)[M].北京:國(guó)防工業(yè)出版社,2007.