胡新,何海浪,郭瀟然
(長安大學,陜西 西安 710064)
基于MATLAB的遺傳算法優化軟件設計
胡新,何海浪,郭瀟然
(長安大學,陜西 西安 710064)
優化設計理論使工程設計方法發生了變革。其中,遺傳算法理論與傳統優化算法相比,具有魯棒性、自適應性、全局優化性和隱含并行性的特點。本文基于Matlab語言編程實現了遺傳算法,并設計搭建了用戶界面。通過標準測試函數對所開發軟件優化功能進行了測試檢驗,優化結果準確,操作簡單方便,系統設計滿足預期要求。
遺傳算法;Matlab;優化軟件;標準測試函數
CLC NO.:U462.1Document Code:AArticle ID:1671-7988(2014)08-32-03
優化設計理論與方法在20世紀60年代后期開始應用于工程設計,而直到20世紀70年代中期我國才開始有關研究。工程設計方法在這30多年的研究中發生了根本性的變革,現在的工程設計方法具有科學性、理性化等特點。
遺傳算法(GA)是一種模擬自然進化過程搜索最優解的方法,以自然選擇和遺傳理論為基礎,將生物進化過程中適者生存規則與群體內部染色體的隨機信息交換機制相結合,與傳統優化算法相比,具有魯棒性、自適應性、全局優化性和隱含并行性的特點[2]。
Matlab配備有功能強大的數學函數支持庫,它不僅具有效率高、編程語句簡單、適用范圍廣等特點,而且還便于使用以直觀、簡潔并符合人們思維習慣的代碼給用戶提供了一個非常友好的開發環境。利用Matlab處理矩陣運算的強大功能來編寫遺傳算法程序有著巨大的優勢[1]。
遺傳算法計算優化的操作過程就如像生物學上生物遺傳進化的過程一樣,主要有三個基本操作(或稱為算子):選擇(Selection)、交叉(Crossover)、變異(Mutation)[5]。
遺傳算法基本步驟主要是:先把問題的解表示成“染色體”,在算法中也就是以二進制編碼的串,在執行遺傳算法之前,給出一群“染色體”,也就是假設的可行解。然后,把這些假設的可行解置于問題的“環境”中,并按適者生存的原則,從中選擇出較適應環境的“染色體”進行復制,再通過交叉、變異過程產生更適應環境的新一代“染色體”群。經過這樣的一代一代地進化,最后就會收斂到最適應環境的一個“染色體”上,它就是問題的最優解[4]。
遺傳算法的具體步驟(如圖1):
(1)選擇編碼策略,把參數集合(可行解集合)轉換染色體結構空間;
(2)定義適應函數,便于計算適應值;
(3)確定遺傳策略,包括選擇群體大小,選擇、交叉、變異方法以及確定交叉概率、變異概率等遺傳參數;
(4)隨機產生初始化群體;
(5)計算群體中的個體或染色體解碼后的適應值;
(6)按照遺傳策略,運用選擇、交叉和變異算子作用于群體,形成下一代群體;
(7)判斷群體性能是否滿足某一指標、或者是否已完成預定的迭代次數,不滿足則返回第五步、或者修改遺傳策略再返回第六步。
2.1 編碼并產生初始種群
2.1.1 確定編碼策略
編碼就是表現型到基因型的映射,編碼時要注意以下三個原則:
①完備性:問題空間中所有點(潛在解)都能成為GA編碼空間中的點(染色體位串)的表現型;
②健全性:GA編碼空間中的染色體位串必須對應問題空間中的某一潛在解;
③非冗余性:染色體和潛在解必須一一對應。
基于上述三條原則,采用二進制的形式來進行編碼,將某個變量值代表的個體表示為一個{0,1}二進制串。
2.1.2 要確定種群規模M
過大或過小的種群規模都會對進化結果產生影響,一般種群設定為300~400個個體。
2.1.3 計算染色體長度
染色體的長度是根據所設定的求解精度計算而得的;假定求解精度為pre,則染色體的長度L由如下公式計算得出:
最后隨機生成M個長度為L的二進制編碼串,構成初始種群。實現過程如下:
2.2 雜交
雜交就是將一組染色體上對應基因段的交換得到新的染色體,然后得到新的染色體組,組成新的群體[3]。雜交的實現過程如下:
2.3 變異
變異是通過一個小概率改變染色體位串上的某個基因。變異的實現過程如下:
2.4 適應度評價
適應度評價的關鍵在于適應度函數的選擇,由于本文是采用遺傳算法作函數優化,則理想情況應是直接將目標函數作為適應度函數,這樣目標函數值即為適應度值,方便進行后續的選擇和最優解輸出[7]。
針對本文還要做出遺傳算法的優化界面,適應度函數也
是根據用戶的需要自行輸入的,這樣就會產生適應度函數不確定的問題,為了解決這個問題,在Matlab編程時使用了eval函數,將輸入的目標函數字符串經轉化識別后,根據優化變量的取值范圍求其目標函數值即適應度值[6]。這樣適應度評價的實現過程為:
2.5 選擇
優勝劣汰的選擇機制使得適應值大的個體有較大的存活機會,不同的選擇策略對算法性能有較大的影響。對函數優化問題上,基于局部競爭的選擇對適應度函數要求較小,同時能夠將適應度值小的個體輕松選擇出來。因此,本文采用基于局部競爭的選擇方法[8]。選擇的實現過程如下:
2.6 GUI制作
首先對GUI進行布局設計,然后編寫實現GUI控件功能的回調函數;同時到工作界面的美觀性,對圖形區添加了圖片背景,最終完成的工作界面如圖2所示:
標準測試函數Bohachevsky函數F(χ,χ)=χ2+2χ2-
1212 0.3cos(3πχ1)cos(4πχ2)+0.3(-50≤χi≤50)在(χ1,χ2)=(0,0)處有一全局極小值0。使用Bohachevsky函數對該軟件進行功能驗證結果如圖3所示:
由上述驗證過程可知:得出最小值為0,此時優化變量x1、x2的取值均為0,與之前介紹的Bohachevsky函數特性一致,因此,優化結果正確,該軟件功能能正常實現。
但是,本軟件系統還存在一些不足:該系統僅是針對二元函數的優化問題進行的設計,還未能拓展至多元函數,二元函數和多元函數的優化在程序實現上的差異主要是在適應度評價、個體和優化變量取值范圍之間的轉化兩個方面,這也將是我在今后學習中需要解決的一個問題。
[1] 張志涌,楊祖櫻.Matlab教程(R2011a)[M].北京:航空航天大學出版社,2012.
[2] 雷英杰.MATLAB遺傳算法工具箱及應用[M].西安:電子科技大學出版社,2005.
[3] 宋瑩,任金霞等.基于Matlab的GUI設計遺傳算法優化軟件[J].計算機與現代化,2004.
[8] 羅述全.傳統優化算法與遺傳算法的比較[J] .湖北工業大學學報.2007.
[5] 章紅兵.基于MATLAB的遺傳算法優化工具箱的應用[C].中國科技文論在線.
[6] 陳國良,王煦法,莊鎮泉.遺傳算法及其應用[M].北京:人民郵電出版社,1996.
[7] Bo-Ping Wang,Supervising Professor,Wen S.Chan.GENETIC ALGORITHMS IN DESIGN OPTIMIZATION[D].American,The Unveisity of Texas,2000.
[8] 劉國華,包宏,李文超.用Matlab實現遺傳算法程序[J].計算機應用研究,2001.
Genetic algorithm optimization software design based on MATLAB
Huxin, He Hailang, Guo Xiaoran
(Chang'an University, Shaanxi Xi’an 710064)
The optimal design theory in engineering design has made the traditional engineering approach to a fundamental change .The theory of genetic algorithm in the optimization of the design are robust, adaptive, global optimization and implicit parallelism, which the traditional optimization algorithms donot have. This paper dsigns the genetic algorithm based on Matlab programming and build the user interface. Through the standard test function test the development software optimization function, the optimization results accurate, system friendly interface, easy to operate, the system design is expected to meet.
Genetic Algorithms; Matlab; Optimization software; Standard test functions
U462.1
A
1671-7988(2014)08-32-03
胡新,碩士研究生,就讀于長安大學汽車學院。