You are on page 1of 16

ORF 307

Integer Programming
Robert J. Vanderbei
April 21, 2009

Operations Research and Financial Engineering, Princeton University


http://www.princeton.edu/rvdb

Airline Equipment Scheduling


Given:
A set of flight legs (e.g. Newark to Chicago departing 7:45am).
A set of aircraft.

Problem: which specific aircraft should fly which flight legs?

Model:
Generate a set of feasible routes (i.e., a collection of legs which taken together can be
flown by one airplane).
Assign a cost to each route (e.g. 1).
Pick a minimum cost collection of routes that exactly covers all of the legs.

Let:

xj =

1
0

if route j is selected,
otherwise

1
if leg i is part of route j,
0
otherwise
cj = cost of using route j.

aij =

An Integer Programming Problem:


minimize
subject to

n
X
j=1
n
X

cj xj
aij xj = 1

i = 1, 2, . . . , m,

j=1

xj {0, 1}
An example of set-partitioning problems.

j = 1, 2, . . . , n.

Airline Crew Scheduling


Similar to equipment scheduling except:
Its possible to put more than one crew on a flight:
only one crew works
any others are just being shuttled
Integer Programming Problem:
minimize
subject to

n
X
j=1
n
X

cj xj
aij xj 1

i = 1, 2, . . . , m,

j=1

xj {0, 1}

An example of set-covering problems.

j = 1, 2, . . . , n.

Column Generation
The problem of producing a set of possible routes is called column generation.

It is important and nontrivial.

Reason: there are lots of routes.

For example, on a weekly schedule a route might consist of 20 legs.

If there are m legs in total, then there are up to m20 possible routes.

Traveling Salesman Problem


Most famous example of a hard problem:

Given n cities, determine the order in which to visit them so as to minimize the total
travel distance.

Fixed Costs

c(x) =

0
K + cx

if x = 0
if x > 0.

Equivalent to:
c(x) = Ky + cx
together with the following constraints:
x uy
x 0
y {0, 1}.

where u is an upper bound on x.

Nonlinear Objective Functions


Nonlinear objective functions are sometimes approximated by piecewise linear functions.

Piecewise linear functions can be treated using techniques similar to the fixed cost
method above.

LP Relaxation
General Integer Programming Problem
maximize cT x
subject to Ax b
x 0
x has integer components.

Example
x2
6

10x1+7x2=40

3333333333
Optimal Solution
3333333333
to LPrelaxation
43333333333
3333333333
33333333333
x1+x2=5
3333333333
3333333333
2
3333333333 17x1+12x0 2=68.33
3333333333 =z
13333333333
3333333333
03333333333
x
5

maximize 17x1 + 12x2


subject to 10x1 + 7x2
x1 + x2
x1 , x 2
x1 , x 2

40
5
0
integers.

Optimal solution is (x1, x2) = (1.67, 3.33) with objective value 68.33.
Rounding to integers: (2, 3)
Closest feasible: (1, 3)

infeasible.

suboptimal.

Branch-and-Bound
x2

In LP relaxation, x1 = 1.67. Two possibilites:

333
333
4333
333
3333
333
P1
333
2
333
333
1333
333
0333
5

x1 1
x1 2
Let
P1 = LP relaxation plus: x1 1
P2 = LP relaxation plus: x1 2

Optimal Solutions
P1: (1, 4)
P2: (2, 2.86)

integer solution!

33333
33333
33333
33333
33333
P2
33333
33333

x1

Enumeration Tree
P0: x1=1.67, x2=3.33
=68.33
x1>2

x1<1
P1: x1=1, x2=4

P2: x1=2, x2=2.86

=65

=68.29
x2<2

x2>3

Double boxed node represents integer solution.


Integer solutions provide lower bounds on optimal integer solution.
LP relaxations at each node provide upper bounds for the subtree below it.

Refinement of P2 to P3

Feasible Region:

Enumeration Tree:
P0: x1=1.67, x2=3.33

x2

=68.33

333
333
4 333
333
3 333
333
P1
2 333
333
333
1
333
333
0
333
0
1

x1>2

x1<1

P1: x1=1, x2=4

P2: x1=2, x2=2.86

=65

=68.29
x2<2

33333
33333
33333
33333
P3
33333
33333
2
3
4

x2>3

P3: x1=2.6, x2=2


=68.2
x1<2

x1

x1>3

Splitting of P3 into P4 and P5


Enumeration Tree is Growing
Enumeration Tree is Growing
P0: x1=1.67, x2=3.33
=68.33

x2
6

333
333
4333
333
333
3
333
P1
333
2333
333
1333
333
0333

P1: x1=1, x2=4

P2: x1=2, x2=2.86

=65

x1>2

x1<1

=68.29
x2<2

x2>3

P3: x1=2.6, x2=2

33
33
33
33
P4
33
33
33
2

=68.2

333
333
333
P5
333
3

x1<2
P4: x1=2, x2=2

x1>3
P5: x1=3, x2=1.43

=58

x1

=68.14
x2<1

x2>2

More Branching

x2

x2

333
333
4333
333
333
3
333
P1
333
2333
333
1333
333
0333
5

333
333
4333
333
333
3
333
P1
333
2333
333
1333
333
0333
5

33
33
33
33
333
P4 333
33
P6
33
333
33
2
3
4

x1

33
33
33
33
P5
33
33
33
2

3
P7 P
3
8
3
33
33 33
4

x1

Enumeration Tree Still Growing


P0: x1=1.67, x2=3.33
=68.33
x1>2

x1<1
P1: x1=1, x2=4

P2: x1=2, x2=2.86

=65

=68.29
x2<2

x2>3

P3: x1=2.6, x2=2


=68.2
x1<2

x1>3

P4: x1=2, x2=2

P5: x1=3, x2=1.43

=58

=68.14
x2<1

x2>2

P6: x1=3.3, x2=1


=68.1
x1<3
P7: x1=3, x2=1
=63

x1>4
P8: x1=4, x2=0
=68

The Complete Enumeration Tree


P0: x1=1.67, x2=3.33
=68.33
x1>2

x1<1
P1: x1=1, x2=4

P2: x1=2, x2=2.86

=65

=68.29
x2<2

x2>3

P3: x1=2.6, x2=2

P9: Infeasible

=68.2
x1<2

x1>3

P4: x1=2, x2=2

P5: x1=3, x2=1.43

=58

=68.14
x2<1

x2>2

P6: x1=3.3, x2=1

P10: Infeasible

=68.1
x1<3
P7: x1=3, x2=1
=63

Optimal solution: (x1, x2) = (4, 0).

x1>4
P8: x1=4, x2=0
=68