下面我们用MATLAB求解线性规划问题。线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是小于等于也可以是大于等于。为了避免这种形式多样性带来的不便,MATLAB中规定线性规划的标准形式为
其中:c,x,b,beq,lb,ub为列向量;A,Aeq为矩阵。
MATLAB中求解线性规划的命令:
[x, fval]=linprog(c, A, b)
[x, fval]=linprog(c, A, b, Aeq, beq)
[x, fval]=linprog(c, A, b, Aeg, beq, lb, ub)
其中:x返回的是决策向量的取值;fval返回的是目标函数的最优值;c为价值向量;A和b对应的是线性不等式约束;Aeq和beq对应的是线性等式约束;lb和ub分别对应的是决策向量的下界向量和上界向量。
例3 求解下列线性规划问题:
解 首先化为MATLAB的标准形式
求解的MATLAB程序如下:
c=[-2; -3; 5];
A=[-2, 5, -1; 1, 3, 1]; b=[-10; 12];
Aeq=[1, 1, 1]; beq=7;
[x, fval]=linprog(c, A, b, Aeg, beq, zeros(3, 1))
求得的最优解为x1=6.428 6,x2=0.571 4,x3=0,对应的最优值z=-14.571 4。
例4 求解下列线性规划问题:
解 求解的MATLAB程序如下:
c=[4; 1; 1];
Aeq=[2, 1, 1; 3, 3, 1]; beq=[4; 3];
[x, fval]=linprog(c, [ ], [ ], Aeg, beq, zeros(3, 1)) %没有不等式约束,对应的矩阵为空矩阵(www.xing528.com)
求得的最优解为x1 = 0,x2=0,x3 = 5.315 5,对应的最优值z = 5.315 6。
例5 求解下列线性规划问题:
解 求解的MATLAB程序如下:
c=[-1; -2];
A=[-2, 1; -1, 1; 1, -1]; b=[8; 3; 3]; lb = [0; 0]; ub = [3; 10];
[x, fval]=linprog(c, A, b, [ ], [ ], lb, ub); % 没有等式约束,对应的矩阵为空矩阵
x, fval = -fval
求得的最优解为x1=3,x2=6,对应的最优值z=15。
例6 求解下列线性规划问题:
解 首先要化为MATLAB的标准形式。
求解的MATLAB程序如下:
clc, clear
c=[1; 2; 3; 4; 1; 2; 3; 4];
A=[1, -1, -1, 1; 1, -1, 1, -3; 1, -1, -2, 3]; b=[-2; -1; -1/2];
A=[A, -A];
[y, fval]=linprog(c, A, b, [ ], [ ], zeros(8, 1)); % 没有等式约束,对应的矩阵为空矩阵
x=y(1: 4) - y(5: 8) %变换到原问题的x=u-v
求得的最优解为x1=-2,x2=x3=x4=0,对应的最优值z=2。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。