天天看點

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

1.簡介

遺傳算法是現代優化算法之一,為友善使用Matlab提供了遺傳算法工具箱,可以友善我們解決一般的優化問題。

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

遺傳算法工具箱的打開途徑為:首先在App中找到Optimization工具箱

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

然後在Solver中找到ga打開就行了,具體的顯示界面如下

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

我們主要用到的就是左邊這一塊了,在裡面輸入參數就行了

2.例題

下面我通過幾個例題來介紹參數怎麼輸入

例1,求解f(x)的最小值

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

首先我們要編寫适應度函數,一般就是目标函數,儲存為m函數檔案

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

接下來就是輸入參數了

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

在Fitness function(适應度函數)處輸入@目标函數名(因為此處傳遞的是函數句柄是以一定要加@,不然會出錯),Number of Variables是指待求變量的個數,接下來就是輸入限制條件了,以為此處限制條件是xi是0到0.9pi之間的實數,是以隻需要在Bound處輸入就行了,然後點選Start按鈕就會求出結果。

例2

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

這個是求最大值,但遺傳算法工具箱隻能求最小值,是以我們編寫适應度函數時在目标函數前加個負号就行了(當-z最小時,z也就最大了)。

目标函數為

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

以為此處設計到了不等式限制,是以需要先在Matlab中定義不等式限制,它的不等式限制表示形式為

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介
matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

在工作區要有限制條件的矩陣變量,和例1不同的是隻需要在限制處添加不等式限制就行了。這求的是最大值的相反數。

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

例3

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

這題和前面不一樣的是涉及到了非線性限制,是以需要編寫非線性限制條件。

适應度函數

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

非線性限制m函數檔案

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

其中c代表

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

ceq代表

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

此題相對前面的需要在Constraints中的Nonlinear constraint function處輸入非線性限制m檔案函數

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

以上例題還沒有涉及到的參數由Aeq,beq這是線性等式限制的條件,以及Interger variable indices處的參數(這是指明那個參數是整數),具體的可參見最右邊的版塊

matlab 遺傳優化算法_Matlab遺傳算法工具箱使用簡介

繼續閱讀