導航:首頁 > 五金知識 > 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工具箱增加非線性約束相關的資料

熱點內容
steam令牌換設備了怎麼辦 瀏覽:246
新生測聽力儀器怎麼看結果 瀏覽:224
化學試驗排水集氣法的實驗裝置 瀏覽:156
家用水泵軸承位置漏水怎麼回事 瀏覽:131
羊水鏡設備多少錢一台 瀏覽:125
機械制圖里型鋼如何表示 瀏覽:19
測定空氣中氧氣含量實驗裝置如圖所示 瀏覽:718
超聲波換能器等級怎麼分 瀏覽:800
3萬軸承是什麼意思 瀏覽:110
鑫旺五金製品廠 瀏覽:861
蘇州四通閥製冷配件一般加多少 瀏覽:153
江北全套健身器材哪裡有 瀏覽:106
水表閥門不開怎麼辦 瀏覽:109
花冠儀表盤怎麼顯示時速 瀏覽:106
洗砂機多少錢一台18沃力機械 瀏覽:489
超聲波碎石用什麼材料 瀏覽:607
組裝實驗室製取二氧化碳的簡易裝置的方法 瀏覽:165
怎麼知道天然氣充不了閥門關閉 瀏覽:902
公司賣舊設備掛什麼科目 瀏覽:544
尚葉五金機電 瀏覽:59