Revised simplex method

From testwiki
Jump to navigation Jump to search

In mathematical optimization, the revised simplex method is a variant of George Dantzig's simplex method for linear programming.

The revised simplex method is mathematically equivalent to the standard simplex method but differs in implementation. Instead of maintaining a tableau which explicitly represents the constraints adjusted to a set of basic variables, it maintains a representation of a basis of the matrix representing the constraints. The matrix-oriented approach allows for greater computational efficiency by enabling sparse matrix operations.Template:Sfn

Problem formulation

For the rest of the discussion, it is assumed that a linear programming problem has been converted into the following standard form:

minimize𝒄T𝒙subject to𝑨𝒙=𝒃,𝒙0

where Template:Math. Without loss of generality, it is assumed that the constraint matrix Template:Math has full row rank and that the problem is feasible, i.e., there is at least one Template:Math such that Template:Math. If Template:Math is rank-deficient, either there are redundant constraints, or the problem is infeasible. Both situations can be handled by a presolve step.

Algorithmic description

Optimality conditions

For linear programming, the Karush–Kuhn–Tucker conditions are both necessary and sufficient for optimality. The KKT conditions of a linear programming problem in the standard form is

𝑨𝒙=𝒃,𝑨Tλ+𝒔=𝒄,𝒙0,𝒔0,𝒔T𝒙=0

where Template:Math and Template:Math are the Lagrange multipliers associated with the constraints Template:Math and Template:Math, respectively.Template:Sfn The last condition, which is equivalent to Template:Math for all Template:Math, is called the complementary slackness condition.

By what is sometimes known as the fundamental theorem of linear programming, a vertex Template:Math of the feasible polytope can be identified by being a basis Template:Math of Template:Math chosen from the latter's columns.Template:Efn Since Template:Math has full rank, Template:Math is nonsingular. Without loss of generality, assume that Template:Math. Then Template:Math is given by

𝒙=[𝒙𝑩𝒙𝑡]=[𝑩1𝒃0]

where Template:Math. Partition Template:Math and Template:Math accordingly into

𝒄=[𝒄𝑩𝒄𝑡],𝒔=[𝒔𝑩𝒔𝑡].

To satisfy the complementary slackness condition, let Template:Math. It follows that

𝑩Tλ=𝒄𝑩,𝑡Tλ+𝒔𝑡=𝒄𝑡,

which implies that

λ=(𝑩T)1𝒄𝑩,𝒔𝑡=𝒄𝑡𝑡Tλ.

If Template:Math at this point, the KKT conditions are satisfied, and thus Template:Math is optimal.

Pivot operation

If the KKT conditions are violated, a pivot operation consisting of introducing a column of Template:Math into the basis at the expense of an existing column in Template:Math is performed. In the absence of degeneracy, a pivot operation always results in a strict decrease in Template:Math. Therefore, if the problem is bounded, the revised simplex method must terminate at an optimal vertex after repeated pivot operations because there are only a finite number of vertices.Template:Sfn

Select an index Template:Math such that Template:Math as the entering index. The corresponding column of Template:Math, Template:Math, will be moved into the basis, and Template:Math will be allowed to increase from zero. It can be shown that

(𝒄T𝒙)xq=sq,

i.e., every unit increase in Template:Math results in a decrease by Template:Math in Template:Math.Template:Sfn Since

𝑩𝒙𝑩+𝑨qxq=𝒃,

Template:Math must be correspondingly decreased by Template:Math subject to Template:Math. Let Template:Math. If Template:Math, no matter how much Template:Math is increased, Template:Math will stay nonnegative. Hence, Template:Math can be arbitrarily decreased, and thus the problem is unbounded. Otherwise, select an index Template:Math as the leaving index. This choice effectively increases Template:Math from zero until Template:Math is reduced to zero while maintaining feasibility. The pivot operation concludes with replacing Template:Math with Template:Math in the basis.

Numerical example

Template:Seealso Consider a linear program where

𝒄=[23400]T,𝑨=[3211025301],𝒃=[1015].

Let

𝑩=[𝑨4𝑨5],𝑡=[𝑨1𝑨2𝑨3]

initially, which corresponds to a feasible vertex Template:Math. At this moment,

λ=[00]T,𝒔𝑡=[234]T.

Choose Template:Math as the entering index. Then Template:Math, which means a unit increase in Template:Math results in Template:Math and Template:Math being decreased by Template:Math and Template:Math, respectively. Therefore, Template:Math is increased to Template:Math, at which point Template:Math is reduced to zero, and Template:Math becomes the leaving index.

After the pivot operation,

𝑩=[𝑨3𝑨4],𝑡=[𝑨1𝑨2𝑨5].

Correspondingly,

𝒙=[00550]T,λ=[04/3]T,𝒔𝑡=[2/311/34/3]T.

A positive Template:Math indicates that Template:Math is now optimal.

Practical issues

Degeneracy

Template:Seealso Because the revised simplex method is mathematically equivalent to the simplex method, it also suffers from degeneracy, where a pivot operation does not result in a decrease in Template:Math, and a chain of pivot operations causes the basis to cycle. A perturbation or lexicographic strategy can be used to prevent cycling and guarantee termination.Template:Sfn

Basis representation

Two types of linear systems involving Template:Math are present in the revised simplex method:

𝑩𝒛=π’š,𝑩T𝒛=π’š.

Instead of refactorizing Template:Math, usually an LU factorization is directly updated after each pivot operation, for which purpose there exist several strategies such as the Forrestβˆ’Tomlin and Bartelsβˆ’Golub methods. However, the amount of data representing the updates as well as numerical errors builds up over time and makes periodic refactorization necessary.Template:SfnTemplate:Sfn

Notes and references

Notes

Template:Notelist

References

Template:Reflist

Bibliography

Template:Refbegin

Template:Refend

Template:Optimization algorithms Template:Mathematical programming