① matlab優化工具箱中遺傳演算法的問題
ga就是在窮舉不可能完成時,用一種方式找到最優解
ga工具的完整形式如下表示
[X,FVAL,EXITFLAG,OUTPUT,POPULATION,SCORES] =
GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON,options)
X是最優自變數
FVAL是求得的最優值
其他以此是推出標志,結構體,終止時的總群,終止時種群函數值
後半部分以此是目標函數,目標函數自變數個數
A和b是線性約束不等式AX〈b
Aeq和beq是一對線性等式約束,AeqX=beq
lb是X值下限,ub是X值下限
NONLCON是非線性約束函數 options是運行方式。這兩個可以寫函數自己完成,也可默認
函數默認計算最小值,計算最大值要加負號
非線性約束條件的寫法
function [c,ceq]=nonlcon(x) 定義函數自變數是x,x可以是一列矩陣
c=[]; c表示非線性等式約束,以為沒有,所以為空
ceq=[x(1)-2*(x(2))^2;
x(1)+X(2) ] ceq是非線性不等式約束,默認ceq<=0,ceq可以為一列矩陣.
>>
② 求解:怎樣使用MATLAB中的遺傳演算法計算器Optimization Tool中的GA——Genetic Algorithm,如圖,重謝
比如通過MATLAB遺傳演算法的思想求解f(x)=x*sin(10pi*x)+2.0,-1<=x<=2的最大值問題,結果精確版到3位小數。
首先在matlab命令權窗口輸入f=@(x)-(x*sin(10*pi*x)+2) 輸出結果為
>> f=@(x)-(x*sin(10*pi*x)+2)
f =
@(x)-(x*sin(10*pi*x)+2)
接著輸入gatool會打開遺傳演算法工具箱
顯示51代之後演算法終止,最小結果為-3.85027334719567,對應的x為1.851,由於自定義函數加了負號,所以原式的最大值為3.85027334719567,對應的x為1.851。
不過這是遺傳演算法得到的結果,每次運行的結果可能會有所不同,而且不一定是確切的最大值。
遺傳演算法適合應用在一些求最優解比較復雜的問題(常規的演算法運算時間過長,甚至無法解決)。
③ 請教一下,用遺傳演算法工具箱怎麼求下面函數的最小值
題主給出函數用遺傳演算法工具箱求其最小值,可以這樣來做:
1、自定義函數,並保存專為leijia.m文件。
2、在當前屬目錄下,執行 optimtool,打開最優化工具箱,再選擇遺傳演算法工具箱
3、按表中格式,輸入相關內容,最後執行可以得到
④ matlab工具箱中的神經網路和遺傳演算法要怎麼調用
都是有兩種調用抄方法,一種圖形界面的,這個從開始菜單,然後工具,然後從裡面找神經網路 neural network,遺傳演算法工具是 全局優化工具箱裡面的,global optimization。
另外 一種通過命令行調用,這個需要你理解你都要做什麼,我用神經網路舉例。第一步需要先整理出輸入變數和輸出變數,第二步設計並初始化神經網路,第三部訓練,第四部獲得結果。
如果你想結合這兩者,就會更加復雜,詳細的你可以再問。我曾經做過用遺傳演算法優化神經網路的工具。