Overview
Further information: Linear programmingThe simplex algorithm operates on linear programs in standard form, that is linear programming problems of the form,
- Minimize
- Subject to
with the variables of the problem, are the coefficients of the objective function, A, a p×n matrix and constants with . There is a straightforward process to convert any linear program into one in standard form so this results in no loss of generality.
In geometric terms, the feasible region
is a (possibly unbounded) convex polytope. There is a simple characterization of the extreme points or vertices of this polytope, namely is an extreme point if and only if the column vectors, where, are linearly independent. In this context such a point is known as a basic feasible solution (BFS).
It can be shown that for a linear program in standard form, if the objective function has a minimum value on the feasible region then it has this value on (at least) one of the extreme points. This in itself reduces the problem to a finite computation since there are finite number of extreme points, but the number of extreme points is unmanageably large for all but the smallest linear programs.
It can also be shown that if an extreme point is not a minimum point of the objective function then there is an edge containing the point so that the objective function is strictly decreasing on the edge moving away from the point. If the edge is finite then the edge connects to another extreme point where the objective function has a smaller value, otherwise the objective function is unbounded below on the edge and the linear program has no solution. The simplex algorithm applies this insight by walking along edges of the polytope to extreme points with lower and lower objective values. This continues until the minimum value is reached or an unbounded edge is visited, concluding that the problem has no solution. The algorithm always terminates because the number of vertices in the polytope is finite; moreover since we jump between vertices always in the same direction (that of the objective function), we hope that the number of vertices visited will be small.
The solution of a linear program is accomplished in two steps. In the first step, known as Phase I, a starting extreme point is found. Depending on the nature of the program this may be trivial, but in general it can be solved by applying the simplex algorithm to a modified version of the original program. The possible results of Phase I are either a basic feasible solution is found or that the feasible region is empty. In the latter case the linear program is called infeasible. In the second step, Phase II, the simplex algorithm is applied using the basic feasible solution found in Phase I as a starting point. The possible results from Phase II are either an optimum basic feasible solution or an infinite edge on which the objective function is unbounded below.
Read more about this topic: Simplex Algorithm