摘要本文通過利用遺傳算法對函數優化,對其進行性能評價,它不僅對連續,可導等領域的放寬,還對數值運算給予了很大支持。表明了它在求解函數極值問題中的作用。通過遺傳算法工具箱給出圖標進行分析與比較。
關鍵詞遺傳算法 函數優化 遺傳算法工具箱
中圖分類號:O174文獻標識碼:A
0 引言
1962年John Hollandz在他的一篇文章中提出了監控程序的概念,那就是利用群體進化來模擬適應性系統這一思想。后來在智能機器的研究中,通過對單個生物體的適應性的改進和優化,而且把這一思想應用到一個種群中,經過許多代的進化取得非常好的適應性效果。在此期間引進了群體,適應值,選擇,變異,交叉等遺傳算法基本概念。后來,他的學生J.D.Bagley通過對跳棋游戲參數的研究,在其文章中首次提出了“遺傳算法”一詞。隨之Holland提出了遺傳算法的理論發展的模式理論,這一模式理論對后面的研究者起到了很重要的作用。并且首次提出了選擇,交叉和變異等遺傳算子和遺傳算法的隱并行性,后來由于其實用性很強,被一些研究者應用于適應性系統模擬,函數優化,機器學習,自動控制等領域,得到了很好的結論。
函數優化只是遺傳算法常用的一個領域,通過對其優化的實現來體現遺傳算法的重要性。比如別的方法不能使不連續,不可導的函數,得以實現優化。而遺傳算法卻能得到很好的結論,通過對交叉,變異概率的選擇很好的避免了這一問題。
1遺傳算法在對函數優化時的工作流程
第一步,找到適合的函數解析式,建立函數模型。
第二步,利用MATLAB遺傳算法工具箱建立目標函數,通過對目標函數模型的調用來求最小值。
第三步,通過遺傳算法的復制,交叉,變異。選擇適應度大對其保留,成為下一代的父代。
第四步,選擇適當的參數對目標函數進行優化,給出圖標和最后的優化值。作為最后的實驗結果。
2 遺傳算法理論說明
定義1設f (a)∈Xn是目標函數優化模型的約束集,f (a)∈Xn是目標函數進行優化時的向量目標函數,假如有解,并且不存在比a1適應度更好的解f(a1)。那么就有fk (ai)≤fk (ai+1),k = 1,2,3,L,n,并且fk (ai)≤fk (ai+1),k = 1,2,3,L,n。
定義2設Km(a)為在模式環境m下,策略a的在線性能目標,Km(a)設定為遺傳第t代中對于環境的目標函數或平均適應度函數,那么Km(a)就表示為Km(a) = fm(t),使之表示從第一代到當前代進程的優化平均值進行表示。
定義3設K*m(a)表示為在環境m下策略a的離線性能,我們用K*m(a) = fm(t)式中,f *m(t) = bestfitness{fm(1),fm(2)L,fm(t)}。
定義4 (解碼公式)x = U1+(bi·2i-1)·,且一個體的編碼為。
3 利用遺傳算法仿真實驗結果
下面我們通過對兩個實例來說明,遺傳算法的在選擇、雜交、變異的三個生物進化過程的應用。
函數f (x) = 18*x+x3其中x為[-50,50]間的整數,求此函數的最小值。
>> options=gaoptimset
options = PopulationType: 'doubleVector'
PopInitRange: [2x1 double]
PopulationSize: 20
EliteCount: 2
CrossoverFraction: 0.8000
MigrationDirection: 'forward'
MigrationInterval: 20
MigrationFraction: 0.2000
Generations: 100
TimeLimit: Inf
FitnessLimit: -Inf
StallGenLimit: 50
StallTimeLimit: 20
InitialPopulation: []
InitialScores: []
PlotInterval: 1
CreationFcn: @gacreationuniform
FitnessScalingFcn: @fitscalingrank
SelectionFcn: @selectionstochunif
CrossoverFcn: @crossoverscattered
MutationFcn: @mutationgaussian
HybridFcn: []
Display: 'final'
PlotFcns: []
OutputFcns: []
Vectorized: 'off'
[x fval]=ga(@my_fun1,1)
Optimization terminated: maximum number of generationsexceeded.
x = 2.4494
fval =-29.3939
>> [x fval]=ga(@my_fun1,nvars,options)
4結論說明
通過上面求函數的極值問題的分析,說明了遺傳算法在對函數優化是一種很好的方法,它可以對函數的連續性,可導性等問題的優化。同時,經過編碼,只需對適應值的計算來進行復制,交叉,變異逐步給出最優,遺傳算法工具箱對其結果給出圖表,對比差值加以分析。遺傳算法在函數求解極值問題中發揮了很好的作用。
參考文獻
[1]李敏強.遺傳算法基本理論與應用.科學出版社,2004.
[2]雷英杰.MATLAB遺傳算法工具箱及應用.西安電子科技大學出版社,2004.
[3]刑延銘.一種基于遺傳算法和模糊規則的分類算法[J].吉首大學學報,2006.
[4]周麗.遺傳算法求解函數極值的應用[D].開發研究與設計技術,2007.
[5]周明.遺傳算法原理及應用[M].北京:國防工業出版社,1999.