1. 程式人生 > >Wolsey“強整數規劃模型”經典案例之一單源固定費用網路流問題

Wolsey“強整數規劃模型”經典案例之一單源固定費用網路流問題

Wolsey“強整數規劃模型”經典案例之一單源固定費用網路流問題

閱讀本文可以理解什麼是“強”整數規劃模型。

單源固定費用網路流問題見文獻[1]第13.4.1節(p229-231),是"強整數規劃建模“的極好案例。

本文是本部落格原創,本部落格不轉貼他人作品,作者:”陸戰之王“。

單源固定費用網路流問題(The Signle Source Fixed Charge Network Flow Problem)

單源固定費用網路流問題:給定一個有向網路 (邊數為m,節點數n),網路上只有一個流量流入節點(標記為1),但有若干個流量流出節點, 節點 i 的流出流量標記為 B[i], 每個邊 e (e =1,...,m) 有流量限制(此例中不考慮流量限制,因此流量限制取為-B[1]) 。網路情況如下圖:

網路的節點數n=4, 邊數m=8。

對應節點1,2,3,4, 流(出)量B={ -6  2  3  4}。

對應邊e=1,2,3,4,5,6,7,8, 邊由節點對定義,資料是 E={(1 4) (1 2) (4 2) (1 3) (2 3) (3 2) (4 3) (3 4)}. 

對應邊e=1,2,3,4,5,6,7,8, 邊上的一次性費用是C={5 2 7 3 2 4 9 12}.

非“強”整數規劃模型

設非負變數 x[e] 是邊e (e =1,...,8) 上的流量, 又設0-1變數 y[e] 表示邊e上是否有流量。於是模型的目標是極小化一次性費用和,約束無外乎節點上的流量平衡約束和x[e]-y[e]之間的關聯約束。

用+Leapms寫出模型,其PDF摘錄如下:

上述模型用+Leapms中的solve命令求鬆弛解,可以看到y變數非0-1: 

+Leapms>solve
The LP is solved to optimal.
找到線性規劃最優解.非零變數值和最優目標值如下:
    .........
    x1*=1
    x2*=2
    x4*=3
    y1*=0.166667
    y2*=0.333333
    y4*=0.5
    .........
    Objective*=3
    .........
+Leapms>

若要獲得整解則必須使用mip命令對問題進行分支定界/割平面求解:

+Leapms>mip
relexed_solution=3; number_of_nodes_branched=0; memindex=(1,1)
The Problem is solved to optimal as an MIP.
找到整數規劃的最優解.非零變數值和最優目標值如下:
  .........
    x1* =1
    x2* =5
    x5* =3
    y1* =1
    y2* =1
    y5* =1
  .........
    Objective*=9
  .........
+Leapms>

結果在網路上表現:

“強”整數規劃模型(Strong Integer Formulation)

“強”整數規劃模型對上述模型採用了Multicommodity改寫。方法是引入一個新非負變數 z[e][k], 其含義是流過e邊最終貢獻給k節點流出的流量(顯然此處k=2,...,n, k$\neq 1$)。

新模型的目標不會改變,約束中的節點平衡條件邏輯上也不改變,即對任何節點 i , 流出和流入之差應該為0 或者 當i==k時等於k的流出量。

用+Leapms寫出模型,其PDF摘錄如下:

上述所謂“強”模型比之前的模型的好處在於在+Leapms中直接使用solve命令就可以求出整數解,即不需要分支定界/割平面過程!

不十分嚴格地:此即是“強”整數規劃模型和含義,強模型更容易求解,或者說對求解器更友好。

+Leapms的求解過程:

+Leapms>solve
The LP is solved to optimal.
找到線性規劃最優解.非零變數值和最優目標值如下:
    .........
    x1*=1
    x2*=5
    x5*=3
    y1*=1
    y2*=1
    y5*=1
    z1_4*=1
    z2_2*=2
    z2_3*=3
    z5_3*=3
    .........
    Objective*=9
    .........
+Leapms>

結果在網路上表現:

強整數規劃模型的詳細解釋 及 “強”建模原理

本案例的“強”建模原理來源於文[1]中的三個觀察(Oberservation 13.2-13.4, page 230) 。

關於“強”模型的詳細解釋,見文[2]。

其他

文[1]並未在13.4.1中給出此案例的所有資料,其餘資料(主要是邊上費用資料C是從13.1, page 222)的XPRESS MP模型中讀出的。貼在這裡,供看官與+Leapms建模語言作對比:

結論

“強”整數規劃建模概念是經典建模方法中的重要內容,如果說在本科《運籌學》教學中只要講述0-1變數的應用即可,那麼在研究生層次的《高階運籌學》教學中最好增加“強”整數規劃建模內容。

使用本土完全自主智慧財產權的+Leapms建模語言和+Leapms求解器,可以有效輔助教學,比之傳統的舶來建模語言和求解器有優勢。

參考文獻

[1] Wolsey L A. Integer Programming. New York: Jonh Wiley & Sons, 1998 / ISBN 978-0-471-28366-9

[2] Wolsey L . Strong formulations for mixed integer programming: A survey[J]. Mathematical Programming, 1989, 45(1-3):173-191.