1. network program问题

详情可参考这里
我们常常遇到的Assignment、Transportation、Maximum flow、Shortest path等问题都具有特殊的结构,可以用network program来建模。具体来说,network program指的是如下问题:
mincTx\min c^Tx
Ax=bAx= b
lxul\le x\le u
其中A1,0,1n×mA\in {-1,0,1}^{n\times m},并且每一行只有一个1和一个-1。
下面是一个例子:
运筹系列28:网络单纯形法
network program可以看做是最小费用流问题的数学模型。定义有向图G=(V,E)G=(V,E)VV用行表示,EE用列表示,从iikk有边的话,则有一列的第ii行是1,第kk行是-1。xjx_j表示第jj条边上的流量,如下图:
运筹系列28:网络单纯形法
对于这类问题,如果存在一条path,那么Σ\Sigma方向*边 = eee_{终点}-e_{起点},其中ee表示单位向量。
定理:每一个连通图都有一个伸展树(包含所有节点的树)
定理:树的AA的列相互线性独立,秩为(节点数-1)。

2. 求解方法

选择一个根节点,添加虚拟变量ww和单位向量,如下:
运筹系列28:网络单纯形法
根节点衍生出的伸展树和ewe_w构成一组基BB。我们回忆一下单纯形法的出入基过程:
每次将负数残差cNTcBTB1Nc^T_N-c^T_BB^{-1}N最小(绝对值最大)的非基变量xix_i替换为基变量,同时将(B1b(B1N)i)j(\frac{B^{-1}b}{(B^{-1}N)_i})_j最小值对应的基变量xjx_j替换为非基变量
有3个地方用到B1B^{-1}
yTB=cBTy^TB = c^T_B
Bx=NqBx= N_q
Bx=bBx=b
这三个地方都可以用上面的图快速求解,不需要再存储B1B^{-1}。以yTB=cBTy^TB = c^T_B为例:
运筹系列28:网络单纯形法
我们有:
运筹系列28:网络单纯形法
相当于从y2y_2出发遍历树。

相关文章:

  • 2022-03-02
  • 2021-12-24
  • 2021-10-19
  • 2021-04-11
猜你喜欢
  • 2021-11-12
  • 2021-04-07
  • 2021-12-03
  • 2021-06-03
  • 2021-06-24
  • 2022-12-23
  • 2021-12-17
相关资源
相似解决方案