用matlab求最大值

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:54:32
目标函数Z=1.40185*(a+d)+0.0775*c+0.031*b 约束条件 0<=a+d<=10, 0<=c<=3, 0<=b<=4, 1.15*a>=b, 1.06*d>=c 我要的是用matlab求出最大值的程序,哪位高人帮忙把程序写出来
用lingo写出程序也行,谢谢啦

matalb做线性规划,整数之类的东西不是很厉害,但是还是可以跟你说一下。
Matlab中求解线性规划的命令为: linprog, 解决的线性规划的标准格式为:
min cTx x∈Rn
s.t. A·x <= b
Aeq·x = beq
VLB≤x≤VUB
其中,A, b, c, x, Aeq, beq, VLB, VUB等均表示矩阵,特别b, c, x, beq, VLB, VUB为列矩阵。
对于:
x = linprog(c, A, b, Aeq,beq ,VLB, VUB)
x:最优解
c:目标函数
A,b不等式约束
Aeq,beq:等式约束
VLB,VUB:决策变量上下界

注意哈:
如果没有等式约束,就在相应位置输入空数组[ ], 不等式约束和上下界也类似.最后的输入项若没有,则可省略.
还有linprog是求最小值的,所以你要做最大值的时候只有把目标函数取负,然后取得的最小值在取负,就得到最大值了。

你必须把它化作:
% c-1.06*d<=0 % [0 0 1 -1.06]
% b-1.15*a<=0 % [-1.15 1 0 0]
% a+d<=10` % [1 0 0 1]
% -a-d<=0 % [-1 0 0 -1]
所以约束矩阵:
A=[0 0 1 -1.06;-1.15 1 0 0;1 0 0 1;-1 0 0 -1];
b=[0 0 10 0];
上下限的值:
VLB=[-Inf 0 -Inf -Inf];
VUB=[Inf 4 Inf Inf];
所以基本过程做出的m文件就是:
c=-[1.40185,0.031,0.775,1.40185]'; %看到那个负号