導航:首頁 > 五金知識 > ga工具箱函數一元函數

ga工具箱函數一元函數

發布時間:2021-10-12 12:26:52

① matlab 的ga工具箱 stopping criteria 中 「function tol...

^(1)
[x,feval]=fminunc(@(x)x(1)^2 4*x(2)^2 9*x(3)^2-2*x(1)-18*x(2),[3 1 2])
Warning: Gradient must be provided for trust-region method;
using line-search method instead.

② 如何用遺傳演算法工具箱中的函數畫出適應度函數曲線

matlab有遺傳演算法工具箱。

核心函數:
(1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始種群的生成函數
【輸出參數】
pop--生成的初始種群
【輸入參數】
num--種群中的個體數目
bounds--代表變數的上下界的矩陣
eevalFN--適應度函數
eevalOps--傳遞給適應度函數的參數
options--選擇編碼形式(浮點編碼或是二進制編碼)[precision F_or_B],如
precision--變數進行二進制編碼時指定的精度
F_or_B--為1時選擇浮點編碼,否則為二進制編碼,由precision指定精度)

(2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,
termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遺傳演算法函數
【輸出參數】
x--求得的最優解
endPop--最終得到的種群
bPop--最優種群的一個搜索軌跡
【輸入參數】
bounds--代表變數上下界的矩陣
evalFN--適應度函數
evalOps--傳遞給適應度函數的參數
startPop-初始種群
opts[epsilon prob_ops display]--opts(1:2)等同於initializega的options參數,第三個參數控制是否輸出,一般為0。如[1e-6 1 0]
termFN--終止函數的名稱,如['maxGenTerm']
termOps--傳遞個終止函數的參數,如[100]
selectFN--選擇函數的名稱,如['normGeomSelect']
selectOps--傳遞個選擇函數的參數,如[0.08]
xOverFNs--交叉函數名稱表,以空格分開,如['arithXover heuristicXover simpleXover']
xOverOps--傳遞給交叉函數的參數表,如[2 0;2 3;2 0]
mutFNs--變異函數表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']
mutOps--傳遞給交叉函數的參數表,如[4 0 0;6 100 3;4 100 3;4 0 0]

注意】matlab工具箱函數必須放在工作目錄下
【問題】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9
【分析】選擇二進制編碼,種群中的個體數目為10,二進制編碼長度為20,交叉概率為0.95,變異概率為0.08
【程序清單】
%編寫目標函數
function[sol,eval]=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函數存儲為fitness.m文件並放在工作目錄下

initPop=initializega(10,[0 9],'fitness');%生成初始種群,大小為10
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遺傳迭代

運算借過為:x =
7.8562 24.8553(當x為7.8562時,f(x)取最大值24.8553)

註:遺傳演算法一般用來取得近似最優解,而不是最優解。

遺傳演算法實例2

【問題】在-5<=Xi<=5,i=1,2區間內,求解
f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。
【分析】種群大小10,最大代數1000,變異率0.1,交叉率0.3
【程序清單】
%源函數的matlab代碼
function [eval]=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%適應度函數的matlab代碼
function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%遺傳演算法的matlab代碼
bounds=ones(2,1)*[-5 5];
[p,endPop,bestSols,trace]=ga(bounds,'fitness')

註:前兩個文件存儲為m文件並放在工作目錄下,運行結果為
p =
0.0000 -0.0000 0.0055

大家可以直接繪出f(x)的圖形來大概看看f(x)的最值是多少,也可是使用優化函數來驗證。matlab命令行執行命令:
fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9])

evalops是傳遞給適應度函數的參數,opts是二進制編碼的精度,termops是選擇maxGenTerm結束函數時傳遞個maxGenTerm的參數,即遺傳代數。xoverops是傳遞給交叉函數的參數。mutops是傳遞給變異函數的參數。

③ 但是ranking函數確確實實是matlab GA工具箱中的函數

那可能輸入不應該是double類型的吧……反正它這么說。GA工具箱里其他的函數可以用么?

④ MATLAB中ga函數(神經演算法)調用提示輸入變數太多,求大神指點下ga函數的用法

matlab自帶工具箱和gaot中ga函數名字沖突,想用哪一個將其路徑置頂提前即可。

⑤ matlab遺傳演算法工具箱中ga函數的用法

為0-1矩陣,范圍怎麼設呢

⑥ matlab遺傳演算法工具箱求解多元函數顯示輸入參數數目不足求解答,非常感謝

錯誤的主要原因是你寫的函數有問題。函數應該這樣來表示:

function y = Test1(x)

a=x(1);b=x(2);

y=a+b;

end

使用優化工具箱,選擇ga,運行可以得到如下結果

⑦ 求matlab遺傳演算法工具箱GA Toolbox。。並求解釋如下

GA自己寫一個就好了,也挺簡單的。
雖然很多函數都能知道表達式,但是仍然版有很多函數不能用倒權數來求解,所以要知道空間的極值和最值就必須用遍歷的方法。然而對於實數范圍內或者大規模數據的離散數據情況下,遍歷畫圖的方法會耗費很大的計算復雜度,因為你並不知道是在參數范圍的邊緣還是中間有最值,有多少個最值也不知道。GA就提供了一種基於種群的搜索優化方法,可以快速的收斂到優秀的解的個體,但是要防止陷入局部最優。
簡而言之就是遍歷的搜索方法要用時10小時完成的事情,GA快速優化可能1分鍾或者10分鍾搞定,佔用內存也少。

⑧ Matlab GA toolbox 約束函數寫法

function [c, ceq] = const(x, A)
定義函數的時候光明正大的把A當參數傳進去。

在調用的時候,生成一個匿名函數:
A = ...;
constA = @(x) const(x, A);
ga(..., constA, ...);

閱讀全文

與ga工具箱函數一元函數相關的資料

熱點內容
拉伸包裝設備的種類有哪些 瀏覽:173
煙風道閥門套什麼定額 瀏覽:392
空調製冷器霧是什麼原因 瀏覽:134
燃氣管道閥門故障 瀏覽:53
四川出名的五金機電城有哪些 瀏覽:55
閥門保養的目的是什麼 瀏覽:192
連續精餾裝置實驗室 瀏覽:999
日照凈化設備製造有限公司怎麼樣 瀏覽:698
減腰部用什麼器材最好 瀏覽:940
鑄造廠工作單位怎麼寫 瀏覽:52
怎樣知道哪個是自己的登錄設備 瀏覽:376
寶馬儀表盤如何看行駛路程 瀏覽:615
無銹鋼水箱泄水用什麼閥門 瀏覽:155
一氧化碳防護性能檢測裝置 瀏覽:727
拉爪怎麼拆軸承 瀏覽:718
機械夾持裝置模型 瀏覽:314
污水廠中有毒物質用什麼設備 瀏覽:760
閥門vT是什麼意思 瀏覽:766
石基哪裡有消防器材買 瀏覽:788
新款明銳儀表時間怎麼調 瀏覽:459