假设有这样一个例题
我们这里有两个项目,几种设备。我们能够列出的方程有。
建模求解
m
a
x
z
=
2
x
1
+
x
2
max\space \space z = 2x_1+x_2
max z=2x1+x2
s
.
t
.
{
0
x
1
+
5
x
2
≤
15
6
x
1
+
2
x
2
≤
24
x
1
+
x
2
≤
5
x
1
,
x
2
≥
0
s.t.\begin{cases}0x_1+5x_2\leq 15\\6x_1+2x_2\leq 24\\x_1+x_2\leq 5\\x_1,x_2\geq 0\end{cases}
s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧0x1+5x2≤156x1+2x2≤24x1+x2≤5x1,x2≥0
线性规划的标准形式
m
a
x
z
=
∑
j
=
1
n
c
j
⋅
x
j
max\space \space z = \sum^n_{j=1}c_j\cdot x_j
max z=j=1∑ncj⋅xj
s
.
t
.
{
∑
j
=
1
n
a
i
j
x
j
=
b
i
(
i
=
1...
m
)
x
j
≥
0
s.t.\begin{cases}\sum^n_{j = 1}a_{ij}x_j = b_i (i = 1...m)\\x_j\geq 0\end{cases}
s.t.{∑j=1naijxj=bi(i=1...m)xj≥0
- 所有的方程都可以转化为这种形式,只要加入松弛变量即可。
m a x z = 2 x 1 + x 2 max\space \space z = 2x_1+x_2 max z=2x1+x2
s
.
t
.
{
0
x
1
+
5
x
2
+
x
3
=
15
6
x
1
+
2
x
2
+
x
4
=
24
x
1
+
x
2
+
x
5
=
5
x
1
,
x
2
,
x
3
,
x
4
,
x
5
≥
0
s.t.\begin{cases}0x_1+5x_2+x_3 = 15\\6x_1+2x_2+x_4= 24\\x_1+x_2+x_5 = 5\\x_1,x_2,x_3,x_4,x_5\geq 0\end{cases}
s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧0x1+5x2+x3=156x1+2x2+x4=24x1+x2+x5=5x1,x2,x3,x4,x5≥0
如果一开始
x
j
x_j
xj无限制,那么我们可以再用
x
j
=
x
j
′
−
x
j
′
′
且
x
j
′
,
x
j
′
′
>
0
x_j = x_j'-x_j''且 x_j',x_j''>0
xj=xj′−xj′′且xj′,xj′′>0来表示
一旦转化成了标准型,那就可以用单纯形方法做
- 根据图解法,我们可以得到一些定理。
- 定理:单纯形法解一定在凸集(非分块聚合的凸形状解),最优解一定在顶点上。
步骤
- 我们先随便选择一个点,找到一个最基本的解。
- 然后再看相邻的两个点,如果相邻的点结果更优的话,那就往相邻的点走;反复迭代,直到相邻的点没有当前点解好,则问题解决(不就是个暴力找点的方法嘛)
单纯形表
- 在计算机上使用单纯形法解决规划问题的数据结构。