2支棒棒糖 发表于 2018-8-22 11:04:38

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]
查看完整版本: Matlab线性规划