干货 | 10分钟带你掌握branch and price(分支定价)算法超详细原理解析

前言

相信大家对branch and price的神秘之处也非常好奇了。今天我们一起来揭秘该算法原理过程。

不过,在此之前,请大家确保自己的branch and bound和column generation的知识务必过关,而且是非常熟悉的那种。

因为branch and price算法就是branch and boundcolumn generation的结合体。

2

应用背景

branch and price算法就是branch and bound和column generation的结合体。具体是怎么结合的呢?先看一张BP的算法流程图,相信大家会清晰很多:

3

具体流程

我们知道branch and bound求解整数规划的过程,如果不知道看看下面这张图回顾一下:

在该过程中,定界的操作是通过求解当前问题的线性松弛(LP relaxation)得到的。对于一个变量很多的大规模整数规划问题而言,其线性松弛(LP relaxation)变量无疑也是非常多的。那么,这时候,我们上节课介绍的column generation就可以出马了。

但在每一个节点中,并不需要每一次都完完整整调用一次column generation,重新构建一次RMP再求解。分子以后子节点的RMP可以直接将父节点的RMP挪过来,只不过由于加了分支约束,此时RMP需要重新添加column,再次求解以便得到最优。

而子节点的RMP重新添加column,再次求解的过程就是节点的bound操作了。那么,将以上的元素综合起来,就形成了我们的branch and price算法。

4

代码

目前没有相关的能够公开的代码,后续可能会写一下这个算法的,嗯肯定会写。可以关注公众号【程序猿声】获取第一时间的消息。

END

原文发布于微信公众号 - 程序猿声(ProgramDream)

原文发表时间:2019-08-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券