摘要:本文對遺傳算法的基本特點、步驟和流程和基于MATLAB的遺傳算法優化工具箱進行了介紹,結合多目標函數問題的優化實例,說明了遺傳算法是一種具有良好的全局尋優性能的優化方法。
關鍵詞:遺傳算法;MATLAB;多目標函數優化
中圖分類號:TP311文獻標志碼:B文章編號:1671-7953(2009)01-0049-03
Multi-objective Optimization Based on MATLAB
Genetic Algorithm Optimization Toolbox
ZHANG Peijun1,Li Xiaoxia1,JI Zhiqiang2
(1.Hebei University of Engineering,Handan 056038,China;
2.Chuang’an Digital Technology Co. Ltd. Handan 056002,China)
Abstract:The paper introduces genetic algorithm (GA) and genetic algorithm optimization toolbox and analyses the optimization toolbox function. The function optimization problem of multi-objective has been given to demonstrate that genetic algorithm is a better global optimization method.
Key words:genetic algorithm;MATLAB;Multi-objective optimization
1遺傳算法簡介
遺傳算法由JohnHolland教授于1975年率先提出,是基于達爾文的自然選擇原理,用來模擬生物遺傳過程中的物競天擇、優勝劣汰,依據自然界不斷進化發展的過程來實現優化,弱者子代較少將被淘汰,從而使群體在若干代進化后“素質”得以提高,這些子代中“素質”最好的,即問題的最優解得以生存,是一種隨機搜索優化算法。遺傳算法以其搜索空間大這一優點在眾多工程應用中為解決多變量、多目標、多峰值等約束的優化問題發揮了作用。
1.1遺傳算法具有以下特點:
1)遺傳算法不是直接處理優化問題變量本身的實際值,而是以優化變量的編碼為運算對象。
2)遺傳算法是從優化問題解的編碼組開始搜索的,而不是從單個解開始搜索的。
3)遺傳算法不要求目標函數連續,更不要求目標函數可微。
4)遺傳算法使用的選擇、交叉、變異這三個算子都是隨機操作,而不是確定規則。
1.2遺傳算法步驟
采用有限體積法離散控制方程和湍流模式。對于壓力方程采用標準的離散格式進行離散,對于動量方程、湍流方程、雷諾應力方程,均采用二階迎風格式進行離散,壓力速度耦合迭代采用Simplec算法。
標準遺傳算法的主要步驟可描述如下。
1)隨機產生一組初始個體構成初始種群,并評價每一個個體的適配值。
2)判斷算法收斂準則是否滿足。若滿足則輸出搜索結果;否則執行以下步驟。
3)根據適配值大小以一定方式執行復制操作。
4)按交叉概率pc執行交叉操作。
5)按變異概率pm執行變異操作。
6)返回步驟(2)。
1.3流程
2基于MATLAB遺傳工具箱的多目標優化
2.1MATLAB遺傳工具箱主要參數含義
x最終值到達的點@fitnessfcn適應度函數句柄(即適應度函數的文件名,通常是.m文件)
fval適應度函數的最終值(即運行中最好的結果)
nvars適應度函數的獨立變量個數
reason算法停止的原因(可選項)
output包含關于算法在每一代性能的結構體(可選項)
population最后種群(即最后一代染色體)(可選項)
options一個包含遺傳算法選項參數的結構(可選項),如果不傳遞選項參數,則GA使用其本身的缺省選項值。該參數結構體包含種群規模,默認值為[20],最大代數,默認值為[20],選擇概率默認值為[0.5],交叉概率,默認值為[0.8],變異概率,默認值為[0.2]。也可通過gaoptimset函數改變其默認值,達到使用者需要的值[1]。
2.2多目標函數優化簡介
在實際的優化設計過程當中,對某一問題的優化僅僅有一個指標是不能完全表達的,必須考慮多種目標。如同大家去商場,對商品總是要求物美價廉,這當中就包含了多目標優化的思想在其中。所以,解決含多目標和多約束的最優值的問題稱之為多目標優化(Multi-objectiveOptimization)問題。
2.2.1多目標函數優化的數學模型[2]
min[f1(X),f2(X),…,fp(X)]T(p≥2,X∈Rn)
約束條件為
gi(X)≤0(i=1,2,…m)hj=0(j=1,2,…1)
2.2.2多目標函數優化問題的遺傳算法[3]
若對于2.2.1中數學模型,x1∈X,并且不存在比x1更優越的解x,則稱x1是多目標最優化模型的Pareto最優解。求解Pareto最優解常用的方法有:
1)權重系數變換法
對一個多目標優化問題,給其每個子目標函數pi(x)(i=1,2,…,k),賦予權重λi(i=1,2,…,k),其中λi為pi(x)相應的在多目標優化問題中的重要程度,則各個子目標函數pi(x)的線性加權和表示為:
max(min)u=∑ki=1λi*pi(x)
將u作為多目標優化問題的評價函數,此時多目標優化問題就轉化為單目標優化問題,因此可利用單目標優化的遺傳算法求解多目標優化問題。
2)并列選擇法
其基本思想是:先將群體中的全部個體按照子目標函數的數目均等地劃分為一些子群體,對每個子群體分配一個子目標函數,各個子目標函數在相應的子群體中獨立地進行選擇運算,各自選擇出一些適應度高的個體組成一個新的子群體,然后再將所有這些新生成的子群體合并成一個完整的群體,在這個群體中進行交叉和變異運算,從而生成下一代的完整群體,如此不斷地進行“分割——并列選擇——合并”操作,最終可求出多目標優化問題的Pareto最優解。
3)排列選擇法
這種方法是基于Pareto最優個體,對群體中的各個個體進行排序,依據這個排列次序來進行進化過程中的選擇運算,從而使得排在前面的Pareto最優個體將有更多的機會遺傳到下一代群體中。
4)共享函數法
利用小生境遺傳算法的技術來求解多目標最優化問題,將共享函數的概念引入到求解多目標最優化問題的遺傳算法中。
5)混合法
其基本思想是選擇算子的主體使用并列選擇法,然后通過引入保留最佳個體和共享函數的思想來彌補只使用并列選擇法的不足之處。
3多目標函數優化實例
已知
minf1=x21/5+x22/5minf2=x1(2-x2)+10s.t.1≤x1≤4,1≤x2≤2
其中f1和f2的權重系數都為0.5,種群數目為100,最大遺傳代數為100,變量個數為2,變量的二進制位數為20位。
經過遺傳算法優化后,第一目標函數的最優解及性能跟蹤,如圖2;第二目標函數的最優解及性能跟蹤,如圖3所示;兩目標函數和的最優解及性能跟蹤,如圖4;第一目標函數值和第二目標函數值,如圖5所示[4]。
圖2經過100次迭代后第一目標函數的最優解及性能跟蹤
圖3經過100次迭代后第二目標函數的最優解及性能跟蹤
圖4經過100次迭代后兩目標函數和的最優解及性能跟蹤蹤
圖5經過100次迭代后種群的第一目標函數值和第二目標函數值
利用MATLAB的強大數學計算能力和遺傳工具箱,能夠有效的對多目標函數進行優化,可以減少我們計算和編程的工作量。
參考文獻
[1]杜東,馬震,孫曉明.MATLAB遺傳算法工具箱(GAOT)在水資源優化計算中的應用[M].水利科技與經濟,13(2),2007:73-76
[2]羅中華.最優化方法及其在機械行業中的應用[M].北京:電子工業出版社,2008
[3]雷英杰,張善文,李續武,等.MATLAB遺傳算法工具箱及應用[M].西安:西安電子科技大學出版社,2005:30-33,150-176.
[4]劉萬林,張新燕,晁勤,MATLAB環境下遺傳算法優化工具箱的應用[M].新疆大學學報(自然科學版),22(3):357-360.