SLIDE 78 Bilevel Programming Bilevel Knapsack Algorithms Conclusions
CCLW Method
1:
ratio = items sorted by non increasing order of the ratio pi/wi for i = 1 : n;
2:
pmax = maxi=1,...,n pi; wmax = maxi=1,...,n wi
3:
Build MIP 1; k = 1; OP T = +∞;
4:
while MIP k is feasible do
5:
xk = arg min{MIP k}
6:
if OP T + pmax ≤ Optimal value of MIP k “ = Pn
i=1 piyk i
” then
7:
STOP while;
8:
else
9:
Residual = Cu − Pn
i=1 vixk i
10:
xk, c, yc = MakeMaximal “ xk, ratio, Residual ”
11:
y “ xk” = BestReaction “ xk” // solve knapsack problem
12:
if Pn
i=1 piyi
“ xk” < OP T then
13:
OP T = Pn
i=1 piyi
“ xk” ; “ xOP T , yOP T ” = “ xk, y “ xk””
14:
MIP k+1 ← if k = 1 add strong cut z0Cl +
n
X
i=1
ui − z0wmax ≤ OP T − 1,
- therwise update the right hand side of the strong cut with OPT-1.
15:
end if
16:
MIP k+1 ← add follower’s nogood constraint to the MIP k : P
i:yi “ xk ” =1 xi ≥ 1
17:
end if
18:
k = k + 1
19:
end while
20:
return OPT, “ xOP T , yOP T ” Margarida Carvalho margarida.carvalho@dcc.fc.up.pt Bilevel Knapsack with interdiction constraints