下面这道题,求数学建模问题的最优解,用matlab怎么编程? 20
maxf(x)=(x11+x12+x13)y11*0.25+(x11+x12+x13)(1-y11)*0.2+(-x12+x22+x23)y22*0.23+(-x12+x...
maxf(x)=(x11+x12+x13)y11*0.25+(x11+x12+x13)(1-y11)*0.2+(-x12+x22+x23)y22*0.23+(-x12+x22+x23)(1-y22)*0.185
st. x12*80+x23*85+x13*100<=900
(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
0<=x13+x23<=3.5
0<=y11<=1
0<=y22<=1
0<=x12<=8.2
我是大二的,才接触数学建模没几天,matlab这个软件更加不熟悉,我们选修课只教怎么构建数学模型,没教怎么用这个软件。所以小弟要完全看懂您的解答还很困难。上面的题是我们建立的,就是不知道怎么用这个软件来解,希望您给予进一步的指导,或者直接帮小弟做出来,将不胜感激!!!谢谢!!! 展开
st. x12*80+x23*85+x13*100<=900
(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
0<=x13+x23<=3.5
0<=y11<=1
0<=y22<=1
0<=x12<=8.2
我是大二的,才接触数学建模没几天,matlab这个软件更加不熟悉,我们选修课只教怎么构建数学模型,没教怎么用这个软件。所以小弟要完全看懂您的解答还很困难。上面的题是我们建立的,就是不知道怎么用这个软件来解,希望您给予进一步的指导,或者直接帮小弟做出来,将不胜感激!!!谢谢!!! 展开
展开全部
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
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
展开全部
用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为初值,一般需要多尝试几个初值
你看看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为初值,一般需要多尝试几个初值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于优化问题,你可以尝试使用lingo10,做起来比matlab要方便的多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实数学建模还有很多软件,这样的优化问题都是用LINGO求解的~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询