首先mathematica可以很方便地进行线性规划问题(LP),但是对于离散最优化问题,例如整数规划(IP)就没有相应的函数,因此需要进行分支定界法,以下我按照论文做的一个实验:
In[9]:= NMaximize[{x1 + 4 x2,
5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0}, {x1,
x2}]
Out[9]= {17.6774, {x1 -> 1.54839, x2 -> 4.03226}}
最优解不是整数,将问题按条件x1划分为子问题LP1 (x1 <= 1) 和LP2 (x1 >= 2),再次求解:
线性规划子问题LP1:
In[10]:= NMaximize[{x1 + 4 x2,
5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0 &&
x1 <= 1}, {x1, x2}]
Out[10]= {15.6667, {x1 -> 1., x2 -> 3.66667}}
线性规划子问题LP2:
In[11]:= NMaximize[{x1 + 4 x2,
5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >&