中易网

MATLAB中哪个函数可以解决下面的问题?

答案:3  悬赏:0  
解决时间 2021-11-09 00:21
  • 提问者网友:低唤何为爱
  • 2021-11-08 11:13
使max(3+2x+y+3z,4+1.5x+2.5y+2z,2+x+1.3y+2.4z,1.4+0.7x+1.3y+1.6z,0.9+3x+2.3y+4z)中的数最小,其中x,y,z满足x,y,z均大于0且小于50,,0.3x+0.9y+0.04z<2,-10<-18+2.7x+0.4y+0.2z<10
最佳答案
  • 二级知识专家网友:星星坠落
  • 2021-11-08 11:24
这是线性规划吧,用linprog。写成下面的形式:
min w
限制条件为:
2x+y+3z-w<=-3
1.5x+2.5y+2z-w<=-4
x+1.3y+2.4z-w<=-2
0.7x+1.3y+1.6z-w<=-1.4
3x+2.3y+4z-w<=0.9
(这四个实际上是w要大于等于那4项)
0.3x+0.9y+0.04z<=2
-2.7x-0.4y-0.2z<=-8
2.7x+0.4y+0.2z<=28
0<=x,y,z<=50
(所有的大于和小于应该包含等号吧?不然应该不存在最优解)
限制条件可以写成AX<=b, l<=X<=u的形式(X=(x,y,z,w)是向量,不等号是对每一项成立)
设变量的顺序是(x,y,z,w),然后就
c=[0;0;0;1];
A=[2,1,3,-1;1.5,2.5,2,-1;1,1.3,2.4,-1;0.7,1.3,1.6,-1;3,2.3,4,-1;0.3,0.9,0.04,0;-2.7,-0.4,-0.2,0;2.7,0.4,0.2,0];
b=[-3;-4;-2;-1.4;0.9;2;-8;28];
X=linprog(c,A,b,[],[],[0;0;0;-Inf],[50;50;50;Inf]) 可能抄数字的时候有抄错,最好按照这个思路,参考linprog的帮助,自己做一遍。
全部回答
  • 1楼网友:一池湖水
  • 2021-11-08 13:50
用fminimax()函数能解决极值问题。 使用格式为: [x,fval,maxfval,exitflag]=fminimax('myfun',x0,[],[],Aeq,beq,lb,ub,'mycon') myfun——自定义函数 mycon——约束函数
  • 2楼网友:安稳不如野
  • 2021-11-08 12:58
fmincon停下来是因为预测的目标函数的变化 小于的功能公差约束的默认值 满足于内的约束性的默认值。 查看下你的输入值,不要超出范围
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息