算法描述
以下假設 ILP 問題為最大化問題。
該方法首先使用單純形法解決無整數約束的線性問題。獲得最優解後,如果有約束為整數的變數取了非整數值,該算法會使用切割平面法以尋找進一步的線性約束:所有可行的整數點滿足該約束,但目前的最優解不滿足該約束。隨後這些約束不等式可以加入線性問題中,使得下次求解可以獲得“更接近整數”的結果。
在此基礎上,算法使用分支定界法,將該問題分割為多個(通常為兩個)子問題。隨後使用單純形法求解新的子問題,重複該過程。在分支定界的過程中,LP 鬆弛問題的非整數解為解的上限,整數解為解的下限。如果一個子問題的上限低於當前的全局下限,則可以除去該子問題。此外,在求解 LP 鬆弛問題時,可能產生其他切割平面。這些平面既可能是 全局切割,即適用於所有可行的整數解的切割;或 局部切割,即適用於當前分支定界子樹下所有滿足邊界約束的解的切割
分支策略
分支策略是分支切割算法中的重要一步。在這一步中,可以使用多種啟發式分支策略。下述分支策略都包含 在變數上分支。在變數上分支的大致過程為:如果變數 在當前的 LP 鬆弛問題的最優解中為分數 ,則向鬆弛問題中加入約束 。
最不可行分支
該策略優先選擇小數部分最接近 0.5 的變數。
偽成本分支
該策略的基本思想是當變數 被選作分支變數時,追蹤目標函式的變化。基於過去的變化情況,該策略會選擇預計對目標函式產生最大變化的變數作為分支變數。注意,在最初分支時,只有幾個變數進行過分支,該策略會面臨所需信息不足的情況。
強健分支
該策略在實際分支前將對變數進行測試,以確定哪個變數對目標函式的變化影響最大。 完全強健分支會測試所有候選變數,計算成本很高。可以通過只考慮一部分候選變數,並不完全解出所有對應的 LP 鬆弛,來降低計算成本 。
除了以上幾種策略外,還存在大量其他的分支策略,比如偽成本分支所需的信息不足時先採用強壯分支,在獲得足夠的分支歷史後切換到偽成本分支。