线性规划问题之MATLAB实现

                                                                                           by WC  1.7.2016

1.Matlab规定线性规划的标准形式为:
这里写图片描述
几个不等式是问题的约束条件,记为 s.t.(即 subject to)。 MATLAB中求解线性规划的命令为:
[ x,fval ]=linprog(f,A,b)
[ x,fval ]=linprog(f,A,b,Aeq,beq)
[ x,fval ]=linprog(f,A,b,Aeq,beq,lb,ub)
其中:返回的x为决策向量的取值; 返回的fval是目标函数的最大值;f为价值向量;A和b对应的是线性不等式约束;Aeq和beq对应的是线性等式约束;lb和ub分别对应的是决策向量的下界向量和上界向量。

eg:
这里写图片描述
(1)化为Matlab标准型,即

minw=2x13x2+5x3s.t.[215311]x1x2x3[1012][111][x1x2x3]T=7

(2)求解的Matlab程序如下:

f=[-2,-3,5]'
A=[-2,5,-1;1,3,1];  b=[-10;12];
Aeq=[1,1,1];    beq=7;
[x,fval]=linprog(f,A,b,Aeq,beq,zeros(3,1));
x
fval=-fval

这里的zeros(3,1)是为了产生3行1列的全0矩阵,对应着x1,x2,x3均大于等于0的约束条件。
得出结果如下如所示:
这里写图片描述

2.可以转化为线性规划的问题

min|x1|+|x2|++|xn|s.t.AXb

(1)
这里写图片描述
可进一步把模型改写为:
这里写图片描述

eg:
这里写图片描述
做变量变换
这里写图片描述
并把新变量重新排列成一维向量
这里写图片描述
即可把模型变换为线性规划模型,其中:
这里写图片描述
(2)
计算的MATLAB程序如下所示:

c=[1:4];c=[c,c]';
a=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3]; a=[a,-a];
b=[-2;-1;1/2];
[y,fval]=linprog(c,a,b,[],[],zeros(8,1));
x=y(1:4)-y(5:8)

得出的结果如下图所示:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u013414501/article/details/50473855
今日推荐