Professional Documents
Culture Documents
Example
How does z
LP
compare to z
IP
? z
LP
z
IP
.
= maxc
T
x [ x S
Consider subsets S
1
, . . . S
k
of S which cover S: S =
i
S
i
. Then
maxc
T
x [ x S = max
1ik
maxc
T
x [ x S
i
Usually want S
i
sets to be disjoint (S
i
S
j
= for all i ,= j)
Dividing the original problem into subproblems is called branching
ISyE/CS 720: Integer Programming 5
ISyE/CS 720: Integer Programming
Overview
Bounding: The conquer in Divide-and-conquer
Any feasible solution to the problem provides a lower bound L on
the optimal solution value. ( x S z
c
T
x).
Let z
IP
be the optimal value of the MIP
If we picture the
subproblems graphically,
they form a search tree.
If u(S) > L and the solution is feasible for the MIP set
L u(S).
You can do better because you know more about your problem
ISyE/CS 720: Integer Programming 11
ISyE/CS 720: Integer Programming
Choices in branch-and-bound
How long does branch-and-bound take?
Simplistic (but useful) approximation:
Total time = (Time to process a node) (Number of nodes)
When making choices in branch-and-bound, think about eect on
these separately
Question
Which of these is likely to be most important?
ISyE/CS 720: Integer Programming 12
ISyE/CS 720: Integer Programming
Choices in branch-and-bound
Heuristics
Choices in branch-and-bound: Heuristics
Practical perspective: nding good feasible solutions is most
important
Rounding/Diving
Optimization-based heuristics
j=1
w
j
T
t=1
tx
jt
J
j=1
t
s=tp
j
+1
x
js
1, t = 1, . . . , T,
T
t=1
x
jt
= 1, j = 1, . . . , J
x
jt
0, 1, j = 1, . . . , J, t = 1, . . . , T
ISyE/CS 720: Integer Programming 15
ISyE/CS 720: Integer Programming
Choices in branch-and-bound
Heuristics
Problem specic heuristic for machine scheduling
Decision variables: x
jt
= 1 i job j starts at time t
LP-based heuristic
Calculate v
j
=
T
t=1
t x
jt
for all j
v
j
is when the LP wants to schedule job j
Let u
k
be the upper bound at iteration k of dual simplex:
u
k
u(S
i
)
If u
k
L, then u(S
i
) u
k
L, so we can prune the node
The linear program being solved may change quite a bit from
one node LP solve to the next
3. Memory usage is high
Dive until you prune, then back up and go the other way
Avoids most of the problems with best rst:
Node set-up costs are minimized since LPs change very little from
one iteration to the next
Make an estimate z
E
of the optimal solution value
Go depth-rst until z
LP
z
E
Answer: We dont.
Strong branching
Pseudo-costs
Tentative branching
Which to evaluate?
j
.
Let f
j
be the current (fractional) value of variable x
j
.
j
= P
j
f
j
.
Empirical data
with:
j
= arg max
D
+
j
D
Pseudo-costs
Strong branching
jS
x
j
1
ISyE/CS 720: Integer Programming 34
ISyE/CS 720: Integer Programming
Final Branching Topics
Why generalized upper bound?
My guess:
If x
j
0, 1, u > 0 and y is a continuous variable:
y ux
j
is called a variable upper bound
jJ
u
j
x
j
jJ
x
j
1
Choose capacity of something from a set u
j
: j J
ISyE/CS 720: Integer Programming 35
ISyE/CS 720: Integer Programming
Final Branching Topics
GUB Branching
Suppose x
j
0, 1 and we have the constraint:
J
j=1
x
j
= 1 and
weights u
j
for j = 1, . . . , J with u
1
u
2
u
J
Which branching do you think would be better?
1. x
k
= 1 & x
k
= 0(
j=k
x
j
= 1), or
2.
k
j=1
x
j
= 1 &
J
j=k+1
x
j
= 1
Answer: It depends
j=1
x
j
= 1
and weights u
j
for j = 1, . . . , J with u
1
u
2
u
J
A GUB branch:
k
j=1
x
j
= 1 or
J
j=k+1
x
j
= 1
To enforce
k
j=1
x
j
= 1, set upper bound on x
j
to 0 for
j = k + 1, . . . , J
To enforce
J
j=k+1
x
j
= 1, set upper bound on x
j
to 0 for
j = 1, . . . , k
ISyE/CS 720: Integer Programming 37
ISyE/CS 720: Integer Programming
Final Branching Topics
Branch-and-bound Wrap-up
Weve seen a lot of details of branch-and-bound, but there is much
more that goes into an eective implementation
Preprocessing