1.簡介
遺傳算法是現代優化算法之一,為友善使用Matlab提供了遺傳算法工具箱,可以友善我們解決一般的優化問題。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SYxYmYhZGNwQGMklDOyQTZ5QGOwcjY1I2MhlTY1ImN08CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
遺傳算法工具箱的打開途徑為:首先在App中找到Optimization工具箱
然後在Solver中找到ga打開就行了,具體的顯示界面如下
我們主要用到的就是左邊這一塊了,在裡面輸入參數就行了
2.例題
下面我通過幾個例題來介紹參數怎麼輸入
例1,求解f(x)的最小值
首先我們要編寫适應度函數,一般就是目标函數,儲存為m函數檔案
接下來就是輸入參數了
在Fitness function(适應度函數)處輸入@目标函數名(因為此處傳遞的是函數句柄是以一定要加@,不然會出錯),Number of Variables是指待求變量的個數,接下來就是輸入限制條件了,以為此處限制條件是xi是0到0.9pi之間的實數,是以隻需要在Bound處輸入就行了,然後點選Start按鈕就會求出結果。
例2
這個是求最大值,但遺傳算法工具箱隻能求最小值,是以我們編寫适應度函數時在目标函數前加個負号就行了(當-z最小時,z也就最大了)。
目标函數為
以為此處設計到了不等式限制,是以需要先在Matlab中定義不等式限制,它的不等式限制表示形式為
在工作區要有限制條件的矩陣變量,和例1不同的是隻需要在限制處添加不等式限制就行了。這求的是最大值的相反數。
例3
這題和前面不一樣的是涉及到了非線性限制,是以需要編寫非線性限制條件。
适應度函數
非線性限制m函數檔案
其中c代表
ceq代表
此題相對前面的需要在Constraints中的Nonlinear constraint function處輸入非線性限制m檔案函數
以上例題還沒有涉及到的參數由Aeq,beq這是線性等式限制的條件,以及Interger variable indices處的參數(這是指明那個參數是整數),具體的可參見最右邊的版塊