核心思想:
把全部可行解空间反复地分割为越来越小的子集,称为分支;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。
在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。
简单来讲就是:最优性条件与分而治之:
①设有最大化的整数规划问题A,先解与之相应的线性规划问题B
②若B的最优解符合A的整数条件,该解即为A的解
③若B的最优解不符合A的整数条件,那么B的最优目标函数必是A的最优目标函数的上界,记作。而A的任意可行解的目标函数值将是的一个下界
⑤解整数规划的连续松弛问题(线性规划)来得到该子问题的上界
④分支定界法就是设置解整数规划的连续松弛问题(线性规划)来得到子问题,将B的可行域分成子区域(称为分支)的方法,通过子问题求解,逐步减小和增大,最终求到
优缺点:难于应对大规模问题
基本流程:
标准式,目标函数为最大值
①设整数规划问题为IP
,对应松弛的线性规划问题为LP,(LP可理解为删除整数条件后的线性回话问题)。
求解LP,可能得到如下几种情况
LP无可行解,则IP也没有可行解.
LP有最优解切解的各个分量均为整数,即已经为IP问题的最优解,停止计算.
LP有最优解,但不符合IP中的整数条件的要求,设此时的目标数值为 , IP问题的最优目标值为,则满足≥,即松弛的线性规划解为整数规划解的上界。任意可行解的目标函数值将是的一个下界 (一般取0)
②迭代
分支:在LP的最优解中任选一个不符合整数条件的变量(一般选择最大值的非整数分量构造添加约束条件),一般 添加大于向上取整,小于向下取整,将这两个条件分别加入问题LP
,从而将LP
拆分为两个子问题LP1
和LP2
. 在松弛整数约束的条件下分别求解LP1
和LP2
.
定界:以每个子问题为一个分支并表明求解结果,与其他问题的解进行比较,找到最优目标函数值的最小者作为新的上界,从符合整数条件的分支中,找出目标函数值的最大者作为新的下界
剪枝:各分支的最优目标函数值中若存在小于下界,则剪去该分支,如果大于且不符合整数条件,则重复分支步骤,直到最优目标函数值为止,得到最优整数解。
算法