00 前言
相信你们对branch and price的神秘之处也很是好奇了。今天咱们一块儿来揭秘该算法原理过程。不过,在此以前,请你们确保本身的branch and bound和column generation的知识务必过关,并且是很是熟悉的那种。由于branch and price算法就是branch and bound和column generation的结合体。算法
01 应用背景
branch and price是组合优化中的一种常见方法,是用于求解大规模(变量数目不少)的integer linear programming (ILP) and mixed integer linear programming (MILP) problems.优化
02 整体回顾
branch and price算法就是branch and bound和column generation的结合体。具体是怎么结合的呢?先看一张BP的算法流程图,相信你们会清晰不少:spa
03 具体流程
咱们知道branch and bound求解整数规划的过程,若是不知道看看下面这张图回顾一下: blog
在该过程当中,定界的操做是经过求解当前问题的线性松弛(LP relaxation)获得的。对于一个变量不少的大规模整数规划问题而言,其线性松弛(LP relaxation)变量无疑也是很是多的。那么,这时候,咱们上节课介绍的column generation就能够出马了。io
但在每个节点中,并不须要每一次都完完整整调用一次column generation,从新构建一次RMP再求解。分子之后子节点的RMP能够直接将父节点的RMP挪过来,只不过因为加了分支约束,此时RMP须要从新添加column,再次求解以便获得最优。class
而子节点的RMP从新添加column,再次求解的过程就是节点的bound操做了。那么,将以上的元素综合起来,就造成了咱们的branch and price算法。变量
04 代码
目前没有相关的可以公开的代码,后续可能会写一下这个算法的,嗯确定会写。能够关注公众号获取第一时间的消息: 能够关注咱们的公众号【程序猿声】哦!获取更多精彩消息!原理