23.06.2013 Views

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

SHOW MORE
SHOW LESS

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> δ.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!