求助matlab程式設計演算法尋優

2021-08-02 04:14:23 字數 1512 閱讀 9516

1樓:

你好像這樣的求最小值,可以用很多演算法,可以用命令視窗程式設計,或者利用優化工具箱。對於初學者,可以利用optimization toolbox裡面演算法,只要自己寫一個目標函式就可以了。

一般的有約束多變數函式都可以通過fmincon函式求解得到,但是如果初始值選取不恰當也可以可以陷入區域性最優。全域性最優搜尋能力比較強的可能屬智慧演算法了,如遺傳演算法等等下面我採用fmincon函式嘗試求解:

目標函式寫好好,儲存為funmint.m檔案,函式如下;

function z=funmint(x)

x1=x(1);

x2=x(2);

x3=x(3);

x4=x(4);

s1=x(5);

s2=x(6);

eg=64.11-0.043-0.49*x2-0.06*x3-0.075*x4-3.258e-4*x1*x2+9.712e-5*x1*x3...

+2.781e-4*x1*x4-4.738e-5*x2*x3-1.212e-3*x2+6.053e-4*x3*x4+...

7.775e-4*x1^2+1.125e-3*x2^2-8.665e-4*x3^2+5.89e-3*x4^2;

sd=-6.02953+0.03583*x1+0.

067595*x2-2.90115e-3*x3-0.053463*x4-1.

7325e-4*x1*x2+...

1.1525e-4*x1*x3-7.4375e-5*x1*x4-6.3375e-5*x2*x3+4.03125e-4*x2*x4-...

3.16562e-4*x3*x4+3.625e-6*x1^2-1.07375e-4*x2^2-2.68437e-5*x3^2-3.27344e-4*x4^2;

z=sd+1e7*abs(-eg+0.0518*sd+s1)+1e7*abs(0.1-eg-0.0518*sd+s2);

在命令視窗中輸入下面這些求解**:

clear

lb=[60 235 40 21 0 0];

ub=[80 255 80 29 inf inf];

x0=[70 245 60 25 10 10];

options=optimset('algorithm','active-set');

[x,fval]= fmincon(@funmint,x0,,,,,lb,ub,,options)

可以得到一個最小值,以及對應的6個變數如下:

x=[62.9860  244.9435   74.5278   21.3001    1.8670    2.0691]

最小值為:

fval=3.4326

當然你也可以換用其他函式,只要把fmincon換了就可以。優化函式結構都差不多。

希望對你有幫助!

2樓:匿名使用者

演算法有很多種。你可以當做練習編寫。不過在matlab 2014a中有優化工具箱,可以直接找出最優解。

急求一份多目標遺傳演算法matlab**!

matlab程式設計問題,matlab程式設計問題,題目如下

提示的很清楚了啊 error using inputs must be a scalar and a square matrix.to pute elementwise power,use power instead.用冪的時候如果次數為一向量或矩陣,應當用.而單用 是不行專的。希望可屬以幫到你。m...

演算法與程式設計,演算法與程式設計是什麼關係 急

給一樓的吧,人家都給你答出來了 演算法與程式設計是什麼關係?急 演算法是程式設計的一部分,一般都是要先設計演算法,再進行程式設計,除錯 執行的 什麼是演算法與程式設計 j a 演算法就是吧一個實際問題抽象成數學模型,就是解決一個問題的所有步驟 計算機解決問題的方法和人不一樣,所以人要設計能用計算機的...

Matlab程式,Matlab程式設計,要程式?

pn c vn 就是啦 關係圖 pl 4 vo 0.005 po 0.6 pl c po vo v 0 0.0002 0.0037 vn vo v pn c.vn 以下畫vn,pn關係圖 plot vn,pn xlabel vn ylabel pn 補充 那是當然,你寫的那裡面,vn,pn都只是一個...