分支定价算法(branch and price, B&P)

前言

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

分支定界算法

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

列生成算法

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

步骤

(如上图)
1、根据原问题,选取几个可行列(可行裁剪方案),得到受限问题模型
2、通过受限问题RMP获得检验数以构建子问题的方程,子问题的约束条件即为可行列的生成条件(裁剪方案需要满足卷纸固定长度的限制,例如5米长的卷纸,只能裁剪成3米1个,2米1个;不能是4米1个,2米1个)
子问题表达:
在这里插入图片描述
子问题目标函数中检验数pi来自于RMP问题,通过RMP的基向量和非基向量划分后的对应参数c_B和B计算得到(参考单纯形法计算过程,参考[1])。需要将RMP问题标准化得到基变量非基变量,将其对应参数计算检验数,并用以求解子问题,得到新的可行列加入RMP问题。
在这里插入图片描述
3、求解子问题,子问题的解若对应目标函数(检验数)小于0,那么将解y(可行列)加入受限问题,循环步骤2~3,否则若子问题的解对应目标值不小于0,则循环结束
4、求当前受限问题RMP的最优解,即分支定价中该节点的下界

注:建议配合给出的参考[1]中的链接一起理解,步骤2~3的依据是单纯形法中进基出基的判断方法(进基出基后可得到子问题目标值中的检验数),当基确定后(通过每列的检验数判断),RMP问题最优解则可得出,也就是分支定价过程中该节点的下界。

参考文献

[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
李播.基于分支定价的手术计划调度研究

  • 16
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值