Implementation of Cutting Plane Separators for Mixed Integer ... - ZIB
Implementation of Cutting Plane Separators for Mixed Integer ... - ZIB
Implementation of Cutting Plane Separators for Mixed Integer ... - ZIB
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
3.3 Algorithmic Aspects 31<br />
Input : <strong>Mixed</strong> knapsack set X MK given in the <strong>for</strong>m (3.7) and<br />
(x ∗ , s ∗ ) ∈ (R n +\Z n +) × R+ fractional vector.<br />
Output: Valid c-MIR inequality <strong>for</strong> X MK or notification that no such<br />
inequality was found.<br />
/* Use initial partition and initial value <strong>of</strong> δ. */<br />
1 U ← {j ∈ N : x∗ bj<br />
j ≥ 2 }, T ← N\U and t ← |T |<br />
2 Sort T by nonincreasing value <strong>of</strong> x∗ bj<br />
j − 2 . (Let {j1, . . . , jt} be the ordered<br />
set.)<br />
3 N ∗ ← {|α ′<br />
j | : j ∈ N, α′ j = 0 and 0 < x∗j < bj}<br />
4 δfound ← F ALSE, vbest ← −∞, and l ← 0<br />
5 repeat<br />
/* Complement an additional variable. */<br />
6 if l > 0 and x∗ jl > 0 then U ← U ∪ {jl}<br />
7<br />
and T<br />
else if l > 0 then l ← l + 1 and continue<br />
← T \{jl}<br />
8 <strong>for</strong>each δ ∈ N ∗ do<br />
9 β ← α′<br />
0 −<br />
j∈U α′<br />
j bj<br />
δ<br />
10 if β ∈ Z then continue<br />
11 else<br />
12 δfound ← T RUE<br />
+ <br />
j∈U<br />
13 v ← <br />
α′<br />
j<br />
Ffβ j∈T ( δ )x∗ α′<br />
j<br />
Ffβ j (− δ )(bj − x∗ j<br />
14 if v > vbest then δbest ← δ and vbest ← v<br />
15 l ← l + 1<br />
until δfound = T RUE or l = t<br />
17 if δfound = F ALSE then return No inequality found<br />
/* Improve violation by modifying δ. */<br />
18 ¯ δ ← δbest<br />
19 <strong>for</strong>each δ ∈ { ¯ δ<br />
2 , ¯ δ<br />
4 , ¯ δ<br />
8<br />
} do<br />
20 β ← α′<br />
0 −<br />
j∈U α′<br />
j bj<br />
δ<br />
+ <br />
j∈U<br />
21 v ← <br />
α′<br />
j<br />
Ffβ j∈T ( δ )x∗ α′<br />
j<br />
Ffβ j (− δ )(bj − x∗ j<br />
22 if v > vbest then δbest ← δ and vbest ← v<br />
) − ⌊β⌋ − s∗<br />
δ(1−fβ)<br />
) − ⌊β⌋ − s∗<br />
δ(1−fβ)<br />
23 δ ← δbest<br />
/* Improve violation by complementing additional variables. */<br />
24 Ubest ← U, Tbest ← T and t ← |T |<br />
25 Sort T by nonincreasing value <strong>of</strong> x∗ bj<br />
j − 2 . (Let {j1, . . . , jt} be the ordered<br />
set.)<br />
26 <strong>for</strong> l ← 1 to t do<br />
if x∗ 28<br />
> 0 then<br />
jl<br />
U ← U ∪ {jl} and T ← T \{jl}<br />
29 β ← α′<br />
0 −<br />
j∈U α′<br />
j bj<br />
δ<br />
+ <br />
j∈U<br />
) − ⌊β⌋ − s∗<br />
δ(1−fβ)<br />
30 v ← <br />
α′<br />
j<br />
Ffβ j∈T ( δ )x∗ α′<br />
j<br />
Ffβ j (− δ )(bj − x∗ j<br />
31 if v > vbest then Ubest ← U, Tbest ← T and vbest ← v<br />
32 U ← Ubest and T ← Tbest<br />
33 return <br />
j∈T<br />
Ffβ ( α′<br />
j<br />
δ )xj + <br />
j∈U<br />
Ffβ (− α′<br />
j<br />
δ )(bj − xj) ≤ ⌊β⌋ +<br />
s<br />
δ(1−fβ)<br />
Algorithm 3.4: Cut generation heuristic. Use Procedure 1 and do not use the extended<br />
candidate set <strong>for</strong> the value <strong>of</strong> δ.