1. 线性规划问题
1.1 线性规划的定义
问题的目标函数,几个不等式的约束条件,记为s.t.(即subject to)均为线性函数,则称为线性规划问题。
1.2 线性规划问题解的概念
满足约束条件的解,称为线性规划问题的可行解
使目标函数达到最大或最下值的可行解叫最优解(可以有多个)。
所有可行解构成的集合称为问题的可行域,记为R。
1.3 线性规划的matlab标准形与软件求解
min x f T x s . t . { A ⋅ x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b \min\limits_x f^T x\\ s.t.\begin{cases} A\cdot x\le b\\ Aeq\cdot x=beq\\ lb\le x\le ub \end{cases} xminfTxs.t.⎩⎪⎨⎪⎧A⋅x≤bAeq⋅x=beqlb≤x≤ub
式中 f , x , b , b e q , l b , u b f,x,b,beq,lb,ub f,x,b,beq,lb,ub为列向量,其中 f f f称为价值向量, b b b称为资源向量; A , A e q A,Aeq A,Aeq为矩阵。
Matlab 中求解线性规划的命令为
[x,fval]=linprog(f,2,b)
[x,fval]=linprog(f,A,b, Aeq,beq)
[x,fval]=linprog(f,A,,Aeq,beq,lb,ub)
式中∶x返回决策向量的取值;fval返回目标函数的最优值;f为价值向量;A和b对应线性不等式约束;Aeq和beq对应线性等式约束;b和ub分别对应决策向量的下界向量和上界向量。
例:如下线性规划问题
max z = 2 x 1 + 3 x 2 − 5 x 4 { x 1 + x 2 + x 3 = 7 2 x 1 − 5 x 2 + x 3 ≥ 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 , x 2 , x 3 ≥ 0 \max z=2x_1+3x_2-5x_4\\\begin{cases}x_1+x_2+x_3=7\\2x_1-5x_2+x_3\ge10\\x_1+3x_2+x_3\le12\\x_1,x_2,x_3\ge0\end{cases} maxz=2x1+3x2−5x4⎩⎪⎪⎪⎨⎪⎪⎪⎧x1+x2+x3=72x1−5x2+x3≥10x1+3x2+x3≤12x1,x2,x3≥0
将问题化为标准形后,求解的matlab程序如下:
f=[-2;-3;5];
a=[-2,5,-1;1,3,1];b=[-10;12];
aeq=[1,1,1];beq=7;
[x,y]=linprog(f,a,b,aeq,beq,zeros(3,1))
x,y=-y
求解的Lingo程序如下:
model:
sets:
row/1..2/:b;
col/1..3/:c,x;
links(row,col):a;
endsets
data:
c=2,3,-5;
a=-2 5 -1 1 3 1;
b=-10 12;
enddata
max=@ sum(col:c*x);
@ for(row(i):@ sum(col(j):a(i,j)*x(j))<b(i));
@ sum(col:x)=7;
end
1.4 可转化为线性规划的问题
对于一些看上去不是线性规划的问题,可以通过一些数学变换将其转换为线性规划的标准形。
如对问题 min ∣ x 1 ∣ + ∣ x 2 ∣ + ⋅ ⋅ ⋅ + ∣ x n ∣ , s . t . A x ≤ b \min |x_1|+|x_2|+···+|x_n|, s.t.Ax\leq b min∣x1∣+∣x2∣+⋅⋅⋅+∣xn∣,s.t.Ax≤b
只要令 x i = u i − v i . ∣ x i ∣ = ∣ u i ∣ + ∣ v i ∣ x_i=u_i-v_i.|x_i|=|u_i|+|v_i| xi=ui−vi.∣x