分支定界算法的理解

1. 核心思想

分支定界法的基本思想是对有约束条件的最优化问题的所有可行解(数目有限)空间进行搜索

2. 什么是分支定界?

分支定界算法始终围绕着一颗搜索树进行的,我们将原始问题看出搜索树的根节点,从这里出发,分支的含义就是将大的问题分割成小的问题,大问题可以看成是搜索树的父节点,那么从大问题分割出来的小问题就是父节点的子节点了。分支的过程就是不断给树增加子节点的过程。
而定界就是在分支的过程去检查子问题的上下界,如果子问题不能产生一个比当前最优解还要优的解,那么砍掉这一支,直到所有子问题都不能产生一个最优的解的时候,算法结束。
在这里插入图片描述
分支定界很像枚举的感觉,只不过加上了定界的过程,变成了一种非常有规律的枚举

原理解析

举个例子:
首先,对于一个整数规划模型
在这里插入图片描述
因为求解的是最大化问题,不妨设当前的最优解(函数值)为负无穷

  1. 首先从主问题分出两支子问题:
    在这里插入图片描述
    通过线性松弛(规划)求得两个子问题的upper bound为Z_LP1 = 12.75,Z_LP2 = 12.2。由于Z_LP1 和Z_LP2都大于BestV=-INF,说明这两支有搞头。继续往下。

2.从节点1和节点2两个子问题再次分支,得到如下结果:
在这里插入图片描述
子问题3已经不可行,无需再理。子问题4通过线性松弛得到最优解为10,刚好也符合原问题0的所有约束,在该支找到一个可行解,更新BestV = 10。

子问题5通过线性松弛得到upper bound为11.87>当前的BestV = 10,因此子问题5还有戏,待下一次分支。而子问题6得到upper bound为9<当前的BestV = 10,那么从该支下去找到的解也不会变得更好,所以剪掉!

  1. 对节点5进行分支,得到:
    在这里插入图片描述
    子问题7不可行,无需再理。子问题8得到一个满足原问题0所有约束的解,但是目标值为4<当前的BestV=10,所以不更新BestV,同时该支下去也不能得到更好的解了。
  1. 此时,所有的分支遍历都完成,我们最终找到了最优解。

将线上的值带进去,留下来的值就是最优解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值