遺傳演算法與直接搜尋工具箱學習筆記 八—–遺傳演算法概述

來源:互聯網
上載者:User

 什麼是遺傳演算法?

       遺傳演算法是基於生物進化過程中的自然選擇機制而解決最佳化問題的一種演算法。在解決的最佳化問題中既包含無約束最佳化問題又包含具有約束的最佳化問題。遺傳演算法不斷的更新修改潛在解組成的種群。在演算法迭代的每一步中,演算法在當前種群中隨機的選擇一些個體作為父代,讓後讓這些父代產生一些子代。經過連續世代的運行,種群將向最優解的方向進化。你可以使用遺傳演算法解決各種傳統方法不能解決的各種各樣的最佳化問題。這些問題包括目標函數是離散的、不可微的、高度非線性、隨機的等問題。

     在當前種群中,
遺傳演算法主要使用3種類型的規則來產生下一代:

1.選擇:選擇父代。

2.交叉:結合父代中的兩個個體,產生下一代中的個體,這些個體是父代的孩子。

3.變異:隨機的改變一些父代個體,讓其成為下一代中的子個體。


執行遺傳演算法

     執行遺傳演算法有兩種方法:1命令列方式,2.圖形介面方式

1.命令列方式

      在命令列中輸入下面格式的語句

[x fval] = ga(@fitnessfun, nvars, options)

其中:@fitnessfun是適應度函數的控制代碼(如果你還不知道控制代碼的概念,那麼你需要補充一下Matlab的知識) ,

nvars是適應度函數中獨立變數的個數,options是演算法執行過程中,所有的可選項,當然你完全可以不

輸入這個參數,因為遺傳演算法工具箱會給我們提供一些預設的選項,這些預設的選項針對於大多數問題都是

可行的,除非你要實現自己的一些特有的方法時才會需要修改這些選項。
傳回值中:
x是演算法在活著最優值時的點的座標。
fval是適應度函數最後的結果。
2.圖形介面方式
如果你想使用圖形介面方式,可以在命令列視窗中輸入:optimtool('ga'),或者在matlab的開始菜單中
選擇最佳化工具,具體的啟動方式可以參考筆記四。這樣你就會得到遺傳演算法的圖形化使用者介面。

這個介面是不是很熟悉呢,呵呵,對了,這個在模式搜尋中也見到過,只是在Solver一欄中這裡選擇的是'ga',
在圖形介面的右邊依然是演算法一些可選項的控制台,如果你想對遺傳演算法的運行參數進行調整的話,就可以
在該圖形介面的右邊尋找。
好了,下面還是繼續進行吧!
在下面的圖形中

填入適應度函數的控制代碼以及適應度函數中獨立變數的個數。還記得我們在筆記二中寫過一個函數叫myTest,
下面我們依然使用這個函數來實驗一下。在第一個輸入框輸入@myTest,在第二個輸入欄中輸入2,好了,
點擊“Start”按鈕,運發開始運行,結果如下:

遺傳演算法找到的最小值是-8.99999,得到該值的點是[-0.536,2.463],為了比較與驗證結果,
我使用模式搜尋的方法運行了同一個函數,起始點從[0 0]開始,下面就是模式搜尋得到的結果

結果基本差不多,這裡好像模式搜尋更好一點。


 




 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.