0% found this document useful (0 votes)
10 views

Integer Programming

This document introduces integer programming and logical constraints. It defines integer programming as linear programs where some or all variables must have integer values. It provides examples showing how changing variables to integers can change optimal solutions. The document also introduces logical constraints, describing how Boolean variables take TRUE/FALSE values and can be combined with logical operations like AND, OR, and NOT. Finally, it notes that logical constraints can be used to model logic puzzles and combinatorial problems.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

Integer Programming

This document introduces integer programming and logical constraints. It defines integer programming as linear programs where some or all variables must have integer values. It provides examples showing how changing variables to integers can change optimal solutions. The document also introduces logical constraints, describing how Boolean variables take TRUE/FALSE values and can be combined with logical operations like AND, OR, and NOT. Finally, it notes that logical constraints can be used to model logic puzzles and combinatorial problems.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

Introduction to integer programming Logical constraints Mixing logical and linear constraints

Integer programming
Math 482, Lecture 32

Misha Lavrov

April 24, 2020


Introduction to integer programming Logical constraints Mixing logical and linear constraints

Integer linear programming

Definition
An integer linear program is a linear program in which some or all
of the variables are constrained to have integer values only.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Integer linear programming

Definition
An integer linear program is a linear program in which some or all
of the variables are constrained to have integer values only.

Earlier in this class: bipartite matching.


This is an integer program, but total unimodularity saved us
and guaranteed integer optimal solutions.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Integer linear programming

Definition
An integer linear program is a linear program in which some or all
of the variables are constrained to have integer values only.

Earlier in this class: bipartite matching.


This is an integer program, but total unimodularity saved us
and guaranteed integer optimal solutions.
Total unimodularity is important in integer programming, but
doesn’t often happen: usually, the integrality matters.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Integer linear programming

Definition
An integer linear program is a linear program in which some or all
of the variables are constrained to have integer values only.

Earlier in this class: bipartite matching.


This is an integer program, but total unimodularity saved us
and guaranteed integer optimal solutions.
Total unimodularity is important in integer programming, but
doesn’t often happen: usually, the integrality matters.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Some examples

Here is a completely ordinary linear program:

maximize x+ y
x,y ∈R
subject to 3x + 8y ≤ 24
3x − 4y ≤ 6
x, y ≥ 0

The optimal solution is (x, y ) = (4, 32 ).


Introduction to integer programming Logical constraints Mixing logical and linear constraints

Some examples

Now, change x to an integer variable:

maximize x+ y
x∈Z,y ∈R
subject to 3x + 8y ≤ 24
3x − 4y ≤ 6
x, y ≥ 0

The optimal solution is still (x, y ) = (4, 32 ). Coincidentally, the


integrality didn’t matter.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Some examples

Now, make x and y both integers:

maximize x+ y
x,y ∈Z
subject to 3x + 8y ≤ 24
3x − 4y ≤ 6
x, y ≥ 0

The optimal solutions are (x, y ) = (2, 2) and (x, y ) = (3, 1).
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Some examples

Now, make x and y both integers:

maximize x+ y
x,y ∈Z
subject to 3x + 8y ≤ 24
3x − 4y ≤ 6
x, y ≥ 0

The optimal solutions are (x, y ) = (2, 2) and (x, y ) = (3, 1).
Note that rounding (4, 32 ) to the nearest integer won’t give us an
optimal or even feasible solution!
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Difficulty of approximation

Optimal integer solutions can be arbitrarily far from optimal real


solutions. Example: take the region
 
x −1 x
(x, y ) ∈ R : ≤y ≤ , x ≥ 0, y ≥ 0 .
998 1000
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Difficulty of approximation

Optimal integer solutions can be arbitrarily far from optimal real


solutions. Example: take the region
 
x −1 x
(x, y ) ∈ R : ≤y ≤ , x ≥ 0, y ≥ 0 .
998 1000
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Difficulty of approximation

Optimal integer solutions can be arbitrarily far from optimal real


solutions. Example: take the region
 
x −1 x
(x, y ) ∈ R : ≤y ≤ , x ≥ 0, y ≥ 0 .
998 1000

This has a vertex at (x, y ) = (500, 12 ). But the only integer points
are (0, 0) and (1, 0).
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Difficulty of approximation

Optimal integer solutions can be arbitrarily far from optimal real


solutions. Example: take the region
 
x −1 x
(x, y ) ∈ R : ≤y ≤ , x ≥ 0, y ≥ 0 .
998 1000

This has a vertex at (x, y ) = (500, 12 ). But the only integer points
are (0, 0) and (1, 0).
Even determining if a region contains any integer points can be
difficult.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Logical constraints

Logical expressions have Boolean variables with values TRUE and


FALSE.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Logical constraints

Logical expressions have Boolean variables with values TRUE and


FALSE. They are combined with logical operations:
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Logical constraints

Logical expressions have Boolean variables with values TRUE and


FALSE. They are combined with logical operations:
X1 AND X2 = TRUE when X1 = X2 = TRUE, and FALSE
otherwise.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Logical constraints

Logical expressions have Boolean variables with values TRUE and


FALSE. They are combined with logical operations:
X1 AND X2 = TRUE when X1 = X2 = TRUE, and FALSE
otherwise.
X1 OR X2 = TRUE when at least one of X1 , X2 is TRUE,
and FALSE otherwise.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Logical constraints

Logical expressions have Boolean variables with values TRUE and


FALSE. They are combined with logical operations:
X1 AND X2 = TRUE when X1 = X2 = TRUE, and FALSE
otherwise.
X1 OR X2 = TRUE when at least one of X1 , X2 is TRUE,
and FALSE otherwise.
NOT(TRUE) = FALSE and NOT(FALSE) = TRUE.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Logical constraints

Logical expressions have Boolean variables with values TRUE and


FALSE. They are combined with logical operations:
X1 AND X2 = TRUE when X1 = X2 = TRUE, and FALSE
otherwise.
X1 OR X2 = TRUE when at least one of X1 , X2 is TRUE,
and FALSE otherwise.
NOT(TRUE) = FALSE and NOT(FALSE) = TRUE.
We can use these to express logic puzzles such as Sudoku,
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Logical constraints

Logical expressions have Boolean variables with values TRUE and


FALSE. They are combined with logical operations:
X1 AND X2 = TRUE when X1 = X2 = TRUE, and FALSE
otherwise.
X1 OR X2 = TRUE when at least one of X1 , X2 is TRUE,
and FALSE otherwise.
NOT(TRUE) = FALSE and NOT(FALSE) = TRUE.
We can use these to express logic puzzles such as Sudoku, but also
combinatorial problems such as bipartite matching,
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Logical constraints

Logical expressions have Boolean variables with values TRUE and


FALSE. They are combined with logical operations:
X1 AND X2 = TRUE when X1 = X2 = TRUE, and FALSE
otherwise.
X1 OR X2 = TRUE when at least one of X1 , X2 is TRUE,
and FALSE otherwise.
NOT(TRUE) = FALSE and NOT(FALSE) = TRUE.
We can use these to express logic puzzles such as Sudoku, but also
combinatorial problems such as bipartite matching, graph coloring,
and more.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Boolean satisfiability

Boolean satisfiability: the problem of determining if we can assign


variables to Boolean variables X1 , . . . , Xn to make a logical
expression true.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Boolean satisfiability

Boolean satisfiability: the problem of determining if we can assign


variables to Boolean variables X1 , . . . , Xn to make a logical
expression true.
(Example: does this Sudoku have a solution? Does this graph have
a matching that covers all the vertices?)
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Boolean satisfiability

Boolean satisfiability: the problem of determining if we can assign


variables to Boolean variables X1 , . . . , Xn to make a logical
expression true.
(Example: does this Sudoku have a solution? Does this graph have
a matching that covers all the vertices?)
This is
very hard: we can solve the problem by checking all 2n
assignments of (X1 , . . . , Xn ), but we don’t even know if
there’s an algorithm that takes O(1.999n ) steps.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Boolean satisfiability

Boolean satisfiability: the problem of determining if we can assign


variables to Boolean variables X1 , . . . , Xn to make a logical
expression true.
(Example: does this Sudoku have a solution? Does this graph have
a matching that covers all the vertices?)
This is
very hard: we can solve the problem by checking all 2n
assignments of (X1 , . . . , Xn ), but we don’t even know if
there’s an algorithm that takes O(1.999n ) steps.
very important: if we have good heuristics for it, lots of
real-life problems become easier to attack.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Boolean satisfiability and integer programming

Encode each Boolean variable Xi by an integer variable xi with


0 ≤ xi ≤ 1: Xi = TRUE corresponds to xi = 1 and Xi = FALSE
corresponds to xi = 0.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Boolean satisfiability and integer programming

Encode each Boolean variable Xi by an integer variable xi with


0 ≤ xi ≤ 1: Xi = TRUE corresponds to xi = 1 and Xi = FALSE
corresponds to xi = 0.
Then X1 OR X2 OR . . . OR Xk is equivalent to an inequality:

x1 + x2 + · · · + xk ≥ 1.

We can write NOT(Xi ) as (1 − xi ).


Introduction to integer programming Logical constraints Mixing logical and linear constraints

Boolean satisfiability and integer programming

Encode each Boolean variable Xi by an integer variable xi with


0 ≤ xi ≤ 1: Xi = TRUE corresponds to xi = 1 and Xi = FALSE
corresponds to xi = 0.
Then X1 OR X2 OR . . . OR Xk is equivalent to an inequality:

x1 + x2 + · · · + xk ≥ 1.

We can write NOT(Xi ) as (1 − xi ).


So a system of inequalities can represent a logical expression in
“conjunctive normal form”: an AND of ORs.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Boolean satisfiability and integer programming

Encode each Boolean variable Xi by an integer variable xi with


0 ≤ xi ≤ 1: Xi = TRUE corresponds to xi = 1 and Xi = FALSE
corresponds to xi = 0.
Then X1 OR X2 OR . . . OR Xk is equivalent to an inequality:

x1 + x2 + · · · + xk ≥ 1.

We can write NOT(Xi ) as (1 − xi ).


So a system of inequalities can represent a logical expression in
“conjunctive normal form”: an AND of ORs.
Fact: all logical expressions can be put in this form. So integer
programming can model all Boolean satisfiability problems!
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Fixed costs

We can get additional power by mixing logical expressions with


linear constraints.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Fixed costs

We can get additional power by mixing logical expressions with


linear constraints.
Example 1: Fixed costs
A banana factory wants to ship bananas to grocery stores Illinois.
It can rent a warehouse in Colorado, but this doesn’t add a
per-banana price: it costs $1000, no matter how many bananas are
stored.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Fixed costs

We can get additional power by mixing logical expressions with


linear constraints.
Example 1: Fixed costs
A banana factory wants to ship bananas to grocery stores Illinois.
It can rent a warehouse in Colorado, but this doesn’t add a
per-banana price: it costs $1000, no matter how many bananas are
stored.
Add a variable w ∈ Z with 0 ≤ w ≤ 1, represented a
warehouse rental by w = 1.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Fixed costs

We can get additional power by mixing logical expressions with


linear constraints.
Example 1: Fixed costs
A banana factory wants to ship bananas to grocery stores Illinois.
It can rent a warehouse in Colorado, but this doesn’t add a
per-banana price: it costs $1000, no matter how many bananas are
stored.
Add a variable w ∈ Z with 0 ≤ w ≤ 1, represented a
warehouse rental by w = 1.
Cost in the objective function 1000w .
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Fixed costs

We can get additional power by mixing logical expressions with


linear constraints.
Example 1: Fixed costs
A banana factory wants to ship bananas to grocery stores Illinois.
It can rent a warehouse in Colorado, but this doesn’t add a
per-banana price: it costs $1000, no matter how many bananas are
stored.
Add a variable w ∈ Z with 0 ≤ w ≤ 1, represented a
warehouse rental by w = 1.
Cost in the objective function 1000w .
We can write other constraints in terms of w when they
depend on the existence of a warehouse.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Combining constraints with Boolean variables

Example 2: Conditional constraints


The warehouse can store up to 100 red, yellow, or green
bananas—but only if it is rented. Otherwise, it can’t store any
bananas.
Assume r , y , g ≥ 0 are the number of bananas stored.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Combining constraints with Boolean variables

Example 2: Conditional constraints


The warehouse can store up to 100 red, yellow, or green
bananas—but only if it is rented. Otherwise, it can’t store any
bananas.
Assume r , y , g ≥ 0 are the number of bananas stored.
The unconditional constraint: r + y + g ≤ 100.
The conditional constraint: r + y + g ≤ 100w .
Introduction to integer programming Logical constraints Mixing logical and linear constraints

Combining constraints with Boolean variables

Example 2: Conditional constraints


The warehouse can store up to 100 red, yellow, or green
bananas—but only if it is rented. Otherwise, it can’t store any
bananas.
Assume r , y , g ≥ 0 are the number of bananas stored.
The unconditional constraint: r + y + g ≤ 100.
The conditional constraint: r + y + g ≤ 100w .
This simplifies to the unconditional constraint if w = 1, but
forces r = y = g = 0 if w = 0.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

The big-number method

Example 3: The big-number method


If a warehouse is rented in Colorado, suddenly the banana company
is subject to Colorado state laws, which say it can grow at most 50
blue bananas.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

The big-number method

Example 3: The big-number method


If a warehouse is rented in Colorado, suddenly the banana company
is subject to Colorado state laws, which say it can grow at most 50
blue bananas.
The unconditional constraint: b ≤ 50.
Introduction to integer programming Logical constraints Mixing logical and linear constraints

The big-number method

Example 3: The big-number method


If a warehouse is rented in Colorado, suddenly the banana company
is subject to Colorado state laws, which say it can grow at most 50
blue bananas.
The unconditional constraint: b ≤ 50.
The conditional constraint: b ≤ 50 + 1000000(1 − w ).
Introduction to integer programming Logical constraints Mixing logical and linear constraints

The big-number method

Example 3: The big-number method


If a warehouse is rented in Colorado, suddenly the banana company
is subject to Colorado state laws, which say it can grow at most 50
blue bananas.
The unconditional constraint: b ≤ 50.
The conditional constraint: b ≤ 50 + 1000000(1 − w ).
This simplifies to the unconditional constraint if w = 1 (if
there is a warehouse), and is effectively not present if w = 0
(if there is no warehouse).
Introduction to integer programming Logical constraints Mixing logical and linear constraints

The big-number method

Example 3: The big-number method


If a warehouse is rented in Colorado, suddenly the banana company
is subject to Colorado state laws, which say it can grow at most 50
blue bananas.
The unconditional constraint: b ≤ 50.
The conditional constraint: b ≤ 50 + 1000000(1 − w ).
This simplifies to the unconditional constraint if w = 1 (if
there is a warehouse), and is effectively not present if w = 0
(if there is no warehouse).
This method does not always work (only if there are practical
limits on b) and very large values of the big number make the
linear program worse to solve.

You might also like