求一个MATLAB源程序解决问题
目标函数:m1*t1+m2*t2的最小值条件如下:T1=(1200.73-m1*t1)*((140/t1^2)+1.63)T2=(1200.73-m1*t1)*24.41...
目标函数:m1*t1+m2*t2的最小值
条件如下:T1=(1200.73-m1*t1)*((140/t1^2)+1.63)
T2=(1200.73-m1*t1)*24.41/t1
T1^2+T2^2=T
T=2940*m1
2940*m2=((52/t2^2)+1.63)*(1200.73-m1*t1-m2*t2)
t1+t2=184.76
有个条件出错了,应该是T1^2+T2^2=T^2
t1和t2要在[0,184.76]的范围内,m1和m2大于0就行 展开
条件如下:T1=(1200.73-m1*t1)*((140/t1^2)+1.63)
T2=(1200.73-m1*t1)*24.41/t1
T1^2+T2^2=T
T=2940*m1
2940*m2=((52/t2^2)+1.63)*(1200.73-m1*t1-m2*t2)
t1+t2=184.76
有个条件出错了,应该是T1^2+T2^2=T^2
t1和t2要在[0,184.76]的范围内,m1和m2大于0就行 展开
1个回答
展开全部
这是一个非线性优化问题,目标函数为优化变量t1、t2、m1、m2的非线性函数,且存在非线性等式约束(其中有一个线性等式约束,一并按照非线性处理)。
参考代码:
function zd2202425701491314988
% x1=t1, x2=t2, x3=m1, x4=m2
f = @(x)x(3)*x(1)+x(4)*x(2);
lb = zeros(4,1);
ub = [184.76; 184.76; inf; inf];
x0 = [100; 100; 1; 1];
opt = optimset('Algorithm', 'active-set');
[x, fval] = fmincon(f, x0, [], [], [], [], lb, ub, @con, opt)
function [c,ce] = con(x)
c = [];
T1=(1200.73-x(3)*x(1))*((140/x(1)^2)+1.63);
T2=(1200.73-x(3)*x(1))*24.41/x(1);
T=2940*x(3);
ce = [...
T1^2+T2^2 - T^2;
-2940*x(4) + ((52/x(2)^2)+1.63)*(1200.73-x(3)*x(1)-x(4)*x(2));
x(1)+x(2) - 184.76
];
求出的最优解为:
x =
88.6921
96.0679
0.6496
0.6037
fval =
115.6070
x的4个元素依次为t1、t2、m1、m2,fval为目标函数的最小值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询