zoukankan      html  css  js  c++  java
  • 应用运筹学4Danzig Wolfe Decomposition

    Danzig-Wolfe Decomposition

    Problem description

    Remove a constraint from the program would dramatically simplify the solving process.

    Assume the program is below and the constraint \(\ref{eq1}\) is complicated constraint.

    \[\begin{align} \min.\sum_{i}c_ix_i&\\ s.t. \sum_iA_ix_i&=b\label{eq1}\\ B_ix_i&=b_i,\forall i \end{align} \]

    Initially in total \(\sum_{j}n_j\) variables and \(m+\sum_jm_j\) constraints.

    Danzig-Wolfe Reformulation

    Replace \(x_i\) by linear combination of the extreme points in feasible region of \(B_ix_i=b_i\).

    Formally, Let \(\mathcal S_j=\{x_j|x_j\geq 0,B_jx_j=b_j\}\) be the set of feasible solutions for constraint \(j\), which is polyhedron and let \(\{x_j^1,...,x_j^{K_j}\}\) denote the extreme points of \(\mathcal S_j\). Then we can express any point in \(S_j\) as

    \[x_j=\sum_{i\in K_j}u_j^ix_j^i \]

    where \(\sum_{i\in K_j}u_j^i=1\).

    New program would be:

    \[MP(u_j^k):\min \sum_{j=1}^{n} c_{j}\left(\sum_{k=1}^{K_{j}} x_{j}^{k} u_{j}^{k}\right) \]

    with constraint:

    \[\begin{array}{ll} \text { s.t. } & \sum_{j=1}^{n} A_{j}\left(\sum_{k=1}^{K_{j}} x_{j}^{k} u_{j}^{k}\right)=b \\ & \sum_{k=1}^{K_{j}} u_{j}^{k}=1, j\in 1,...,n \\ & u_{j}^{k} \geq 0 \end{array} \]

    The new program has variables \(\sum_iK_i\) (can be very large), constraints \(m+n\).

    Observe that \(\sum_{k=1}^{K_j}x_j^ku_j^k\) represents points in \(\mathcal S_j\) and, as such, they respect constraint \(B_{j}\left(\sum_{k=1}^{K_{j}} x_{j}^{k} u_{j}^{k}\right)=b_{j}\).

    Danzig-Wolfe Decomposition

    The idea is to solve \(MP\) use Simplex method without having all the data available.

    Recap of Simplex

    Consider LP:

    \[\begin{aligned} \min z=& c^{\top} x \label{eq2} \\ & A x=b \\ & x \geq 0 \end{aligned} \]

    We can partition the variables in basis and non-basis as:

    \[\begin{aligned} \min z=& c_{B}^{\top} x_{B}+c_{N}^{\top} x_{N} \\ & B x_{B}+N x_{N}=b \\ & x_{B}, x_{N} \geq 0 \end{aligned} \]

    Then we can represent the objective using only non-basis variables, which is:

    \[x_{B}=B^{-1} b-B^{-1} N x_{N} \]

    and the objective function now turns:

    \[z=c_{B}^{\top}\left(B^{-1} b-B^{-1} N x_{N}\right)+c_{N}^{\top} x_{N}\\ =c_{B}^{\top}\left(B^{-1} b\right)+\left(c_{N}^{\top}-c_{B}^{\top} B^{-1} N\right) x_{N} \]

    Refer the coefficient of \(x_N\) as the reduced cost coefficient (RCC). If RCC is negative, increase \(x_N\) can only decrease objective. That is, we would want to bring a non-basic variable in the basis to replace one of the current basic variables. If RCC greater or equal than 0, Simplex terminates.

    Consider the dual of the program, we have:

    \[\begin{aligned} \max w=& \pi^{\top} b \\ & \pi A \leq c \end{aligned} \]

    By strong duality, we have:

    \[z^{*}=c_{B}^{\top} B^{-1} b=w^{*}=\pi^{*} b \]

    Thence the RCC is now \(c_{N}^{\top}-c_{B}^{\top} B^{-1} N=c_{N}^{\top}-\pi^{*} N\).

    DW decomposition

    Initially \(m+n\) columns available in Reduced master problem (RMP), columns are of:

    \[\left(A_{j} x_{j}^{k}, 0, \ldots, 0,1,0 \ldots, 0\right) \]

    The RCC (coefficient of \(u_j^k\)) now has version:

    \[c_{j} x_{j}^{k}-\pi^{*} A_{j} x_{j}^{k}-\sigma_{j}^{*} \]

    Solve the RMP to optimality. Check other columns not included whether their RCC is smaller than 0 and add the one into RMP, resolve. We select the column by solve:

    \[\begin{gathered} \min \left(c_{j}-\pi^{*} A_{j}\right) x_{j}-\sigma_{j}^{*} \\ B_{j} x_{j}=b_{j}\\ x_j\geq 0 \end{gathered} \]

    That is, we are looking for the extreme point \(\mathcal S_j\) with the most negative reduced cost. Let \(\bar x_j\) be the solution and we let

    \[\delta=\min _{j=1, \ldots, n}\left\{\left(c_{j}-\pi^{*} A_{j}\right) \bar{x}_{j}-\sigma_{j}^{*}\right\} \]

    If \(\delta<0\), form a new column:

    \[\left(A_{j} \bar{x}_{j *}, 0, \ldots, 0,1,0, \ldots, 0\right) \]

    with cost \(c_j\bar x_j^*\) and add it to RMP.

    Bounds

    1. Any time we solve the RMP, its objective provides us an upper bound.

      Because it is possible that during the course of the algorithm we will find new columns with a negative reduced cost that will decrease the objective value.

    2. Every time we solve the subproblem we can obtain a lower bound.

      Assume the solution \(\bar x_j^v\) is the solution in a given iteration \(v\) and solution \(x_j\)​ is global optimal. we have:

      \[\begin{aligned} \sum_{j=1}^{n}\left(c_{j}-\pi^{v} A_{j}\right) \bar{x}_{j}^{v} & \leq \sum_{j=1}^{n}\left(c_{j}-\pi^{v} A_{j}\right) \bar{x}_{j}\\ &=\sum_{j=1}^{n} c_{j} \bar{x}_{j}-\pi^{v} \sum_{j=1}^{n} A_{j} \bar{x}_{j} \\ &=\sum_{j=1}^{n} c_{j} \bar{x}_{j}-\pi^{v} b \end{aligned} \]

      which implies:

      \[\sum_{j=1}^{n} c_{j} \bar{x}_{j} \geq \sum_{j=1}^{n}\left(c_{j}-\pi^{v} A_{j}\right) \bar{x}_{j}^{v}+\pi^{v} b \]

  • 相关阅读:
    去除字符串重复数据 分类: python基础学习 2013-08-08 17:43 171人阅读 评论(0) 收藏
    python中计时工具timeit模块的基本用法 分类: python python基础学习 2013-08-08 10:05 2072人阅读 评论(0) 收藏
    socket通信简介 分类: socket 2013-08-06 17:49 209人阅读 评论(0) 收藏
    AF_INET和PF_INET的细微不同 分类: socket 2013-08-06 17:35 264人阅读 评论(0) 收藏
    查看linux操作系统版本号 分类: ubuntu 2013-08-05 10:14 265人阅读 评论(0) 收藏
    python yield生成器 分类: python基础学习 2013-08-04 15:40 324人阅读 评论(0) 收藏
    html 元素 2013-08-04 14:53 236人阅读 评论(0) 收藏
    UTF8默认编码下的MYSQL命令框中输入汉字显示乱码的问题 分类: 测试 2013-08-02 14:16 371人阅读 评论(0) 收藏
    os.path模块学习 2013-07-30 17:46 193人阅读 评论(0) 收藏
    python 操作windows下的目录 分类: python python基础学习 2013-07-30 17:30 274人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/romaLzhih/p/15582886.html
Copyright © 2011-2022 走看看