當前位置:編程學習大全網 - 編程軟體 - Ub編程新手

Ub編程新手

妳好

像這樣求最小值,可以用很多算法,可以用命令窗口或者優化工具箱編程。對於初學者來說,可以使用優化工具箱中的算法,自己寫壹個目標函數就可以了。

壹般的約束多變量函數可以用fmincon函數求解,但如果初始值選取不當,也可能陷入局部最優。全局最優搜索能力可以屬於智能算法,例如遺傳算法等。下面我試著用fmincon函數解決壹下:

目標函數寫好保存為funmint.m文件,函數如下;

功能?Z=funmint(x)

x 1 = x(1);

x2 = x(2);

x3 = x(3);

x4 = x(4);

s 1 = x(5);

S2 = x(6);

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

+2.781e-4 * x 1 * x4-4.738 e-5 * x2 * x3-1.212e-3 * x2+6.053 e-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 * x 1+0.067595 * x2-2.90115e-3 * x3-0.053463 * x4-1.7325 e-4 * x 1 * x2+...

1.1525 e-4 * x 1 * x3-7.4375 e-5 * x 1 * x4-6.3375 e-5 * x2 * x3+4.03125 e-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+1e 7 * ABS(-eg+0.0518 * SD+s 1)+1e 7 * ABS(0.1-eg-0.0518 * SD+S2);在命令窗口中輸入以下解決方案代碼:

清楚了嗎?

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]=?Fmin con (@ funmint,x0,[],[],[],lb,ub,[],options)可以得到壹個最小值,對應的六個變量如下:

x=[62.9860?244.9435 ?74.5278 ?21.3001 1.8670 2.0691]

最小值是:

fval=3.4326

當然,妳也可以切換到其他功能,只需更換fmincon即可。優化函數結構類似。

希望對妳有幫助!

  • 上一篇:第壹個電腦操作系統和軟件是怎麽開發出來的?
  • 下一篇:數據結構c語言版
  • copyright 2024編程學習大全網