天天看點

matlab 遺傳優化算法_優化設計之遺傳算法

遺傳算法(Genetic Algorithm,GA)是優化設計中常用的一個智能優化算法,它是通過模拟生物在自然環境中的遺傳和進化過程而形成的一種自适應全局最優化機率搜尋算法。

遺傳算法的基本運算過程如下:

(1)對種群個體進行編碼,生成初始種群,為保證優化收斂,需要規劃群體中的個體數和最大進化代數;

(2)根據評價規則對個體進行評價,計算種群中每個個體的适應度,如果發現符合适應度要求的個體,則取出最大适應度的個體進行解碼輸出,遺傳結束;

(3)如果上一步沒有找到滿足适應度要求的個體,則對所有的個體進行遺傳運算(選擇運算、交叉運算、變異運算),得到下一代群體;

(4)對得到的新群體重複進行2、3步運算,直到找到滿足适應度要求的個體,或者是達到最大進化代數,運算結束。

遺傳算法的運算流程圖如下所示:

李元科. 工程最優化設計[M]. 清華大學出版社, 2006.

matlab 遺傳優化算法_優化設計之遺傳算法

下面對其中的關鍵步驟解釋如下:

1、編碼與解碼

編碼即通過一定的規則生成每個個體的染色體,常用的編碼方法有:二進制編碼、浮點數編碼、符号編碼、格雷碼編碼等。編碼越複雜(每個染色體中所包含的基因個數越多),種群數量越大,計算量越大。

有編碼公式就要有對應的解碼公式,當進化出滿足适應度要求的個體時需要對個體的編碼進行解碼,才能得到我們想要的資料。

2、個體評價

個體評價是對染色體的遺傳機率進行計算的操作,通過計算每個個體的适應度,決定該個體被遺傳到下一代的機率。

3、選擇運算

通過選擇運算實作個體的優勝劣汰,常用的選擇算法為比例選擇運算。通過輪盤法産生一個0到1之間的随機數,如果這個數在某個染色體的機率區間,那麼,我們就選擇這個染色體進入下一代。個體被遺傳到下一代的機率與個體的适應度大小成正比。

4、交叉運算

目前常用的交叉運算是單點交叉運算,在個體編碼中随機設定一個交叉點,并在該交叉點上互相交換兩個配對個體的基因,形成新的個體。

5、變異運算

為防止優化過程進入“奇點”,需要對個别個體進行變異操作。常用的變異運算方法是基本位變異,例如在二進制編碼中,随機地将基因中的某一位或某幾位的0替換成1或者将1替換成0.

以上為遺傳算法基本的概念和程式編寫流程。現在很多優化設計軟體中都提供有專門的遺傳算法子產品或遺傳算法函數,可以直接運用。如MATLAB的優化設計工具箱、Hyperworks中的Hyperstudy子產品都提供有專門的遺傳算法函數可以使用。Python中也有很多開源的遺傳算法庫可以使用,例如Geatpy進化算法工具箱就提供了多種遺傳算法函數,并提供了一個高度子產品化、耦合度低的面向對象的進化算法架構,可用于求解單目标優化、多目标優化、複雜限制優化、組合優化、混合編碼進化優化等,并且能和SCOOP等架構緊密配合進行分布式計算。

點選下方關鍵詞檢視更多相關文章,或點選下方搜尋更多公衆号文章。

matlab 遺傳優化算法_優化設計之遺傳算法

坐倚北風個人部落格:www.leanwind.com,聚焦數字化和智能化設計。 。

?來個“分享、點贊、在看”?

繼續閱讀