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

使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

这是线性规划吧,用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的帮助,自己做一遍。

追问

不好意思,看错了,把linprog看成是lingo了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-14
用fminimax()函数能解决极值问题。
使用格式为:
[x,fval,maxfval,exitflag]=fminimax('myfun',x0,[],[],Aeq,beq,lb,ub,'mycon')
myfun——自定义函数
mycon——约束函数