线性规划问题

我们要优化一个目标函数

F(x1,x2,...xp)=c1x1+c2x2+...+cpxp
也就是求它的最大值或者最小值。同时还有很多约束条件
ai1x1+...+aipxpbiai1x1+...+aipxpbiai1x1+...+aipxp=bi
以及非负的限制条件
xj0

解集的定义

  • x=(x1,x2,...,xp)​​​ 满足线性约束条件的是一个
  • 如果 x​​ 还满足非负限制条件,那么是一个可行解
  • x
    是最优解
  • X
    是所有最优解的集合

转化问题

每个线性规划问题可以转化成最大值的线性规划问题:

最大化目标函数

F(x1,x2,...xp)=c1x1+c2x2+...+cpxp
约束条件:
j=1paijxjbixj0
解释:

  1. 如果是大于等于,可以两边同时乘一个 1
  2. 如果是求最小值,可以求 F(x) 的最大值
  3. 如果是相等,可以拆成一个大于等于一个小于等于

线性规划问题的范式

对于每一个小于等于的约束条件,我们可以给他加上一个变量,使得它变成一个相等的约束条件。

j=1paijxj+xp+i=bi
这里的 xp+i 是对于的偏移变量

所以我们就得到了范式 Normalform

最大化目标函数:

F(x1,x2,...xp)=c1x1+c2x2+...+cpxp
约束条件
j=1paijxj=bixj0
我们也可以表示成我矩阵的写法

最大化目标函数

F(x)=cTx
约束条件
Ax=bx0

kanonische Form

  • 在标准式的前提下,所有约束条件右边都是正数
  • 每行都有一个Basisvariable(当前行的系数是1,在所有其他行的系数是0)

解决线性规划Simplex算法

比如这个线性规划

max:8x1+12x26x1+8x27210x1+20x2140xi0
首先转换为范式,添加偏移变量
6x1+8x2+x3=7210x1+20x2+x4=140
然后设 z=8x1+12x2 变形一下
z8x112x2=06x1+8x2+x3=7210x1+20x2+x4=140
发现它已经是kanonischer Form

首先找到一个解Basislösung

z x1 x2 x3 x4 Res
z 1 8 12 0
x3 6 8 1 72
x4 10 20 1 140

然后在第1行找到一个负数最小的 x​ ,此时是 x2

然后计算对于的 Res/ 这里是

x3:72/8=9x4:140/20=7
找到结果最小的且是正数与之交换,这里是 x2x4

z x1 x2 x3 x4 Res
z 1 8 12 0
x3 6 8 1 72
x2 10 20 1 140

然后通过行操作转换成 kanonischer Form

z x1 x2 x3 x4 Res
z 1 2 3/5 84
x3 2 1 2/5 16
x2 1/2 1 1/20 7

然后重复操作,这里交换 x1x3

x3:16/2=8x4:7/0.5=14

z x1 x2 x3 x4 Res
z 1 1 1/5 100
x1 1 1/2 1/5 8
x2 1 1/4 3/20 3

到这里就结束了

最优解是 x=(8,3),z=100

大M法找初始解

如线性规划问题

max:2x1x2x1+x22x1+x24
首先变成标准式子
max:z=2x1x2x1+x2x3=2x1+x2+x4=4
此时第2行的式子没有Basisvariable,然后我们再所有没有Basisvariable的行添加一个变量, 转换成下面的问题, 这里假设M 是一个很大的正数
max:z=2x1x2Mw1x1+x2x3+w1=2x1+x2+x4=4
此时有

x1 x2 x3 x4 w1 Res
z 2 1 M 0
w1 1 1 1 1 2
x4 1 1 1 4

但此时还不是kanonische Form, 还需要转换

x1 x2 x3 x4 w1 Res
z M2 1M M 2M
w1 1 1 1 1 2
x4 1 1 1 4

这样就是kanonische Form了,然后正常计算

交换 x2w1

x1 x2 x3 x4 w1 Res
z 1 1 1+M 2
x2 1 1 1 1 2
x4 2 1 1 1 2

交换 x1x4

x1 x2 x3 x4 w1 Res
z 3/2 1/2 3/2+M 1
x2 1 1/2 1/2 1/2 3
x1 1 1/2 1/2 1/2 1

于是就能解出来了 x=(1,3),z=1

对偶性

逻辑

NOT

Z¬A=1A

OR

ZABAZABBZABA+B

AND

ZABAZABBZABA+B1

推出

ZAB1AZABBZAB1+2BA