1. 行生成算法
行生成就是指的不斷添加約束的算法。
因?yàn)樵谇蠼饩仃囍校粋€(gè)約束條件對(duì)應(yīng)一行,因此添加約束條件的方法自然叫做行生成算法。相對(duì)應(yīng)的,添加變量的方法就叫做列生成算法。
這一節(jié)先看行生成算法,用在求解變量不多,但是約束條件特別多的情況下。
2. Benders分解
Benders分解(Benders Decomposition,BD)的基本思路是:使用子問(wèn)題(primal problem)來(lái)尋找合適的約束不斷添加到松弛主問(wèn)題(relaxed master problem)中。子問(wèn)題可以給上界(UB),松弛主問(wèn)題可以給下界(LB),不斷迭代就可以逐步找到最優(yōu)解。具體可以參考論文:http://www.ie.boun.edu.tr/~taskin/pdf/taskin_benders.pdf,這里做一下簡(jiǎn)單的概述:
問(wèn)題模型是:
min cx+fy
s.t. Ax+By = b
y∈Y
Benders分解將上述模型拆分為只包含x變量的子問(wèn)題和只包含y變量的主問(wèn)題。
2.1. 子問(wèn)題
子問(wèn)題(SP)為:
min cx
s.t. Ax = b - By
使用對(duì)偶法求解子問(wèn)題(DSP):
max α(b-By’)
s.t. Aα ≤ c
α無(wú)限制
這是個(gè)線性規(guī)劃問(wèn)題,枚舉可行域{α : Aα≤c}的極點(diǎn)(I)和極方向(J)便可以求解了,上面DSP等價(jià)于:
min q
s.t. αi (b-By) ≤ q
αj(b-By) ≤ 0
q無(wú)限制
2.2. 主問(wèn)題
定義q(y)為SP問(wèn)題的最優(yōu)解,則原問(wèn)題可以重新寫為如下主問(wèn)題的形式:
min q(y)+fy
s.t. y∈Y
等價(jià)于下面的主問(wèn)題(MP):
min q+fy
s.t. αi (b-By) ≤ q
αj(b-By) ≤ 0
y∈Y,q無(wú)限制
2.3. benders分解求解步驟
由于約束條件較多,因此α也是非常多的,直接上所有約束條件求解MP比較困難。因此從少量約束條件的松弛主問(wèn)題開(kāi)始,逐步把約束條件加上。
- 求解松弛主問(wèn)題RMP,得到y(tǒng)*∈Y,得到的q*用來(lái)更新下界LB。
- 將y*代入對(duì)偶子問(wèn)題(DSP)求解。
2.1. 若DSP存在最優(yōu)解,假設(shè)是在極點(diǎn)α'處取得,則用α'(b-By’)+fy'更新上界UB,并且給主問(wèn)題MP添加約束條件α' (b-By) ≤ q
2.2. 若DSP存在無(wú)界最優(yōu)解,假設(shè)是在極線α'處取得,則給主問(wèn)題MP添加約束條件α'(b-By) ≤ 0 - 求解新的松弛主問(wèn)題RMP',回到1進(jìn)行迭代直至LB ≥ UB。
3. Benders分解例子
在下面的問(wèn)題中,y∈{0,1}屬于復(fù)雜約束,因此將原問(wèn)題按如圖的顏色拆分開(kāi)。
一輪迭代后,UB = 23,LB = 8,還需要繼續(xù)迭代。后面的求解過(guò)程省略。
4. 廣義Benders分解
Benders分解法要求子問(wèn)題必須為線性,而廣義Benders分解法(Generalized Benders Decomposition,GBD)針對(duì)這個(gè)問(wèn)題作了改進(jìn)。廣義Benders分解的問(wèn)題模型是:
min f(x,y)
s.t. g(x,y) ≤ 0
y∈Y
由于涉及到了非線性規(guī)劃,因此要用到拉格朗日法。求解的步驟是:
選取y'∈Y,求解子問(wèn)題:
min f(x,y')
s.t. g(x,y') ≤ 0
使用拉格朗日法,令L(x,u,y) = f(x,y) + Σu*g(x,y),使用KKT條件求解。如果子問(wèn)題可行,則用最優(yōu)解更新UB;并且給主問(wèn)題添加約束條件(可行割):
q ≥ L(x',u',y') + L'|y(x',u',y')*(y-y')
其中x',y'是子問(wèn)題的變量取值。如果子問(wèn)題不可行,則引入剩余變量s后求解新的子問(wèn)題:
min s
s.t. g(x,y') ≤ s
同樣使用拉格朗日法,求得x'和u',然后給主問(wèn)題添加約束條件(不可行割):
s.t. 0 ≥ u'*(g(x',y')+g'|y(x',y')*(y-y'))
其中x',y'是新的子問(wèn)題的變量取值。求解主問(wèn)題:
min q
s.t. 所有的可行割和不可行割滿足條件。
求得的結(jié)果更新LB。不斷迭代,直到 LB ≥ UB。