线性规划是最优化问题的一种特殊情形,实质是从多个变量中选取一组合适的变量作为解,使得这组变量满足一组确定的线性式(约束条件),而且使一个线性函数(目标函数)达到最优。
一、线性规划的数学模型
满足以下三个条件的数学模型称为线性规划:
1,该问题可以用一组变量(决策变量)来表示一个解决方案。
2,有目标函数,是决策变量的线性函数。
3,有约束条件,可用一组线性等式或者不等式来表示。
线性规划问题的一般形式为:
式中,
c
1
,
c
2
,
.
.
.
,
c
n
c_1,c_2,...,c_n
c1,c2,...,cn叫做目标函数系数或者价值系数,
b
1
,
b
2
,
.
.
.
b
n
b_1,b_2,...b_n
b1,b2,...bn叫做资源系数。
二、线性规划问题的标准形式
线性规划问题的标准形式是目标函数要求最小,所有约束条件都是等式约束,且所有的决策变量都是非负的。
其化简形式为:
用矩阵形式表示:
m
i
n
f
(
X
)
=
c
∗
X
minf(X)=c*X
minf(X)=c∗X
s
.
t
.
A
∗
X
=
b
,
X
>
=
0
s.t. A*X=b,X>=0
s.t.A∗X=b,X>=0
任意的线性规划问题都可以转化为标准形式:
1,若目标函数求求最大值,则只需要将目标函数的系数乘-1,就可以变为求解最小值问题,求得其最优解后,把最优目标函数值反号即得原问题得目标函数值。
2,若约束条件为不等式,若是“<=“则加入松弛变量,若是”>=”,则加入剩余变量,将不等式变为等式。
3,对于无约束得变量
x
k
x_k
xk,可令
x
k
=
x
1
−
x
2
,
(
x
1
,
x
2
>
=
0
)
x_k=x_1-x_2,(x_1,x_2>=0)
xk=x1−x2,(x1,x2>=0)。
三、线性规划问题的求解
线性规划问题得可行解有无穷多个,与某一凸集上得无穷多个点一一对应,可以证明,最优解必定在凸集得顶点,而顶点得个数是有限的,单纯形法是采用跨越式得方式,高速求解最优解得一种方法。
3.1 基本思路
1,首先将线性规划问题转化为标准形式;
2,求解初始可行解;
3,判断是否为最优解;
4,如果不是最优,则迭代到其相邻得基本可行解并在此检验。
单纯形法把寻优的目标集中在所有基本可行解中,是从一个初始的基本可行解出发,寻找一条达到最优基本可行解的最佳途径。
3.2 单纯形表
为了解释以上单纯形表中的各符号意思,举一个具体的题目来说明:
1,首先确定其各矩阵
C
=
(
−
5
,
−
2
,
−
3
,
1
,
−
1
)
C=(-5,-2,-3,1,-1)
C=(−5,−2,−3,1,−1)
2,得到初始单纯形表
初始基本可行解为
X
=
[
0
,
0
,
0
,
8
,
7
]
,
Z
=
1
X=[0,0,0,8,7],Z=1
X=[0,0,0,8,7],Z=1
3,变换
x
3
x_3
x3换入变量,
x
4
x_4
x4换出变量。
得到可行解
X
=
[
0
,
0
,
4
,
0
,
3
]
,
Z
=
−
15
X=[0,0,4,0,3],Z=-15
X=[0,0,4,0,3],Z=−15
x 1 x_1 x1换入变量, x 5 x_5 x5换出变量。
得到最优解
X
=
[
6
/
5
,
0
,
17
/
5
,
0
,
0
]
,
Z
=
−
81
/
5
X=[6/5,0,17/5,0,0],Z=-81/5
X=[6/5,0,17/5,0,0],Z=−81/5
四、matlab求解
首先要将原问题转化为标准形式的线性规划:
基本函数形式为
[
x
,
f
v
a
l
]
=
l
i
n
p
r
o
g
(
c
,
A
,
b
,
A
e
q
,
b
e
q
,
l
b
,
u
b
,
X
0
,
O
P
T
I
O
N
S
)
[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub,X_0,OPTIONS)
[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub,X0,OPTIONS)