整数线性规划(分支定界法、割平面法)

整数线性规划

初步讨论
  1. 先不考虑 x i ∈ Z x_i\in Z xiZ的条件,求解原问题
  2. 根据1中解的情况寻找到 x i ∈ Z x_i\in Z xiZ的一个最优解
    • 枚举法(在可行域中找到所有的整数点,然后代入目标函数,求出最优解)的局限性太大,需要引入像引入单纯形法一样引入某种方法来处理整数问题
    • 分支定界法和割平面法
分支定界法
  • 本质:可以理解为一种二分比较,把可行域分成两个部分,在两个可行域进行比较,在两个可行域得出结果之后如果过满足条件则停止,否则继续分割可行域,逐步减小目标函数值的上界和增大下界,直到满足要求为止

  • e.g. max ⁡ z = 40 x 1 + 90 x 2 ,   s . t . { 9 x 1 + 7 x 2 ≤ 56 7 x 1 + 20 x 2 ≤ 70 x i ≥ 0 , x i ∈ Z \max z=40x_1+90x_2 , ~s.t. \left\{\begin{array}{c} 9x_1+7x_2\le 56\\ 7x_1+20x_2\le 70\\ x_i\ge 0,x_i\in Z \end{array}\right. maxz=40x1+90x2, s.t.9x1+7x2567x1+20x270xi0,xiZ

    1. 首先不考虑 x i ∈ Z x_i\in Z xiZ的约束条件,即问题 B B B max ⁡ z = 40 x 1 + 90 x 2 s . t . { 9 x 1 + 7 x 2 ≤ 56 7 x 1 + 20 x 2 ≤ 70 x i ≥ 0 \begin{array}{l}\max z=40x_1+90x_2 \\ s.t.\left\{\begin{array}{c} 9x_1+7x_2\le 56\\ 7x_1+20x_2\le 70\\ x_i\ge 0 \end{array}\right.\end{array} maxz=40x1+90x2s.t.9x1+7x2567x1+20x270xi0,求得此问题的最优解: x ∗ = ( 4.81 , 1.82 ) T ,   z ∗ = 356 x^*=(4.81,1.82)^T,~z^*=356 x=(4.81,1.82)T, z=356

    2. 基于 x 1 x_1 x1,对原问题增加两个约束条件 x 1 ≤ 4 , x 1 ≥ 5 x_1\le 4,x_1\ge 5 x14,x15(也可以对 x 2 x_2 x2增加约束条件),从而将原问题分解为两个子问题 B 1 B_1 B1 B 2 B_2 B2,不考虑整数条件解问题 B 1 B_1 B1 B 2 B_2 B2,得到各自的最优解
      B 1 :   x ∗ = ( 4 , 2.1 ) T , z ∗ = 349 B_1:~x^*=(4,2.1)^T,z^*=349 B1: x=(4,2.1)T,z=349 B 2 :   x ∗ = ( 5 , 1.57 ) T , z ∗ = 341 B_2:~x^*=(5,1.57)^T,z^*=341 B2: x=(5,1.57)T,z=341

      注:若 B B B没有可行解则直接停止;若 B B B的最优解符合整数条件,则直接得到最优解

    3. 得到 0 ≤ z ∗ ≤ 349 0\le z^*\le 349 0z349,继续对问题 B 1 B_1 B1 B 2 B_2 B2进行分解,由于 349 > 341 349>341 349>341,因此先分解 B 1 B_1 B1,增加两个约束条件 x 2 ≤ 2 , x 2 ≥ 3 x_2\le 2,x_2\ge 3 x22,x23,分解为两个子问题 B 3 B_3 B3 B 4 B_4 B4

    4. B 3 B_3 B3解都是整数,因此更新下界 340 ≤ z ∗ ≤ 341 340\le z^*\le 341 340z341 B 4 B_4 B4最优值小于下界,因此进行剪枝

      注:求出一个可行解(满足整数条件)才更新下界

      注:若求出的最优值小于当期下界,则进行剪枝,不再对该问题进行分支

    5. B 2 B_2 B2进行分解得到 B 5 B_5 B5 B 6 B_6 B6,对于 B 5 B_5 B5,最优值小于下界,剪枝; B 6 B_6 B6无可行解

    6. 最终得到最优整数解为 x ∗ = ( 4 , 2 ) T , z ∗ = 340 x^*=(4,2)^T,z^*=340 x=(4,2)T,z=340

    请添加图片描述

割平面法
  • 割平面的本质是找到一个特殊的约束,以减小原问题的可行域。特殊点:1. g 新 g_新 g像一把刀一样,切下去把一部分非整数解直接排除掉,2. Cannot read property 'type' of undefined解(交点)是整数点

  • e.g. max ⁡ z = x 1 + x 2 ,   s . t . { − x 1 + x 2 ≤ 1 3 x 1 + x 2 ≤ 4 x i ≥ 0 , x i ∈ Z \max z=x_1+x_2 , ~s.t. \left\{\begin{array}{c} -x_1+x_2\le 1\\ 3x_1+x_2\le 4\\ x_i\ge 0,x_i\in Z \end{array}\right. maxz=x1+x2, s.t.x1+x213x1+x24xi0,xiZ

    1. 首先引入松弛变量化成等式约束: max ⁡ z = x 1 + x 2   s . t . { − x 1 + x 2 + x 3 = 1 3 x 1 + x 2 + x 4 = 4 x i ≥ 0 , x i ∈ Z \begin{array}{l}\max z=x_1+x_2 \\~s.t.\left\{\begin{array}{c} -x_1+x_2+x_3= 1\\ 3x_1+x_2+x_4= 4\\ x_i\ge 0,x_i\in Z \end{array}\right.\end{array} maxz=x1+x2 s.t.x1+x2+x3=13x1+x2+x4=4xi0,xiZ
      不考虑整数条件求得最优解 x = ( 3 4 , 7 4 , 0 , 0 ) T , max ⁡ z = 5 2 x=(\frac{3}{4},\frac{7}{4},0,0)^T,\max z=\frac{5}{2} x=(43,47,0,0)T,maxz=25

      请添加图片描述

    2. 在上述单纯形法计算的终表中可以得到相应的表达式
      x 1 − 1 4 x 3 + 1 4 x 4 = 3 4 x 2 + 3 4 x 3 + 1 4 x 4 = 7 4 x_1-\frac{1}{4}x_3+\frac{1}{4}x_4=\frac{3}{4}\\ x_2+\frac{3}{4}x_3+\frac{1}{4}x_4=\frac{7}{4} x141x3+41x4=43x2+43x3+41x4=47

    3. 将系数和常数项都分解成整数和非负真分数(包括0)两部分之和然后整数和分数部分分开
      x 1 − x 3 = 3 4 − ( 3 4 x 3 + 1 4 x 4 ) x 2 − 1 = 3 4 − ( 3 4 x 3 + 1 4 x 4 ) x_1-x_3=\frac{3}{4}-(\frac{3}{4}x_3+\frac{1}{4}x_4)\\ x_2-1=\frac{3}{4}-(\frac{3}{4}x_3+\frac{1}{4}x_4) x1x3=43(43x3+41x4)x21=43(43x3+41x4)

    4. 根据 x 1 x_1 x1 x 2 x_2 x2是整数可以推出 x 3 x_3 x3 x 4 x_4 x4也是整数。上述等式左侧是整数,因此右侧也是整数,于是右侧最大值只能为0,即
      3 4 − ( 3 4 x 3 + 1 4 x 4 ) ≤ 0 \frac{3}{4}-(\frac{3}{4}x_3+\frac{1}{4}x_4)\le 0 43(43x3+41x4)0

    5. 将此不等式作为新的约束条件(切割约束、切割方程),并引入松弛变量得到
      − 3 x 3 − x 4 + x 5 = − 3 -3x_3-x_4+x_5=-3 3x3x4+x5=3 请添加图片描述

    6. 使用对偶单纯形法或者人工变量法进行计算

      由于系数列中 x 5 x_5 x5对应的系数 b b b为负数,因此选择 x 5 x_5 x5作为换出变量。由于
      θ = min ⁡ j ( c j − z j a l j ∣ a l j < 0 ) = min ⁡ [ − 1 2 − 3 , − 1 2 − 1 ] = 1 6 \theta=\min\limits_j\left(\frac{c_j-z_j}{a_{lj}}\left|a_{lj}<0\right.\right)=\min\left[\frac{-\frac{1}{2}}{-3},\frac{-\frac{1}{2}}{-1}\right]=\frac{1}{6} θ=jmin(aljcjzjalj<0)=min[321,121]=61
      因此选择 x 3 x_3 x3作为换入变量,使用单纯形法进行迭代

      请添加图片描述

    7. 最终解得最优解 x = ( 1 , 1 , 1 , 0 , 0 ) T x=(1,1,1,0,0)^T x=(1,1,1,0,0)T,最优值 max ⁡ z = 1 × 1 + 1 × 1 + 0 × 1 = 2 \max z=1\times 1+1\times 1+0\times 1=2 maxz=1×1+1×1+0×1=2

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值