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 代碼
目前沒有相關的可以公開的代碼,後續可能會寫一下這個算法的,嗯確定會寫。能夠關注公衆號獲取第一時間的消息: 能夠關注咱們的公衆號【程序猿聲】哦!獲取更多精彩消息!原理