導航:首頁 > 五金知識 > matlabga工具箱增加非線性約束

matlabga工具箱增加非線性約束

發布時間:2021-11-13 22:40:49

『壹』 matlab fmincon 怎麼添加非線性約束

,un為目標函數,它可用前面的方法定義;

『貳』 matlab ga函數的非線性約束和目標函數能不能不單獨寫M文件,把所有的代碼都放到一個M文件可以嗎

可以,將所有函數都寫到一個文件中

不過這個文件也只能是函數文件


你可以為你的函數文件先寫一個總函數,類似於C語言的main函數

然後其它的函數寫在後面

寫在同一個函數文件中的函數是可以互相調用的


例如:

function[]=main()
.....
.....
x=ga(@objfun,nvars,.....);
.....
end

functionoutput=objfun(x)
.....
.....
end

實際上,就是將原來要在命令行里運行的代碼

或者要寫在腳本m文件中要運行的代碼寫到main函數中

當然不一定要命名為main,可以改其它名字

只要將該函數放在最先的位置就可以了

函數m文件以第一個定義的函數作為主函數

而後面可以定義更多的函數,都可以被主函數調用



這樣就是將優化函數、約束函數、和主函數寫在同一個文件的辦法

但是,由於主體運行的代碼被被封裝為一個函數

所以不能像腳本m文件那樣調用base工作空間中變數

生成的變數也不保存在base工作空間中

當函數運行完畢,退出的時候,它運行時所產生的變數將會被清空

你可以將要輸入和輸出的變數以函數輸入參數和輸出參數的形式傳遞

實際上不及用腳本m文件方便

但是腳本m文件中是不能用function語句定義函數的

『叄』 請問,Matlab遺傳演算法工具箱能施加的非線性隱性約束條件嗎謝謝!!!

Matlab遺傳演算法工具箱是可以施加的非線性隱性約束條件的。例如:

min z= 3050*x1³+0.25*x2;

其中x1定義域[-0.381,0.381],x2定義域[-100,100]

求目標函數值為10時的x1、x2值。

求解結果

x1=0.14169943480903302 x2=5.289387991237991

function [c,ceq]=ga_con(x) %非線性約束條件函數

c=10-(3050*x(1)^3+0.25*x(2));

ceq=[];

『肆』 Matlab利用GA演算法的多約束非線性問題求助

你的ga函數使用不對,猜測是你用的代碼的matlab版本比較老,你自己的matlab比較新,ga函數經過幾次的升級,調用方法進行了改進。

『伍』 使用matlab遺傳演算法工具箱如何加入目標函數中變數的約束條件啊,可否在M文件中加

首先回答你第一個問題:怎麼加入變數的約束條件?

打開遺傳演算法工具箱的窗體中會有下圖所示的選項,即是約束條件的編輯

至於添加的方式,這里要重點的提一下,首先將問題抽象成規劃問題的標准形式(如果你不懂什麼是標准形式的話,建議你去翻閱運籌學那本書,上告訴你什麼是標准形式),然後用矩陣語言寫出來,最後將矩陣的系數填寫到線性不等約束和線性相等約束中,同時定義所求變數x的上界和下界(記住有多少個變數就有多少列,如果你發現有些條件中沒有出現某些變數,那麼就應該用0補足,這個是matlab解決規劃問題與lingo想比較麻煩的一個地方,)。

然後回答你第二個問題:可否在M文件中添加約束條件?

當然可以,界面的東西是為了方便不熟悉matlab編程的人而設計出來的,但是其底層的演算法和介面肯定是有的。

碰到不懂的函數,請記得:help函數名

helpga之後會得到一下一些函數

ga

//這個是定義

Syntax //這個是語法也即是調用的規則

x=ga(fitnessfcn,nvars)

x=ga(fitnessfcn,nvars,A,b)

x=ga(fitnessfcn,nvars,A,b,Aeq,beq)

x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB)

x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon)

x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)

x=ga(problem)

[x,fval]=ga(...)

[x,fval,exitflag]=ga(...)

直接給你將最長的那個吧

x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)

X是返回所求的解

fitnessfcn是適應度函數

nvars是適應度函數中所含變數的維數

A是不等式約束中變數的系數矩陣,b是不等式約束中不含變數的值矩陣

Aeq是等式約束中變數的系數矩陣,beq是等式約束中不含變數的值矩陣

LB是下界,UB是上界

nonlcon是非線性約束條件

至於options嘛 我也木有用過,其實你也可以不用管的。

懂了木有呢,親?

『陸』 用matlab的optimization工具箱遺傳演算法,添加約束條件的問題。

你看到下邊那個nonlinear constraint function了嗎?
把你的約束寫在一個m文件的function中,函數名比如取為:xconstr
則將@xconstr寫到nonlinear constraint function後面的框里,應該就可以了。線性約束的話直接寫在上方的欄目中。

你的優化問題沒看到,用遺傳演算法求解一般沒有問題。這種智能優化演算法的最大優點在於求解多局部解優化問題時能得到全局性較好的最有解。如果你不考解的全局最優性的話,可以直接使用fmincon函數來求解。關於fmincon函數,可以在matlab命令行中輸入 doc fmincon命令以查看幫助。

『柒』 用Matlab解決有約束的非線性問題

用matlab裡面的optimazation tool工具,來解決有約束的非線性問題。

首先,應分別建立自定義極值函數fmincon_fun(x)和自定義約束函數fmincon_con(x)

其二,用optimtool命令,打開optimazation tool工具箱

其三,分別用@fmincon_fun和@fmincon_con填入對於命令框內,同時將初值設定為【0,0】

最後,點擊Start按鈕,可以求得x1=-0.2,x2=0.2,f=0.8

自定義極值函數fmincon_fun(x)和自定義約束函數fmincon_con(x)的內容:

function f=fmincon_fun(x)

x1=x(1);x2=x(2);

f=(x1-x2)^2+(x2-1)^2

end

function [c,ceq]=fmincon_con(x)

x1=x(1);x2=x(2);

c(1)=x1^2-x2;

c(2)=x1+x2

ceq=[];

end

『捌』 matlab遺傳演算法優化問題中,非線性等式約束怎麼添加啊

建立約束條件函數,把非線性的等式約束條件添加加在[c,ceq]中。如

function [c,ceq]=NonCon(x)
c=x(1)^2+x(2)^2-9;
ceq=[];

然後,再用ga()函數調用,如
[x, fval, exitflag] =ga(o@FitFun,nvars,A,b,Aeq,beq,lb,ub,NonCon)

閱讀全文

與matlabga工具箱增加非線性約束相關的資料

熱點內容
固態機械什麼意思 瀏覽:186
深圳市區有五金機電城嗎 瀏覽:786
儀表廠家電話多少 瀏覽:493
儀表一個圈兩個箭頭什麼 瀏覽:943
五金件外觀檢驗 瀏覽:917
電動工具防水管 瀏覽:498
長安歐諾軸承壞了有什麼症狀 瀏覽:358
滑輪組的安裝實驗裝置 瀏覽:213
上海理工大學機械畢業生工資多少 瀏覽:768
煤礦自動隔爆裝置 瀏覽:300
勝輝五金製品有限公司招聘 瀏覽:199
中石油終端安全工具箱用途 瀏覽:902
精密軸承都使用什麼材料 瀏覽:14
滾筒洗衣機軸承損壞滾筒怎麼打開 瀏覽:163
機械制圖比例畫法是什麼 瀏覽:319
鑄造模具拔模斜度怎麼確定 瀏覽:499
大棚里自動澆水裝置 瀏覽:115
角磨機如何換帶皮套的軸承 瀏覽:236
美容院有哪些儀器及價格 瀏覽:524
狼印機械鍵盤怎麼開燈光 瀏覽:429