本文以 cutting stock 問題為例,介紹列生成演算法的數學模型。
長板長度:10m
子板需求:2m: 100; 3m: 50; 5m: 20 …
優化目標:最小化,長板切割總數
模型引數
引數含義
n
nn子板集合
l il_
li子板 i
ii 的長度
l
ll長板長度
決策變數
變數型別含義xi,
jx_xi,j
0-1
子板 i
ii 是否在長板 j
jj 上
約束條件
(1) 分配
∑ j∈
nxi,
j=1∀
i∈n\sum_ x_ = 1 \quad \forall i \in n
j∈n∑x
i,j
=1∀i
∈n(2) 長板長度
∑ i∈
nxi,
j⋅li
≤l∀j
∈n\sum_ x_ \cdot l_ \leq l \quad \forall j \in n
i∈n∑x
i,j
⋅li
≤l∀j
∈n(3) 中心子板
x i,
j≤xj
,j∀i
∈n∀j
∈nx_ \leq x_ \quad \forall i \in n \quad \forall j \in n
xi,j≤
xj,j
∀i∈
n∀j∈
n(4) 有效不等式:需求量下限
∑ j∈
nxj,
j≥⌈∑
i∈nl
il⌉\sum_ x_ \geq \lceil \frac l_} l \rceil
j∈n∑x
j,j
≥⌈l∑
i∈n
li
⌉目標函式
模型引數
引數含義
i
ii所有子板型別的集合
m
mm所有切割方案的集合
a i,
ja_ai,j
方案 j
jj 中型別 i
ii 的子板數量
d
id_i
di型別 i
ii 的子板需求量
決策變數
變數型別含義sjs_
sjr+0
r_^r+
0按照方案 j
jj 切割的長板數量
約束條件
∑ j∈
mai,
j⋅sj
≥di∀
i∈i\sum_ a_ \cdot s_ \geq d_ \quad \forall i \in i
j∈m∑a
i,j
⋅sj
≥di
∀i∈i
目標函式
m in
∑j∈m
sjmin \quad \sum_ s_
minj∈m
∑sj
決策變數
變數型別含義yiy_
yir+0
r_^r+
0對偶變數
約束條件
∑ i∈
iai,
j⋅yi
≤1∀j
∈m\sum_ a_ \cdot y_ \leq 1 \quad \forall j \in m
i∈i∑a
i,j
⋅yi
≤1∀j
∈m目標函式
m ax
∑i∈i
di⋅y
imax \quad \sum_ d_ \cdot y_
maxi∈i
∑di
⋅yi
決策變數
變數型別含義aia_
aiz+0
z_^z+
0當前方案中,型別 i
ii 的子板數量
約束條件
∑ i∈
iai⋅
li≤l
\sum_ a_ \cdot l_ \leq l
i∈i∑a
i⋅l
i≤l
目標函式
m in
1−∑i
∈iai
⋅yimin \quad 1 - \sum_ a_ \cdot y_
min1−i
∈i∑
ai⋅
yi(1)列生成演算法需要一組初始可行解啟動,獲取初始解的啟發式方法因問題而異。
(2)列生成迴圈過程中,主問題為鬆弛問題,即變數為連續變數;求得最終結果的是主啟發式模型,將主問題變數改為整數變數即可。
算例1長板長度:10m
子板需求:1m: 100; 2m: 80; 3m: 70; 5m: 50; 7m: 30; 8m: 10
算例2長板長度:20m
子板需求:1m: 1000; 2m: 500; 3m: 200; 5m: 200; 8m: 100; 10m: 200; 12m: 100; 15m: 150
執行結果
算例模型/演算法
求解結果
求解時間
1原始整數規劃模型
10124.13
1列生成演算法
10222.161
2原始整數規劃模型
5871200 +
2列生成演算法
49322.431
注:(1)求解器:gurobi 伺服器
(2)時間限制:1200s
(3)算例1的最優解:101
問題的問題
有些問題是人出的,或者人造成的 而有些問題是 上帝 出的。我們可以說成是人題和天題。人題一般都是可以解決的,而天題,人根本就找不到答案。人題的解決不會給我們帶來快樂,而天題帶給我們的只是苦惱和困惑。人從出生到死亡,一直都處於迷失和困惑中,因為大部分的東西他都不知道是怎麼回事。是的,他可以不知道,同樣...
問題背後的問題
這兩天,和同事在一起討論問題,告訴她我以前走過的彎路 看到了幾個表面現象,就誤以為可以下結論了。其實,往往事情並非那麼簡單,需要不斷問自己 我真的發現問題的實質了嗎?以前,lg常恨恨地對我說 最討厭你那副自以為一眼把人看到底的清高樣子了 我聽了總是不以為然,我就以為早已把身邊這傢伙看得透透的了,所以...
問題背後的問題
這兩天,和同事在一起討論問題,告訴她我以前走過的彎路 看到了幾個表面現象,就誤以為可以下結論了。其實,往往事情並非那麼簡單,需要不斷問自己 我真的發現問題的實質了嗎?以前,lg常恨恨地對我說 最討厭你那副自以為一眼把人看到底的清高樣子了 我聽了總是不以為然,我就以為早已把身邊這傢伙看得透透的了,所以...