用mathematica進行整數規劃

       首先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 >= 0 && 
   x1 >= 2}, {x1, x2}]

Out[11]= {17., {x1 -> 2., x2 -> 3.75}}

兩個答案都不是可行解,比較兩個答案,LP2的上界17比LP1的上界大,選LP2進行分支,按照x2劃分爲子問題LP3 (x2 <= 
    3) 和LP4 (x2 >= 3)

線性規劃子問題LP3:

In[12]:= NMaximize[{x1 + 4 x2, 
  5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0 && 
   x1 >= 2 && x2 <= 3}, {x1, x2}]

Out[12]= {15.2, {x1 -> 3.2, x2 -> 3.}}

線性規劃子問題LP4:

In[13]:= NMaximize[{x1 + 4 x2, 
  5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0 && 
   x1 >= 2 && x2 >= 3}, {x1, x2}]

Out[13]= {17., {x1 -> 2., x2 -> 3.75}}

In[14]:= NMaximize[{x1 + 4 x2, 
  5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0 && 
   x1 >= 2 && x2 >= 4}, {x1, x2}]

\:6B63\:5728\:8BA1\:7B97In[14]:= NMaximize::nsol: There are no points that satisfy the constraints {5 x1+8 x2<=40,-2 x1+3 x2<=9,x1>=0,x2>=0,x1>=2,x2>=4}.

Out[14]= {-\[Infinity], {x1 -> Indeterminate, x2 -> Indeterminate}}

說明LP4沒有可行解,剪掉分支LP4,對LP3進行分支LP5 (X1 <= 3) 和LP6 (x1 >= 4)

線性規劃子問題LP5:

In[15]:= NMaximize[{x1 + 4 x2, 
  5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0 && 
   x1 <= 3 && x2 <= 3}, {x1, x2}]

Out[15]= {15., {x1 -> 3., x2 -> 3.}}

線性規劃子問題LP5:

In[16]:= NMaximize[{x1 + 4 x2, 
  5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0 && 
   x1 >= 4 && x2 <= 3}, {x1, x2}]

Out[16]= {14., {x1 -> 4., x2 -> 2.5}}

由於待解的LP1總是大於15,對LP1進行分支爲LP7 (x2 <= 3) 和LP8 (x2 >= 4)

線性規劃子問題LP7:

In[17]:= NMaximize[{x1 + 4 x2, 
  5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0 && 
   x1 <= 1 && x2 <= 3}, {x1, x2}]

Out[17]= {13., {x1 -> 1., x2 -> 3.}}

線性規劃子問題LP8:

In[18]:= NMaximize[{x1 + 4 x2, 
  5 x1 + 8 x2 <= 40 && -2 x1 + 3 x2 <= 9 && x1 >= 0 && x2 >= 0 && 
   x1 <= 1 && x2 >= 4}, {x1, x2}]

\:6B63\:5728\:8BA1\:7B97In[18]:= NMaximize::nsol: There are no points that satisfy the constraints {5 x1+8 x2<=40,-2 x1+3 x2<=9,x1>=0,x2>=0,x1<=1,x2>=4}.

Out[18]= {-\[Infinity], {x1 -> Indeterminate, x2 -> Indeterminate}}

無解,綜上所述:在LP5中得到的x1 = 3, x2 = 3, z = 15 爲最大值
參考論文:點擊打開鏈接
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章