Linear Programming Notes
Linear Programming Notes
Christopher Griffin
« 2009-2014
Licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
With Contributions By:
Bob Pakzad-Hurson
Greg Ference
Veselka Kafedzhieva
Michael Cline
Akinwale Akinbiyi
Ethan Wright
Richard Benjamin
Douglas Mercer
Contents
List of Figures v
Preface ix
Chapter 1. Introduction to Optimization 1
1. A General Maximization Formulation 2
2. Some Geometry for Optimization 4
3. Gradients, Constraints and Optimization 10
Chapter 2. Simple Linear Programming Problems 13
1. Modeling Assumptions in Linear Programming 14
2. Graphically Solving Linear Programs Problems with Two Variables (Bounded
Case) 16
3. Formalizing The Graphical Method 17
4. Problems with Alternative Optimal Solutions 18
5. Problems with No Solution 20
6. Problems with Unbounded Feasible Regions 22
Chapter 3. Matrices, Linear Algebra and Linear Programming 27
1. Matrices 27
2. Special Matrices and Vectors 29
3. Matrices and Linear Programming Expression 30
4. Gauss-Jordan Elimination and Solution to Linear Equations 33
5. Matrix Inverse 35
6. Solution of Linear Equations 37
7. Linear Combinations, Span, Linear Independence 39
8. Basis 41
9. Rank 43
10. Solving Systems with More Variables than Equations 45
11. Solving Linear Programs with Matlab 47
Chapter 4. Convex Sets, Functions and Cones and Polyhedral Theory 51
1. Convex Sets 51
2. Convex and Concave Functions 52
3. Polyhedral Sets 53
4. Rays and Directions 56
5. Directions of Polyhedral Sets 57
6. Extreme Points 59
7. Extreme Directions 62
iii
iv
List of Figures
1.1 Goat pen with unknown side lengths. The objective is to identify the values of
x and y that maximize the area of the pen (and thus the number of goats that
can be kept). 2
1.2 Plot with Level Sets Projected on the Graph of z. The level sets existing in R2
while the graph of z existing R3 . The level sets have been projected onto their
appropriate heights on the graph. 5
1.3 Contour Plot of z = x2 + y 2 . The circles in R2 are the level sets of the function.
The lighter the circle hue, the higher the value of c that defines the level set. 6
1.4 A Line Function: The points in the graph shown in this figure are in the set
produced using the expression x0 + vt where x0 = (2, 1) and let v = (2, 2). 6
1.5 A Level Curve Plot with Gradient Vector: We’ve scaled the gradient vector
in this case to make the picture understandable. Note that the gradient is
perpendicular to the level set curve at the point (1, 1), where the gradient was
evaluated. You can also note that the gradient is pointing in the direction of
steepest ascent of z(x, y). 8
1.6 Level Curves and Feasible Region: At optimality the level curve of the objective
function is tangent to the binding constraints. 11
1.7 Gradients of the Binding Constraint and Objective: At optimality the gradient
of the binding constraints and the objective function are scaled versions of each
other. 12
2.1 Feasible Region and Level Curves of the Objective Function: The shaded region
in the plot is the feasible region and represents the intersection of the five
inequalities constraining the values of x1 and x2 . On the right, we see the
optimal solution is the “last” point in the feasible region that intersects a level
set as we move in the direction of increasing profit. 16
2.2 A Bounded Set: The set S (in blue) is bounded because it can be entirely
contained inside a ball of a finite radius r and centered at some point x0 . In this
example, the set S is in R2 . This figure also illustrates the fact that a ball in R2
is just a disk and its boundary. 18
2.3 An example of infinitely many alternative optimal solutions in a linear
programming problem. The level curves for z(x1 , x2 ) = 18x1 + 6x2 are parallel
to one face of the polygon boundary of the feasible region. Moreover, this side
contains the points of greatest value for z(x1 , x2 ) inside the feasible region. Any
v
combination of (x1 , x2 ) on the line 3x1 + x2 = 120 for x1 ∈ [16, 35] will provide
the largest possible value z(x1 , x2 ) can take in the feasible region S. 20
2.4 A Linear Programming Problem with no solution. The feasible region of the
linear programming problem is empty; that is, there are no values for x1 and x2
that can simultaneously satisfy all the constraints. Thus, no solution exists. 21
2.5 A Linear Programming Problem with Unbounded Feasible Region: Note that
we can continue to make level curves of z(x1 , x2 ) corresponding to larger and
larger values as we move down and to the right. These curves will continue
to intersect the feasible region for any value of v = z(x1 , x2 ) we choose. Thus,
we can make z(x1 , x2 ) as large as we want and still find a point in the feasible
region that will provide this value. Hence, the optimal value of z(x1 , x2 ) subject
to the constraints +∞. That is, the problem is unbounded. 22
2.6 A Linear Programming Problem with Unbounded Feasible Region and Finite
Solution: In this problem, the level curves of z(x1 , x2 ) increase in a more
“southernly” direction that in Example 2.10–that is, away from the direction
in which the feasible region increases without bound. The point in the feasible
region with largest z(x1 , x2 ) value is (7/3, 4/3). Note again, this is a vertex. 23
3.1 The feasible region for the diet problem is unbounded and there are alternative
optimal solutions, since we are seeking a minimum, we travel in the opposite
direction of the gradient, so toward the origin to reduce the objective function
value. Notice that the level curves hit one side of the boundary of the feasible
region. 49
3.2 Matlab input for solving the diet problem. Note that we are solving a
minimization problem. Matlab assumes all problems are mnimization problems,
so we don’t need to multiply the objective by −1 like we would if we started
with a maximization problem. 50
4.1 Examples of Convex Sets: The set on the left (an ellipse and its interior) is
a convex set; every pair of points inside the ellipse can be connected by a line
contained entirely in the ellipse. The set on the right is clearly not convex as
we’ve illustrated two points whose connecting line is not contained inside the
set. 52
4.2 A convex function: A convex function satisfies the expression f (λx1 +(1−λ)x2 ) ≤
λf (x1 ) + (1 − λ)f (x2 ) for all x1 and x2 and λ ∈ [0, 1]. 53
4.3 A hyperplane in 3 dimensional space: A hyperplane is the set of points satisfying
an equation aT x = b, where k is a constant in R and a is a constant vector
in Rn and x is a variable vector in Rn . The equation is written as a matrix
multiplication using our assumption that all vectors are column vectors. 54
4.4 Two half-spaces defined by a hyper-plane: A half-space is so named because any
hyper-plane divides Rn (the space in which it resides) into two halves, the side
“on top” and the side “on the bottom.” 54
4.5 A Ray: The points in the graph shown in this figure are in the set produced
using the expression x0 + dλ where x0 = [2, 1]T and d = [2, 2]T and λ ≥ 0. 56
vi
4.6 Convex Direction: Clearly every point in the convex set (shown in blue) can be
the vertex for a ray with direction [1, 0]T contained entirely in the convex set.
Thus [1, 0]T is a direction of this convex set. 57
4.7 An Unbounded Polyhedral Set: This unbounded polyhedral set has many
directions. One direction is [0, 1]T . 58
4.8 Boundary Point: A boundary point of a (convex) set C is a point in the set
so that for every ball of any radius centered at the point contains some points
inside C and some points outside C. 59
4.9 A Polyhedral Set: This polyhedral set is defined by five half-spaces and has
a single degenerate extreme point located at the intersection of the binding
28
constraints 3x1 + x2 ≤ 120, x1 + 2x2 ≤ 160 and 16 x1 + x2 <= 100. All faces are
shown in bold. 62
4.10 Visualization of the set D: This set really consists of the set of points on the red
line. This is the line where d1 + d2 = 1 and all other constraints hold. This line
has two extreme points (0, 1) and (1/2, 1/2). 64
4.11 The Cartheodory Characterization Theorem: Extreme points and extreme
directions are used to express points in a bounded and unbounded set. 68
5.1 The Simplex Algorithm: The path around the feasible region is shown in the
figure. Each exchange of a basic and non-basic variable moves us along an edge
of the polygon in a direction that increases the value of the objective function. 78
5.2 Unbounded Linear Program: The existence of a negative column aj in the
simplex tableau for entering variable xj indicates an unbounded problem and
feasible region. The recession direction is shown in the figure. 83
5.3 Infinite alternative optimal solutions: In the simplex algorithm, when zj − cj ≥ 0
in a maximization problem with at least one j for which zj − cj = 0, indicates
an infinite set of alternative optimal solutions. 85
5.4 An optimization problem with a degenerate extreme point: The optimal solution
to this problem is still (16, 72), but this extreme point is degenerate, which will
impact the behavior of the simplex algorithm. 87
6.1 Finding an initial feasible point: Artificial variables are introduced into the
problem. These variables allow us to move through non-feasible space. Once we
reach a feasible extreme point, the process of optimizing Problem P1 stops. 94
6.2 Multiperiod inventory models operate on a principle of conservation of
flow. Manufactured goods and previous period inventories flow into the box
representing each period. Demand and next period inventories flow out of the
box representing each period. This inflow and outflow must be equal to account
for all production. 104
6.3 Input model to GLPK describing McLearey’s Problem 106
6.4 Input data to GLPK describing McLearey’s Problem 107
6.5 Output from glpsol on the McLearey Problem. 107
vii
8.1 System 2 has a solution if (and only if) the vector c is contained inside the
positive cone constructed from the rows of A. 124
8.2 System 1 has a solution if (and only if) the vector c is not contained inside the
positive cone constructed from the rows of A. 124
8.3 An example of Farkas’ Lemma: The vector c is inside the positive cone formed
by the rows of A, but c0 is not. 125
8.4 The Gradient Cone: At optimality, the cost vector c is obtuse with respect to
the directions formed by the binding constraints. It is also contained inside the
cone of the gradients of the binding constraints, which we will discuss at length
later. 130
8.5 This figure illustrates the optimal point of the problem given in Example 8.13.
Note that at optimality, the objective function gradient is in the dual cone of
the binding constraint. That is, it is a positive combination of the gradients of
the left-hand-sides of the binding constraints at optimality. The gradient of the
objective function is shown in green. 136
9.1 The dual feasible region in this problem is a mirror image (almost) of the primal
feasible region. This occurs when the right-hand-side vector b is equal to the
objective function coefficient column vector cT and the matrix A is symmetric. 146
9.2 The simplex algorithm begins at a feasible point in the feasible region of the
primal problem. In this case, this is also the same starting point in the dual
problem, which is infeasible. The simplex algorithm moves through the feasible
region of the primal problem towards a point in the dual feasible region. At the
conclusion of the algorithm, the algorithm reaches the unique point that is both
primal and dual feasible. 148
9.3 Degeneracy in the primal problem causes alternative optimal solutions in the
dual problem and destroys the direct relationship between the resource margin
price that the dual variables represent in a non-degenerate problem. 153
viii
Preface
This is a set of lecture notes. It is not a book. You should probably go away and
come back when you have a real textbook on Linear Programming. Okay, do you have a
book? Alright, let’s move on then. This is a set of lecture notes for Math 484–Penn State’s
undergraduate Linear Programming course. Since I use these notes while I teach, there may
be typographical errors that I noticed in class, but did not fix in the notes. If you see a typo,
send me an e-mail and I’ll add an acknowledgement. There may be many typos, that’s why
you should have a real textbook.
The lecture notes are (roughly) based on the first 6 chapters of Bazaraa et al.’s Linear
Programming and Network Flows book. This is a reasonably good book, written primarily
by and for Industrial Engineers. The only problem I have with the book is that it does not
present major results in the standard theorem-proof style common to mathematical discourse.
This set of notes corrects this problem by presenting the material in a format for presentation
to a mathematics class. Many of the proofs in this set of notes are adapted from the textbook
with some minor additions. (For example, each time Bazaraa et al. ask, “Why?” in a proof,
I provide this information.) Additionally, I prefer to present maximization problems, while
Linear Programming and Network Flows prefers the minimization format. I’ve modified all
the proofs to operate on maximization problems. When used with the book, the student can
obtain a complete set of proofs for elementary Linear Programming.
In order to use these notes successfully, you should have taken courses in:
(1) Vector calculus (Math 230/231 at Penn State)
(2) Matrix algebra (Math 220 at Penn State)
I review a substantial amount of the material you will need, but it’s always good to have
covered prerequisites before you get to a class. That being said, I hope you enjoy using these
notes!
ix
CHAPTER 1
Introduction to Optimization
Example 1.1. Let’s recall a simple optimization problem from differential calculus (Math
140): Goats are an environmentally friendly and inexpensive way to control a lawn when
there are lots of rocks or lots of hills. (Seriously, both Google and some U.S. Navy bases use
goats on rocky hills instead of paying lawn mowers!)
Suppose I wish to build a pen to keep some goats. I have 100 meters of fencing and I
wish to build the pen in a rectangle with the largest possible area. How long should the sides
of the rectangle be? In this case, making the pen better means making it have the largest
possible area.
The problem is illustrated in Figure 1.1. Clearly, we know that:
(1.1) 2x + 2y = 100
because 2x + 2y is the perimeter of the pen and I have 100 meters of fencing to build my
pen. The area of the pen is A(x, y) = xy. We can use Equation 1.1 to solve for x in terms
of y. Thus we have:
(1.2) y = 50 − x
and A(x) = x(50 − x). To maximize A(x), recall we take the first derivative of A(x) with
respect to x, set this derivative to zero and solve for x:
dA
(1.3) = 50 − 2x = 0;
dx
1
Goat Pen y
Figure 1.1. Goat pen with unknown side lengths. The objective is to identify the
values of x and y that maximize the area of the pen (and thus the number of goats
that can be kept).
Thus, x = 25 and y = 50 − x = 25. We further recall from basic calculus how to confirm
that this is a maximum; note:
d2 A
(1.4) = −2 < 0
dx2 x=25
Which implies that x = 25 is a local maximum for this function. Another way of seeing this
is to note that A(x) = 50x − x2 is an “upside-down” parabola. As we could have guessed, a
square will maximize the area available for holding goats.
Exercise 1. A canning company is producing canned corn for the holidays. They
have determined that each family prefers to purchase their corn in units of 12 fluid ounces.
Assuming that metal costs 1 cent per square inch and 1 fluid ounce is about 1.8 cubic inches,
compute the ideal height and radius for a can of corn assuming that cost is to be minimized.
[Hint: Suppose that our can has radius r and height h. The formula for the surface area of
a can is 2πrh + 2πr2 . Since metal is priced by the square inch, the cost is a function of the
surface area. The volume of the can is πr2 h and is constrained. Use the same trick we did
in the example to find the values of r and h that minimize cost.
1. A General Maximization Formulation
Let’s take a more general look at the goat pen example. The area function is a mapping
from R2 to R, written A : R2 → R. The domain of A is the two dimensional space R2 and
its range is R.
Our objective in Example 1.1 is to maximize the function A by choosing values for x and
y. In optimization theory, the function we are trying to maximize (or minimize) is called the
objective function. In general, an objective function is a mapping z : D ⊆ Rn → R. Here D
is the domain of the function z.
Definition 1.2. Let z : D ⊆ Rn → R. The point x∗ is a global maximum for z if for all
x ∈ D, z(x∗ ) ≥ z(x). A point x∗ ∈ D is a local maximum for z if there is a neighborhood
S ⊆ D of x∗ (i.e., x∗ ∈ S) so that for all x ∈ S, z(x∗ ) ≥ z(x).
Remark 1.3. Clearly Definition 1.2 is valid only for domains and functions where the
concept of a neighborhood is defined and understood. In general, S must be a topologically
2
Note we’ve added two inequality constraints x ≥ 0 and y ≥ 0 because it doesn’t really make
any sense to have negative lengths. We can re-write these constraints as −x ≤ 0 and −y ≤ 0
where g1 (x, y) = −x and g2 (x, y) = −y to make Expression 1.6 look like Expression 1.5.
1Thanks to Bob Pakzad-Hurson who suggested this remark for versions after 1.1.
3
We have formulated the general maximization problem in Proble 1.5. Suppose that we
are interested in finding a value that minimizes an objective function z(x1 , . . . , xn ) subject
to certain constraints. Then we can write Problem 1.5 replacing max with min.
Exercise 3. Write the problem from Exercise 1 as a general minimization problem. Add
any appropriate non-negativity constraints. [Hint: You must change max to min.]
An alternative way of dealing with minimization is to transform a minimization prob-
lem into a maximization problem. If we want to minimize z(x1 , . . . , xn ), we can maximize
−z(x1 , . . . , xn ). In maximizing the negation of the objective function, we are actually finding
a value that minimizes z(x1 , . . . , xn ).
Exercise 4. Prove the following statement: Consider Problem 1.5 with the objective
function z(x1 , . . . , xn ) replaced by −z(x1 , . . . , xn ). Then the solution to this new problem
minimizes z(x1 , . . . , xn ) subject to the constraints of Problem 1.5.[Hint: Use the definition of
global maximum and a multiplication by −1. Be careful with the direction of the inequality
when you multiply by −1.]
2. Some Geometry for Optimization
A critical part of optimization theory is understanding the geometry of Euclidean space.
To that end, we’re going to review some critical concepts from Vector Calculus (Math
230/231). I’ll assume that you remember some basic definitions like partial derivative and
Euclidean space. If you need a refresher, you might want to consult [MT03, Ste07].
We’ll denote vectors in Rn in boldface. So x ∈ Rn is an n-dimensional vector and we
have x = (x1 , . . . , xn ).
Definition 1.5 (Dot Product). Recall that if x, y ∈ Rn are two n-dimensional vectors,
then the dot product (scalar product) is:
Xn
(1.7) x·y = xi yi
i=1
th
where xi is the i component of the vector x.
An alternative and useful definition for the dot product is given by the following formula.
Let θ be the angle between the vectors x and y. Then the dot product of x and y may be
alternatively written as:
(1.8) x · y = ||x||||y|| cos θ
This fact can be proved using the law of cosines from trigonometry. As a result, we have
the following small lemma (which is proved as Theorem 1 of [MT03]):
Lemma 1.6. Let x, y ∈ Rn . Then the following hold:
(1) The angle between x and y is less than π/2 (i.e., acute) iff x · y > 0.
(2) The angle between x and y is exactly π/2 (i.e., the vectors are orthogonal) iff x · y =
0.
(3) The angle between x and y is greater than π/2 (i.e., obtuse) iff x · y < 0.
Exercise 5. Use the value of the cosine function and the fact that x · y = ||x||||y|| cos θ
to prove the lemma. [Hint: For what values of θ is cos θ > 0.]
4
When z : D ⊆ R → R, the graph is precisely what you’d expect. It’s the set of pairs
(x, y) ∈ R2 so that y = z(x). This is the graph that you learned about back in Algebra 1.
Definition 1.8 (Level Set). Let z : Rn → R be a function and let c ∈ R. Then the level
set of value c for function z is the set:
(1.10) {x = (x1 , . . . , xn ) ∈ Rn |z(x) = c} ⊆ Rn
Example 1.9. Consider the function z = x2 + y 2 . The level set of z at 4 is the set of
points (x, y) ∈ R2 such that:
(1.11) x2 + y 2 = 4
You will recognize this as the equation for a circle with radius 4. We illustrate this in the
following two figures. Figure 1.2 shows the level sets of z as they sit on the 3D plot of the
function, while Figure 1.3 shows the level sets of z in R2 . The plot in Figure 1.3 is called a
contour plot.
Level Set
Figure 1.2. Plot with Level Sets Projected on the Graph of z. The level sets
existing in R2 while the graph of z existing R3 . The level sets have been projected
onto their appropriate heights on the graph.
Definition 1.10. (Line) Let x0 , v ∈ Rn . Then the line defined by vectors x0 and v is
the function l(t) = x0 + tv. Clearly l : R → Rn . The vector v is called the direction of the
line.
Example 1.11. Let x0 = (2, 1) and let v = (2, 2). Then the line defined by x0 and v
is shown in Figure 1.4. The set of points on this line is the set L = {(x, y) ∈ R2 : x =
2 + 2t, y = 1 + 2t, t ∈ R}.
Definition 1.12 (Directional Derivative). Let z : Rn → R and let v ∈ Rn be a vector
(direction) in n-dimensional space. Then the directional derivative of z at point x0 ∈ Rn in
the direction of v is
d
(1.12) z(x0 + tv)
dt t=0
5
Level Set
Figure 1.3. Contour Plot of z = x2 + y 2 . The circles in R2 are the level sets of the
function. The lighter the circle hue, the higher the value of c that defines the level
set.
Figure 1.4. A Line Function: The points in the graph shown in this figure are in
the set produced using the expression x0 + vt where x0 = (2, 1) and let v = (2, 2).
Exercise 6. Prove Proposition 1.13. [Hint: Use the definition of derivative for a uni-
variate function and apply it to the definition of directional derivative and evaluate t = 0.]
Definition 1.14 (Gradient). Let z : Rn → R be a function and let x0 ∈ Rn . Then the
gradient of z at x0 is the vector in Rn given by:
∂z ∂z
(1.14) ∇z(x0 ) = (x0 ), . . . , (x0 )
∂x1 ∂xn
Gradients are extremely important concepts in optimization (and vector calculus in gen-
eral). Gradients have many useful properties that can be exploited. The relationship between
the directional derivative and the gradient is of critical importance.
6
We now come to the two most important results about gradients, (i) the fact that they
always point in the direction of steepest ascent with respect to the level curves of a function
and (ii) that they are perpendicular (normal) to the level curves of a function. We can
exploit this fact as we seek to maximize (or minimize) functions.
Theorem 1.16. Let z : Rn → R be differentiable, x0 ∈ Rn . If ∇z(x0 ) 6= 0, then ∇z(x0 )
points in the direction in which z is increasing fastest.
Proof. Recall ∇z(x0 ) · v is the directional derivative of z in direction v at x0 . Assume
that v is a unit vector. We know that:
(1.19) ∇z(x0 ) · v = ||∇z(x0 )|| cos θ
(because we assumed v was a unit vector) where θ is the angle between the vectors ∇z(x0 )
and v. The function cos θ is largest when θ = 0, that is when v and ∇z(x0 ) are parallel
vectors. (If ∇z(x0 ) = 0, then the directional derivative is zero in all directions.)
Theorem 1.17. Let z : Rn → R be differentiable and let x0 lie in the level set S defined
by z(x) = k for fixed k ∈ R. Then ∇z(x0 ) is normal to the set S in the sense that if v
is a tangent vector at t = 0 of a path c(t) contained entirely in S with c(0) = x0 , then
∇z(x0 ) · v = 0.
Remark 1.18. Before giving the proof, we illustrate this theorem in Figure 1.5. The
function is z(x, y) = x4 + y 2 + 2xy and x0 = (1, 1). At this point ∇z(x0 ) = (6, 4). We include
the tangent line to the level set at the point (1,1) to illustrate the normality of the gradient
to the level curve at the point.
Figure 1.5. A Level Curve Plot with Gradient Vector: We’ve scaled the gradient
vector in this case to make the picture understandable. Note that the gradient
is perpendicular to the level set curve at the point (1, 1), where the gradient was
evaluated. You can also note that the gradient is pointing in the direction of steepest
ascent of z(x, y).
Proof. As stated, let c(t) be a curve in S. Then c : R → Rn and z(c(t)) = k for all
t ∈ R. Let v be the tangent vector to c at t = 0; that is:
dc(t)
(1.20) =v
dt t=0
Differentiating z(c(t)) with respect to t using the chain rule and evaluating at t = 0 yields:
d
(1.21) z(c(t)) = ∇z(c(0)) · v = ∇z(x0 ) · v = 0
dt t=0
and thus our vector is v = (x1 − x0 , m(x1 − x0 )). Now, computing the gradient of z(x, y) at
(x0 , y0 ) is:
∇z(x0 , y0 ) = (4x30 + 2y0 , 2y0 + 2x0 )
Lastly we compute:
∇z(x0 , y0 ) · v = 4x30 + 2y0 (x1 − x0 ) + (2y0 + 2x0 ) (m(x1 − x0 )) =
−4x30 − 2y0
3
4x0 + 2y0 (x1 − x0 ) + (2y0 + 2x0 ) (x1 − x0 ) =
2y0 + 2x0
4x30 + 2y0 (x1 − x0 ) + −4x30 − 2y0 (x1 − x0 ) = 0
Thus, for any point (x0 , y0 ) on a level curve of z(x, y) = x4 + y 2 + 2xy we know that the
gradient at that point is perpendicular to a tangent line (vector) to the curve at the point
(x0 , y0 ).
It is interesting to note that one can compute the slope of the tangent line (and its
equation) in Figure 1.5. Here (x0 , y0 ) = (1, 1), thus the slope of the tangent line is:
−4x30 − 2y0 −6 −3
m= = =
2y0 + 2x0 4 2
The equation for the line displayed in Figure 1.5 is:
−3
y−1= (x − 1)
2
Exercise 7. In this exercise you will use elementary calculus (and a little bit of vector
algebra) to show that the gradient of a simple function is perpendicular to its level sets:
(a): Plot the level sets of z(x, y) = x2 + y 2 . Draw the gradient at the point (x, y) =
(2, 0). Convince yourself that it is normal to the level set x2 + y 2 = 4.
(b): Now, choose any level set x2 + y 2 = k. Use implicit differentiation to find dy/dx.
This is the slope of a tangent line to the circle x2 + y 2 = k. Let (x0 , y0 ) be a point
on this circle.
(c): Find an expression for a vector parallel to the tangent line at (x0 , y0 ) [Hint: you
can use the slope you just found.]
(d): Compute the gradient of z at (x0 , y0 ) and use it and the vector expression you just
computed to show that two vectors are perpendicular. [Hint: use the dot product.]
Example 1.22 (Continuation of Example 1.1). Let’s look at the level curves of the
objective function and their relationship to the constraints at the point of optimality (x, y) =
(25, 25). In Figure 1.6 we see the level curves of the objective function (the hyperbolas) and
the feasible region shown as shaded. The elements in the feasible regions are all values for
x and y for which 2x + 2y ≤ 100 and x, y ≥ 0. You’ll note that at the point of optimality
the level curve xy = 625 is tangent to the equation 2x + 2y = 100; i.e., the level curve of the
objective function is tangent to the binding constraint.
Figure 1.6. Level Curves and Feasible Region: At optimality the level curve of the
objective function is tangent to the binding constraints.
If you look at the gradient of A(x, y) at this point it has value (25, 25). We see that it
is pointing in the direction of increase for the function A(x, y) (as should be expected) but
more importantly let’s look at the gradient of the function 2x + 2y. It’s gradient is (2, 2),
which is just a scaled version of the gradient of the objective function. Thus the gradient
of the objective function is just a dilation of gradient of the binding constraint. This is
illustrated in Figure 1.7.
The elements illustrated in the previous example are true in general. You may have
discussed a simple example of these when you talked about Lagrange Multipliers in Vector
Calculus (Math 230/231). We’ll revisit these concepts later when we talk about duality
theory for linear programs. We’ll also discuss the gradients of the binding constraints with
respect to optimality when we discuss linear programming.
Exercise 8. Plot the level sets of the objective function and the feasible region in
Exercise 1. At the point of optimality you identified, show that the gradient of the objective
function is a scaled version of the gradient (linear combination) of the binding constraints.
11
Figure 1.7. Gradients of the Binding Constraint and Objective: At optimality the
gradient of the binding constraints and the objective function are scaled versions of
each other.
12
CHAPTER 2
When both the objective and all the constraints in Expression 1.5 are linear functions,
then the optimization problem is called a linear programming problem. This has the general
form:
max z(x1 , . . . , xn ) = c1 x1 + · · · + cn xn
s.t. a11 x1 + · · · + a1n xn ≤ b1
..
.
(2.1) am1 x1 + · · · + amn xn ≤ bm
h11 x1 + · · · + hn1 xn = r1
..
.
hl1 x1 + · · · + hln xn = rl
Lemma 2.2 (Linear Function). If z : Rn → R is linear then for all x1 , x2 ∈ Rn and for
all scalar constants α ∈ R we have:
(2.3) z(x1 + x2 ) = z(x1 ) + z(x2 )
(2.4) z(αx1 ) = αz(x1 )
finishing toys and 120 hours per week making toys. The company wishes to maximize the
profit it makes by choosing how much of each toy to produce.
We can represent the profit maximization problem of the company as a linear program-
ming problem. Let x1 be the number of planes the company will produce and let x2 be
the number of boats the company will produce. The profit for each plane is $10 − $3 = $7
per plane and the profit for each boat is $8 − $2 = $6 per boat. Thus the total profit the
company will make is:
(2.5) z(x1 , x2 ) = 7x1 + 6x2
The company can spend no more than 120 hours per week making toys and since a plane
takes 3 hours to make and a boat takes 1 hour to make we have:
(2.6) 3x1 + x2 ≤ 120
Likewise, the company can spend no more than 160 hours per week finishing toys and since
it takes 1 hour to finish a plane and 2 hour to finish a boat we have:
(2.7) x1 + 2x2 ≤ 160
Finally, we know that x1 ≤ 35, since the company will make no more than 35 planes per
week. Thus the complete linear programming problem is given as:
max z(x1 , x2 ) = 7x1 + 6x2
s.t. 3x1 + x2 ≤ 120
x1 + 2x2 ≤ 160
(2.8)
x1 ≤ 35
x1 ≥ 0
x2 ≥ 0
3x1 + x2 = 120
x1 + 2x2 = 160
Figure 2.1. Feasible Region and Level Curves of the Objective Function: The
shaded region in the plot is the feasible region and represents the intersection of
the five inequalities constraining the values of x1 and x2 . On the right, we see the
optimal solution is the “last” point in the feasible region that intersects a level set
as we move in the direction of increasing profit.
After plotting the feasible region, the next step is to plot the level curves of the objective
function. In our problem, the level sets will have the form:
−7 c
7x1 + 6x2 = c =⇒ x2 = x1 +
6 6
This is a set of parallel lines with slope −7/6 and intercept c/6 where c can be varied as
needed. The level curves for various values of c are parallel lines. In Figure 2.1 they are
shown in colors ranging from red to yellow depending upon the value of c. Larger values of
c are more yellow.
To solve the linear programming problem, follow the level sets along the gradient (shown
as the black arrow) until the last level set (line) intersects the feasible region. If you are
doing this by hand, you can draw a single line of the form 7x1 + 6x2 = c and then simply
16
draw parallel lines in the direction of the gradient (7, 6). At some point, these lines will fail
to intersect the feasible region. The last line to intersect the feasible region will do so at a
point that maximizes the profit. In this case, the point that maximizes z(x1 , x2 ) = 7x1 +6x2 ,
subject to the constraints given, is (x∗1 , x∗2 ) = (16, 72).
Note the point of optimality (x∗1 , x∗2 ) = (16, 72) is at a corner of the feasible region. This
corner is formed by the intersection of the two lines: 3x1 + x2 = 120 and x1 + 2x2 = 160. In
this case, the constraints
3x1 + x2 ≤ 120
x1 + 2x2 ≤ 160
are both binding, while the other constraints are non-binding. In general, we will see that
when an optimal solution to a linear programming problem exists, it will always be at the
intersection of several binding constraints; that is, it will occur at a corner of a higher-
dimensional polyhedron.
x0
Br (x0)
Figure 2.2. A Bounded Set: The set S (in blue) is bounded because it can be
entirely contained inside a ball of a finite radius r and centered at some point x0 .
In this example, the set S is in R2 . This figure also illustrates the fact that a ball
in R2 is just a disk and its boundary.
Exercise 13. Use the graphical method for solving linear programming problems to
solve the linear programming problem you defined in Exercise 10.
Example 2.7. Suppose the toy maker in Example 2.3 finds that it can sell planes for a
profit of $18 each instead of $7 each. The new linear programming problem becomes:
max z(x1 , x2 ) = 18x1 + 6x2
s.t. 3x1 + x2 ≤ 120
x1 + 2x2 ≤ 160
(2.10)
x1 ≤ 35
x1 ≥ 0
x2 ≥ 0
Applying our graphical method for finding optimal solutions to linear programming problems
yields the plot shown in Figure 2.3. The level curves for the function z(x1 , x2 ) = 18x1 + 6x2
are parallel to one face of the polygon boundary of the feasible region. Hence, as we move
further up and to the right in the direction of the gradient (corresponding to larger and
larger values of z(x1 , x2 )) we see that there is not one point on the boundary of the feasible
region that intersects that level set with greatest value, but instead a side of the polygon
boundary described by the line 3x1 + x2 = 120 where x1 ∈ [16, 35]. Let:
S = {(x1 , x2 )|3x1 + x2 ≤ 120, x1 + 2x2 ≤ 160, x1 ≤ 35, x1 , x2 ≥ 0}
that is, S is the feasible region of the problem. Then for any value of x∗1 ∈ [16, 35] and any
value x∗2 so that 3x∗1 + x∗2 = 120, we will have z(x∗1 , x∗2 ) ≥ z(x1 , x2 ) for all (x1 , x2 ) ∈ S. Since
there are infinitely many values that x1 and x2 may take on, we see this problem has an
infinite number of alternative optimal solutions.
Based on the example in this section, we can modify our algorithm for finding the solution
to a linear programming problem graphically to deal with situations with an infinite set of
alternative optimal solutions (see Algorithm 2):
Exercise 14. Modify the linear programming problem from Exercise 10 to obtain a
linear programming problem with an infinite number of alternative optimal solutions. Solve
19
the new problem and obtain a description for the set of alternative optimal solutions. [Hint:
Just as in the example, x1 will be bound between two value corresponding to a side of the
polygon. Find those values and the constraint that is binding. This will provide you with a
description of the form for any x∗1 ∈ [a, b] and x∗2 is chosen so that cx∗1 + dx∗2 = v, the point
(x∗1 , x∗2 ) is an alternative optimal solution to the problem. Now you fill in values for a, b, c,
d and v.]
The level sets of the objective and the constraints are shown in Figure 2.4.
Figure 2.4. A Linear Programming Problem with no solution. The feasible region
of the linear programming problem is empty; that is, there are no values for x1 and
x2 that can simultaneously satisfy all the constraints. Thus, no solution exists.
The fact that the feasible region is empty is shown by the fact that in Figure 2.4 there is
no blue region–i.e., all the regions are gray indicating that the constraints are not satisfiable.
Based on this example, we can modify our previous algorithm for finding the solution to
linear programming problems graphically (see Algorithm 3):
21
x1 − x2 = 1
2x1 + x2 = 6
feasible region in Figure 2.5 is clearly unbounded since it stretches upward along the x2 axis
infinitely far and also stretches rightward along the x1 axis infinitely far, bounded below by
the line x1 − x2 = 1. There is no way to enclose this region by a disk of finite radius, hence
the feasible region is not bounded.
We can draw more level curves of z(x1 , x2 ) in the direction of increase (down and to the
right) as long as we wish. There will always be an intersection point with the feasible region
because it is infinite. That is, these curves will continue to intersect the feasible region for
any value of v = z(x1 , x2 ) we choose. Thus, we can make z(x1 , x2 ) as large as we want and
still find a point in the feasible region that will provide this value. Hence, the largest value
22
z(x1 , x2 ) can take when (x1 , x2 ) are in the feasible region is +∞. That is, the problem is
unbounded.
Just because a linear programming problem has an unbounded feasible region does not
imply that there is not a finite solution. We illustrate this case by modifying example 2.9.
Example 2.10 (Continuation of Example 2.9). Consider the linear programming problem
from Example 2.9 with the new objective function: z(x1 , x2 ) = (1/2)x1 − x2 . Then we have
the new problem:
1
max z(x1 , x2 ) = x1 − x2
2
(2.13) s.t. x1 − x2 ≤ 1
2x1 + x2 ≥ 6
x 1 , x2 ≥ 0
The feasible region, level sets of z(x1 , x2 ) and gradients are shown in Figure 2.6. In this
case note, that the direction of increase of the objective function is away from the direction
in which the feasible region is unbounded (i.e., downward). As a result, the point in the
feasible region with the largest z(x1 , x2 ) value is (7/3, 4/3). Again this is a vertex: the
binding constraints are x1 − x2 = 1 and 2x1 + x2 = 6 and the solution occurs at the point
these two lines intersect.
x1 − x2 = 1
2x1 + x2 = 6
� �
1
∇z(x1 , x2 ) = , −1
2
� �
7 4
,
3 3
23
Based on these two examples, we can modify our algorithm for graphically solving a
two variable linear programming problems to deal with the case when the feasible region is
unbounded.
Exercise 15. Does the following problem have a bounded solution? Why?
min z(x1 , x2 ) = 2x1 − x2
s.t. x1 − x2 ≤ 1
(2.14)
2x1 + x2 ≥ 6
x 1 , x2 ≥ 0
[Hint: Use Figure 2.6 and Algorithm 4.]
Exercise 16. Modify the objective function in Example 2.9 or Example 2.10 to produce
a problem with an infinite number of solutions.
Exercise 17. Modify the objective function in Exercise 15 to produce a minimization
problem that has a finite solution. Draw the feasible region and level curves of the objective
24
to “prove” your example works. [Hint: Think about what direction of increase is required
for the level sets of z(x1 , x2 ) (or find a trick using Exercise 4).]
25
CHAPTER 3
In this section, we will review matrix concepts critical for the general understanding of
general linear programming algorithms.
Let x and y be two vectors in Rn . Recall we denote the dot product of the two vectors
as x · y.
1. Matrices
Recall an m × n matrix is a rectangular array of numbers, usually drawn from a field
such as R. We write an m × n matrix with values in R as A ∈ Rm×n . The matrix consists
of m rows and n columns. The element in the ith row and j th column of A is written as Aij .
The j th column of A can be written as A·j , where the · is interpreted as ranging over every
value of i (from 1 to m). Similarly, the ith row of A can be written as Ai· . When m = n,
then the matrix A is called square.
Definition 3.1 (Matrix Addition). If A and B are both in Rm×n , then C = A + B is
the matrix sum of A and B and
(3.1) Cij = Aij + Bij for i = 1, . . . , m and j = 1, . . . , n
Example 3.2.
1 2 5 6 1+5 2+6 6 8
(3.2) + = =
3 4 7 8 3+7 4+8 10 12
Definition 3.3 (Row/Column Vector). A 1 × n matrix is called a row vector, and a
m × 1 matrix is called a column vector. For the remainder of these notes, every vector will
be thought of column vector unless otherwise noted.
It should be clear that any row of matrix A could be considered a row vector in Rn and
any column of A could be considered a column vector in Rm .
Definition 3.4 (Matrix Multiplication). If A ∈ Rm×n and B ∈ Rn×p , then C = AB is
the matrix product of A and B and
(3.3) Cij = Ai· · B·j
Note, Ai· ∈ R1×n (an n-dimensional vector) and B·j ∈ Rn×1 (another n-dimensional vector),
thus making the dot product meaningful.
Example 3.5.
1 2 5 6 1(5) + 2(7) 1(6) + 2(8) 19 22
(3.4) = =
3 4 7 8 3(5) + 4(7) 3(6) + 4(8) 43 50
27
Exercise 21. By analogy define the augmented matrix A B
. Note, this is not a fraction.
In your definition, identify the appropriate requirements on the relationship between the
number of rows and columns that the matrices must have. [Hint: Unlike [A|B], the number
of rows don’t have to be the same, since your concatenating on the rows, not columns. There
should be a relation between the numbers of columns though.]
When it is clear from context, we may simply write I and omit the subscript n.
Exercise 22. Let A ∈ Rn×n . Show that AIn = In A = A. Hence, I is an identify for
the matrix multiplication operation on square matrices. [Hint: Do the multiplication out
long hand.]
Definition 3.10 (Standard Basis Vector). The standard basis vector ei ∈ Rn is:
ei = 0, 0, . . ., 1, 0, . . . , 0
| {z } | {z }
i−1 n−i−1
Note, this definition is only valid for n ≥ i. Further the standard basis vector ei is also the
ith row or column of In .
Definition 3.11 (Unit and Zero Vectors). The vector e ∈ Rn is the one vector e =
(1, 1, . . . , 1). Similarly, the zero vector 0 = (0, 0, . . . , 0) ∈ Rn . We assume that the length of
e and 0 will be determined from context.
Show that eT y = yT e = 1. [Hint: First remember that eT x is a scalar value (it’s e·x. Second,
remember that a scalar times a vector is just a new vector with each term multiplied by the
scalar. Last, use these two pieces of information to write the product eT y as a sum of
fractions.]
29
Remark 3.14. In the previous definition, a problem is in standard form as long as its
constraints have form Ax = b and x ≥ 0. The problem can be either a maximization or
minimization problem.
Theorem 3.15. Every linear programming problem in canonical form can be put into
standard form.
Proof. Consider the constraint corresponding to the first row of the matrix A:
This act can be repeated for each row of A (constraint) yielding m new variables s1 , . . . , sm ,
which we can express as a row s. Then the new linear programming problem can be expressed
as:
T
max z(x) =c x
s.t. Ax + Im s = b
x, s ≥ 0
Clearly, this new linear programming problem is in standard form and any solution maxi-
mizing the original problem will necessarily maximize this one.
Example 3.16. Consider the Toy Maker problem from Example 2.3. The problem in
canonical form is:
max z(x1 , x2 ) = 7x1 + 6x2
s.t. 3x1 + x2 ≤ 120
x1 + 2x2 ≤ 160
x1 ≤ 35
x1 ≥ 0
x2 ≥ 0
31
We can introduce slack variables s1 , s2 and s3 into the constraints (one for each constraint)
and re-write the problem as:
max z(x1 , x2 ) = 7x1 + 6x2
s.t. 3x1 + x2 + s1 = 120
x1 + 2x2 + s2 = 160
x1 + s3 = 35
x1 ≥ 0
x2 ≥ 0
If xi is unrestricted in sign and has no upper or lower bounds, then let xi = yi − zi where
yi , zi ≥ 0 and replace xi by (yi − zi ) in the objective, equations and inequalities of a general
linear programming problem. Since yi , zi ≥ 0 and may be given any values as a part of the
solution, clearly xi may take any value in R.
Exercise 25. Convince yourself that the general linear programming problem shown
in Expression 3.15 can be converted into canonical (or standard) form using the following
steps:
(1) Every constraint of the form xi ≤ ui can be dealt with by substituting yi = ui − xi ,
yi ≥ 0.
(2) Every constraint of the form li ≤ xi can be dealt with by substituting yi = xi − li ,
yi ≥ 0.
(3) If xi is unrestricted in any way, then we can variables yi and zi so that xi = yi − zi
where yi , zi ≥ 0.
(4) Any equality constraints Hx = r can be transformed into inequality constraints.
Thus, Expression 3.15 can be transformed to standard form. [Hint: No hint, the hint is in
the problem.]
4. Gauss-Jordan Elimination and Solution to Linear Equations
In this sub-section, we’ll review Gauss-Jordan Elimination as a solution method for linear
equations. We’ll use Gauss-Jordan Elimination extensively in the coming chapters.
Definition 3.19 (Elementary Row Operation). Let A ∈ Rm×n be a matrix. Recall Ai·
is the ith row of A. There are three elementary row operations:
(1) (Scalar Multiplication of a Row) Row Ai· is replaced by αAi· , where α ∈ R and
α 6= 0.
(2) (Row Swap) Row Ai· is swapped with Row Aj· for i 6= j.
(3) (Scalar Multiplication and Addition) Row Aj· is replaced by αAi· + Aj· for α ∈ R
and i 6= j.
Example 3.20. Consider the matrix:
1 2
A=
3 4
In an example of scalar multiplication of a row by a constant, we can multiply the second
row by 1/3 to obtain:
1 2
B=
1 43
As an example of scalar multiplication and addition, we can multiply the second row by
(−1) and add the result to the first row to obtain:
2
0 2 − 43 0 3
C= 4 =
1 3
1 43
We can then use scalar multiplication and multiply the first row by (3/2) to obtain:
0 1
D=
1 43
33
We can then use scalar multiplication and addition to multiply the first row by (−4/3)
add it to the second row to obtain:
0 1
E=
1 0
Finally, we can swap row 2 and row 1 to obtain:
1 0
I2 =
0 1
Thus using elementary row operations, we have transformed the matrix A into the matrix
I2 .
Theorem 3.21. Each elementary row operation can be accomplished by a matrix multi-
plication.
Proof. We’ll show that scalar multiplication and row addition can be accomplished by
a matrix multiplication. In Exercise 26, you’ll be asked to complete the proof for the other
two elementary row operations.
Let A ∈ Rm×n . Without loss of generality, suppose we wish to multiply row 1 by α and
add it to row 2, replacing row 2 with the result. Let:
1 0 0 ... 0
α 1 0 . . . 0
(3.23) E = ... ... ..
. 0
0 0 0 ... 1
This is simply the identity Im with an α in the (2, 1) position instead of 0. Now consider
EA. Let A·j = [a1j , a2j , . . . , amj ]T be the j th column of A. Then :
1 0 0 ... 0 a1j a1j
α 1 0 . . . 0 a2j α(a1j ) + a2j
(3.24) ... ... ... . = ..
0 .. .
0 0 0 ... 1 amj amj
That is, we have taken the first element of A·j and multiplied it by α and added it to the
second element of A·j to obtain the new second element of the product. All other elements
of A·j are unchanged. Since we chose an arbitrary column of A, it’s clear this will occur in
each case. Thus EA will be the new matrix with rows the same as A except for the second
row, which will be replaced by the first row of A multiplied by the constant α and added
to the second row of A. To multiply the ith row of A and add it to the j th row, we would
simply make a matrix E by starting with Im and replacing the ith element of row j with
α.
Exercise 26. Complete the proof by showing that scalar multiplication and row swap-
ping can be accomplished by a matrix multiplication. [Hint: Scalar multiplication should be
easy, given the proof above. For row swap, try multiplying matrix A from Example 3.20 by:
0 1
1 0
and see what comes out. Can you generalize this idea for arbitrary row swaps?]
34
Matrices of the kind we’ve just discussed are called elementary matrices. Theorem 3.21
will be important when we study efficient methods for solving linear programming problems.
It tells us that any set of elementary row operations can be performed by finding the right
matrix. That is, suppose I list 4 elementary row operations to perform on matrix A. These
elementary row operations correspond to for matrices E1 , . . . , E4 . Thus the transformation
of A under these row operations can be written using only matrix multiplication as B =
E4 · · · E1 A. This representation is much simpler for a computer to keep track of in algorithms
that require the transformation of matrices by elementary row operations.
Definition 3.22 (Row Equivalence). Let A ∈ Rm×n and let B ∈ Rm×n . If there is a
sequence of elementary matrices E1 , . . . , Ek so that:
B = Ek · · · E1 A
then A and B are said to be row equivalent.
5. Matrix Inverse
Definition 3.23 (Invertible Matrix). Let A ∈ Rn×n be a square matrix. If there is a
matrix A−1 such that
(3.25) AA−1 = A−1 A = In
then matrix A is said to be invertible (or nonsingular ) and A−1 is called its inverse. If A is
not invertible, it is called a singular matrix.
Exercise 27. Find the equivalent elementary row operation matrices for Example 3.20.
There should be five matrices E1 , . . . , E5 corresponding to the five steps shown. Show that
the product of these matrices (in the correct order) yields the identity matrix. Now compute
the product B = E5 · · · E1 . Show that B = A−1 [Hint: You’ve done most of the work.]
The proof of the following theorem is beyond the scope of this class. Proofs can be found
in [Lan87] (Chapter 2) and [Cul72] (Chapter 1) and should be covered in a Linear Algebra
course (Math 436).
Theorem 3.24. If A ∈ Rn×n is a square matrix and X ∈ Rn×n so that XA = In , then:
(1) AX = In
(2) X = A−1
(3) A and A−1 can be written as a product of elementary matrices.
The process we’ve illustrated in Example 3.20 is an instance of Gauss-Jordan elimination
and can be used to find the inverse of any matrix (or to solve systems of linear equations).
This process is summarized in Algorithm 5.
Definition 3.25 (Pivoting). In Algorithm 5 when Aii 6= 0, the process performed in
Steps 4 and 5 is called pivoting on element (i, i).
We illustrate this algorithm in the following example.
Example 3.26. Again consider the matrix A from Example 3.20. We can follow the
steps in Algorithm 5 to compute A−1 .
35
Gauss-Jordan Elimination
Computing an Inverse
(1) Let A ∈ Rn×n . Let X = [A|In ].
(2) Let i := 1
(3) If Xii = 0, then use row-swapping on X to replace row i with a row j (j > i) so that
Xii 6= 0. If this is not possible, then A is not invertible.
(4) Replace Xi· by (1/Xii )Xi· . Element (i, i) of X should now be 1.
−X
(5) For each j 6= i, replace Xj· by Xiiji Xi· + Xj· .
(6) Set i := i + 1.
(7) If i > n, then A has been replaced by In and In has been replaced by A−1 in X. If
i ≤ n, then goto Line 3.
Algorithm 5. Gauss-Jordan Elimination for Matrix Inversion
Step 1:
1 2 1 0
X :=
3 4 0 1
Step 2: i := 1
Step 3 and 4 (i = 1): A11 = 1, so no swapping is required. Furthermore, replacing
X1· by (1/1)X1· will not change X.
Step 5 (i = 1): We multiply row 1 of X by −3 and add the result to row 2 of X to
obtain:
1 2 1 0
X :=
0 −2 −3 1
Step 6: i := 1 + 1 = 2 and i = n so we return to Step 3.
Steps 3 (i = 2): The new element A22 = −2 6= 0. Therefore, no swapping is required.
Step 4 (i = 2): We replace row 2 of X with row 2 of X multiplied by −1/2.
1 2 1 0
X :=
0 1 32 − 21
Step 5 (i = 2): We multiply row 2 of X by −2 and add the result to row 1 of X to
obtain:
1 0 −2 1
X :=
0 1 32 − 12
Step 6 (i = 2): i := 2 + 1 = 3. We now have i > n and the algorithm terminates.
Thus using Algorithm 5 we have computed:
−1 −2 1
A = 3
2
− 12
This value should be the result you obtained in Exercise 27.
Exercise 28. Does the matrix:
1 2 3
A = 4 5 6
7 8 9
36
The last equation is tautological (true regardless of the values of α1 and α2 ). The second
equation implies α2 = 0. Using this value in first equation implies that α1 = 0. This is the
unique solution to the problem and thus the vectors are linearly independent.
The following theorem is related to the example above. It’s proof is outside the scope
of the course. It should be taught in a Linear Algebra course (Math 436). Proofs can be
found in most Linear Algebra textbooks. Again, see [Lan87] (Theorem 3.1) for a proof using
vector spaces.
Theorem 3.35. Let x1 , . . . , xm ∈ Rn . If m > n, then the vectors are linearly dependent.
8. Basis
Definition 3.36 (Basis). Let X = {x1 , . . . , xm } be a set of vectors in Rn . The set X is
called a basis of Rn if X is a linearly independent set of vectors and every vector in Rn is
in the span of X . That is, for any vector w ∈ Rn we can find scalar values α1 , . . . , αm such
that
Xm
(3.37) w = αi xi
i=1
which clearly has a solution for all a, b, and c. Another way of seeing this is to note that the
matrix:
1 1 0
(3.40) A = 1 0 1
0 1 1
is invertible.
The following theorem on the size of a basis in Rn is outside the scope of this course. A
proof can be found in [Lan87].
Theorem 3.38. If X is a basis of Rn , then X contains precisely n vectors.
Exercise 34. Show that the vectors
1 4 7
x1 = 2 , x 2 = 5 , x 3 = 8
3 6 9
are not a basis for R3 . [Hint: See exercise 33.]
We will use the following lemma, which is related to the notion of the basis of Rn when
we come to our formal method for solving linear programming problems.
Lemma 3.39. Let {x1 , . . . , xm+1 } be a linearly dependent set of vectors in Rn and let
X = {x1 , . . . , xm } be a linearly independent set. Further assume that xm+1 6= 0. Assume
α1 , . . . , αm+1 are a set of scalars, not all zero, so that
m+1
X
(3.41) αi xi = 0
i=1
For any j ∈ {1, . . . , m} such that αj 6= 0, if we replace xj in the set X with xm+1 , then this
new set of vectors is linearly independent.
Proof. Clearly αm+1 cannot be zero, since we assumed that X is linearly independent.
Since xm+1 6= 0, we know there is at least one other αi (i = 1, . . . , m) not zero. Without
loss of generality, assume that αm 6= 0 (if not, rearrange the vectors to make this true).
We can solve for xm+1 using this equation to obtain:
m
X αi
(3.42) xm+1 = − xi
i=1
α m+1
42
which is a contradiction.
Case 2: Suppose that the size of the largest set of linearly independent rows is k. Denote
such a set by S = {as1 , . . . , ask }. There are several possibilities: (i) Both ai and aj are in
this set. In this case, we simply replace our argument above with constants α1 through αk
and the result is the same.
(ii) ai and aj are not in this set, in which case we know that there are αs1 , . . . , αsk and
βs1 , . . . , βsk so that:
α s1 a 1 + · · · + α sk a k = a i
βs1 a1 + · · · + βsk ak = aj
But this implies that αai + aj can also be written as a linear combination of the elements of
S and thus the rank of A0 is no larger than the rank of A.
(iii) Now suppose that ai in the set S. Then there are constants αs1 , . . . , αsk so that:
α s1 a 1 + · · · + α sk a k = a j
Without loss of generality, suppose that ai = as1 then:
αai + αs1 ai + αs2 as2 + · · · + αsk ak = αai + aj
Again, this implies that αai + aj is still a linear combination of the elements of S and so we
cannot have increased the size of the largest linearly independent set of vectors, nor could
we have decreased it.
(iv) Finally, suppose that aj ∈ S. Again let aj = as1 . Then there are constants
α s1 , . . . , α sk
α s1 a J + α s2 a s2 + · · · + α sk a sk = a i
Apply Lemma 3.39 to replace aj in S with some other row vector al . If l = i, then we reduce
to sub-case (iii). If l 6= i, then we reduce to sub-case (ii).
Finally, suppose we multiply a row by α. This is reduces to the case of multiplying row
i by α − 1 and adding it to row i, which is covered in the above analysis. This completes
the proof.
We have the following theorem, whose proof is again outside the scope of this course.
There are very nice proofs available in [Lan87].
Theorem 3.43. If A ∈ Rm×n is a matrix, then the row rank of A is equal to the column
rank of A. Further, rank(A) ≤ min{m, n}.
Lastly, we will not prove the following theorem, but it should be clear from all the work
we have done up to this point.
Theorem 3.44. If A ∈ Rm×m (i.e., A is a square matrix) and rank(A) = m, then A is
invertible.
Definition 3.45. Suppose that A ∈ Rm×n and let m ≤ n. Then A has full row rank if
rank(A) = m.
44
Definition 3.47 (Basic Variables). For historical reasons, the variables in the vector
xB are called the basic variables and the variables in the vector xN are called the non-basic
variables.
We can use matrix multiplication to expand the left hand side of this expression as:
(3.50) BxB + NxN = b
The fact that B is composed of all linearly independent columns implies that applying Gauss-
Jordan elimination to it will yield an m × m identity and thus that B is invertible. We can
solve for basic variables xB in terms of the non-basic variables:
(3.51) xB = B−1 b − B−1 NxN
We can find an arbitrary solution to the system of linear equations by choosing values for
the variables the non-basic variables and solving for the basic variable values using Equation
3.51.
Definition 3.48. (Basic Solution) When we assign xN = 0, the resulting solution for x
is called a basic solution and
(3.52) xB = B−1 b
Here c ∈ Rn×1 , so there are n variables in the vector x, A ∈ Rm×n , b ∈ Rm×1 , H ∈ Rl×n
and r ∈ Rl×1 . The vectors l and u are lower and upper bounds respectively on the decision
variables in the vector x.
The Matlab command for solving linear programs is linprog and it takes the parameters:
(1) c,
(2) A,
(3) b,
(4) H,
(5) r,
(6) l,
(7) u
If there are no inequality constraints, then we set A = [] and b = [] in Matlab; i.e., A and
b are set as the empty matrices. A similar requirement holds on H and r if there are no
equality constraints. If some decision variables have lower bounds and others don’t, the term
-inf can be used to set a lower bound at −∞ (in l). Similarly, the term inf can be used if
the upper bound on a variable (in u) is infinity. The easiest way to understand how to use
Matlab is to use it on an example.
Example 3.50. Suppose I wish to design a diet consisting of Raman noodles and ice
cream. I’m interested in spending as little money as possible but I want to ensure that I eat
at least 1200 calories per day and that I get at least 20 grams of protein per day. Assume that
each serving of Raman costs $1 and contains 100 calories and 2 grams of protein. Assume
that each serving of ice cream costs $1.50 and contains 200 calories and 3 grams of protein.
We can construct a linear programming problem out of this scenario. Let x1 be the
amount of Raman we consume and let x2 be the amount of ice cream we consume. Our
objective function is our cost:
(3.57) x1 + 1.5x2
Our constraints describe our protein requirements:
(3.58) 2x1 + 3x2 ≥ 20
and our calorie requirements (expressed in terms of 100’s of calories):
(3.59) x1 + 2x2 ≥ 12
47
Matlab Solution
Figure 3.1. The feasible region for the diet problem is unbounded and there are
alternative optimal solutions, since we are seeking a minimum, we travel in the
opposite direction of the gradient, so toward the origin to reduce the objective
function value. Notice that the level curves hit one side of the boundary of the
feasible region.
This is not an accident, it’s because we started with a negative identity matrix inside the
augmented matrix. The point x1 = 4, x2 = 4 is a point of intersection, shown in Figure 3.1.
It also happens to be one of the alternative optimal solutions of this problem. Notice in
Figure 3.1 that the level curves of the objective function are parallel to one of the sides of
the boundary of the feasible region. If we continued in this way, we could actually construct
all the points of intersection that make up the boundary of the feasible region. We’ll can do
one more, suppose xB = [x1 s1 ]T . Then we would use Gauss-Jordan elimination to obtain:
1 2 0 −1 12
0 1 1 −2 4
Notice there are now columns of the identity matrix in the columns corresponding to s1 and
x1 . That’s how we know we’re solving for s1 and x2 . We have x1 = 12 and s1 = 4. By
definition x1 = s2 = 0. This corresponds to the point x1 = 12, x2 = 0 shown in Figure 3.1.
Let’s use Matlab to solve this problem. Our original problem is:
min x1 + 1.5x2
s.t. 2x1 + 3x2 ≥ 20
x1 + 2x2 ≥ 12
x 1 , x2 ≥ 0
49
Figure 3.2. Matlab input for solving the diet problem. Note that we are solving
a minimization problem. Matlab assumes all problems are mnimization problems,
so we don’t need to multiply the objective by −1 like we would if we started with a
maximization problem.
the x variable is x1 = 3.7184 and x2 = 4.1877, note this is on the line of alternative optimal
solutions, but it is not at either end of the line. I prefer to have a little less ice cream, so I’d
rather have the alternative optimal solution x1 = x2 = 4.
Exercise 39. In previous example, you could also have just used the problem in standard
form with the surplus variables and had A = b = [] and defined H and r instead. Use Matlab
to solve the diet problem in standard form. Compare your results to Example 3.50
50
CHAPTER 4
In this chapter, we will cover all of the geometric prerequisites for understanding the
theory of linear programming. We will use the results in this section to prove theorems
about the Simplex Method in other sections.
1. Convex Sets
Definition 4.1 (Convex Set). Let X ⊆ Rn . Then the set X is convex if and only if for
all pairs x1 , x2 ∈ X we have λx1 + (1 − λ)x2 ∈ X for all λ ∈ [0, 1].
The definition of convexity seems complex, but it is easy to understand. First recall that
if λ ∈ [0, 1], then the point λx1 + (1 − λ)x2 is on the line segment connecting x1 and x2 in Rn .
For example, when λ = 1/2, then the point λx1 + (1 − λ)x2 is the midpoint between x1 and
x2 . In fact, for every point x on the line connecting x1 and x2 we can find a value λ ∈ [0, 1]
so that x = λx1 + (1 − λ)x2 . Then we can see that, convexity asserts that if x1 , x2 ∈ X,
then every point on the line connecting x1 and x2 is also in the set X.
Definition 4.2 (Positive Combination). Let x1 , . . . , xm ∈ Rn . If λ1 , . . . , λm > 0 and
then
Xm
(4.1) x= λi x i
i=1
is called a positive combination of x1 , . . . , xm .
Definition 4.3 (Convex Combination). Let x1 , . . . , xm ∈ Rn . If λ1 , . . . , λm ∈ [0, 1] and
Xm
λi = 1
i=1
then
m
X
(4.2) x= λi x i
i=1
is called a convex combination of x1 , . . . , xm . If λi < 1 for all i = 1, . . . , m, then Equation
4.2 is called a strict convex combination.
Remark 4.4. If you recall the definition of linear combination, we can see that we move
from the very general to the very specific as we go from linear combinations to positive
combinations to convex combinations. A linear combination of points or vectors allowed us
to choose any real values for the coefficients. A positive combination restricts us to positive
values, while a convex combination asserts that those values must be non-negative and sum
to 1.
51
Example 4.5. Figure 4.1 illustrates a convex and non-convex set. Non-convex sets have
x1
x1 x2 x2
X X
Figure 4.1. Examples of Convex Sets: The set on the left (an ellipse and its
interior) is a convex set; every pair of points inside the ellipse can be connected by
a line contained entirely in the ellipse. The set on the right is clearly not convex as
we’ve illustrated two points whose connecting line is not contained inside the set.
some resemblance to crescent shapes or have components that look like crescents.
Theorem 4.6. The intersection of a finite number of convex sets in Rn is convex.
Proof. Let C1 , . . . , Cn ⊆ Rn be a finite collection of convex sets. Let
n
\
(4.3) C= Ci
i=1
be the set formed from the intersection of these sets. Choose x1 , x2 ∈ C and λ ∈ [0, 1].
Consider x = λx1 + (1 − λ)x2 . We know that x1 , x2 ∈ C1 , . . . , Cn by definition of C. By
convexity, we know that x ∈ C1 , . . . , Cn by convexity of each set. Therefore, x ∈ C. Thus
C is a convex set.
f (λx1 + (1 − λ)x2 )
Figure 4.2. A convex function: A convex function satisfies the expression f (λx1 +
(1 − λ)x2 ) ≤ λf (x1 ) + (1 − λ)f (x2 ) for all x1 and x2 and λ ∈ [0, 1].
3. Polyhedral Sets
Important examples of convex sets are polyhedral sets, the multi-dimensional analogs of
polygons in the plane. In order to understand these structures, we must first understand
hyperplanes and half-spaces.
Definition 4.10 (Hyperplane). Let a ∈ Rn be a constant vector in n-dimensional space
and let b ∈ R be a constant scalar. The set of points
(4.6) H = x ∈ Rn |aT x = b
is a hyperplane in n-dimensional space. Note the use of column vectors for a and x in this
definition.
Example 4.11. Consider the hyper-plane 2x1 +3x2 +x3 = 5. This is shown in Figure 4.3.
This hyperplane is composed of the set of points (x1 , x2 , x3 ) ∈ R3 satisfying 2x1 +3x2 +x3 = 5.
This can be plotted implicitly or explicitly by solving for one of the variables, say x3 . We
can write x3 as a function of the other two variables as:
(4.7) x3 = 5 − 2x1 − 3x2
Definition 4.12 (Half-Space). Let a ∈ Rn be a constant vector in n-dimensional space
and let b ∈ R be a constant scalar. The sets of points
(4.8) Hl = x ∈ Rn |aT x ≤ b
(4.9) Hu = x ∈ Rn |aT x ≥ b
are the half-spaces defined by the hyperplane aT x = b.
Example 4.13. Consider the two dimensional hyperplane (line) x1 + x2 = 1. Then the
two half-spaces associated with this hyper-plane are shown in Figure 4.4. A half-space is
53
(a) Hl (b) Hu
so named because the hyperplane aT x = b literally separates Rn into two halves: the half
above the hyperplane and the half below the hyperplane.
Lemma 4.14. Every hyper-plane is convex.
Proof. Let a ∈ Rn and b ∈ R and let H be the hyperplane defined by a and b. Choose
x1 , x2 ∈ H and λ ∈ [0, 1]. Let x = λx1 + (1 − λ)x2 . By definition we know that:
aT x1 = b
aT x2 = b
54
Then we have:
(4.10) aT x = aT [λx1 + (1 − λ)x2 ] = λaT x1 + (1 − λ)aT x2 = λb + (1 − λ)b = b
Thus, x ∈ H and we see that H is convex. This completes the proof.
Lemma 4.15. Every half-space is convex.
Proof. Let a ∈ Rn and b ∈ R. Without loss of generality, consider the half-space Hl
defined by a and b. For arbitrary x1 and x2 in Hl we have:
aT x1 ≤ b
aT x2 ≤ b
Suppose that aT x1 = b1 ≤ b and aT x2 = b2 ≤ b. Again let x = λx1 + (1 − λ)x2 . Then:
(4.11) aT x = aT [λx1 + (1 − λ)x2 ] = λaT x1 + (1 − λ)aT x2 = λb1 + (1 − λ)b2
Since λ ≤ 1 and 1 − λ ≤ 1 and λ ≥ 0 we know that λb1 ≤ λb, since b1 ≤ b. Similarly we
know that (1 − λ)b2 ≤ (1 − λ)b, since b2 ≤ b. Thus:
(4.12) λb1 + (1 − λ)b2 ≤ λb + (1 − λ)b = b
Thus we have shown that aT x ≤ b. The case for Hu is identical with the signs of the
inequalities reversed. This completes the proof.
Using these definitions, we are now in a position to define polyhedral sets, which will be
the subject of our study for most of the remainder of this chapter.
Definition 4.16 (Polyhedral Set). If P ⊆ Rn is the intersection of a finite number
of half-spaces, then P is a polyhedral set. Formally, let a1 , . . . , am ∈ Rn be a finite set of
constant vectors and let b1 , . . . , bm ∈ R be constants. Consider the set of half-spaces:
Hi = {x|aTi x ≤ bi }
Then the set:
m
\
(4.13) P = Hi
i=1
is a polyhedral set.
It should be clear that we can represent any polyhedral set using a matrix inequality.
The set P is defined by the set of vectors x satisfying:
(4.14) Ax ≤ b,
where the rows of A ∈ Rm×n are made up of the vectors a1 , . . . , am and b ∈ Rm is a column
vector composed of elements b1 , . . . , bm .
Theorem 4.17. Every polyhedral set is convex.
Exercise 41. Prove Theorem 4.17. [Hint: You can prove this by brute force, verifying
convexity. You can also be clever and use two results that we’ve proved in the notes.]
55
Figure 4.5. A Ray: The points in the graph shown in this figure are in the set
produced using the expression x0 + dλ where x0 = [2, 1]T and d = [2, 2]T and λ ≥ 0.
Rays are critical for understanding unbounded convex sets. Specifically, a set is un-
bounded, in a sense, only if you can show that it contains a ray. An interesting class of
unbounded convex sets are convex cones:
Definition 4.20 (Convex Cone). Let C ⊆ Rn be a convex set. Then C is a convex cone
if for all x ∈ C and for all λ ∈ R with λ ≥ 0 we have λx ∈ C.
Lemma 4.21. Every convex cone contains the origin.
Exercise 42. Prove the previous lemma.
The fact that every convex cone contains the origin by Lemma 4.21 along with the fact
that for every point x ∈ C we have λx ∈ C (λ ≥ 0) implies that the ray 0 + λx ⊆ C. Thus,
since every point x ∈ C must be on a ray, it follows that a convex cone is just made up of
rays beginning at the origin.
Another key element to understanding unbounded convex sets is the notion of direction.
A direction can be thought of as a “direction of travel” from a starting point inside an
unbounded convex set so that you (the traveler) can continue moving forever and never
leave the set.
Definition 4.22 (Direction of a Convex Set). Let C be a convex set. Then d 6= 0 is a
(recession) direction of the convex set if for all x0 ∈ C the ray with vertex x0 and direction
d is contained entirely in C. Formally, for all x0 ∈ C we have:
(4.15) {x : x = x0 + λd, λ ≥ 0} ⊆ C
56
Example 4.23. Consider the unbounded convex set shown in Figure 4.6. This set has
direction [1, 0]T . To see this note that for any positive scaling parameter λ and for any vertex
Figure 4.6. Convex Direction: Clearly every point in the convex set (shown in
blue) can be the vertex for a ray with direction [1, 0]T contained entirely in the
convex set. Thus [1, 0]T is a direction of this convex set.
point x0 , we can draw an arrow pointing to the right (in the direction of [1, 0]T ) with vertex
at x0 scaled by λ that is entirely contained in the convex set.
Exercise 43. Prove the following: Let C ⊆ Rn be a convex cone and let x1 , x2 ∈ C. If
α, β ∈ R and α, β ≥ 0, then αx1 + βx2 ∈ C. [Hint: Use the definition of convex cone and
the definition of convexity with λ = 1/2, then multiply by 2.]
Exercise 44. Use Exercise 43 to prove that if C ⊆ Rn is a convex cone, then every
element x ∈ C (except the origin) is also a direction of C.
Proof. The fact that d 6= 0 is clear from the definition of direction of a convex set.
Furthermore, d is a direction if and only if
(4.18) A (x + λd) ≤ b
(4.19) x + λd ≥ 0
for all λ > 0 and for all x ∈ P (which is to say x ∈ Rn such that Ax ≤ b and x ≥ 0). But
then
Ax + λAd ≤ b
57
for all λ > 0. This can only be true if Ad ≤ 0. Likewise:x + λd ≥ 0 holds for all λ > 0 if
and only if d ≥ 0. This completes the proof.
Corollary 4.25. If
(4.20) P = {x ∈ Rn : Ax = b, x ≥ 0}
and d is a direction of P , then d must satisfy:
(4.21) Ad = 0, d ≥ 0, d 6= 0.
Exercise 45. Prove the corollary above.
Example 4.26. Consider the polyhedral set defined by the equations:
x1 − x2 ≤ 1
2x1 + x2 ≥ 6
x1 ≥ 0
x2 ≥ 0
This set is clearly unbounded as we showed in class and it has at least one direction. The
direction d = [0, 1]T pointing directly up is a direction of this set. This is illustrated in
Figure 4.7. In this example, we have:
Figure 4.7. An Unbounded Polyhedral Set: This unbounded polyhedral set has
many directions. One direction is [0, 1]T .
1 −1
(4.22) A=
−2 −1
Note, the second inequality constraint was a greater-than constraint. We reversed it to
a less-than inequality constraint −2x1 − x2 ≤ −6 by multiplying by −1. For our chosen
direction d = [0, 1]T , we can see that:
1 −1 0 −1
(4.23) Ad = = ≤0
−2 −1 1 −1
58
Clearly d ≥ 0 and d 6= 0.
6. Extreme Points
Definition 4.27 (Extreme Point of a Convex Set). Let C be a convex set. A point
x0 ∈ C is a extreme point of C if there are no points x1 and x2 (x1 6= x0 or x2 6= x0 ) so that
x = λx1 + (1 − λ)x2 for some λ ∈ (0, 1).2
An extreme point is simply a point in a convex set C that cannot be expressed as a strict
convex combination of any other pair of points in C. We will see that extreme points must
be located in specific locations in convex sets.
Definition 4.28 (Boundary of a set). Let C ⊆ Rn be (convex) set. A point x0 ∈ C is
on the boundary of C if for all > 0,
B (x0 ) ∩ C 6= ∅ and
B (x0 ) ∩ Rn \ C 6= ∅
Example 4.29. A convex set, its boundary and a boundary point are illustrated in
Figure 4.8.
BOUNDARY POINT
BOUNDARY
INTERIOR
These two facts hold since Gd = 0 and if Ai· is a row of A with Ai· x0 < bi (or x > 0), then
there is at least one non-zero so that Ai· (x0 ± d) < bi (or x0 ± d > 0) still holds and
therefore (x0 ± d) ∈ P . Since we have a finite number of constraints that are non-binding,
we may choose to be the smallest value so that the previous statements hold for all of
them. Finally we can choose λ = 1/2 and see that x0 = λx + (1 − λ)x̂ and x, x̂ ∈ P . Thus
x0 cannot have been an extreme point, contradicting our assumption. This completes the
proof.
Definition 4.33. Let P be the polyhedral set from Theorem 4.31. If x0 is an extreme
point of P and more than n hyperplanes are binding at x0 , then x0 is called a degenerate
extreme point.
Definition 4.34 (Face). Let P be a polyhedral set defined by
P = {x ∈ Rn : Ax ≤ b}
where A ∈ Rm×n and b ∈ Rm . If X ⊆ P is defined by a non-empty set of binding linearly
independent hyperplanes, then X is a face of P .
That is, there is some set of linearly independent rows Ai1 · , . . . Ail · with il < m so that
when G is the matrix made of these rows and g is the vector of bi1 , . . . , bil then:
(4.27) X = {x ∈ Rn : Gx = g and Ax ≤ b}
In this case we say that X has dimension n − l.
Remark 4.35. Based on this definition, we can easily see that an extreme point, which
is the intersection n linearly independent hyperplanes is a face of dimension zero.
Definition 4.36 (Edge and Adjacent Extreme Point). An edge of a polyhedral set P is
any face of dimension 1. Two extreme points are called adjacent if they share n − 1 binding
constraints. That is, they are connected by an edge of P .
Example 4.37. Consider the polyhedral set defined by the system of inequalities:
3x1 + x2 ≤ 120
x1 + 2x2 ≤ 160
28
x1 + x2 ≤ 100
16
x1 ≤ 35
x1 ≥ 0
x2 ≥ 0
The polyhedral set is shown in Figure 4.9. The extreme points of the polyhedral set are shown
as large diamonds and correspond to intersections of binding constraints. Note the extreme
point (16, 72) is degenerate since it occurs at the intersection of three binding constraints
28
3x1 + x2 ≤ 120, x1 + 2x2 ≤ 160 and 16 x1 + x2 <= 100. All the faces of the polyhedral set
are shown in bold. They are locations where one constraint (or half-space) is binding. An
example of a pair of adjacent extreme points is (16, 72) and (35, 15), as they are connected
by the edge defined by the binding constraint 3x1 + x2 ≤ 120.
61
Figure 4.9. A Polyhedral Set: This polyhedral set is defined by five half-spaces
and has a single degenerate extreme point located at the intersection of the binding
28
constraints 3x1 + x2 ≤ 120, x1 + 2x2 ≤ 160 and 16 x1 + x2 <= 100. All faces are
shown in bold.
Exercise 46. Consider the polyhedral set defined by the system of inequalities:
4x1 + x2 ≤ 120
x1 + 8x2 ≤ 160
x1 + x2 ≤ 30
x1 ≥ 0
x2 ≥ 0
Identify all extreme points and edges in this polyhedral set and their binding constraints.
Are any extreme points degenerate? List all pairs of adjacent extreme points.
7. Extreme Directions
Definition 4.38 (Extreme Direction). Let C ⊆ Rn be a convex set. Then a direction
d of C is an extreme direction if there are no two other directions d1 and d2 of C (d1 6= d
and d2 6= d) and scalars λ1 , λ2 > 0 so that d = λ1 d1 + λ2 d2 .
We have already seen by Theorem 4.24 that is P is a polyhedral set in the positive orthant
of Rn with form:
P = {x ∈ Rn : Ax ≤ b, x ≥ 0}
then a direction d of P is characterized by the set of inequalities and equations
Ad ≤ 0, d ≥ 0, d 6= 0.
Clearly two directions d1 and d2 with d1 = λd2 for some λ ≥ 0 may both satisfy this system.
To isolate a unique set of directions, we can normalize and construct the set:
(4.28) D = {d ∈ Rn : Ad ≤ 0, d ≥ 0, eT d = 1}
62
Figure 4.10. Visualization of the set D: This set really consists of the set of points
on the red line. This is the line where d1 + d2 = 1 and all other constraints hold.
This line has two extreme points (0, 1) and (1/2, 1/2).
Exercise 47. Show that d = [1/2, 1/2]T is a direction of the polyhedral set P from
Example 4.26. Now find a non-extreme direction (whose components sum to 1) using the
feasible region illustrated in the previous example. Show that the direction you found is
a direction of the polyhedral set. Create a figure like Figure 4.7 to illustrate both these
directions.
Proof. Let x ∈ P . If x is an extreme point, then the theorem is proved. Suppose that
x is not an extreme point. Then by Theorem 4.31, x lies at the intersection of r < n binding
constraints (where r could be zero). The fact that x is not an extreme point of P implies
the existence of y1 , y2 ∈ P and a λ > 0 so that x = λy1 + (1 − λ)y2 . For this to hold, we
know that the r constraints that bind at x must also be binding at y1 and y2 .
Let d = y2 − y1 be the direction from y1 to y2 . We can see that:
y1 =x − (1 − λ)d
(4.29)
y2 =x + λd
The values x + γd and x − γd for γ > 0 correspond to motion from x along the direction of
d. From Expression 4.29, we can move in either the positive or negative direction of d and
remain in P . Let γ be the largest value so that both x + γd or x − γd is in P . Clearly we
cannot move in both directions infinitely far since x ≥ 0 and hence γ < ∞. Without loss of
3Thanks to Bob Pakzah-Hurson for the suggestion to improve the statement of this lemma.
64
generality, suppose that γ is determined by x − γd. (That is, x − (γ + )d 6∈ P for > 0).
Let x1 = x − γd. Since r hyperplanes are binding at x (and y1 and y2 ) it is clear that these
same hyperplanes are binding at x1 and at least one more (because of how we selected γ).
Thus there are at least r + 1 binding hyperplanes at x1 . If r + 1 = n, then we have identified
an extreme point. Otherwise, we may repeat the process until we find an extreme point.
To show that the number of extreme points is finite, we note that every extreme point
is the intersection of n linearly independent hyperplanes defining P . There are n + m
hyperplanes
defining P and therefore the number of possible extreme points is limited by
n+m
n
. This completes the proof.
Lemma 4.42. Let P be a non-empty polyhedral set. Then the set of directions of P is
empty if and only if P is bounded.
Proof. Clearly if P is bounded then it cannot have a direction. If P were contained in
a ball Br (x0 ) then we know that for every x ∈ P we have |x − x0 | < r. If d is a direction
of P , then we have x + λd for all λ > 0. We simply need to choose λ large enough so that
|x + λd − x0 | > r.
If P has no directions, then there is some absolute upper bound on the value of |x| for
all x ∈ P . Let r be this value. Then trivially, Br+1 (0) contains P and so P is bounded.
Lemma 4.43. Let P be a non-empty unbounded polyhedral set. Then the number extreme
directions of P is finite and non-zero.
Proof. The result follows immediately from Theorem 4.39 and Lemma 4.41.
Theorem 4.44. Let P be a non-empty, unbounded polyhedral set defined by:
P = {x ∈ Rn : Ax ≤ b, x ≥ 0}
(where we assume A is not an empty matrix). Suppose that P has extreme points x1 , . . . , xk
and extreme directions d1 , . . . , dl . If x ∈ P , then there exists constants λ1 , . . . , λk and
µ1 , . . . , µl such that:
k
X l
X
x= λi x i + µ j dj
i=1 j=1
k
X
(4.30) λi = 1
i=1
λi ≥ 0 i = 1, . . . , k
µj ≥ 0 1, . . . , l
Proof. Let x ∈ P . We will show that we can identify λ1 , . . . , λk and µ1 , . . . , µl making
Expression 4.30 true. Define the set:
(4.31) P = P ∩ {x ∈ Rn : eT x ≤ M }
where M is a large constant so that eT xi < M for i = 1, . . . , k and eT x < M . That is, M
is large enough so that the sum of the components of any extreme point is less than M and
the sum of the components of x is less than M .
65
67
x2
x1 λx2 + (1 − λ)x3
x3
x
x5 x4
x = µx5 + (1 − µ) (λx2 + (1 − λ)x3 )
x1
x
d1
x2
λx2 + (1 − λ)x3
x3
x = λx2 + (1 − λ)x3 + θd1
68
CHAPTER 5
where x1 , . . . xk are the extreme points of X and d1 , . . . , dl are the extreme directions of X
and we know that
k
X
λi = 1
(5.4) i=1
λi , µi ≥ 0 ∀i
We can rewrite problem P using this characterization as:
k
X l
X
T
max λi c x i + µi cT di
i=1 i=1
(5.5) k
X
s.t. λi = 1
i=1
λi , µi ≥ 0 ∀i
69
If there is some i such that cT di > 0, then we can simply choose µi as large as we like,
making the objective as large as we like, the problem will have no finite solution.
Therefore, assume that cT di ≤ 0 for all i = 1, . . . , l (in which case, we may simply choose
µi = 0, for all i). Since the set of extreme points x1 , . . . xk is finite, we can simply set λp = 1
if cT xp has the largest value among all possible values of cT xi , i = 1, . . . , k. This is clearly
the solution to the linear programming problem. Since xp is an extreme point, we have
shown that if P has a solution, it must have an extreme point solution.
Corollary 5.2. Problem P has a finite solution if and only if cT di ≤ 0 for all i = 1, . . . l
when d1 , . . . , dl are the extreme directions of X.
Proof. This is implicit in the proof of the theorem.
Corollary 5.3. Problem P has alternative optimal solutions if there are at least two
extreme points xp and xq so that cT xp = cT xq and so that xp is the extreme point solution
to the linear programming problem.
Proof. Suppose that xp is the extreme point solution to P identified in the proof of
the theorem. Suppose xq is another extreme point solution with cT xp = cT xq . Then every
convex combination of xp and xq is contained in X (since X is convex). Thus every x with
form λxp + (1 − λ)xq and λ ∈ [0, 1] has objective function value:
λcT xp + (1 − λ)cT xq = λcT xp + (1 − λ)cT xp = cT xp
which is the optimal objective function value, by assumption.
Exercise 48. Let X = {x ∈ Rn : Ax ≤ b, x ≥ 0} and suppose that d1 , . . . dl are the
extreme directions of X (assuming it has any). Show that the problem:
min cT x
(5.6) s.t. Ax ≤ b
x≥0
has a finite optimal solution if (and only if) cT dj ≥ 0 for k = 1, . . . , l. [Hint: Modify the
proof above using the Cartheodory characterization theorem.]
2. Algorithmic Characterization of Extreme Points
In the previous sections we showed that if a linear programming problem has a solution,
then it must have an extreme point solution. The challenge now is to identify some simple
way of identifying extreme points. To accomplish this, let us now assume that we write X
as:
(5.7) X = {x ∈ Rn : Ax = b, x ≥ 0}
Our work in the previous sections shows that this is possible. Recall we can separate A into
an m × m matrix B and an m × (n − m) matrix N and we have the result:
(5.8) xB = B−1 b − B−1 NxN
We know that B is invertible since we assumed that A had full row rank. If we assume that
xN = 0, then the solution
(5.9) xB = B−1 b
70
was called a basic solution (See Definition 3.48.) Clearly any basic solution satisfies the
constraints Ax = b but it may not satisfy the constraints x ≥ 0.
Definition 5.4 (Basic Feasible Solution). If xB = B−1 b and xN = 0 is a basic solution
to Ax = b and xB ≥ 0, then the solution (xB , xN ) is called basic feasible solution.
Theorem 5.5. Every basic feasible solution is an extreme point of X. Likewise, every
extreme point is characterized by a basic feasible solution of Ax = b, x ≥ 0.
Proof. Since Ax = BxB + NxN = b this represents the intersection of m linearly
independent hyperplanes (since the rank of A is m). The fact that xN = 0 and xN contains
n − m variables, then we have n − m binding, linearly independent hyperplanes in xN ≥
0. Thus the point (xB , xN ) is the intersection of m + (n − m) = n linearly independent
hyperplanes. By Theorem 4.31 we know that (xB , xN ) must be an extreme point of X.
Conversely, let x be an extreme point of X. Clearly x is feasible and by Theorem 4.31
it must represent the intersection of n hyperplanes. The fact that x is feasible implies that
Ax = b. This accounts for m of the intersecting linearly independent hyperplanes. The
remaining n − m hyperplanes must come from x ≥ 0. That is, n − m variables are zero. Let
xN = 0 be the variables for which x ≥ 0 are binding. Denote the remaining variables xB .
We can see that A = [B|N] and that Ax = BxB + NxN = b. Clearly, xB is the unique
solution to BxB = b and thus (xB , xN ) is a basic feasible solution.
Let J be the set of indices of non-basic variables. Then we can write Equation 5.11 as:
X
(5.12) z(x1 , . . . , xn ) = cTB B−1 b + cj − cTB B−1 A·j xj
j∈J
71
Consider now the fact xj = 0 for all j ∈ J . Further, we can see that:
∂z
(5.13) = cj − cTB B−1 A·j
∂xj
This means that if cj − cTB B−1 A·j > 0 and we increase xj from zero to some new value,
then we will increase the value of the objective function. For historic reasons, we actually
consider the value cTB B−1 A·j − cj , called the reduced cost and denote it as:
∂z
(5.14) − = zj − cj = cTB B−1 A·j − cj
∂xj
In a maximization problem, we chose non-basic variables xj with negative reduced cost to
become basic because, in this case, ∂z/∂xj is positive.
Assume we chose xj , a non-basic variable to become non-zero (because zj − cj < 0). We
wish to know which of the basic variables will become zero as we increase xj away from zero.
We must also be very careful that none of the variables become negative as we do this.
By Equation 5.8 we know that the only current basic variables will be affected by in-
creasing xj . Let us focus explicitly on Equation 5.8 where we include only variable xj (since
all other non-basic variables are kept zero). Then we have:
(5.15) xB = B−1 b − B−1 A·j xj
Let b = B−1 b be an m × 1 column vector and let that aj = B−1 A·j be another m × 1
column. Then we can write:
(5.16) x B = b − a j xj
Let b = [b1 , . . . bm ]T and aj = [aj1 , . . . , ajm ], then we have:
xB1 b1 aj 1 b1 − aj1 xj
xB2 b2 bj 2
b −a x
2 j2 j
(5.17) ...
= − x
.. .. j = ..
. . .
x Bm bm bj m bm − ajm xj
We know (a priori) that bi ≥ 0 for i = 1, . . . , m. If aji ≤ 0, then as we increase xj , bi −aji ≥ 0
no matter how large we make xj . On the other hand, if aji > 0, then as we increase xj we
know that bi − aji xj will get smaller and eventually hit zero. In order to ensure that all
variables remain non-negative, we cannot increase xj beyond a certain point.
For each i (i = 1, . . . , m) such that aji > 0, the value of xj that will make xBi goto 0 can
be found by observing that:
(5.18) x B i = b i − aj i x j
and if xBi = 0, then we can solve:
bi
(5.19) 0 = bi − aji xj =⇒ xj =
aji
Thus, the largest possible value we can assign xj and ensure that all variables remain positive
is:
bi
(5.20) min : i = 1, . . . , m and aji > 0
aji
72
Expression 5.20 is called the minimum ratio test. We are interested in which index i is the
minimum ratio.
Suppose that in executing the minimum ratio test, we find that xj = bk /ajk . The variable
xj (which was non-basic) becomes basic and the variable xBk becomes non-basic. All other
basic variables remain basic (and positive). In executing this procedure (of exchanging one
basic variable and one non-basic variable) we have moved from one extreme point of X to
another.
Theorem 5.6. If zj − cj ≥ 0 for all j ∈ J , then the current basic feasible solution is
optimal.
Proof. We have already shown in Theorem 5.1 that if a linear programming problem
has an optimal solution, then it occurs at an extreme point and we’ve shown in Theorem
5.5 that there is a one-to-one correspondence between extreme points and basic feasible
solutions. If zj − cj ≥ 0 for all j ∈ J , then ∂z/∂xj ≤ 0 for all non-basic variables xj .
That is, we cannot increase the value of the objective function by increasing the value of any
non-basic variable. Thus, since moving to another basic feasible solution (extreme point)
will not improve the objective function, it follows we must be at the optimal solution.
Theorem 5.7. In a maximization problem, if aji ≤ 0 for all i = 1, . . . , m, and zj −cj < 0,
then the linear programming problem is unbounded.
Proof. The fact that zj − cj < 0 implies that increasing xj will improve the value of the
objective function. Since aji < 0 for all i = 1, . . . , m, we can increase xj indefinitely without
violating feasibility (no basic variable will ever go to zero). Thus the objective function can
be made as large as we like.
Remark 5.8. We should note that in executing the exchange of one basic variable and
one non-basic variable, we must be very careful to ensure that the resulting basis consist
of m linearly independent columns of the original matrix A. The conditions for this are
provided in Lemma 3.39. Specifically, we must be able to write the column corresponding
to xj , the entering variable, as a linear combination of the columns of B so that:
(5.21) α1 b1 + . . . αm bm = A·j
and further if we are exchanging xj for xBi (i = 1, . . . , m), then αi 6= 0.
We can see this from the fact that aj = B−1 A·j and therefore:
Baj = A·j
and therefore we have:
A·j = B·1 aj1 + · · · + B·m ajm
which shows how to write the column A·j as a linear combination of the columns of B.
Exercise 49. Consider the linear programming problem given in Exercise 48. Under
what conditions should a non-basic variable enter the basis? State and prove an analogous
theorem to Theorem 5.6 using your observation. [Hint: Use the definition of reduced cost.
Remember that it is −∂z/∂xj .]
73
Example 5.9. Consider the Toy Maker Problem (from Example 2.3). The linear pro-
gramming problem given in Equation 2.8 is:
max z(x1 , x2 ) = 7x1 + 6x2
s.t. 3x1 + x2 ≤ 120
x1 + 2x2 ≤ 160
x1 ≤ 35
x1 ≥ 0
x2 ≥ 0
We can convert this problem to standard form by introducing the slack variables s1 , s2
and s3 :
max z(x1 , x2 ) = 7x1 + 6x2
s.t. 3x1 + x2 + s1 = 120
x1 + 2x2 + s2 = 160
x1 + s3 = 35
x1 , x2 , s1 , s2 , s3 ≥ 0
74
75
Based on this information, we can only choose s3 to (re-enter) the basis to ensure that
the value of the objective function increases. We can perform the minimum ration test to
figure out which basic variable will leave the basis. We know that B−1 A·5 is just the fifth
column of B−1 N which is:
−3
B−1 A·5 = 5
1
Performing the minimum ratio test, we see have:
95 35
min ,
5 1
76
In this case, we see that index 2 (95/5) is the minimum ratio. Therefore, variable s3 will
enter the basis and variable s2 will leave the basis. The new basic and non-basic variables
will be:
x2 6
s 2 0
x B = s3 x N = cB = 0 cN =
s1 0
x1 7
and the matrices become:
1 0 3 0 1
B= 2 0 1 N = 1 0
0 1 1 0 0
The derived matrices are then:
72 6/10 −1/5
B−1 b = 19 B−1 N = 1/5 −2/5
16 −1/5 2/5
The cost information becomes:
cTB B−1 b = 544 cTB B−1 N = 11/5 8/5 cTB B−1 N − cN = 11/5 8/5
Since the reduced costs are now positive, we can conclude that we’ve obtained an optimal
solution because no improvement is possible. The final solution then is:
x2 72
xB ∗ = s3 = B−1 b = 19
x1 16
Simply, we have x1 = 16 and x2 = 72 as we obtained in Example 2.3. The path of extreme
points we actually took in traversing the boundary of the polyhedral feasible region is shown
in Figure 5.1.
Exercise 50. Assume that a leather company manufactures two types of belts: regular
and deluxe. Each belt requires 1 square yard of leather. A regular belt requires 1 hour of
skilled labor to produce, while a deluxe belt requires 2 hours of labor. The leather company
receives 40 square yards of leather each week and a total of 60 hours of skilled labor is
available. Each regular belt nets $3 in profit, while each deluxe belt nets $5 in profit. The
company wishes to maximize profit.
(1) Ignoring the divisibility issues, construct a linear programming problem whose so-
lution will determine the number of each type of belt the company should produce.
(2) Use the simplex algorithm to solve the problem you stated above remembering to
convert the problem to standard form before you begin.
(3) Draw the feasible region and the level curves of the objective function. Verify that
the optimal solution you obtained through the simplex method is the point at which
the level curves no longer intersect the feasible region in the direction following the
gradient of the objective function.
77
Figure 5.1. The Simplex Algorithm: The path around the feasible region is shown
in the figure. Each exchange of a basic and non-basic variable moves us along an
edge of the polygon in a direction that increases the value of the objective function.
Here 0 is the vector of zeros of appropriate size. This equation can be written as:
(5.26) z + 0T xB + cTB B−1 N − cTN xN = cTB B−1 b
We can now represent this set of equations as a large matrix (or tableau):
z xB xN RHS
T T T
z 1 0 cB B N − cN cB B−1 b Row 0
−1
We can assume our initial basic feasible solution has s1 , s2 and s3 as basic variables and x1
and x2 as non-basic variables. Thus our initial tableau is simply:
z x1 x2 s1 s2 s3 RHS
1 −7 −6 0 0 0
z 0
(5.28) s1
0 3 1 1 0 0 120
s2 0 1 2 0 1 0 160
s3 0 1 0 0 0 1 35
Note that the columns have been swapped so that the identity matrix is divided and B−1 N
is located in columns 2 and 3. This is because of our choice of basic variables. The reduced
cost vector is in Row 0.
79
Using this information, we can see that either x1 or x2 can enter. We can compute the
minimum ratio test (MRT) next to the RHS column. If we chose x2 as the entering variable,
then the MRT tells us s2 will leave. We put a box around the element on which we will
pivot:
z x1 x2 s1 s2 s3 RHS MRT (x2 )
z 1 −7 −6 0 0 0 0
(5.29) s1 0 3 1 1 0 0 120
120
s2 0 1 2 0 1 0 160 80
s3 0 1 0 0 0 1 35 −
If we pivot on this element, then we transform the column corresponding to x2 into the
identity column:
0
0
(5.30) 1
0
This process will correctly compute the new reduced costs and B−1 matrix as well as the
new cost information. The new tableau becomes:
z x1 x2 s1 s2 s3 RHS
z 1 −4 0
0 3 0 480
(5.31) s1 0 2.5 0 1 −0.5 0 40
x2 0 0.5 1 0 0.5 0 80
s3 0 1 0 0 0 1 35
We can see that x1 is a valid entering variable, as it has a negative reduced cost (−4). We
can again place the minimum ratio test values on the right-hand-side of the matrix to obtain:
z x1 x2 s1 s2 s3 RHS MRT (x1 )
z
1 −4 0 0 3 0 480
(5.32) s1
0 2.5 0 1 −0.5 0 40
16
x2 0 0.5 1 0 0.5 0 80 160
s3 0 1 0 0 0 1 35 35
We now pivot on the element we have boxed to obtain the new tableau1:
z x 1 x 2 s1 s2 s3 RHS
z 1
0 0 1.6 2.2 0 544
(5.33) x1
0 1 0 0.4 −0.2 0 16
x2 0 0 1 −0.2 0.6 0 72
s3 0 0 0 −0.4 0.2 1 19
All the reduced costs of the non-basic variables (s1 and s2 ) are positive and so this is the
optimal solution to the linear programming problem. We can also see that this solution
agrees with our previous computations on the Toy Maker Problem.
1Thanks to Ethan Wright for catching a typo here.
80
5. Identifying Unboundedness
We have already identified a theorem for detecting unboundedness. Recall Theorem 5.7:
In a maximization problem, if aji < 0 for all i = 1, . . . , m, and zj − cj < 0, then the linear
programming problem is unbounded.
This condition occurs when a variable xj should enter the basis because ∂z/∂xj > 0
and there is no blocking basis variable. That is, we can arbitrarily increase the value of xj
without causing any variable to become negative. We give an example:
Example 5.11. Consider the Linear programming problem from Example 2.9:
max z(x1 , x2 ) = 2x1 − x2
s.t. x1 − x2 ≤ 1
2x1 + x2 ≥ 6
x 1 , x2 ≥ 0
We can convert this problem into standard form by adding a slack variable s1 and a surplus
variable s2 :
max z(x1 , x2 ) = 2x1 − x2
s.t.
x 1 − x 2 + s1 = 1
2x1 + x2 − s2 = 6
x1 , x2 , s1 , s2 ≥ 0
Based on this information, we can construct the tableau for this problem as:
z x1 x2 s1 s2 RHS
4 −1 10
z 1 0 0 31 −1
(5.34) 3 3
7
x1 0 1 0 3 3 3
−2 −1 4
x2 0 0 1 3 3 3
We see that s2 should enter the basis because cB B−1 A·4 − c4 < 0. But the column
corresponding to s2 in the tabluau is all negative. Therefore there is no minimum ratio test.
We can let s2 become as large as we like and we will keep increasing the objective function
without violating feasibility.
What we have shown is that the ray with vertex
7/3
4/3
x0 = 0
0
and direction:
1/3
1/3
d=
0
1
is entirely contained inside the polyhedral set defined by Ax = b. This can be see from the
fact that:
xB = B−1 b − B−1 NxN
When applied in this case, we have:
xB = B−1 b − B−1 A·4 s2
We know that
−1 1/3
−B A·4 =
1/3
We will be increasing s2 (which acts like λ in the definition of ray) and leaving s1 equal to
0. It’s now easy to see that the ray we described is contained entirely in the feasible region.
This is illustrated in the original constraints in Figure 5.2.
Based on our previous example, we have the following theorem that extends Theorem
5.7:
Theorem 5.12. In a maximization problem, if aji ≤ 0 for all i = 1, . . . , m, and zj − cj <
0, then the linear programming problem is unbounded furthermore, let aj be the j th column
of B−1 A·j and let ek be a standard basis column vector in Rm×(n−m) where k corresponds to
the position of j in the matrix N. Then the direction:
−aj
(5.35) d =
ek
is an extreme direction of the feasible region X = {x ∈ Rn : Ax = b, x ≥ 0}.
82
x1 − x2 = 1
2x1 + x2 = 6
Extreme direction
Proof. The fact that d is a direction is easily verified by the fact there is an extreme
point x = [xB xN ]T and for all λ ≥ 0 we have:
(5.36) x + λd ∈ X
Thus it follows from the proof of Theorem 4.24 that Ad ≤ 0. The fact that d ≥ 0 and d 6= 0
follows from our assumptions. Now, we know that we can write A = [B|N]. Further, we
know that aj = B−1 A·j . Let us consider Ad:
−aj
(5.37) Ad = [B|N] = −BB−1 A·j + Nek
ek
Remember, ek is the standard basis vector that has have 1 precisely in the position corre-
sponding to column A·j in matrix N, so A·j = Nej . Thus we have:
(5.38) −BB−1 A·j + Nek = −A·j + A·j = 0
Thus, Ad = 0. We can scale d so that eT d = 1. We know that n − m − 1 elements of
d are zero (because of ek ) and we know that Ad = 0. Thus d can be made to represent
the intersection of n-hyperplanes in Rn . Thus, d is an extreme point of the polyhedron
D = {d ∈ Rn : Ad ≤ 0, d ≥ 0, eT d = 1}. It follows from Theorem 4.39, we know that d is
an extreme direction of X.
Exercise 51. Consider the problem
min z(x1 , x2 ) = 2x1 − x2
s.t. x − x + s = 1
1 2 1
2x 1 + x 2 − s2 = 6
x1 , x2 , s1 , s2 ≥ 0
83
Using the rule you developed in Exercise 49, show that the minimization problem has an
unbounded feasible solution. Find an extreme direction for this set. [Hint: The minimum
ratio test is the same for a minimization problem. Execute the simplex algorithm as we did
in Example 5.11 and use Theorem 5.12 to find the extreme direction of the feasible region.]
Proof. It follows from the proof of Theorem 5.6 that the solution must be optimal as
∂z/∂xj ≤ 0 for all j ∈ J and therefore increasing and xj will not improve the value of the
objective function. If there is some j ∈ J so that zj − cj = 0, then ∂z/∂xj = 0 and we
may increase the value of xj up to some point specified by the minimum ratio test, while
keeping other non-basic variables at zero. In this case, we will neither increase nor decrease
the objective function value. Since that objective function value is optimal, it follows that
the set of all such values (described in Equation 5.39) are alternative optimal solutions.
Example 5.14. Let us consider the toy maker problem again from Example 2.3 and 5.9
with our adjusted objective
(5.40) z(x1 , x2 ) = 18x1 + 6x2
Now consider the penultimate basis from Example 5.9 in which we had as basis variables x1 ,
s2 and x2 .
x1 18
s 1 0
x B = x2 x N = c B = 6 cN =
s3 0
s2 0
The matrices become:
3 1 0 1 0
B = 1 2 1 N = 0 0
1 0 0 0 1
The derived matrices are then:
35 0 1
B−1 b = 15 B−1 N = 1 −3
95 −2 5
84
Figure 5.3. Infinite alternative optimal solutions: In the simplex algorithm, when
zj − cj ≥ 0 in a maximization problem with at least one j for which zj − cj = 0,
indicates an infinite set of alternative optimal solutions.
85
Exercise 52. Consider the diet problem we covered in Example 3.50. I wish to design a
diet consisting of Raman noodles and ice cream. I’m interested in spending as little money
as possible but I want to ensure that I eat at least 1200 calories per day and that I get at
least 20 grams of protein per day. Assume that each serving of Raman costs $1 and contains
100 calories and 2 grams of protein. Assume that each serving of ice cream costs $1.50 and
contains 200 calories and 3 grams of protein.
(1) Develop a linear programming problem that will help me minimize the cost of my
food intake.
(2) Remembering to transform the linear programming problem you found above into
standard form, use the simplex algorithm to show that this problem has an infinite
set of alternative optimal solutions.
(3) At an optimal extreme point, find an expression for the set of infinite alternative
optimal exteme points like the one shown in Equation 5.43.
(4) Plot the feasible region and the level curves of the objective function. Highlight the
face of the polyhedral set on which the alternative optimal solutions can be found.
Example 5.15. Consider the modified form of the toy maker problem originally stated
in Example 4.37:
The polyhedral set and level curves of the objective function are shown Figure 5.4. We can
convert the problem to standard form by introducing slack variables:
86
Figure 5.4. An optimization problem with a degenerate extreme point: The opti-
mal solution to this problem is still (16, 72), but this extreme point is degenerate,
which will impact the behavior of the simplex algorithm.
From this, we see that the variable s3 should enter (because its reduce cost is negative).
In this case, there is a tie for the leaving variables: we see that 95/5 = 19 = (95/4)/(5/4),
therefore, either s2 or s4 could be chosen as the leaving variable. This is because we will
move to a degenerate extreme point when s3 enters the basis.
87
Suppose we choose s4 as the leaving variable. Then our tableau will become:
z x1 x2 s1 s2 s3 s4 RHS MRT (s1 )
z 1 0 0 −14/5 0 0 44/5 544
x1 0 1 0 4/5 0 0 −4/5 16 20
(5.47)
x2 0 0 1 −7/5 0 0 12/5 72
−
s2 0 0 0 2 1 0 −4 0 0
s3 0 0 0 −4/5 0 1 4/5 19 −
We now observe two things:
(1) One of the basic variables (s2 ) is zero, even though it is basic. This is the indicator
of degeneracy at an extreme point.
(2) The reduced cost of s1 is negative, indicating that s1 should enter the basis.
If we choose s1 as an entering variable, then using the minimum ratio test, we will choose s2
as the leaving variable (by the minimum ratio test)2. Then the tableau becomes:
z x 1 x 2 s1 s2 s3 s4 RHS
z 1 0 0 0 7/5 0 16/5 544
x1 0 1 0 0 −2/5 0 4/5
16
(5.48)
x2
0 0 1 0 7/10 0 −2/5 72
s1 0 0 0 1 1/2 0 −2 0
s3 0 0 0 0 2/5 1 −4/5 19
Notice the objective function value cB B−1 b has not changed, because we really have not
moved to a new extreme point. We have simply changed from one representation of the
degenerate extreme point to another. This was to be expected, the fact that the minimum
ratio was zero showed that we could not increase s1 and maintain feasibility. As such s1 = 0
in the new basic feasible solution. The reduced cost vector cB B−1 N − cN has changed and
we could now terminate the simplex method.
Theorem 5.16. Consider Problem P (our linear programming problem). Let B ∈ Rm×m
be a basis matrix corresponding to some set of basic variables xB . Let b = B−1 b. If bj = 0
for some j = 1, . . . , m, then xB = b and xN = 0 is a degenerate extreme point of the feasible
region of Problem P .
Proof. At any basic feasible solutions we have chosen m variables as basic. This basic
feasible solution satisfies BxB = b and thus provides m binding constraints. The remaining
variables are chosen as non-basic and set to zero, thus xN = 0, which provides n − m binding
constraints on the non-negativity constraints (i.e., x ≥ 0). If there is a basic variable that is
zero, then an extra non-negativity constraint is binding at that extreme point. Thus n + 1
constraints are binding and, by definition, the extreme point must be degenerate.
7.1. The Simplex Algorithm and Convergence. Using the work we’ve done in this
chapter, we can now state the following implementation of the Simplex algorithm in matrix
form.
2The minimum ratio test still applies when bj = 0. In this case, we will remain at the same extreme point.
88
Exercise 53. State the simplex algorithm in Tableau Form. [Hint: Most of the simplex
algorithm is the same, simply add in the row-operations executed to compute the new reduced
costs and B−1 N.]
Theorem 5.17. If the feasible region of Problem P has no degenerate extreme points,
then the simplex algorithm will terminate in a finite number of steps with an optimal solution
to the linear programming problem.
Sketch of Proof. In the absence of degeneracy, the value of the objective function
improves (increases in the case of a maximization problem) each time we exchange a basic
variable and non-basic variable. This is ensured by the fact that the entering variable
always has a negative reduced cost. There are a finite number of extreme points for each
polyhedral set, as shown in Lemma 4.41. Thus, the process of moving from extreme point
to extreme point of X, the polyhedral set in Problem P must terminate with the largest
possible objective function value.
Remark 5.18. The correct proof that the simplex algorithm converges to a point of
optimality is actually proved by showing that the algorithm terminates with something
called a Karush-Kuhn-Tucker (KKT) point. Unfortunately, we will not study the Karush-
Kuhn-Tucker conditions until later. There are a few proofs that do not rely on showing
that the point of optimality is a KKT point (see [Dan60] for example), but most rely on
some intimate knowledge or assumptions on polyhedral sets and are not satisfying. Thus,
for students who are not as concerned with the intricate details of the proof, the previous
proof sketch is more than sufficient to convince you that the simplex algorithm is correct.
For those students who prefer the rigorous detail, please see Chapter 8.
89
CHAPTER 6
Simplex Initialization
In the previous chapter, we introduced the Simplex Algorithm and showed how to ma-
nipulate the A, B and N matrices as we execute it. In this chapter, we will discuss the issue
of finding an initial basic feasible solution to start execution of the Simplex Algorithm.
1. Artificial Variables
So far we have investigated linear programming problems that had form:
max cT x
s.t. Ax ≤ b
x≥0
In this case, we use slack variables to convert the problem to:
max cT x
s.t. Ax + Im xs = b
x, xs ≥ 0
where xs are slack variables, one for each constraint. If b ≥ 0, then our initial basic feasible
solution can be x = 0 and xs = b (that is, our initial basis matrix is B = Im ). We have
also explored small problems where a graphical technique could be used to identify an initial
extreme point of a polyhedral set and thus an initial basic feasible solution for the problem.
Suppose now we wish to investigate problems in which we do not have a problem structure
that lends itself to easily identifying an initial basic feasible solution. The simplex algorithm
requires an initial BFS to begin execution and so we must develop a method for finding such
a BFS.
For the remainder of this chapter we will assume, unless told otherwise, that we are
interested in solving a linear programming problem provided in Standard Form. That is:
T
max c x
(6.1) P s.t. Ax = b
x≥0
and that b ≥ 0. Clearly our work in Chapter 3 shows that any linear programming problem
can be put in this form.
Suppose to each constraint Ai· x = bi we associate an artificial variable xai . We can
replace constraint i with:
(6.2) Ai· x + xai = bi
91
Since bi ≥ 0, we will require xai ≥ 0. If xai = 0, then this is simply the original constraint.
Thus if we can find values for the ordinary decision variables x so that xai = 0, then constraint
i is satisfied. If we can identify values for x so that all the artificial variables are zero and
m variables of x are non-zero, then the modified constraints described by Equation 6.2 are
satisfied and we have identified an initial basic feasible solution.
Obviously, we would like to penalize non-zero artificial variables. This can be done by
writing a new linear programming problem:
T
min e xa
(6.3) P1 s.t. Ax + Im xa = b
x, xa ≥ 0
Remark 6.1. We can see that the artificial variables are similar to slack variables, but
they should have zero value because they have no true meaning in the original problem P .
They are introduced artificially to help identify an initial basic feasible solution to Problem
P.
Lemma 6.2. The optimal objective function value in Problem P1 is bounded below by 0.
Furthermore, if the optimal solution to problem P1 has xa = 0, then the values of x form a
feasible solution to Problem P .
Proof. Clearly, setting xa = 0 will produce an objective function value of zero. Since
e > 0, we cannot obtain a smaller objective function value. If at optimality we have xa = 0,
then we know that m of the variables in x are in the basis and the remaining variables (in
both x and xa ) are not in the basis and hence at zero. Thus we have found a basic feasible
solution to Problem P .
Example 6.3. Consider the following problem:
min x1 + 2x2
s.t. x1 + 2x2 ≥ 12
(6.4)
2x1 + 3x2 ≥ 20
x 1 , x2 ≥ 0
We can convert the problem to standard form by adding two surplus variables:
min x1 + 2x2
s.t. x1 + 2x2 − s1 = 12
(6.5)
2x1 + 3x2 − s2 = 20
x1 , x2 , s1 , s2 ≥ 0
It’s not clear what a good basic feasible solution would be for this. Clearly, we cannot set
x1 = x2 = 0 because we would have s1 = −12 and s2 = −20, which is not feasible. We can
introduce two artificial variables (xa1 and xa2 ) and create a new problem P1 .
min xa1 + xa2
s.t. x1 + 2x2 − s1 + xa1 = 12
(6.6)
2x1 + 3x2 − s2 + xa2 = 20
x1 , x2 , s1 , s2 , xa1 , xa2 ≥ 0
92
A basic feasible solution for our artificial problem would let xa1 = 12 and xa2 = 20. The
pertinent matrices in this case are:
1 2 −1 0 1 0 12
A= b=
2 3 0 −1 0 1 20
1 0 1 2 −1 0 −1 12
B= N= B b=
0 1 2 3 0 −1 20
0
1 0
cB = cN =
1 0
0
cB B b = 32 cB B−1 N − cTN = 3 5 −1 −1
T −1 T
At this point, we have eliminated both artificial variables from the basis and we have iden-
tified and initial basic feasible solution to the original problem: x1 = 4, x2 = 4, s1 = 0 and
s2 = 0. The process of moving to a feasible solution in the original problem is shown in
Figure 6.1.
Figure 6.1. Finding an initial feasible point: Artificial variables are introduced
into the problem. These variables allow us to move through non-feasible space.
Once we reach a feasible extreme point, the process of optimizing Problem P1 stops.
We could now continue on to solve the initial problem we were given. At this point, our
basic feasible solution makes x2 and x1 basic variables and s1 and s2 non-basic variables.
Our problem data are:
x2 s
xB = xN = 1
x1 s2
Note that we keep the basic variables in the order in which we find them at the end of the
solution to our first problem.
1 2 −1 0 12
A= b=
2 3 0 −1 20
2 1 −1 0 −1 4
B= N= B b=
3 2 0 −1 4
2 0
cB = cN =
1 0
Notice that we don’t have to do a lot of work to get this information out of the last tableau
in Expression 6.11. The matrix B−1 is actually positioned in the columns below the artificial
94
variables. This is because we started with an identity matrix in this position. As always,
the remainder of the matrix holds B−1 N. Thus, we can read this final tableau as:
z xB s xa RHS
z
(6.12) 1 0 0 −e 0
x2 −1 −1 −1
0 I2 B N B B b
x1
In our case from Expression 6.11 we have:
z x 1 x 2 s1 s2 xa1 xa2 RHS
1 0 0 0 0 −1 −1 0
z
(6.13) 0 0 1 −2 1 2 −1 4
x2 0 1 0 3 −2
−3 2 4
x1
− I2 B−1 N B−1 B−1 b
We can use this information (and the reduced costs and objective function we computed)
to start our tableau to solve the problem with which we began. Our next initial tableau will
be:
z x1 x2 s1 s2 RHS
z 1 0 0 −1 0 12
(6.14)
x2 0 0 1 −2 1 4
x1 0 1 0 3 −2 4
Notice all we’ve done is removed the artificial variables from the problem and substituted
the newly computed reduced costs for s1 and s2 (−1 and 0) into Row 0 of the tableau. We’ve
also put the correct objective function value (12) into Row 0 of the right hand side. We’re now
ready to solve the original problem. However, since this is a minimization problem we can
see we’re already at a point of optimality. Notice that all reduced costs are either negative or
zero, suggesting that entering any non-basic variable will at best keep the objective function
value the same and at worst make the objective function worse. Thus we conclude that an
optimal solution for our original problem is x∗1 = x∗2 = 4 and s∗1 = s∗2 = 0.
Theorem 6.4. Let x∗ , xa ∗ be an optimal feasible solution to problem P1 . Problem P is
feasible if and only if xa ∗ = 0.
Proof. We have already proved in Lemma 6.2 that if xa ∗ = 0, then x∗ is a feasible
solution to P and thus P is feasible.
Conversely, suppose that P is feasible. Then P has at least one basic feasible solution
because the feasible region of P is a polyhedral set and we are assured by Lemma 4.41 that
this set has at least one extreme point. Now we can simply let xa ∗ = 0 and x be this
basic feasible solution to problem P . Then this is clearly an optimal solution to problem P1
because it forces the objective value to its lower bound (zero).
with b ≥ 0.
(2) Introduce auxiliary variables xa and solve the Phase I problem:
T
min e xa
P1 s.t. Ax + Im xa = b
x, xa ≥ 0
(3) If x∗a = 0, then an initial feasible solution has been identified. This solution can be
converted into a basic feasible solution as we discuss below. Otherwise, there is no
solution to Problem P .
(4) Use the Basic Feasible solution identified in Step 3 to start the Simplex Algorithm
(compute the reduced costs given the c vector).
(5) Solve the Phase II problem:
T
max c x
P s.t. Ax = b
x≥0
When we solve the Phase I problem, if x∗a 6= 0 at optimality, then there is no solution.
If x∗a = 0, then there are two possibilities:
(1) The basis consists only of variables in the vector x; i.e., no auxiliary variable is in
the basis.
(2) There is some auxiliary variable xai = 0 and this variable is in the basis; i.e., the
solution is degenerate and the degeneracy is expressed in an auxiliary variable.
2.1. Case I: xa = 0 and is out of the basis. If xa = 0 and there are not elements of
the vector xa in the basis, then we have identified a basic feasible solution x = [xB xN ]T .
Simply allow the non-zero basic elements (in x) to be xB and the remainder of the elements
(not in xa ) are in xN . We can then begin Phase II using this basic feasible solution.
2.2. Case II: xa = 0 and is not out of the basis. If xa = 0 and there is at least one
artificial variable still in the basis, then we have identified a degenerate solution to the Phase
I problem. Theoretically we could proceed directly to Phase II, assigning 0 coefficients to
the artificial variables as long as we ensure that no artificial variable ever becomes positive
again. [BJS04] notes that this can be accomplished by selective pivoting, however it is often
more efficient and simpler to remove the artificial variables completely from the basis before
proceeding to Phase II.
96
To remove the artificial variables from the basis, let us assume that we can arrange Rows
1 − m of the Phase I simplex tableau as follows:
xB xBa xN xNa RHS
(6.15) xB Ik 0 R1 R 3 b
x Ba 0 Im−k R2 R4 0
Column swapping ensures we can do this, if we so desire. Our objective is to replace elements
in xBa (the basic artificial variables) with elements from xN non-basic, non-artificial variables.
Thus, we will attempt to pivot on elements in the matrix R2 . Clearly since the Phase I
coefficients of the variables in xN are zero, pivoting in these elements will not negatively
impact the Phase I objective value. Thus, if the element in position (1, 1) is non-zero, then
we can enter the variable xN1 into the basis and remove the variable xBa1 . This will produce
a new tableau with structure similar to the one given in Equation 6.15 except there will be
k + 1 non-artificial basic variables and m − k − 1 artificial basic variables. Clearly if the
element in position (1, 1) in matrix R2 is zero, then we must move to a different element for
pivoting.
In executing the procedure discussed above, one of two things will occur:
(1) The matrix R2 will be transformed into Im−k or
(2) A point will be reached where there are no longer any variables in xN that can be
entered into the basis because all the elements of R2 are zero.
In the first case, we have removed all the artificial variables from the basis in Phase I
and we can proceed to Phase II with the current basic feasible solution. In the second case,
we will have shown that:
I k R1
(6.16) A ∼
0 0
This shows that the m − k rows of A are not linearly independent of the first k rows and
thus the matrix A did not have full row rank. When this occurs, we can discard the last
m − k rows of A and simply proceed with the solution given in xB = b, xN = 0. This is a
basic feasible solution to the new matrix A in which we have removed the redundant rows.
Example 6.5. Once execution of the Phase I simplex algorithm is complete, the reduced
costs of the current basic feasible solution must be computed. These can be computed during
Phase I by adding an additional “z” row to the tableau. In this case, the initial tableau has
the form:
z x1 x2 s1 s2 xa1 xa2 RHS
zII 1 −1 −2 0 0 0 0 0
(6.17) z 1 3
5 −1 −1 0 0 32
x a1 0 1 2 −1 0 1 0 12
x a2 0 2 3 0 −1 0 1 20
The first row (zII ) is computed for the objective function:
(6.18) x1 + 2x2 + 0s1 + 0s2 + 0xa1 + 0xa2 ,
which is precisely the Phase II problem, except we never allow the artificial variables xa1 and
xa2 to carry into the Phase II problem. If we carry out the same steps we did in Example
97
Remark 6.6. In the case of a minimization problem, the objective function in the Big-M
method becomes:
(6.20) min cT x + M eT xa
Exercise 54. In Exercise 4 we showed that every maximization problem can be written
as a minimization problem (and vice-versa). Show that Equation 6.20 follows by changing
Problem PM into a minimization problem.
Lemma 6.7. Suppose that problem PM is unbounded. If problem P is feasible, then it is
unbounded.
Proof. If PM is unbounded, then there is some direction direction:
d
dM =
da
to the feasible region of Problem PM . Furthermore, d ≥ 0 and da ≥ 0 and as a whole
dM 6= 0. For this problem to be unbounded, it suffices that:
(6.21) cT d − M eT da > 0
by Corollary 5.2.
Since we are free to choose M as large as we like, it follows that for a large value of M ,
the left-hand-side of Inequality 6.21 must be negative unless da = 0.
The fact that dM is a direction implies that Ad + Im da = 0 and therefore Ad = 0. We
know further that d ≥ 0 and d 6= 0. Thus it follows that we have identified a direction d
of the feasible region for Problem P . Furthermore, we know that following this direction
must result in an unbounded objective function for P since the coefficients of the artificial
variables are all negative.
Remark 6.8. Lemma 6.7 tells us that if the Problem PM is unbounded, then we know
that there is no useful solution to Problem P . If Problem P has non-empty feasible region,
then it [Problem P ] is unbounded and thus there is no useful solution. On the other hand, if
Problem P has no feasible solution, there is still no useful solution to Problem P . In either
case, we may need to re-model the problem to obtain a useful result.
Theorem 6.9. If Problem P is feasible and has a finite solution. Then there is an M > 0
so that the optimal solution to PM has all artificial variables non-basic and thus the solution
to Problem P can be extracted from the solution to Problem PM .
Proof. By contrapositive applied to Lemma 6.7 we know that Problem PM is bounded.
By the Cartheodory Characterization theorem, we may enumerate the extreme points of the
feasible region of Problem PM : call these y1 , . . . , yk where:
x
y=
xa
Let zM1 , . . . zMk be the objective function value of Problem PM at each of these extreme
points. Since P is feasible, at least one of these extreme points has xa = 0. Let us sub-
divide the extreme points in Ya = {y1 , . . . , yl } and Y = {yl+1 , . . . , yk } where the points in
Ya are the extreme points such that there is at least one non-zero artificial variable and the
points in Y are the extreme points where all artificial variables are zero. At any extreme
99
point in Y we know that at most m elements of the vector x are non-zero and therefore,
every extreme point in Y corresponds to an extreme point of the original problem P . Since
Problem P has a finite solution, it follows that the optimal solution to problem P occurs
at some point in Y, by Theorem 5.1. Furthermore the value of the objective function for
Problem P is precisely the same as the value of the objective function of Problem PM for
each point in Y because xa = 0. Define:
Such a value exists for M since there are only a finite number of extreme points in Y. Our
choice of M ensures that the optimal solution to PM occurs at an extreme point where xa = 0
and the x component of y is the solution to Problem P .
Remark 6.10. Another way to look at the proof of this theorem is to think of defining
M in such a way so that at any extreme point where xa 6= 0, the objective function can
always be made larger by moving to any extreme point that is feasible to Problem P . Thus
the simplex algorithm will move among the extreme points seeking to leave those that are
not feasible to Problem P because they are less desirable.
Theorem 6.11. Suppose Problem P is infeasible. Then there is no value of M that will
drive the all the artificial variables from the basis of Problem PM .
Remark 6.12. The Big-M method is not particularly effective for solving real-world
problems. The introduction of a set of variables with large coefficients (M ) can lead to
round-off errors in the execution of the simplex algorithm. (Remember, computers can only
manipulate numbers in binary, which means that all floating point numbers are restricted
in their precision to the machine precision of the underlying system OS. This is generally
given in terms of the largest amount of memory that can be addressed in bits. This has
led, in recent times, to operating system manufacturers selling their OS’s as “32 bit” or “64
bit.” When solving real-world problems, these issue can become a real factor with which to
contend.
Another issue is we have no way of telling how large M should be without knowing that
Problem P is feasible, which is precisely what we want the Big-M method to tell us! The
general rule of thumb provided earlier will suffice.
100
Example 6.13. Suppose we solve the problem from Example 6.3 using the Big-M method.
Our problem is:
min x1 + 2x2
s.t. x1 + 2x2 ≥ 12
(6.24)
2x1 + 3x2 ≥ 20
x 1 , x2 ≥ 0
Again, this problem has standard form:
min x1 + 2x2
s.t. x1 + 2x2 − s1 = 12
(6.25)
2x1 + 3x2 − s2 = 20
x1 , x2 , s1 , s2 ≥ 0
To execute the Big-M method, we’ll choose M = 300 which is larger than 100 times
the largest coefficient of the objective function of the original problem. Our new problem
becomes:
min x1 + 2x2 + 300xa1 + 300xa2
s.t. x1 + 2x2 − s1 + xa1 = 12
(6.26)
2x1 + 3x2 − s2 + xa2 = 20
x1 , x2 , s1 , s2 , xa1 , xa2 ≥ 0
Since this is a minimization problem, we add M eT xa to the objective function. Letting xa1
and xa2 be our initial basis, we have the series of tableaux:
TABLEAU I
z x1 x2 s1 s2 xa1 xa2 RHS MRT(x1 )
z 1 899 1498 −300 −300 0 0 9600
x a1 0 1 2 −1 0 1 0 12 12
x a2 0 2 3 0 −1 0 1 20 20/2 = 10
TABLEAU II
z x1 x2 s1 s2 x a1 x a2 RHS
MRT(x1 )
z 1 0 299/2 −300 299/2 0 −899/2 610
x a1 0 0 1/2 −1 1/2 1 −1/2 2 4
x1 0 1 3/2 0 −1/2 0 1/2 10 20/3
TABLEAU III
z x 1 x 2 s1 s2 x a1 xa2 RHS
z
1 0 0 −1 0 −299 −300 12
x2 0 0 1 −2 1 2 −1 4
x1 0 1 0 3 −2 −3 2 4
It is worth noting that this is essentially the same series of tableau we had when executing
the Two-Phase method, but we have to deal with the large M coefficients in our arithmetic.
101
Im xB + B−1 N + ya xa = b
(6.29)
x, xa ≥ 0
That is, s1 = −12 and s2 = −20 is our basic solution, which is not feasible. We append
the artificial variable with coefficient vector ya = [−1 − 1]T (since both elements of the
right-hand-side are negative) to obtain:
− x1 − 2x2 + s1 − xa = −12
(6.34)
− 2x1 − 3x2 + s2 − xa = −20
If we build a tableau for Phase I with this current BFS, we obtain:
z x 1 x 2 s1 s2 xa RHS
z 1 0
0 0 0 −1 0
s1 0 −1 −2 1 0 −1 −12
s2 0 −2 −3 0 1 −1 −20
We enter the variable xa and pivot out variable s2 which has the most negative right hand
side to obtain the initial feasible tableau:
z x1 x2 s1 s2 xa RHS
z 1 2 3 0 1 0 20
s1 0 1 1 1 −1 0 8
xa 0 2 3 0 −1 1 20
We can now complete the Phase I process and execute the simplex algorithm until we drive
xa from the basis and reduce the right-hand-side to 0. At this point we will have identified
an initial basic feasible solution to the initial problem and we can execute Phase II.
Remark 6.16. Empirical evidence suggests that the single artificial variable technique
is not as efficient as the two-phase or Big-M method. Thus, it is presented as an historical
component of the development of efficient implementations of the Simplex algorithm and
not as a realistic technique for implementation in production systems.
he wants to know how many shamrocks he should make and store on each day to minimize
his cost.
To determine an answer to this problem, note that we have time as a parameter: time runs
over three days. Let xt be the number of shamrocks McLearey makes on day t (t = 1, 2, 3)
and let yt be the number of shamrocks McLearey stores on day t. There is also a parameter
y0 = 10, the number of shamrocks left over from last year.
McLearey’s total cost (in cents) can the be written as:
Additionally, there are some constraints linking production, storage and demand. These
constraints are depicted graphically in Figure 6.2. Multiperiod inventory models operate
on a principle of conservation of flow. Manufactured goods and previous period inventories
flow into the box representing each period. Demand and next period inventories flow out of
the box representing each period. This inflow and outflow must be equal to account for all
shamrocks produced. This is depicted below:
x1 x2 x3
Initial Inventory
Enters
y0 Day 1
y1 Day 2
y2 Day 3
y3
Remaining Final Inventory
Shamrocks Leaves
goto Inventory
d1 d2 d3
Demand Causes Shamrocks to Leave Boxes
(6.36) yt−1 + xt = yt + dt ∀t
This equation says that at period t the amount of inventory carried over from period t − 1
plus amount of shamrocks produced in period t must be equal to the total demand in period
t plus any left over shamrocks at the end of period t. Clearly we also know that xt ≥ 0 for all
t, since you cannot make a negative number of shamrocks. However, by also requiring yt ≥ 0
for all t, then we assert that our inventory can never be negative. A negative inventory is a
backorder. Thus by saying that yt ≥ 0 we are also satisfying the requirement that McLearey
satisfy his demand in each period. Note, when t = 1, then yt−1 = y0 , which is the parameter
we defined above.
104
Constraints of the form xt ≤ 150 for all t come from the fact that McLearey can produce at
most 150 shamrocks per day.
This simple problem now has 6 variables and 6 constraints plus 6 non-negativity con-
straints and it is non-trivial to determine a good initial basic feasible solution, especially
since the problem contains both equality and inequality constraints.
A problem like this can be solved in Matlab (see Chapter 3.11), or on a commercial or
open source solver like the GNU Linear Programming Kit (GLPK, http://www.gnu.org/
software/glpk/). In Figure 6.3 we show an example model file that describes the problem.
In Figure 6.4, we show the data section of the GLPK model file describing McLearey’s
problem. Finally, figure 6.5 shows a portion of the output generated by the GLPK solver
glpsol using this model. Note that there is no inventory in Year 3 (because it is too
expensive) even though it might be beneficial to McLearey to hold inventory for next year.
This is because the problem has no information about any other time periods and so, in a
sense, the end of the world occurs immediately after period 3. This type of end of the world
phenomenon is common in multi-period problems.
105
#
# This finds the optimal solution for McLearey
#
/* sets */
set DAY;
set DAY2;
/* parameters */
param makeCost {t in DAY};
param holdCost {t in DAY};
param demand {t in DAY};
param start;
param S;
/* decision variables: */
var x {t in DAY} >= 0;
var y {t in DAY} >= 0;
/* objective function */
minimize z: sum{t in DAY} (makeCost[t]*x[t]+holdCost[t]*y[t]);
/* Flow Constraints */
s.t. FLOWA : x[1] - y[1] = demand[1] - start;
s.t. FLOWB{t in DAY2} : x[t] + y[t-1] - y[t] = demand[t];
/* Manufacturing constraints */
s.t. MAKE{t in DAY} : x[t] <= S;
end;
106
/* data section */
data;
set DAY := 1 2 3;
set DAY2 := 2 3;
param makeCost:=
1 200
2 200
3 200;
param holdCost:=
1 1
2 1
3 5;
param demand:=
1 100
2 200
3 50;
param start:=10;
param S:=150;
end;
107
CHAPTER 7
In this section, we will consider the problem of degeneracy and prove (at last) that there
is an implementation of the Simplex Algorithm that is guaranteed to converge to an optimal
solution, assuming one exists.
1. Degeneracy Revisited
We’ve already discussed degeneracy. Recall the following theorem from Chapter 5 that
defines degeneracy in terms of the simplex tableau:
Theorem 5.16. Consider Problem P (our linear programming problem). Let B ∈ Rm×m be
a basis matrix corresponding to some set of basic variables xB . Let b = B−1 b. If bj = 0 for
some j = 1, . . . , m, then xB = b and xN = 0 is a degenerate extreme point of the feasible
region of Problem P .
We have seen in Example 5.15 that degeneracy can cause us to take extra steps on
our way from an initial basic feasible solution to an optimal solution. When the simplex
algorithm takes extra steps while remaining at the same degenerate extreme point, this is
called stalling. The problem can become much worse; for certain entering variable rules,
the simplex algorithm can become locked in a cycle of pivots each one moving from one
characterization of a degenerate extreme point to the next. The following example from
Beale and illustrated in Chapter 4 of [BJS04] demonstrates the point.
Example 7.1. Consider the following linear programming problem:
3 1
min − x4 + 20x5 − x6 + 6x7
4 2
1
s.t x1 + x4 − 8x5 − x6 + 9x7 = 0
4
(7.1) 1 1
x2 + x4 − 12x5 − x6 + 3x7 = 0
2 2
x3 + x6 = 1
xi ≥ 0 i = 1, . . . , 7
It is conducive to analyze the A matrix of the constraints of this problem. We have:
1 0 0 1/4 −8 −1 9
(7.2) A = 0 1 0 1/2 −12 −1/2 3
0 0 1 0 0 1 0
The fact that the A matrix contains an identity matrix embedded within it suggests that
an initial basic feasible solution with basic variables x1 , x2 and x3 would be a good choice.
109
If we apply an entering variable rule where we always chose the non-basic variable to enter
with the most positive reduced cost (since this is a minimization problem), and we choose
the leaving variable to be the first row that is in a tie, then we will obtain the following
sequence of tableaux:
Tableau I:
z x1 x2 x3 x4 x5 x6 x7 RHS
Tableau II:
z x1 x2 x3 x4 x5 x6 x7 RHS
z
1 −3 0 0 0 4 7/2 −33 0
x4
0 4 0 0 1 −32 −4 36 0
x2 0 −2 1 0 0 4 3/2 −15 0
x3 0 0 0 1 0 0 1 0 1
Tableau III:
z x1 x2 x3 x4 x5 x6 x7 RHS
z
1 −1 −1 0 0 0 2 −18 0
x4
0 −12 8 0 1 0 8 −84 0
x5 0 −1/2 1/4 0 0 1 3/8 −15/4 0
x3 0 0 0 1 0 0 1 0 1
Tableau IV:
z x1 x2 x3 x4 x5 x6 x7 RHS
z 1 2 −3 0 −1/4 0 0 3 0
0 −3/2 1 0 1/8 0 1 −21/2 0
x6
x5 0 1/16 −1/8 0 −3/64 1 0 3/16 0
x3 0 3/2 −1 1 −1/8 0 0 21/2 1
110
Tableau V:
z x1 x2 x3 x4 x5 x6 x7 RHS
z
1 1 −1 0 1/2 −16 0 0 0
x6
0 2 −6 0 −5/2 56 1 0 0
x7 0 1/3 −2/3 0 −1/4 16/3 0 1 0
x3 0 −2 6 1 5/2 −56 0 0 1
Tableau VI:
z x1 x2 x3 x4 x5 x6 x7 RHS
2.1. Lexicographic Minimum Ratio Test. Suppose we are considering a linear pro-
gramming problem and we have chosen an entering variable xj according to a fixed entering
variable rule. Assume further, we are given some current basis matrix B and as usual, the
right-hand-side vector of the constraints is denoted b, while the coefficient matrix is denoted
A. Then the minimum ratio test asserts that we will chose as the leaving variable the basis
variable with the minimum ratio in the minimum ratio test. Consider the following set:
br bi
(7.4) I0 = r : = min : i = 1, . . . , m and aji > 0
aj r aj i
In the absence of degeneracy, I0 contains a single element: the row index that has the
smallest ratio of bi to aji , where naturally: b = B−1 b and aj = B−1 A·j . In this case, xj is
swapped into the basis in exchange for xBr (the rth basic variable).
When we have a degenerate basic feasible solution, then I0 is not a singleton set and
contains all the rows that have tied in the minimum ratio test. In this case, we can form a
new set:
a1 r a1i
(7.5) I1 = r : = min : i ∈ I0
ajr aji
Here, we are taking the elements in column 1 of B−1 A·1 to obtain a1 . The elements of
this (column) vector are then being divided by the elements of the (column) vector aj on a
index-by-index basis. If this set is a singleton, then basic variable xBr leaves the basis. If
this set is not a singleton, we may form a new set I2 with column a2 . In general, we will
have the set:
akr aki
(7.6) Ik = r : = min : i ∈ Ik−1
ajr aji
Lemma 7.5. For any degenerate basis matrix B for any linear programming problem, we
will ultimately find a k so that Ik is a singleton.
Exercise 57. Prove Lemma 7.5. [Hint: Assume that the tableau is arranged so that
the identity columns are columns 1 through m. (That is aj = ej for i = 1, . . . , m.) Show
that this configuration will easily lead to a singleton Ik for k < m.]
In executing the lexicographic minimum ratio test, we can see that we are essentially
comparing the tied rows in a lexicographic manner. If a set of rows ties in the minimum
ratio test, then we execute a minimum ratio test on the first column of the tied rows. If
there is a tie, then we move on executing a minimum ratio test on the second column of the
rows that tied in both previous tests. This continues until the tie is broken and a single row
emerges as the leaving row.
Example 7.6. Let us consider the example from Beale again using the lexicographic
minimum ratio test. Consider the tableau shown below.
Tableau I:
z x1 x2 x3 x4 x5 x6 x7 RHS
Again, we chose to enter variable x4 as it has the most positive reduced cost. Variables x1
and x2 tie in the minimum ratio test. So we consider a new minimum ratio test on the first
column of the tableau:
1 0
(7.7) min ,
1/4 1/2
From this test, we see that x2 is the leaving variable and we pivot on element 1/2 as indicated
in the tableau. Note, we only need to execute the minimum ratio test on variables x1 and x2
since those were the tied variables in the standard minimum ratio test. That is, I0 = {1, 2}
and we construct I1 from these indexes alone. In this case I1 = {2}. Pivoting yields the new
tableau:
Tableau II:
z x1 x2 x3 x4 x5 x6 x7 RHS
1 0 −3/2 0 0 −2 5/4 −21/2
z 0
x1
0 1 −1/2 0 0 −2 −3/4 15/2 0
x4 0 0 2 0 1 −24 −1 6 0
x3 0 0 0 1 0 0 1 0 1
There is no question this time of the entering or leaving variable, clearly x6 must enter and
x3 must leave and we obtain1:
Tableau III:
z x1 x2 x3 x4 x5 x6 x7 RHS
z 1 0 −3/2 −5/4 0 −2 0 −21/2 −5/4
x1 0 1 −1/2 3/4 0 −2 0 15/2
3/4
x4 0 0 2 1 1 −24 0 6 1
x6 0 0 0 1 0 0 1 0 1
Since this is a minimization problem and the reduced costs of the non-basic variables are
now all negative, we have arrived at an optimal solution. The lexicographic minimum ratio
test successfully prevented cycling.
2.2. Convergence of the Simplex Algorithm Under Lexicographic Minimum
Ratio Test.
Lemma 7.7. Consider the problem:
T
max c x
P s.t. Ax = b
x≥0
Suppose the following hold:
(1) Im is embedded in the matrix A and is used as the starting basis,
(2) a consistent entering variable rule is applied (e.g., largest reduced cost first), and
(3) the lexicographic minimum ratio test is applied as the leaving variable rule.
Then each row of the sequence of augmented matrices [b|B−1 ] is lexicographically positive.
Here B is the basis matrix and b = B−1 b.
1Thanks to Ethan Wright for finding a small typo in this example, that is now fixed.
113
Proof. The initial basis Im yieds an augmented matrix [b|Im ]. This matrix clearly has
every row lexicographically positive, since b ≥ 0. Assume that the rows of [b|B−1 ] 0 for the
first n iterations of the simplex algorithm with fixed entering variable rule and lexicographic
minimum ratio test. We will show that it is also true for step n + 1.
Suppose (after iteration n) we have the following tableau:
Assume using the entering variable rule of our choice that xk will enter. Let us consider
what happens as we choose a leaving variable and execute a pivot. Suppose that after
executing the lexicographic minimum ratio test, we pivot on element ark . Consider the
pivoting operation on row i: there are two cases:
Case I i 6∈ I0 : If i 6∈ I0 , then we replace bi with
0 aik
bi = bi − br
ark
If aij < 0, then clearly b0i > 0. Otherwise, since i 6∈ I0 , then:
br bi aik aik
< =⇒ br < bi =⇒ 0 < bi − br
ark aik ark ark
0
Thus we know that bi > 0. It follows then that row i of the augmented matrix
[b|B−1 ] is lexicographically positive.
0
Case II i ∈ I0 : Then bi = bi − (aik /ark )br = 0 since
br bi
=
ark aik
There are now two possibilities, either i ∈ I1 or i 6∈ I1 . In the first, case we can
argue that
aik
a0i1 = ai1 − ar1 > 0
ark
0
for the same reason that bi > 0 in the case when i ∈ I0 , namely that the lexicographic
minimum ratio test ensures that:
ar1 ai1
<
ark aik
114
0
if i 6∈ I1 . This confirms (since bi = 0) row i of the augmented matrix [b|B−1 ] is
lexicographically positive.
In the second case that i ∈ I1 , then we may proceed to determine whether i ∈ I2 .
This process continues until we identify the j for which Ij is the singleton index r.
Such a j must exist by Lemma 7.5. In each case, we may reason that row i of the
augmented matrix [b|B−1 ] is lexicographically positive.
The preceding argument shows that at step n+1 of the simplex algorithm we will arrive an
augmented matrix [b|B−1 ] for which every row is lexicographically positive. This completes
the proof.
Remark 7.8. The assumption that we force Im into the basis can be justified in one of
two ways:
(1) We may assume that we first execute a Phase I simplex algorithm with artificial
variables. Then the forgoing argument applies.
(2) Assume we are provided with a crash basis B and we form the equivalent problem:
T T T −1
max 0 xB + (cN − cB B N)xN
P0 s.t. Im xB + B−1 NxN = B−1 b
xB , xN ≥ 0
where B−1 b ≥ 0. This problem is clearly equivalent because its initial simplex
tableau will be identical to a simplex tableau generated by Problem P with basis
matrix B. If no such crash basis exists, then the problem is infeasible.
Lemma 7.9. Under the assumptions of Lemma 7.7, let zi and zi+1 be row vectors in
Rn+1 corresponding to Row 0 from the simplex tableau at iterations i and i + 1 respectively.
Assume, however, that we exchange the z column (column 1) and the RHS column (column
n + 2). Then zi+1 − zi is lexicographically positive.
Proof. Consider the tableau in Table 1. If we are solving a maximization problem, then
clearly for xk to be an entering variable (as we assumed in the proof of Lemma 7.7) we must
have zk − ck < 0. Then the new Row Zero is obtained by adding:
−(zk − ck )
y= 0 ar1 . . . arj . . . arm arm+1 . . . ark . . . arn br
ark
to the current row zero consisting of [1 z1 − c1 . . . zn − cn z]. That is: zi+1 = zi + y, or
y = zi+1 − zi .
The fact that zk − ck < 0 and ark > 0 (in order to pivot at that element) implies that
−(zk − ck )/ark > 0. Further, Lemma 7.7 asserts that the vector [0 ar1 . . . arn br ] is
lexicographically positive (if we perform the exchange of column 1 and column n + 2 as we
assumed we would). Thus, y is lexicographically positive by Lemma 7.4. This completes the
proof.
Theorem 7.10. Under the assumptions of Lemma 7.7, the simplex algorithm converges
in a finite number of steps.
Proof. Assume by contradiction that we begin to cycle. Then there is a sequence of
row 0 vectors z0 , z1 , . . . , zl so that zl = z0 . Consider yi = zi − zi−1 . By Lemma 7.9, yi 0
115
116
CHAPTER 8
We can find the optimal number of bugs of each type the software company should fix
assuming it wishes to minimize its exposure to risk using a linear programming formulation.
Let x1 be the number of non-critical bugs corrected and x2 be the number of critical
software bugs corrected. Define:
(8.3) y1 = 50 − x1
(8.4) y2 = 5 − x2
Here y1 is the number of non-critical bugs that are not fixed while y2 is the number of critical
bugs that are not fixed.
The time (in hours) it takes to fix these bugs is:
Let:
1
(8.6) y3 = (80 − 3x1 − 12x2 )
8
Then y3 is a variable that is unrestricted in sign and determines the amount of time (in
days) either over or under the two-week period that is required to ship the software. As an
unrestricted variable, we can break it into two components:
(8.7) y3 = z 1 − z 2
We will assume that z1 , z2 ≥ 0. If y3 > 0, then z1 > 0 and z2 = 0. In this case, the software
is completed ahead of the two-week deadline. If y3 < 0, then z1 = 0 and z2 > 0. In this case
the software is finished after the two-week deadline. Finally, if y3 = 0, then z1 = z2 = 0 and
the software is finished precisely on time.
We can form the objective function as:
(8.8) z = 100y1 + 1000y2 + 500z2
The linear programming problem is then:
min z =y1 + 10y2 + 5z2
s.t. x1 + y1 = 50
x2 + y2 = 5
(8.9)
3 3
x1 + x2 + z1 − z2 = 10
8 2
x 1 , x2 , y 1 , y 2 , z 1 , z 2 ≥ 0
Notice we have modified the objective function by dividing by 100. This will make the
arithmetic of the simplex algorithm easier. The matrix of coefficients for this problem is:
x1 x2 y1 y2 z 1 z 2
1 0 1 0 0 0
(8.10) 0 1 0 1 0 0
3 3
8 2
0 0 1 −1
Notice there is an identity matrix embedded inside the matrix of coefficients. Thus a good
initial basic feasible solution is {y1 , y2 , z1 }. The initial basis matrix is I3 and naturally,
B−1 = I3 as a result. We can see that cB = [1 10 0]T . It follows that cTB B−1 = w = [1 10 0].
Our initial revised simplex tableau is thus:
z 1 10 0 100
y1 1 0 0 50
(8.11)
y2 0 1 0 5
z1 0 0 1 10
There are three variables that might enter at this point, x1 , x2 and z1 . We can compute the
reduced costs for each of these variables using the columns of the A matrix, the coefficients
of these variables in the objective function and the current w vector (in row 0 of the revised
119
By Dantzig’s rule, we enter variable x2 . We append B−1 A·2 and the reduced cost to the
revised simplex tableau to obtain:
z 1 10 0 100 10 M RT
y1 1 0 0 50 0 −
(8.12)
y2 0 1 0 5 1 5
z1 0 0 1 10 3/2 20/3
We can compute reduced costs for the non-basic variables (except for y2 , which we know will
not re-enter the basis on this iteration) to obtain:
z1 − c1 = wA·1 − c1 = 1
z6 − c6 = wA·6 − c6 = −5
In this case, x1 will enter the basis and we augment our revised simplex tableau to obtain:
M RT
z 1 0 0 50 1
y1 1
0 0 50 1
50
(8.14)
−
x2 0 1 0 5 0
z1 0 −3/2 1 5/2 3/8 20/3
Note that:
1 0 0 1 1
B−1 A·1 = 0 1 0 0 = 0
0 −3/2 1 3/8 3/8
120
This is the ā1 column that is appended to the right hand side of the tableau along with
z1 − c1 = 1. After pivoting, the tableau becomes:
z 1 4 −8/3 130/3
y1 1 4 −8/3 130/3
(8.15)
x2 0 1 0 5
x1 0 −4 8/3 20/3
We can now check our reduced costs. Clearly, z1 will not re-enter the basis. Therefore, we
need only examine the reduced costs for the variables y2 and z2 .
z4 − c4 = wA·4 − c4 = −6
z6 − c6 = wA·6 − c6 = −7/3
Since all reduced costs are now negative, no further minimization is possible and we conclude
we have arrived at an optimal solution.
Two things are interesting to note: first, the solution for the number of non-critical
software bugs to fix is non-integer. Thus, in reality the company must fix either 6 or 7 of
the non-critical software bugs. The second thing to note is that this economic model helps
to explain why some companies are content to release software that contains known bugs.
In making a choice between releasing a flawless product or making a quicker (larger) profit,
a selfish, profit maximizer will always choose to fix only those bugs it must fix and release
sooner rather than later.
Exercise 58. Solve the following problem using the revised simplex algorithm.
max x1 + x2
s.t. 2x1 + x2 ≤ 4
x1 + 2x2 ≤ 6
x 1 , x2 ≥ 0
Remark 8.3. Before proceeding to the proof, it is helpful to restate the lemma in the
following way:
(1) If there is a vector x ∈ Rn so that Ax ≥ 0 and cx < 0, then there is no vector
w ∈ Rm so that wA = c and w ≥ 0.
Proof. We can prove Farkas’ Lemma using the fact that a bounded linear programming
problem has an extreme point solution. Suppose that System 1 has a solution x. If System
2 also has a solution w, then
The fact that System 1 has a solution ensures that cx < 0 and therefore wAx < 0. However,
it also ensures that Ax ≥ 0. The fact that System 2 has a solution implies that w ≥ 0.
Therefore we must conclude that:
This contradiction implies that if System 1 has a solution, then System 2 cannot have a
solution.
Now, suppose that System 1 has no solution. We will construct a solution for System 2.
If System 1 has no solution, then there is no vector x so that cx < 0 and Ax ≥ 0. Consider
the linear programming problem:
min cx
(8.18) PF
s.t. Ax ≥ 0
Applying Theorems 5.1 and 5.5, we see we can obtain an optimal basic feasible solution for
Problem PF0 in which the reduced costs for the variables are all negative (that is, zj − cj ≤ 0
for j = 1, . . . , 2n + m). Here we have n variables in vector y, n variables in vector z and m
variables in vector s. Let B ∈ Rm×m be the basis matrix at this optimal feasible solution with
basic cost vector cB . Let w = cB B−1 (as it was defined for the revised simplex algorithm).
Consider the columns of the simplex tableau corresponding to a variable xk (in our
original x vector). The variable xk = yk − zk . Thus, these two columns are additive inverses.
That is, the column for yk will be B−1 A·k , while the column for zk will be B−1 (−A·k ) =
−B−1 A·k . Furthermore, the objective function coefficient will be precisely opposite as well.
122
A2· c
A1· Am·
Figure 8.1. System 2 has a solution if (and only if) the vector c is contained inside
the positive cone constructed from the rows of A.
non-empty. This set is the cone of vectors perpendicular to the rows of A. This is illustrated
in Figure 8.2
Am·
Non-empty intersection
c
A2·
Half-space
cy > 0
Cone of perpendicular
vectors to Rows of A
A1·
Figure 8.2. System 1 has a solution if (and only if) the vector c is not contained
inside the positive cone constructed from the rows of A.
[0 1]
[1 2]
System 2 has
a solution
Positive cone
[1 0]
[1 -1]
System 1 has
a solution
Figure 8.3. An example of Farkas’ Lemma: The vector c is inside the positive cone
formed by the rows of A, but c0 is not.
and the vector c = 1 2 . For this matrix and this vector, does System 1 have a solution or
does System 2 have a solution? [Hint: Draw a picture illustrating the positive cone formed
by the rows of A. Draw in c. Is c in the cone or not?]
2.2. Theorems of the Alternative. Farkas’ lemma can be manipulated in many ways
to produce several equivalent statements. The collection of all such theorems are called
Theorems of the Alternative and are used extensively in optimization theory in proving
optimality conditions. We state two that will be useful to us.
Corollary 8.5. Let A ∈ Rk×n and E ∈ Rl×n . Let c ∈ Rn be a row vector. Suppose
d ∈ Rn is a column vector and w ∈ Rk is a row vector and v ∈ Rl is a row vector. Let:
A
M=
E
and
u= w v
Then exactly one of the following systems has a solution:
(1) Md ≤ 0 and cd > 0 or
(2) uM = c and u ≥ 0
Proof. Let x = −d. Then Md ≤ 0 implies Mx ≥ 0 and cd > 0 implies cx < 0. This
converts System 1 to the System 1 of Farkas’ Lemma. System 2 is already in the form found
in Farkas’ Lemma. This completes the proof.
Exercise 61. Prove the following corollary to Farkas’ Lemma:
Corollary 8.6. Let A ∈ Rm×n and c ∈ Rn be a row vector. Suppose d ∈ Rn is a
column vector and w ∈ Rm is a row vector and v ∈ Rn is a row vector. Then exactly one of
the following systems of inequalities has a solution:
(1) Ad ≤ 0, d ≥ 0 and cd > 0 or
(2) wA − v = c and w, v ≥ 0
[Hint: Write System 2 from this corollary as wA − In v = c and then re-write the system
with an augmented vector [w v] with an appropriate augmented matrix. Let M be the
augmented matrix you identified. Now write System 1 from Farkas’ Lemma using M and x.
Let d = −x and expand System 1 until you obtain System 1 for this problem.]
125
Remark 8.8. The vectors w∗ and v∗ are sometimes called dual variables for reasons
that will be clear in the next chapter. They are also sometimes called Lagrange Multipliers.
You may have encountered Lagrange Multipliers in your Math 230 or Math 231 class. These
are the same kind of variables except applied to linear optimization problems. There is one
element in the dual variable vector w∗ for each constraint of the form Ax ≤ b and one
element in the dual variable vector v∗ for each constraint of the form x ≥ 0.
Proof. Suppose that x∗ is an optimal solution to Problem P . Consider only the binding
constraints at x∗ . For simplicity, write the constraints x ≥ 0 as −x ≤ 0. Then we can form
a new system of equations of the form:
AE
(8.28) x = bE
E
where E is a matrix of negative identity matrix rows corresponding to the variables xk that
are equal to zero. That is, if xk = 0, then −xk = 0 and the negative identity matrix row
−eTk will appear in E where −eTk ∈ R1×n . Here bE are the right hand sides of the binding
constraints. Let:
AE
M=
E
The fact that x∗ is optimal implies that there is no improving direction d at the point x∗ .
That is, there is no d so that Md ≤ 0 and cT d > 0. Otherwise, by moving in this direction
we could find a new point x̂ = x∗ + λd (with λ sufficiently small) so that:
Mx̂ = Mx∗ + λMd ≤ bE
2Thanks to Rich Benjamin for pointing out the fact I was missing “. . . is an optimal solution. . . ”
126
That is, this point is both feasible and has a larger objective function value than x∗ .
We can now apply Corollary 8.5 to show that there are vectors w and v so that:
AE
(8.29) w v =c
E
(8.30) w≥0
(8.31) v≥0
Let I be the indices of the rows of A making up AE and let J be the indices of the
variables that are zero (i.e., binding in x ≥ 0). Then we can re-write Equation 8.29 as:
X X
(8.32) wi Ai· − vj ej = c
i∈I j∈J
The vector w has dimension equal to the number of binding constraints of the form Ai· x = b
while the vector v has dimension equal to the number of binding constraints of the form
x ≥ 0. We can extend w to w∗ by adding 0 elements for the constraints where Ai· x < bi .
Similarly we can extend v to v∗ by adding 0 elements for the constraints where xj > 0. The
result is that:
(8.33) w∗ (Ax∗ − b) = 0
(8.34) v ∗ x∗ = 0
We know that Ai· x∗ = bi for i ∈ I and that x∗j = 0 for j ∈ J. We can use this to simplify
Equation 8.35:
X X
(8.36) wi (bi − Ai· x) + vj ej x = cx∗ − cx
i∈I j∈J
The left hand side must be non-negative, since w ≥ 0 and v ≥ 0, bi − Ai· x ≥ 0 for all i,
and x ≥ 0 and thus it follows that x∗ must be an optimal point since cx∗ − cx ≥ 0. This
completes the proof.
127
are called the Karush-Kuhn-Tucker (KKT) conditions of optimality. Note there is one ele-
ment in w for each row of the constraints Ax ≤ b and one element in the vector v for each
constraint of the form x ≥ 0. The vectors w and v are sometimes called dual variables and
sometimes called Lagrange Multipliers.
We can think of dual feasibility as expressing the following interesting fact: at optimality,
the gradient of the objective function c can be expressed as a positive combination of the
gradients of the binding constraints written as less-than-or-equal-to inequalities. That is,
the gradient of the constraint Ai· x ≤ bi is Ai· and the gradient of the constraint −xj ≤ 0 is
−ej . More specifically, the vector c is in the cone generated by the binding constraints at
optimality.
Example 8.10. Consider the Toy Maker Problem (Equation 2.8) with Dual Variables
(Lagrange Multipliers) listed next to their corresponding constraints:
max z(x1 , x2 ) = 7x1 + 6x2 Dual Variable
s.t. 3x1 + x2 ≤ 120 (w1 )
x1 + 2x2 ≤ 160 (w1 )
x1 ≤ 35 (w3 )
x1 ≥ 0 (v1 )
x2 ≥ 0 (v2 )
3 1
w 1 w2 w3
1 2 − v1 v2 = 7 6
1 0
Dual Feasibility
w1 w2 w3 ≥ 0 0 0
v1 v2 ≥ 0 0
3 1 120 120
x1
w1 w2 w3 1 2 ≤ 160 − 160
Complementary Slackness x2
1 0 35 35
v1 v2 x1 x2 = 0
Recall that at optimality, we had x1 = 16 and x2 = 72. The binding constraints in this case
where
3x1 + x2 ≤ 120
x1 + 2x2 ≤ 160
To see this note that if 3(16) + 72 = 120 and 16 + 2(72) = 160. Then we should be able
to express c = [7 6] (the vector of coefficients of the objective function) as a positive
combination of the gradients of the binding constraints:
∇(7x1 + 6x2 ) = 7 6
∇(3x1 + x2 ) = 3 1
∇(x1 + 2x2 ) = 1 2
Note, this is how Equation 8.32 looks when we apply it to this problem. The result is a
system of equations:
3w1 + w2 = 7
w1 + 2w2 = 6
3x1 + x2 ≤ 120
x1 + 2x2 ≤ 160
x1 ≤ 35
x1 ≥ 0
x2 ≥ 0
Figure 8.4. The Gradient Cone: At optimality, the cost vector c is obtuse with
respect to the directions formed by the binding constraints. It is also contained
inside the cone of the gradients of the binding constraints, which we will discuss at
length later.
max x1 + x2
s.t. 2x1 + x2 ≤ 4
x1 + 2x2 ≤ 6
x 1 , x2 ≥ 0
Write the KKT conditions for an optimal point for this problem. (You will have a vector
w = [w1 w2 ] and a vector v = [v1 v2 ]).
Draw the feasible region of the problem. At the optimal point you identified in Exercise
58, identify the binding constraints and draw their gradients. Show that the objective
function is in the positive cone of the gradients of the binding constraints at this point.
(Specifically find w and v.)
with A ∈ Rm×n , b ∈ Rm and (row vector) c ∈ Rn . Then x∗ ∈ Rn if and only if there exists
(row) vectors w∗ ∈ Rm and v∗ ∈ Rn so that:
Ax∗ = b
(8.42) Primal Feasibility
x∗ ≥ 0
∗ ∗
w A−v =c
(8.43) Dual Feasibility w∗ unrestricted
v∗ ≥ 0
Let w1 be the vector corresponding to the rows in Ax ≤ b and w2 be the vector correspond-
ing to the rows in −Ax ≤ −b. Then the KKT conditions are:
Ax ≤ b
(8.47) Primal Feasibility −Ax ≤ −b
x∗ ≥ 0
∗
w1 A − w2 A − v ∗ = c
w1∗ ≥ 0
(8.48) Dual Feasibility
w2∗ ≥ 0
v∗ ≥ 0
∗ ∗
w1 (Ax − b) = 0
(8.49) Complementary Slackness w2∗ (b − Ax∗ ) = 0
v ∗ x∗ = 0
xB
(8.55) vx = 0 =⇒ vB vN =0
xN
We can rewrite Expression 8.54 as:
(8.56) wB − vB wN − vN = cB cN
132
wB − vB = cB
wN − vN = cN
(8.57) wB − vB = cB =⇒ cB B−1 B − vB = cB =⇒ cB − vB = cB =⇒ vB = 0
Since we know that xB ≥ 0, we know that vB should be equal to zero to ensure complemen-
tary slackness. Thus, this is consistent with the KKT conditions.
We further see that:
Thus, the vN are just the reduced costs of the non-basic variables. (vB are the reduced costs
of the basic variables.) Furthermore, dual feasibility requires that v ≥ 0. Thus we see that
at optimality we require:
(8.59) cB B−1 N − cN ≥ 0
Theorem 8.12. Assuming an appropriate cycling prevention rule is used, the simplex
algorithm converges in a finite number of iterations to an optimal solution to the linear
programming problem.
Proof. Convergence is guaranteed by the proof of Theorem 7.10 in which we show that
when the lexicographic minimum ratio test is used, then the simplex algorithm will always
converge. Our work above shows that at optimality, the KKT conditions are satisfied because
the termination criteria for the simplex algorithm are precisely the same as the criteria in
the Karush-Kuhn-Tucker conditions. This completes the proof.
133
Note we have assigned dual variables corresponding to each constraint on the right-hand-side
of the constraints. That is, dual variable w1 corresponds to the constraint x1 + 2x2 ≤ 60.
We can write this problem in standard form as:
max z(x1 , x2 ) = 3x1 + 5x2
s.t. x1 + 2x2 + s1 = 60 (w1 )
x1 + x2 + s2 = 40 (w2 )
x1 ≥ 0 (v1 )
x2 ≥ 0 (v2 )
s1 ≥ 0 (v3 )
s2 ≥ 0 (v4 )
Note we have added two new dual variables v3 and v4 for the non-negativity constraints on
slack variables s1 and s2 . Our dual variable vectors are: w = [w1 w2 ] and v = [v1 v2 v3 v4 ].
We can construct an initial simplex tableau as:
z x1 x2 s1 s2 RHS
z
1 −3 −5 0 0 0
s1 0 1
2 1 0 60
s2
0 1 1 0 1 40
In this initial configuration, we note that v1 = −3, v2 = −5, v3 = 0 and v4 = 0. This
is because s1 and s2 are basic variables. We also notice that complementary slackness is
satisfied. That is at the current values of x1 , x2 , s1 and s2 we have:
x1
x2
v1 v2 v3 v4 s1 = 0
s2
Applying the Simplex Algorithm yields the final tableau:
z x1 x2 s1 s2 RHS
z 1 0
0 2 1 160
x2 0 0 1 1 −1 20
x1 0 1 0 −1 2 20
The optimal value for v is [0 0 2 1]. Note v ≥ 0 as required. Further, complementary
slackness is still maintained. Notice further that the current value of B−1 can be found in
134
the portion of the matrix where the identity matrix stood in the initial tableau. Thus we
can compute w as:
w = cB B−1
Since cB = [5 3] (since x2 and x1 the basic variables at optimality) we see that:
1 −1
w= 5 3 = 2 1
−1 2
That is, w1 = 2 and w2 = 1.
Note that w ≥ 0. This is because w is also a dual variable vector for our original problem
(not in standard form). The KKT conditions for a maximization problem in canonical form
require w ≥ 0 (see Theorem 8.7). Thus, it makes sense that we have w ≥ 0. Note this does
not always have to be the case if we do not begin with a problem in canonical form.
Last, we can see that the constraints:
x1 + 2x2 ≤ 60
x1 + x2 ≤ 40
are both binding at optimality (since s1 and s2 are both zero). This means we should be
able to express c = [3 5]T as a positive combination of the gradients of the left-hand-sides
of these constraints using w. To see this, note that w1 corresponds to x1 + 2x2 ≤ 60 and w2
to x1 + x2 ≤ 40. We have:
1
∇(x1 + 2x2 ) =
2
1
∇(x1 + x2 ) =
1
Then:
1 1 1 1 3
w1 + w2 = (2) + (1) =
2 1 2 1 5
Thus, the objective function gradient is in the dual cone of the binding constraint. That is,
it is a positive combination of the gradients of the left-hand-sides of the binding constraints
at optimality. This is illustrated in Figure 8.5.
We can also verify that the KKT conditions hold for the problem in standard form.
Naturally, complementary slackness and primal feasibility hold. To see that dual feasibility
holds note that v = [0 0 2 1] ≥ 0. Further:
1 2 1 0
2 1 − 0 0 2 1 = 3 5 0 0
1 1 0 1
Here 3 5 0 0 is the objective function coefficient vector for the problem in Standard
Form.
Exercise 64. Use a full simplex tableau to find the values of the Lagrange multipliers
(dual variables) at optimality for the problem from Exercise 62. Confirm that complementary
slackness holds at optimality. Lastly show that dual feasibility holds by showing that the
135
Figure 8.5. This figure illustrates the optimal point of the problem given in Ex-
ample 8.13. Note that at optimality, the objective function gradient is in the dual
cone of the binding constraint. That is, it is a positive combination of the gradients
of the left-hand-sides of the binding constraints at optimality. The gradient of the
objective function is shown in green.
gradient of the objective function (c) is a positive combination of the gradients of the binding
constraints at optimality. [Hint: Use the vector w you should have identified.]
136
CHAPTER 9
Duality
In the last chapter, we explored the Karush-Kuhn-Tucker (KKT) conditions and identi-
fied constraints called the dual feasibility constraints. In this section, we show that to each
linear programming problem (the primal problem) we may associate another linear pro-
gramming problem (the dual linear programming problem). These two problems are closely
related to each other and an analysis of the dual problem can provide deep insight into the
primal problem.
Remark 9.1. Let v be a vector of surplus variables. Then we can transform Problem
D into standard form as:
min wb
s.t. wA − v = c
(9.3) DS
w≥0
v≥0
Thus we already see an intimate relationship between duality and the KKT conditions. The
feasible region of the dual problem (in standard form) is precisely the the dual feasibility
constraints of the KKT conditions for the primal problem.
In this formulation, we see that we have assigned a dual variable wi (i = 1, . . . , m) to
each constraint in the system of equations Ax ≤ b of the primal problem. Likewise dual
variables v can be thought of as corresponding to the constraints in x ≥ 0.
Lemma 9.2. The dual of the dual problem is the primal problem.
137
Let β = −bT , G = −AT , u = wT and κ = −cT . Then this new problem becomes:
max βu
(9.5) s.t. Gu ≤ κ
u≥0
Let xT be the vector of dual variables (transposed) for this problem. We can formulate the
dual problem as:
T
min x κ
(9.6) s.t. xT G ≥ β
xT ≥ 0
Lemma 9.2 shows that the notion of dual and primal can be exchanged and that it is
simply a matter of perspective which problem is the dual problem and which is the primal
problem. Likewise, by transforming problems into canonical form, we can develop dual
problems for any linear programming problem.
The process of developing these formulations can be exceptionally tedious, as it requires
enumeration of all the possible combinations of various linear and variable constraints. The
following table summarizes the process of converting an arbitrary primal problem into its
dual. This table can be found in Chapter 6 of [BJS04].
138
CONSTRAINTS
≥0 ≤
VARIABLES
≤0 ≥
UNRESTRICTED =
CONSTRAINTS
≥ ≥0
VARIABLES
≤ ≤0
= UNRESTRICTED
Example 9.3. Consider the problem of finding the dual problem for the Toy Maker
Problem (Example 2.3) in standard form. The primal problem is:
max 7x1 + 6x2
s.t. 3x1 + x2 + s1 = 120 (w1 )
x1 + 2x2 + s2 = 160 (w2 )
x1 + s3 = 35 (w3 )
x1 , x2 , s1 , s2 , s3 ≥ 0
Here we have placed dual variable names (w1 , w2 and w3 ) next to the constraints to which
they correspond.
The primal problem variables in this case are all positive, so using Table 1 we know that
the constraints of the dual problem will be greater-than-or-equal-to constraints. Likewise, we
know that the dual variables will be unrestricted in sign since the primal problem constraints
are all equality constraints.
The coefficient matrix is:
3 1 1 0 0
A = 1 2 0 1 0
1 0 0 0 1
Clearly we have:
c= 7 6 0 0 0
120
b = 160
35
Since w = [w1 w2 w3 ], we know that wA will be:
wA = 3w1 + w2 + w3 w1 + 2w2 w1 w2 w3
139
This vector will be related to c in the constraints of the dual problem. Remember, in this
case, all constraints are greater-than-or-equal-to. Thus we see that the constraints of
the dual problem are:
3w1 + w2 + w3 ≥7
w1 + 2w2 ≥6
w1 ≥0
w2 ≥0
w3 ≥0
We also have the redundant set of constraints that tell us w is unrestricted because the
primal problem had equality constraints. This will always happen in cases when you’ve
introduced slack variables into a problem to put it in standard form. This should be clear
from the definition of the dual problem for a maximization problem in canonical form.
Thus the whole dual problem becomes:
min 120w1 + 160w2 + 35w3
s.t. 3w1 + w2 + w3 ≥ 7
w1 + 2w2 ≥ 6
(9.9) w1 ≥ 0
w2 ≥ 0
w3 ≥ 0
w unrestricted
Again, note that in reality, the constraints we derived from the wA ≥ c part of the dual
problem make the constraints “w unrestricted” redundant, for in fact w ≥ 0 just as we
would expect it to be if we’d found the dual of the Toy Maker problem given in canonical
form.
Exercise 66. Use the table or the definition of duality to determine the dual for the
problem:
min cx
(9.10) s.t. Ax ≤ b
x≥0
2. Weak Duality
There is a deep relationship between the objective function value, feasibility and bound-
edness of the primal problem and the dual problem. We will explore these relationships in
the following lemmas.
Lemma 9.4 (Weak Duality). For the primal problem P and dual problem D let x and w
be feasible solutions to Problem P and Problem D respectively. Then:
(9.11) wb ≥ cx
3. Strong Duality
Lemma 9.7. Problem D has an optimal solution w∗ ∈ Rm if and only if there exists
vector x∗ ∈ Rn and s∗ ∈ Rm such that:
∗
w A≥c
(9.15) Primal Feasibility
w∗ ≥ 0
∗ ∗
Ax + s = b
(9.16) Dual Feasibility x∗ ≥ 0
s∗ ≥ 0
∗
(w A − c) x∗ = 0
(9.17) Complementary Slackness
w ∗ s∗ = 0
Furthermore, these KKT conditions are equivalent to the KKT conditions for the primal
problem.
Proof. Following the proof of Lemma 9.2, let β = −bT , G = −AT , u = wT and
κ = −cT . Then the dual problem can be rewritten as:
max βu
s.t. Gu ≤ κ
u≥0
Let xT ∈ R1×n and sT ∈ R1×m be the dual variables for this problem. Then applying
Theorem 8.7, we obtain KKT conditions for this problem:
Gu∗ ≤ κ
(9.18) Primal Feasibility
u∗ ≥ 0
x∗ T G − s∗ T = β
(9.19) Dual Feasibility x∗ T ≥ 0
s∗ T ≥ 0
( ∗T
x (Gu∗ − κ) = 0
(9.20) Complementary Slackness
s ∗ T u∗ = 0
We can rewrite:
s∗ T u∗ = 0 ≡ s∗ T w∗ T = 0 ≡ w∗ s∗ = 0
142
Thus, we have shown that the KKT conditions for the dual problem are:
w∗ A ≥ c
Primal Feasibility
w∗ ≥ 0
∗ ∗
Ax + s = b
Dual Feasibility x∗ ≥ 0
s∗ ≥ 0
∗
(w A − c) x∗ = 0
Complementary Slackness
w ∗ s∗ = 0
To prove the equivalence to the KKT conditions for the primal problem, define:
(9.21) s∗ = b − Ax∗
(9.22) v∗ = w∗ A − c
That is, s∗ is a vector slack variables for the primal problem P at optimality and v∗ is a
vector of surplus variables for the dual problem D at optimality. Recall the KKT conditions
for the primal problem are:
Ax∗ ≤ b
Primal Feasibility
x∗ ≥ 0
∗ ∗
w A − v = c
Dual Feasibility w∗ ≥ 0
v∗ ≥ 0
∗
w (Ax∗ − b) = 0
Complementary Slackness
v ∗ x∗ = 0
Ax∗ + s∗ = b
(9.23) Primal Feasibility
x∗ ≥ 0
∗ ∗
w A − v = c
(9.24) Dual Feasibility w∗ ≥ 0
v∗ ≥ 0
∗ ∗
w (s ) = 0
(9.25) Complementary Slackness
v ∗ x∗ = 0
Likewise beginning with the KKT conditions for the dual problem (Expression 9.15 -
9.17) we can write:
∗
w A − v∗ ≥ c
Primal Feasibility
w∗ ≥ 0
∗ ∗
Ax + s = b
Dual Feasibility x∗ ≥ 0
s∗ ≥ 0
∗ ∗
(v ) x = 0
Complementary Slackness
w ∗ s∗ = 0
Here we substitute v∗ for w∗ A − c in the complementary slackness terms. Thus we can see
that the KKT conditions for the primal and dual problems are equivalent. This completes
the proof.
Remark 9.8. Notice that the KKT conditions for the primal and dual problems are
equivalent, but the dual feasibility conditions for the primal problem are identical to the
primal feasibility conditions for the dual problem and vice-versa. Thus, two linear program-
ming problems are dual to each other if they share KKT conditions with the primal and
dual feasibility conditions swapped.
Exercise 67. Compute the dual problem for a canonical form minimization problem:
min cx
P s.t. Ax ≥ b
x≥0
Find the KKT conditions for the dual problem you just identified. Use the result from
Exercise 63 to show that KKT conditions for Problem P are identical to the KKT conditions
for the dual problem you just found.
Lemma 9.9 (Strong Duality). There is a bounded optimal solution x∗ for Problem P if
and only if there is a bounded optimal solution w∗ for Problem D. Furthermore, cx∗ = w∗ b.
Proof. Suppose that there is a solution x∗ for Problem P . Let s∗ = b − Ax∗ . Clearly
∗
s ≥ 0.
By Theorem 8.7 there exists dual variables w∗ and v∗ satisfying dual feasibility and
complementary slackness. Dual feasibility in the KKT conditions implies that:
(9.26) v∗ = w∗ A − c
We also know that w∗ , v∗ ≥ 0. Complementary Slackness (from Theorem 8.7) states that
v∗ x∗ = 0. But v∗ is defined above and we see that:
(9.27) v∗ x∗ = 0 =⇒ (w∗ A − c) x = 0
Likewise, since we have s∗ = b − Ax∗ . Complementary slackness assures us that
w (b − Ax∗ ) = 0. Thus we see that:
∗
(9.28) w∗ (b − Ax∗ ) = 0 =⇒ w∗ s∗ = 0
144
Thus it follows from Lemma 9.7 that w∗ is an optimal solution to Problem D since it satisfies
the KKT conditions. The fact that Problem P has an optimal solution when Problem D
has an optimal solution can be proved in a similar manner starting with the KKT conditions
given in Lemma 9.7 and applying the same reasoning as above.
Finally, at optimality, we know from Lemma 9.7 that:
(9.29) (w∗ A − c) x∗ = 0 =⇒ w∗ Ax∗ = cx∗
We also know from Theorem 8.7 that:
(9.30) w∗ (b − Ax∗ ) = 0 =⇒ w∗ b = w∗ Ax∗
Therefore we have: w∗ b = cx∗ . This completes the proof.
Corollary 9.10. If Problem P is infeasible, then Problem D is either unbounded or
infeasible. If Problem D is infeasible, then either Problem P is unbounded or infeasible.
Proof. This result follows by contrapositive from Lemma 9.9. To see this, suppose that
Problem P is infeasible. Then Problem P has no bounded optimal solution. Therefore,
Problem D has no bounded optimal solution (by Lemma 9.9). If Problem D has no bounded
optimal solution, then either Problem D is unbounded or it is infeasible. A symmetric
argument on Problem D completes the proof of the Lemma.
Exercise 68. Consider the problem
max x1 + x2
s.t. x1 − x2 ≥ 1
− x1 + x2 ≥ 1
x 1 , x2 ≥ 0
(1) Show that this problem is infeasible.
(2) Compute its dual.
(3) Show that the dual is infeasible, thus illustrating Corollary 9.10.
The following theorem summarizes all of the results we have obtained in the last two
sections.
Theorem 9.11 (Strong Duality Theorem). Consider Problem P and Problem D. Then
exactly one of the following statements is true:
(1) Both Problem P and Problem D possess optimal solutions x∗ and w∗ respectively
and cx∗ = w∗ b.
(2) Problem P is unbounded and Problem D is infeasible.
(3) Problem D is unbounded and Problem P is infeasible.
(4) Both problems are infeasible.
regions are polyhedral sets1. Certain examples have a very nice geometric visualization.
Consider the problem:
Notice that A is a symmetric matrix and cT = b and the dual problem is:
This results in a geometry in which the dual feasible region is a reflection of the primal
feasible region (ignoring non-negativity constraints). This is illustrated in Figure 9.1.
Figure 9.1. The dual feasible region in this problem is a mirror image (almost) of
the primal feasible region. This occurs when the right-hand-side vector b is equal to
the objective function coefficient column vector cT and the matrix A is symmetric.
We can also illustrate the process of solving this problem using the (revised) simplex
algorithm. In doing so, we first convert Problem 9.33 to standard form:
max 6x1 + 6x2
s.t. 3x1 + 2x2 + s1
=6
(9.33)
2x1 + 3x2 + s2 = 6
x 1 , x2 ≥ 0
Figure 9.2. The simplex algorithm begins at a feasible point in the feasible region
of the primal problem. In this case, this is also the same starting point in the dual
problem, which is infeasible. The simplex algorithm moves through the feasible
region of the primal problem towards a point in the dual feasible region. At the
conclusion of the algorithm, the algorithm reaches the unique point that is both
primal and dual feasible.
feasible region. Your dual vector w will not enter the feasible region until the last simplex
pivot.]
That is, the ith element of w represents the amount that the objective function value would
change at optimality assuming we could modify the right-hand-side of the constraints. Note,
this result holds only in the absence of degeneracy, for reasons we will see in an
example.
Thus, we can think of wi as the shadow price for resource i (the right-hand-side of the
ith constraint). A shadow price is the fair price one would pay for an extra unit of resource
i.
Example 9.12. Consider a leather company that requires 1 square yard of leather to
make a regular belt and a 1 square yard of leather to make a deluxe belt. If the leather
company can use up to 40 square yards per week to construct belts, then one constraint it
may have is:
x1 + x2 ≤ 40
In the absence of degeneracy, the dual variable (say w1 ) will tell the fair price we would pay
for 1 extra yard of leather. Naturally, if this were not a binding constraint, then w1 = 0
indicating that extra leather is worth nothing to us since we already have a surplus of leather.
Simultaneously, suppose that m resources (leather, wood, time etc.) are used to make these
n products and that aij units of resource i are used to manufacture product j. Then clearly
our constraints will be:
where bi is the amount of resource i available to the company. Suppose now that the company
decides to sell off some of its resources (instead of manufacturing products). Suppose we
sell each resource for a price wi (i = 1, . . . , m) we’d like to know what a fair price for these
resources would be. Each unit of product j not manufactured would result in a loss of profit
of cj . At the same time, we would obtain a gain (from selling the excess resources) of:
m
X
(9.44) aij wi
i=1
Because we would save aij units of unit i from not manufacturing 1 unit of xj (i = 1, . . . , m).
Selling this resource would require us to make more money in the sale of the resource then
we could in manufacturing the product, or:
m
X
(9.45) aij wi ≥ cj
i=1
149
If a selfish profit maximizer wishes to buy these items, then we will seek a price per resource
that minimizes the total he could pay for all the items, that is:
m
X
(9.46) min w i bi
i=1
The Strong Duality Theorem asserts that the optimal solution to this problem will produce
fair shadow prices that force the total amount an individual could purchase the resources
of the company for to be equal to the amount the company could make in manufacturing
products itself.
Example 9.13. Assume that a leather company manufactures two types of belts: regular
and deluxe. Each belt requires 1 square yard of leather. A regular belt requires 1 hour of
skilled labor to produce, while a deluxe belt requires 2 hours of labor. The leather company
receives 40 square yards of leather each week and a total of 60 hours of skilled labor is
available. Each regular belt nets $3 in profit, while each deluxe belt nets $5 in profit. The
company wishes to maximize profit. We can compute the fair price the company could sell
its time or labor (or the amount the company should be willing to pay to obtain more leather
or more hours).
The problem for the leather manufacturer is to solve the linear programming problem:
max 3x1 + 5x2
s.t. x1 + 2x2 ≤ 60
x1 + x2 ≤ 40
x 1 , x2 ≥ 0
The dual problem for this problem is given as:
max 60w1 + 40w2
s.t. w1 + w2 ≥ 3
2w1 + w2 ≥ 5
w 1 , w2 ≥ 0
If we solve the primal problem, we obtain the final revised simplex tableau as:
z 2 1 160
x1 −1 2 20
x2 1 −1 20
Note that both x1 and x2 are in the basis. In this case, we have w1 = 2 and w2 = 1 from
Row 0 of the tableau.
We can likewise solve the dual-problem by converting it to standard form and then using
the simplex algorithm, we would have:
max 60w1 + 40w2
s.t. w1 + w2 − v1 = 3
2w1 + w2 − v2 = 5
w 1 , w 2 , v1 , v2 ≥ 0
150
In this case, it is more difficult to solve the dual problem because there is no conveniently
obvious initial basic feasible solution (that is, the identity matrix is not embedded inside the
coefficient matrix).
The final full simplex tableau for the dual problem would look like:
z w 1 w 2 v1 v2 RHS
z 1 0 0 −20 −20 160
w1 0 1 0 1 −1 2
w2 0 0 1 −2 1 1
We notice two things: The reduced costs of v1 and v2 are precisely the negatives of
the values of x1 and x2 . This was to be expected, these variables are duals of each other.
However, in a minimization problem, the reduced costs have opposite sign. The second thing
to notice is that w1 = 2 and w2 = 1. These are the same values we determined in the primal
simplex tableau.
Lastly, let’s see what happens if we increase the amount of leather available by 1 square
yard. If w2 (the dual variable that corresponds to the leather constraint) is truly a shadow
price, then we should predict our profit will increase by 1 unit. Our new problem will become:
max 3x1 + 5x2
s.t. x1 + 2x2 ≤ 60
x1 + x2 ≤ 41
x 1 , x2 ≥ 0
At optimality, our new revised simplex tableau will be:
z 2 1 161
x1 −1 2 22
x2 1 −1 19
Thus, if our Leather Manufacturer could obtain leather for a price under $1 per yard. He
would be a fool not buy it. Because he could make an immediate profit. This is what
economists call thinking at the margin.
Shadow Prices Under Degeneracy. We have asserted that the value of the dual
variable does not necessarily provide a shadow price at a degenerate constraint. To see this,
consider the example of the degenerate toy maker problem.
Example 9.14.
max 7x1 + 6x2
s.t. 3x1 + x2 + s1 = 120
x1 + 2x2 + s2 = 160
x1 + s3 = 35
7
x1 + x2 + s4 = 100
4
x1 , x2 , s1 , s2 , s3 , s4 ≥ 0
151
We can compute the dual variables w for this by using cB and B−1 at optimality. You’ll
notice that B−1 can always be found in the columns of the slack variables for this problem
because we would have begun the simplex algorithm with an identity matrix in that position.
We also know that cB = [7 6 0 0] at optimality. Therefore, we can compute cB B−1 as:
0 0 −2/5 0 4/5
1 0 7/10 0 −2/5
cB B−1 = 7 6 0 0
= 0 7/5 0 16/5
0 1 1/2 0 −2
0 0 2/5 1 −4/5
In this case, it would seem that modifying the right-hand-side of constraint 1 would have no
affect. This is true, if we were to increase the value by a increment of 1. Suppose however
we decreased the value of the right-hand-side by 1. Since we claim that:
∂z
(9.47) = w1
∂b1
there should be no change to the optimal objective function value. However, our new optimal
point would occur at x1 = 15.6 and x2 = 72.2 with an objective function value of 542.4,
clearly the value of the dual variable for constraint 1 is not a true representation the shadow
price of resource 1. This is illustrated in Figure 9.3 where we can see that modifying the
right-hand-side of Constraint 1 is transforming the feasible region in a way that substantially
changes the optimal solution. This is simply not detected because degeneracy in the primal
problem leads to alternative optimal solutions in the dual problem.
It should be noted that a true margin price can be computed, however this is outside the
scope of the notes. The reader is referred to [BJS04] (Chapter 6) for details.
Figure 9.3. Degeneracy in the primal problem causes alternative optimal solutions
in the dual problem and destroys the direct relationship between the resource margin
price that the dual variables represent in a non-degenerate problem.
To transform this problem to standard form, we would have to introduce surplus variables
to obtain:
min x1 + 2x2
s.t. x1 + 2x2 − s1 = 12
2x1 + 3x2 − s2 = 20
x1 , x2 , s1 , s2 ≥ 0
In this case there is no immediately obvious initial basic feasible solution and we would have
to solve a Phase I problem. Consider the dual of the original maximization problem:
max 12w1 + 20w2
s.t. w1 + 2w2 ≤ 1
2w1 + 3w2 ≤ 1
w 1 , w2 ≥ 0
This is a maximization problem whose standard form is given by:
max 12w1 + 20w2
s.t. w1 + 2w2 + v1 = 1
2w1 + 3w2 + v2 = 1
w1 , w2 , v1 , v2 ≥ 0
In this case, a reasonable initial basic feasible solution for the dual problem is to set v1 =
v2 = 1 and w1 = w2 = 0 (i.e., w1 and w2 are non-basic variables) and proceed with the
simplex algorithm from this point.
In cases like the one illustrated in Example 9.15, we can solve the dual problem directly
in the simplex tableau of the primal problem instead of forming the dual problem and solving
it as a primal problem in its own tableau. The resulting algorithm is called the dual simplex
algorithm.
153
For the sake of space, we will provide the dual simplex algorithm for a maximization
problem:
max cx
P s.t. Ax = b
x≥0
We will then shown how to adjust the dual simplex algorithm for minimization problems.
The pivoting step works because we choose the entering variable specifically so that the
reduced costs will remain positive. Just as we chose the leaving variable in the standard
simplex algorithm using a minimum ratio test to ensure that B−1 b remains positive, here
we use it to ensure that zj − cj remains non-negative for all j ∈ J and thus we assure dual
feasibility is maintained.
The convergence of the dual simplex algorithm is outside of the scope of this course.
However, it suffices to understand that we are essentially solving the dual problem in the
primal simplex tableau using the simplex algorithm applied to the dual problem. Therefore
under appropriate cycle prevention rules, the dual simplex does in fact converge to the
optimal (primal) solution.
Theorem 9.16. In the absence of degeneracy, or when using an appropriate cycling
prevention rule, the dual simplex algorithm converges and is correct.
Example 9.17. Consider the following linear programming problem:
max − x1 − x2
s.t. 2x1 + x2 ≥ 4
x1 + 2x2 ≥ 2
x 1 , x2 ≥ 0
154
since both s1 and s2 do not appear in the objective function. We can compute the reduced
costs in this case to obtain:
z 1 − c1 = wA·1 − c1 =1≥0
z 2 − c2 = wA·2 − c2 =1≥0
z 3 − c3 = wA·3 − c3 =0≥0
z 4 − c4 = wA·4 − c4 =0≥0
Thus, the fact that w ≥ 0 and the fact that zj − cj ≥ 0 for all j, shows us that we have a
dual feasible solution and based on our use of a basic solution, we know that complementary
slackness is ensured.
We can now set up our initial simplex tableau for the dual simplex algorithm. This is
given by:
z x1 x2 s1 s2 RHS
z 1 1 1 0 0 0
s1 0 −2 −1 1 0 −4
s2 0 −1 -2 0 1 −2
155
We can choose either s1 or s2 as a leaving variable. For the sake of argument, suppose
we choose s2 , the variable that’s most negative as the leaving variable. Then our entering
variable is chosen by comparing:
z 1 − c1 1
=
|a21 | | − 1|
z 2 − c2 1
=
|a22 | | − 2|
z 1 1/2 0 0 1/2 −1
s1 0 -3/2 0 1 −1/2 −3
x2 0 1/2 1 0 −1/2 1
At this point, we see we have maintained dual feasibility, but we still do not have primal
feasibility. We can therefore choose a new leaving variable (s1 ) corresponding to the negative
element in the RHS. The minimum ratio test shows that this time x1 will enter and the final
simplex tableau will be:
z x1 x2 s1 s2 RHS
1 0 0 1/3
z 1/3 −2
x1 0 1 0 −2/3 1/3 2
x2 0 0 1 1/3 −2/3 0
It’s clear this is the optimal solution to the problem since we’ve achieved primal and dual
feasibility and complementary slackness. It’s also worth noting that this optimal solution is
degenerate, since there is a zero in the right hand side.
Exercise 70. Prove that the minimum ratio test given in the dual simplex algorithm
will maintain dual feasibility from one iteration of the simplex tableau to the next. [Hint:
Prove that the reduced costs remain greater than or equal to zero, just as we proved that b
remains positive for the standard simplex algorithm.]
156
Bibliography
[BJS04] Mokhtar S. Bazaraa, John J. Jarvis, and Hanif D. Sherali, Linear programming and network flows,
Wiley-Interscience, 2004.
[BTN02] A. Ben-Tal and A. Nemirovski, Robust optimization – methodology and applications, Math. Pro-
gram. Ser. B 92 (2002), 453–480.
[Cul72] C. G. Cullen, Matrices and Linear Transformations, 2 ed., Dover Press, 1972.
[Dan60] G. B. Danzig, Inductive proof of the simplex method, Tech. report, RAND Corporation, 1960.
[KW94] P. Kall and S. W. Wallace, Stochastic programming, John Wiley and Sons, 1994.
[Lan87] S. Lang, Linear Algebra, Springer-Verlag, 1987.
[MT03] J. E. Marsden and A. Tromba, Vector calculus, 5 ed., W. H. Freeman, 2003.
[PS98] C. H. Papadimitriou and K. Steiglitz, Combinatorial optimization: Algorithms and complexity,
Dover Press, 1998.
[Ste07] J. Stewart, Calculus, 6 ed., Brooks Cole, 2007.
[WN99] L. A. Wolsey and G. L. Nemhauser, Integer and combinatorial optimization, Wiley-Interscience,
1999.
157