下面这道题,求数学建模问题的最优解,用matlab怎么编程?

2024-11-29 15:58:54
推荐回答(4个)
回答1:

function love%主函数,也可以把这一段放在命令窗中运行.那样得把sub_f(x)函数存放在WORK中
clear;clc;
% x11,x12,x13,y22,y33,x22,x23 ->盯纯x(1),x(2),x(3),x(4),x(5),x(6),x(7)
maxf=inline('亩梁0.25*(x(1)+x(2)+x(3))*x(4)+(x(1)+x(2)+x(3))*(1-x(4))*0.2+(-x(2)+x(6)+x(7))*x(5)*0.23+(-x(2)+x(6)+x(7))*(1-x(5))*0.185','x') ;

%st. x(2)*80+x(3)*100+x(7)*85<=900
%-x(3)-(7)<=0
%x(3)+x(7)<=3.5

A=[0 80 100 0 0 0 85
0 0 -1 0 0 0 -1
0 0 1 0 0 0 1];
b=[900;0;3.5];

%0<=x(2)<=8.2
%0<=x(4)<凯耐咐=1
%0<=x(5)<=1

Lb=[-inf 0 -inf 0 0 -inf -inf];
Ub=[inf 8.2 inf 1 1 inf inf];

x0=0.5*ones(1,7);

Aeq=[];beq=[];

[x,f]=fmincon(maxf,x0,A,b,Aeq,beq,Lb,Ub,@sub_f);
x=x,f=-f

function [f feq]=sub_f(x)
f(1)=(x(1)+x(2)+x(3))*x(4)*1.4+(x(6)-x(2)+x(7))*x(5)*1.65-7.5;
f(2)=(x(1)+x(2)+x(3))*(x(4)*1.4+6.1)+(x(6)-x(2)+x(7))*(x(5)*1.65+7.35)-76.5;
feq(1)=0;feq(2)=0;

结果:
x =

1.0e+015 *

-4.4110 0.0000 -0.1376 0.0000 0.0000 -4.1338 0.1376

f =

4.8952e+018

也可以看我的博客文章的例子;
http://hi.baidu.com/jingtao1016/blog/item/22f34031a3cedbad5fdf0ee8.html

回答2:

用fmincon函数
你看看help fmincon
主要是建立两滚简个m文件,一个myfun放你的f(x),注友带意,这里要放-f(x),因为你要求最大值,fmincon是求最小值的
另一个mycon放非线性约束条件,这俩,(x11+x12+x13)y11*1.4+(x22-x12+x23)y22*1.65<=7.5
(x11+x12+x13)(y11*1.4+6.1)+(x22-x12+x23)(y22*1.65+7.35)<=76.5
把线性约束条件写成矩大告裤阵A,B
直接调用
X=fmincon(@myfun,X0,A,B,[],[],LB,UB,@mycon)
LB,UB是自变量的上下限
X0为初值,一般需要多尝试几个初值

回答3:

对于优化问题,你可以尝试使用lingo10,做起来比matlab要方便的多

回答4:

其实数学建模还有很多软件,这样的优化问题都是用LINGO求解的~