本文根據PuLP文檔翻譯而來,原文請參考
https://pythonhosted.org/PuLP/main/optimisation_concepts.html
線性編程
最簡單的數學程序類型是線性程序。要使您的數學程序成爲線性程序,您需要滿足以下條件:
- 決策變量必須是實變量;
- 目標必須是線性表達;
- 約束必須是線性表達式。
線性表達式是以下形式的表達式
其中 和b是已知的常數 是變量。求解線性程序的過程稱爲線性編程。線性編程通過修訂的單純形法(也稱爲原始單純形法),雙單純形法或內點法進行。像cplex這樣的解算器允許您指定使用哪種方法,但我們在此不再詳述。
整數編程
整數程序幾乎與線性程序相同,但有一個非常重要的例外。整數程序中的某些決策變量可能只需要包含整數值。變量稱爲整數變量。由於大多數整數程序包含連續變量和整數變量的混合,因此它們通常稱爲混合整數程序。雖然線性編程的變化很小,但對解決方案過程的影響是巨大的。整數程序可能是非常難以解決的問題,並且目前有許多研究發現解決整數程序的“好”方法。可以使用分支綁定過程來解決整數程序。
注意對於任何合理大小的MIP,解決方案時間隨着整數變量數量的增加呈指數增長。