当前位置:   article > 正文

python求解整数规划_运筹系列4:整数规划割平面法python代码

割平面法解整数规划问题python

1. 分支割平面(branch and cut)

割平面简单来说,就是添加约束条件。在使用分支定界法时,我们一般是首先尝试添加各种割平面后看能不能求出整数解,如果不行再分支。这种方法叫做Branch and Cut。

首先介绍一些基本的cut方法:

rounding:

比如整数变量x ≤ 1.5 x\le 1.5x≤1.5可以转化为x ≤ 1 x\le 1x≤1;

还有GCD reduction:比如3 x + 6 y + 9 z ≤ 11 3x+6y+9z \le 113x+6y+9z≤11,同时除以3后有x + 2 y + 3 z ≤ 3 x+2y+3z\le 3x+2y+3z≤3;

Gomory rouding cut:比如3 x + 3 y + 5 z ≤ 8 3x+3y+5z\le 83x+3y+5z≤8,同时除以3有x + y + 5 / 3 z ≤ 8 / 3 x+y+5/3z\le 8/3x+y+5/3z≤8/3,两边rounding得到x + y + z ≤ 2 x+y+z\le2x+y+z≤2

lifting:

比如4 x + y ≥ 2 , x 4x+y\ge 2, x4x+y≥2,x binary,x从0提升到1,左边slack为2,x前面的系数可以减去2变为2 x + y ≥ 2 2x+y\ge 22x+y≥2

disjunction:

比如x + y ≥ 3.5 , x , y ≥ 0 , y x+y\ge 3.5,x,y\ge0,yx+y≥3.5,x,y≥0,y integer,可以把y拆分为y ≥ 4 y \ge 4y≥4和y ≤ 3 y\le 3y≤3两部分。

2. cut介绍

剪枝方法分为对约束形式有要求的特殊剪枝以及通用的剪枝:

Generic Cuts (valid for any MILP)

Gomory Mixed Integer

Mixed Integer Rounding

Disjunctive cut

Special Structures (valid for certain relaxations of MILPs)

Knapsack / Gub Cover, Pack (many applications)<

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/218261
推荐阅读
相关标签
  

闽ICP备14008679号