前言

简述分支定价算法原理,如有错误可私信,谢谢。部分截图来自本人汇报所用PPT以及参考文献。以下均以最小化问题为例。

分支定界算法

分支定价算法(branch and price, B&P)=分支定界(branch and bound, B&B)+列生成(column generation, CG, 线性规划)。其中列生成算法用于求节点的下界,即节点松弛模型的最优解。列生成算法因其求解方法的本质会大大减少计算量,求解的并非节点松弛模型本身,而是受限制的松弛模型,即减少了决策变量规模。分支定价算法其他步骤与分支定界算法相同,只是下界计算由列生成算法完成。如下为流程图。
分支定价算法(branch and price, B&P)

列生成算法

分支定价算法(branch and price, B&P)
列生成算法所求解的问题大都决策变量规模非常大,相应地其约束系数也非常多(如上图每个xj对应一组{a1j,…,aij,…,anj}),不可能同时表达出来一起求解,典型问题就是切卷纸的问题,顾客需要不同长度的卷纸若干,需要对固定长度的卷纸进行裁剪。对卷纸而言可行的裁剪方案的约束条件是不超过卷纸的固定长度(可能会有巨多种),对整个问题而言,就是找到一个解决方案(方案由裁剪方案与裁剪数量组成,如裁剪方案1裁剪5卷纸,裁剪方案2裁剪3卷纸可得到最终结果)得到顾客想要的若干不同长度卷纸,并使用最少的原固定长度的卷纸。
分支定价算法(branch and price, B&P)
列生成特点为无需列出所有可行的裁剪方案(恢复成多)再进行求解,只需先列出几个裁剪方案然后随着求解这几个裁剪方案下的原问题(主问题,Master Problem)的受限问题(Restricted Master Problem),再不断迭代增加对问题有益的裁剪方案最终求出松弛问题的最优解。

步骤

(如上图)
1、根据原问题,选取几个可行列(可行裁剪方案),得到受限问题模型
2、通过受限问题RMP获得检验数以构建子问题的方程,子问题的约束条件即为可行列的生成条件(裁剪方案需要满足卷纸固定长度的限制,例如5米长的卷纸,只能裁剪成3米1个,2米1个;不能是4米1个,2米1个)
子问题表达:
分支定价算法(branch and price, B&P)
子问题目标中检验数来自于RMP问题
分支定价算法(branch and price, B&P)
3、求解子问题,子问题的解若对应目标函数(检验数)小于0,那么将解y(可行列)加入受限问题,循环步骤2~3,否则若子问题的解对应目标值不小于0,则循环结束
4、求当前受限问题RMP的最优解,即分支定价中该节点的下界

注:建议配合给出的参考[1]中的链接一起理解,步骤2~3的依据是单纯形法中进基出基的判断方法,当基确定后(通过每列的检验数判断),问题最优解则可得出。

参考文献

[1] 列生成:https://www.cnblogs.com/dengfaheng/p/11249879.html
https://www.jianshu.com/p/8be0083886ed
https://www.cnblogs.com/cruelty_angel/p/10493527.html

[2] 分支定界:https://www.cnblogs.com/dengfaheng/p/11225612.html
[3] 分支定价:https://my.oschina.net/u/4354879/blog/3432783
李播.基于分支定价的手术计划调度研究

相关文章:

  • 2021-09-18
  • 2021-07-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2021-06-07
  • 2021-11-06
  • 2021-12-07
猜你喜欢
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
  • 2021-12-16
  • 2022-12-23
  • 2021-08-12
  • 2021-10-06
相关资源
相似解决方案