1. 程式人生 > >MATLAB R2018a 全域性優化工具箱學習(一)遺傳演算法

MATLAB R2018a 全域性優化工具箱學習(一)遺傳演算法


Global Optimization Toolbox
 

在MATLAB R2018a 中發現了全域性優化的工具箱以及增加的資料和機器學習工具箱,對於求解全域性最優值很是方便。


MATLAB Global Optimization Toolbox 學習:


全域性優化工具箱提供了一些函式, 用於尋找包含多個極大值或極小值的問題的全域性解。工具箱包括全域性搜尋、多初始點、模式搜尋、遺傳演算法、多目標遺傳演算法、模擬退火和粒子群求解。您可以使用這些求解器解決優化問題。通過設定選項和自定義建立、更新和搜尋功能, 可以提高規劃求解的有效性。您可以使用自定義資料型別與遺傳演算法和模擬退火求解來表示不容易用標準資料型別表示的問題。混合函式選項使您可以通過在第一個之後應用第二個求解器來改進解決方案。
 

一、ga演算法:

遺傳演算法(Genetic Algorithm, GA)起源於對生物系統所進行的計算機模擬研究。它是模仿自然界生物進化機制發展起來的隨機全域性搜尋和優化方法。其本質是一種高效、並行、全域性搜尋的方法,能在搜尋過程中自動獲取和積累有關搜尋空間的知識,並自適應地控制搜尋過程以求得最佳解。

[x,fval] = ga(fun,nvars)
[x,fval] = ga(fun,nvars,A,b)
[x,fval] = ga(fun,nvars,A,b,Aeq,beq)
[x,fval] = ga(fun,nvars,A,b,Aeq,beq,lb,ub)
[x,fval] = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)
[x,fval] = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval] = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon)
[x,fval] = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options)

引數解釋:


% x         為所求得的最小值點,而不是最小值

% fval      為對應最小值點x處的最小值

% fun       為目標函式。注:若fun為m檔案,要用通過控制代碼@進行引用

% nvars     為目標函式的未知數個數

% A         線性約束條件:不等式中的係數

% b         線性約束條件:不等式右端的值

%Aeq        線性約束條件:等式中的係數

%beq        線性約束條件:等式右端的值

%lb            x的下界

%ub            x的上界

%nonlcon    非線性約束條件:在MathWorks提供的文件中,是通過函式控制代碼的方法傳入引數,對於約束條件{c<=0;ceq=0},構造一個function,使[c,ceq]作為返回值,c = *(x);ceq = **(x)的形式,nonlcon = @function;

%options    options的用法,相對較為複雜,筆者渣也只是掌握一小部分,以後抽時間再整理出來

%IntCon        整形變數,輸入值為變數的位置


說明:在MATLAB的ga函式中,返回值還包括exitflag,scores等。
並且MATLAB中的ga演算法,有的時候計算最值並沒有粒子群演算法等精確,並且由於這些啟發式演算法在確定初代的時候,初代值一般是隨機給出的。因此建議在進行計算的時候,選取多個函式並計算多次,選擇合適的值。