多元多峰值目標函數(shù)在MATLAB中的優(yōu)化
摘 要: 采用MATLAB的遺傳算法,利用強大的數(shù)學計算能力和遺傳工具箱,在全局搜索空間內(nèi)尋找極值點,能夠有效地對多元多峰值函數(shù)進行優(yōu)化,避免了利用傳統(tǒng)優(yōu)化方法在多元多峰值函數(shù)優(yōu)化過程中陷入局部極值點的優(yōu)化誤區(qū)。同時簡要介紹了遺傳算法的特點、流程和優(yōu)化工具箱,通過實際編程優(yōu)化,說明基于MATLAB的遺傳算法是一種具有良好的全局尋優(yōu)的優(yōu)化工具。
關(guān)鍵詞: 遺傳算法;全局尋優(yōu);多元多峰值函數(shù)優(yōu)化
多元多峰值函數(shù)[1-2]在定義域內(nèi)有多個局部極值點,許多傳統(tǒng)的優(yōu)化方法都是單點搜索,這種點對點的搜索方法,對于多元多峰值函數(shù)的搜索空間常常會陷入局部的某個單峰的極值點。相反,遺傳算法同時對群體中多個個體進行并行處理[3],即同時對搜索空間中的多個解進行評估,在搜索過程中能以很大的概率找到全局最優(yōu)。遺傳算法提供了一種求解非線性、多模型、多目標等復雜系統(tǒng)優(yōu)化問題的通用框架,它不依賴問題領域的具體性,已廣泛應用于眾多工程領域,用以解決多變量、多目標、多峰值等約束的優(yōu)化問題。
1 遺傳算法
1.1 遺傳算法的優(yōu)點
(1)遺傳算法采用不確定性規(guī)則,強調(diào)利用概率轉(zhuǎn)換規(guī)則[4]來引導搜索過程;
(2)遺傳算法隨機產(chǎn)生多個初始點,通過選擇、交叉和變異三種遺傳操作產(chǎn)生下一代種群;
(3)遺傳算法具有較高的搜索能力和極強的魯棒性;
(4)遺傳算法采用概率的變遷規(guī)則來指導其搜索方向[5],對一個被編碼的參數(shù)空間進行高效搜索;
(5)遺傳算法是一個多學科相結(jié)合與滲透的產(chǎn)物,其研究方向極其廣泛。
1.2 遺傳算法運算流程
完整的遺傳算法的運算流程可以用圖1來描述??梢钥闯?,使用上述三種遺傳算子(選擇、交叉和變異)的遺傳算法的主要運算過程如下:
(1)編碼:遺傳算法在進行搜索之前先將解空間的解數(shù)據(jù)表示成遺傳空間的基因型串結(jié)構(gòu)數(shù)據(jù),這些串結(jié)構(gòu)數(shù)據(jù)的不同組合就構(gòu)成了不同的點。
(2)初始群體的生成:隨機產(chǎn)生N個初始串結(jié)構(gòu)數(shù)據(jù),每個串結(jié)構(gòu)數(shù)據(jù)成為一個個體,N個個體構(gòu)成一個群體。設置進化代數(shù)計算器t(t>0)和最大進化代數(shù)T。
(3)適應度值評價檢測:根據(jù)具體問題,計算群體P(t)中各個個體的適應度。
(4)對群體中的個體施加遺傳操作:將選擇、交叉和變異三種遺傳算子作用于群體,實現(xiàn)群體內(nèi)個體結(jié)構(gòu)的重組處理。
(5)終止條件判斷:若t≤T,則t←t+1,轉(zhuǎn)到步驟(2);若t>T,則以進化過程中所得到的具有最大適應度的個體作為最優(yōu)解輸出,終止運算。
2 基于MATLAB遺傳工具箱的多元多峰值優(yōu)化
遺傳算法工具箱使用MATLAB矩陣函數(shù)為實現(xiàn)廣泛領域的遺傳算法建立了一套通用工具,這個遺傳算法工具是用M文件寫成的命令行形式的函數(shù),是完成遺傳算法大部分重要功能的程序集合[6-8]。
MATLAB遺傳工具箱主要參數(shù)含義:
(1)“@fitnessfcn”:計算適應度函數(shù)值的M文件的函數(shù)句柄;
(2)“nvars”:適應度函數(shù)中獨立變量的個數(shù);
(3)“x”:最終值的到達點;
(4)“fval”:適應度函數(shù)在x點的值;
(5)“reason”:算法停止的原因(可選項);
(6)“output”:包含關(guān)于算法在每一代性能的結(jié)構(gòu)體(可選項);
(7)“population”:最后種群(可選項);
(8)“option”:一個包含遺傳算法選項參數(shù)的結(jié)構(gòu)體(可選項)。
如果不設置選項函數(shù),則遺傳算法使用其本身自帶的缺省選項值。該參數(shù)結(jié)構(gòu)體的自帶默認值分別為:種群規(guī)模為20,最大代數(shù)為100,選擇概率為0.8,交叉概率為0.5,變異概率為0.2。也可通過gaoptimset函數(shù)改變默認值,以達到使用者的需求。