Matlab线性规划
该函数的约束包括A·x ≤ b,Aeq·x = beq,l ≤ x ≤ u。用于线性规划求解的函数为linprog函数,该函数的调用格式如下:
x = linprog(f,A,b)
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
x = linprog(f,A,b,Aeq,beq,lb,ub,x0)
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
x = linprog(problem)
= linprog(...)
= linprog(...)
= linprog(...)
= linprog(...)其中,f为f T x 中的fT ,x为返回的x;A为不等式约束系数矩阵,b为不等式约束的右项;Aeq为等式约束的左项,beq为等式约束的右项;lb、ub分别为x的下限和上限;x0为初始求解点,options为optimset命令设置的选项。fval为求解函数的值;exitflag描述退出条件;output为优化信息数据;lambda参数是解x处的拉格朗日乘子。它有以下一些属性:
[*]lambda.lower——lambda的下界;
[*]lambda.upper——lambda的上界;
[*]lambda.ineqlin——lambda的线性不等式;
[*]lambda.eqlin——lambda的线性等式。
此外,MATLAB还提供了bintprog函数用于二进制整数的线性优化。
例11-5,求0.002614 HPS + 0.0239 PP + 0.009825 EP的最小值,约束条件如下:
2500 ≤ P1 ≤ 6250
I1 ≤ 192,000
C ≤ 62,000
I1 - HE1 ≤ 132,000
I1 = LE1 + HE1 + C
1359.8I1 = 1267.8 HE1 + 1251.4 LE1 + 192 C + 3413 P1
3000 ≤ P2 ≤ 9000
I2 ≤ 244,000
LE2 ≤ 142,000
I2 = LE2 + HE2
1359.8I2 = 1267.8 HE2 + 1251.4 LE2 + 3413 P2
HPS= I1 + I2 + BF1
HPS = C + MPS +
LPSLPS = LE1 + LE2 + BF2
MPS = HE1 + HE2 + BF1 - BF2
P1+ P2 + PP ≥ 24,550
EP+ PP ≥ 12,000
MPS ≥ 271,536
LPS ≥ 100,623且所有变量均为正。
在命令行窗口输入:
%将所有变量名存储到向量中
variables = {'I1','I2','HE1','HE2','LE1','LE2','C','BF1',
'BF2','HPS','MPS','LPS','P1','P2','PP','EP'};
N = length(variables);
%创建变量编号
for v = 1:N
eval();
end
%写出目标函数
f = zeros(size(variables));
f() = ;
%写出边界条件
lb = zeros(size(variables));
lb() = ;%下边界
ub = Inf(size(variables));
ub() = ;%上边界
%写出不等式约束
A = zeros(3,16);
A(1,I1) = 1; A(1,HE1) = -1; b(1) = 132000;
A(2,EP) = -1; A(2,PP) = -1; b(2) = -12000;
A(3,) = [-1,-1,-1];
b(3) = -24550;
%写出等式约束
Aeq = zeros(8,16); beq = zeros(8,1);
Aeq(1,) = ;
Aeq(2,) = ;
Aeq(3,) = ;
Aeq(4,) = ;
Aeq(5,) = ;
Aeq(6,) = ;
Aeq(7,) = ;
Aeq(8,) = ;
%求解:
= linprog(f,A,b,Aeq,beq,lb,ub);
for d = 1:N
fprintf('%s\t\t %12.2f \n',variables{d},x(d))
end
fval输出结果如下:Optimization terminated.
I1 136328.74
I2 244000.00
HE1 128159.00
HE2 143377.00
LE1 0.00
LE2 100623.00
C 8169.74
BF1 0.00
BF2 0.00
HPS 380328.74
MPS 271536.00
LPS 100623.00
P1 6250.00
P2 7060.71
PP 11239.29
EP 760.71
fval = 1.2703e+03
页:
[1]