Content deleted Content added
m →Optimality conditions: use {{math}} for inline math |
m convert special characters found by Wikipedia:Typo Team/moss (via WP:JWB) |
||
(31 intermediate revisions by 17 users not shown) | |||
Line 1:
In [[mathematical optimization]], the '''revised simplex method''' is
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 (linear algebra)|basis]] of the [[Matrix (mathematics)|matrix]] representing the constraints. The matrix-oriented approach allows for greater computational efficiency by enabling sparse matrix operations.{{sfn|Morgan|1997|loc=§2}}
Line 8:
\begin{array}{rl}
\text{minimize} & \boldsymbol{c}^{\mathrm{T}} \boldsymbol{x} \\
\text{subject to} & \boldsymbol{Ax} = \boldsymbol{b}
\end{array}
</math>
where {{math|'''''A''''' ∈
==Algorithmic description==
Line 19:
:<math>
\begin{align}
\boldsymbol{Ax} & = \boldsymbol{b}
\boldsymbol{A}^{\mathrm{T}} \boldsymbol{\lambda} + \boldsymbol{s} & = \boldsymbol{c}
\boldsymbol{x} & \ge \boldsymbol{0}
\boldsymbol{s} & \ge \boldsymbol{0}
\boldsymbol{s}^{\mathrm{T}} \boldsymbol{x} & = 0
\end{align}
Line 29:
where {{math|'''''λ'''''}} and {{math|'''''s'''''}} are the [[Lagrange multiplier]]s associated with the constraints {{math|'''''Ax''''' {{=}} '''''b'''''}} and {{math|'''''x''''' ≥ '''0'''}}, respectively.{{sfn|Nocedal|Wright|2006|p=358|loc=Eq. 13.4}} The last condition, which is equivalent to {{math|''s<sub>i</sub>x<sub>i</sub>'' {{=}} 0}} for all {{math|1 < ''i'' < ''n''}}, is called the ''complementary slackness condition''.
By what is sometimes known as the ''fundamental theorem of linear programming'', a vertex {{math|'''''x'''''}} of the feasible polytope can be identified by
:<math>
Line 51:
\boldsymbol{c_B} \\
\boldsymbol{c_N}
\end{bmatrix}
\boldsymbol{s} & =
\begin{bmatrix}
\boldsymbol{s_B} \\
\boldsymbol{s_N}
\end{bmatrix}
\end{align}
</math>
Line 64:
:<math>
\begin{align}
\boldsymbol{B}^{\mathrm{T}} \boldsymbol{\lambda} & = \boldsymbol{c_B}
\boldsymbol{N}^{\mathrm{T}} \boldsymbol{\lambda} + \boldsymbol{s_N} & = \boldsymbol{c_N}
\end{align}
</math>
Line 73:
:<math>
\begin{align}
\boldsymbol{\lambda} & = (\boldsymbol{B}^{
\boldsymbol{s_N} & = \boldsymbol{c_N} - \boldsymbol{N}^{\mathrm{T}} \boldsymbol{\lambda}
\end{align}
</math>
Line 81:
===Pivot operation===
If the KKT conditions are violated, a ''pivot operation'' consisting of introducing a column of
Select an index
:<math>\frac{\partial (\boldsymbol{c}^{\mathrm{T}} \boldsymbol{x})}{\partial x_q} = s_q
i.e., every unit increase in
:<math>\boldsymbol{B x_B} + \boldsymbol{A}_q x_q = \boldsymbol{b}
==Numerical example==
{{seealso|Simplex method#Example}}
Consider a linear program where
:<math>
\begin{align}
\boldsymbol{c} & =
\begin{bmatrix}
-2 & -3 & -4 & 0 & 0
\end{bmatrix}^{\mathrm{T}}, \\
\boldsymbol{A} & =
\begin{bmatrix}
3 & 2 & 1 & 1 & 0 \\
2 & 5 & 3 & 0 & 1
\end{bmatrix}, \\
\boldsymbol{b} & =
\begin{bmatrix}
10 \\
15
\end{bmatrix}.
\end{align}
</math>
Let
:<math>
\begin{align}
\boldsymbol{B} & =
\begin{bmatrix}
\boldsymbol{A}_4 & \boldsymbol{A}_5
\end{bmatrix}, \\
\boldsymbol{N} & =
\begin{bmatrix}
\boldsymbol{A}_1 & \boldsymbol{A}_2 & \boldsymbol{A}_3
\end{bmatrix}
\end{align}
</math>
initially, which corresponds to a feasible vertex {{math|'''''x''''' {{=}} [0 0 0 10 15]<sup>T</sup>}}. At this moment,
:<math>
\begin{align}
\boldsymbol{\lambda} & =
\begin{bmatrix}
0 & 0
\end{bmatrix}^{\mathrm{T}}, \\
\boldsymbol{s_N} & =
\begin{bmatrix}
-2 & -3 & -4
\end{bmatrix}^{\mathrm{T}}.
\end{align}
</math>
Choose {{math|''q'' {{=}} 3}} as the entering index. Then {{math|'''''d''''' {{=}} [1 3]<sup>T</sup>}}, which means a unit increase in {{math|''x''<sub>3</sub>}} results in {{math|''x''<sub>4</sub>}} and {{math|''x''<sub>5</sub>}} being decreased by {{math|1}} and {{math|3}}, respectively. Therefore, {{math|''x''<sub>3</sub>}} is increased to {{math|5}}, at which point {{math|''x''<sub>5</sub>}} is reduced to zero, and {{math|''p'' {{=}} 5}} becomes the leaving index.
After the pivot operation,
:<math>
\begin{align}
\boldsymbol{B} & =
\begin{bmatrix}
\boldsymbol{A}_3 & \boldsymbol{A}_4
\end{bmatrix}, \\
\boldsymbol{N} & =
\begin{bmatrix}
\boldsymbol{A}_1 & \boldsymbol{A}_2 & \boldsymbol{A}_5
\end{bmatrix}.
\end{align}
</math>
Correspondingly,
:<math>
\begin{align}
\boldsymbol{x} & =
\begin{bmatrix}
0 & 0 & 5 & 5 & 0
\end{bmatrix}^{\mathrm{T}}, \\
\boldsymbol{\lambda} & =
\begin{bmatrix}
0 & -4/3
\end{bmatrix}^{\mathrm{T}}, \\
\boldsymbol{s_N} & =
\begin{bmatrix}
2/3 & 11/3 & 4/3
\end{bmatrix}^{\mathrm{T}}.
\end{align}
</math>
A positive {{math|'''''s<sub>N</sub>'''''}} indicates that {{math|'''''x'''''}} is now optimal.
==Practical issues==
===Degeneracy===
{{seealso|Simplex method#Degeneracy:
Because the revised simplex method is mathematically equivalent to the simplex method, it also suffers from degeneracy, where a pivot operation does not
===Basis representation===
Two types of [[System of linear equations|linear systems]] involving
:<math>
\begin{align}
\boldsymbol{B
\boldsymbol{B}^{\mathrm{T}} \boldsymbol{
\end{align}
</math>
Instead of refactorizing
==Notes and references==
Line 129 ⟶ 218:
|year=1997
|url=http://www.cise.ufl.edu/research/sparse/Morgan/index.htm
|archive-url=https://web.archive.org/web/20110807134509/http://www.cise.ufl.edu/research/sparse/Morgan/index.htm
|archive-date=7 August 2011
}}
* {{cite book
|last1=Nocedal
Line 148 ⟶ 239:
|___location=New York, NY, USA
|isbn=978-0-387-30303-1
|url=
}}
{{refend}}
Line 157 ⟶ 248:
[[Category:Exchange algorithms]]
[[Category:Linear programming]]
|