Linear programming
is a widely used tool for computing optimal solutions to problems involving the allocation of scarce resources.
A classic reference is Linear Programming, V. Chvátal (W. H. Freeman and Company, New York, 1983),
and a recently updated reference is
Linear Programming: Foundations and Extensions,
R. J. Vanderbei (Kluwer Academic Publishers, Boston, 2001).
A linear-programming (LP)
problem is one of maximizing or minimizing a linear function subject to linear equality and linear inequality constraints.
A general form of an LP problem is
where
are variables and the remaining elements are input data.
Each of the input data can be any (rational) number; the
can also be assigned the value of
infinity (
) and the
can also be assigned the value of +infinity (
).
The ``Maximize'' can alternatively be ``Minimize'', and each ``
'' relation can alternatively be an ``
'' or a ``
'' relation.
There is
common terminology associated with the parts of an LP problem.
The linear function
that we seek to maximize (or minimize) is called the objective function, and
are called the objective coefficients.
The inequalities
(for
are referred to as the constraints, and the values
are called the right-hand-side values.
The values
are called lower bounds, and the values
are called upper bounds.
Note that by setting
and
, we allow the variable
to have no explicit bounds; such a variable is called free.
It is often convenient to express an LP problem in matrix notation.
To do this, we define a matrix
and vectors
The general LP problem can then be formulated as
where
is the transpose of the
-vector.
The matrix
is called the constraint matrix.
We will sometimes refer to the
th constraint as the
th
``row'' and refer to the
th variable as the
th ``column''.
As an example of an LP problem,
consider the following formulation with 3 variables (
) and 2 constraints (
).
In describing such an LP problem, it is standard practice to assume that each variable
has lower bound
and upper bound
, if the bounds are not explicitly given in the model.
So this example could be expressed as
where (as we mentioned above) ``free'' is the shorthand way of expressing the fact that
has no explicit bounds.