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的算法流程圖,相信大家會清晰很多:
03 具體流程
我們知道branch and bound求解整數規划的過程,如果不知道看看下面這張圖回顧一下:
在該過程中,定界的操作是通過求解當前問題的線性松弛(LP relaxation)得到的。對於一個變量很多的大規模整數規划問題而言,其線性松弛(LP relaxation)變量無疑也是非常多的。那么,這時候,我們上節課介紹的column generation就可以出馬了。
但在每一個節點中,並不需要每一次都完完整整調用一次column generation,重新構建一次RMP再求解。分子以后子節點的RMP可以直接將父節點的RMP挪過來,只不過由於加了分支約束,此時RMP需要重新添加column,再次求解以便得到最優。
而子節點的RMP重新添加column,再次求解的過程就是節點的bound操作了。那么,將以上的元素綜合起來,就形成了我們的branch and price算法。
04 代碼
目前沒有相關的能夠公開的代碼,后續可能會寫一下這個算法的,嗯肯定會寫。可以關注公眾號獲取第一時間的消息:
可以關注我們的公眾號【程序猿聲】哦!獲取更多精彩消息!