|
|
Line 1: |
Line 1: |
| {{about|the linear programming algorithm|the non-linear optimization heuristic|Nelder–Mead method}}
| | It is very common to have a dental emergency -- a fractured tooth, an abscess, or severe pain when chewing. Over-the-counter pain medication is just masking the problem. Seeing an emergency dentist is critical to getting the source of the problem diagnosed and corrected as soon as possible.<br><br>Here are some common dental emergencies:<br>Toothache: The most common dental emergency. This generally means a badly decayed tooth. As the pain affects the tooth's nerve, treatment involves gently removing any debris lodged in the cavity being careful not to poke deep as this will cause severe pain if the nerve is touched. Next rinse vigorously with warm water. Then soak a small piece of cotton in oil of cloves and insert it in the cavity. This will give temporary relief until a dentist can be reached.<br><br>At times the pain may have a more obscure location such as decay under an old filling. As this can be only corrected by a dentist there are two things you can do to help the pain. Administer a pain pill (aspirin or some other analgesic) internally or dissolve a tablet in a half glass (4 oz) of warm water holding it in the mouth for several minutes before spitting it out. DO NOT PLACE A WHOLE TABLET OR ANY PART OF IT IN THE TOOTH OR AGAINST THE SOFT GUM TISSUE AS IT WILL RESULT IN A NASTY BURN.<br><br>Swollen Jaw: This may be caused by several conditions the most probable being an abscessed tooth. In any case the treatment should be to reduce pain and swelling. An ice pack held on the outside of the jaw, (ten minutes on and ten minutes off) will take care of both. If this does not control the pain, an analgesic tablet can be given every four hours.<br><br>Other Oral Injuries: Broken teeth, cut lips, bitten tongue or lips if severe means a trip to a dentist as soon as possible. In the mean time rinse the mouth with warm water and place cold compression the face opposite the injury. If there is a lot of bleeding, apply direct pressure to the bleeding area. If bleeding does not stop get patient to the emergency room of a hospital as stitches may be necessary.<br><br>Prolonged Bleeding Following Extraction: Place a gauze pad or better still a moistened tea bag over the socket and have the patient bite down gently on it for 30 to 45 minutes. The tannic acid in the tea seeps into the tissues and often helps stop the bleeding. If bleeding continues after two hours, call the dentist or take patient to the emergency room of the nearest hospital.<br><br>Broken Jaw: If you suspect the patient's jaw is broken, bring the upper and lower teeth together. Put a necktie, handkerchief or towel under the chin, tying it over the head to immobilize the jaw until you can get the patient to a dentist or the emergency room of a hospital.<br><br>Painful Erupting Tooth: In young children teething pain can come from a loose baby tooth or from an erupting permanent tooth. Some relief can be given by crushing a little ice and wrapping it in gauze or a clean piece of cloth and putting it directly on the tooth or gum tissue where it hurts. The numbing effect of the cold, along with an appropriate dose of aspirin, usually provides temporary relief.<br><br>In young adults, an erupting 3rd molar (Wisdom tooth), especially if it is impacted, can cause the jaw to swell and be quite painful. Often the gum around the tooth will show signs of infection. Temporary relief can be had by giving aspirin or some other painkiller and by dissolving an aspirin in half a glass of warm water and holding this solution in the mouth over the sore gum. AGAIN DO NOT PLACE A TABLET DIRECTLY OVER THE GUM OR CHEEK OR USE THE ASPIRIN SOLUTION ANY STRONGER THAN RECOMMENDED TO PREVENT BURNING THE TISSUE. The swelling of the jaw can be reduced by using an ice pack on the outside of the face at intervals of ten minutes on and ten minutes off.<br><br>In the event you loved this post and you would want to receive more details about [http://www.youtube.com/watch?v=90z1mmiwNS8 Dentists in DC] kindly visit our own web page. |
| <!-- {{Context|date=March 2012}} -->
| |
| In [[optimization (mathematics)|mathematical optimization]], [[George Dantzig|Dantzig]]'s '''simplex algorithm''' (or '''simplex method''') is a popular [[algorithm]] for [[linear programming]].<ref name="Murty">{{cite book|last=Murty|first=Katta G.|authorlink=Katta G. Murty|title=Linear programming|publisher=John Wiley & Sons Inc.|location=New York|year=1983|pages=xix+482|isbn=0-471-09725-X|mr=720547}}</ref>
| |
| <ref name="BasicDantzig">Richard W. Cottle, ed. ''The Basic George B. Dantzig''. Stanford Business Books, Stanford University Press, Stanford, California, 2003. (Selected papers by [[George B. Dantzig]])</ref><ref name="DantzigThapa1">[[George B. Dantzig]] and Mukund N. Thapa. 1997. ''Linear programming 1: Introduction''. Springer-Verlag.</ref><ref name="DantzigThapa2" >
| |
| [[George B. Dantzig]] and Mukund N. Thapa. 2003. ''Linear Programming 2: Theory and Extensions''. Springer-Verlag.</ref><ref name="Todd" >{{cite journal|author=[[Michael J. Todd (mathematician)|Michael J. Todd]] | year = 2002 | title = The many facets of linear programming | journal = Mathematical Programming | volume = 91 | issue = 3 | month = February}} (Invited survey, from the International Symposium on Mathematical Programming.)</ref> The journal ''[[Computing in Science and Engineering]]'' listed it as one of the top 10 algorithms of the twentieth century.<ref>''Computing in Science and Engineering'', volume 2, no. 1, 2000 [http://www.computer.org/csdl/mags/cs/2000/01/c1022.html html version]</ref>
| |
| | |
| The name of the algorithm is derived from the concept of a [[simplex]] and was suggested by [[Theodore Motzkin|T. S. Motzkin]].<ref name="Murty22" >{{harvtxt|Murty|1983|loc=Comment 2.2}}</ref> Simplices are not actually used in the method, but one interpretation of it is that it operates on simplicial ''[[cone (geometry)|cone]]s'', and these become proper simplices with an additional constraint.<ref name="Murty39">{{harvtxt|Murty|1983|loc=Note 3.9}}</ref><ref name="StoneTovey">{{cite journal|last1=Stone|first1=Richard E.|last2=Tovey|first2=Craig A.|title=The simplex and projective scaling algorithms as iteratively reweighted least squares methods|journal=SIAM Review|volume=33|year=1991|issue=2|pages=220–237
| |
| |mr=1124362|jstor=2031142|doi=10.1137/1033049}}</ref><ref>{{cite journal|last1=Stone|first1=Richard E.|last2=Tovey|first2=Craig A.|title=Erratum: The simplex and projective scaling algorithms as iteratively reweighted least squares methods|journal=SIAM Review|volume=33|year=1991|issue=3|pages=461|mr=1124362|doi=10.1137/1033100|jstor=2031443|ref=harv}}</ref><ref name="Strang">{{cite journal|last=Strang|first=Gilbert|authorlink=Gilbert Strang|title=Karmarkar's algorithm and its place in applied mathematics|journal=[[The Mathematical Intelligencer]]|date=1 June 1987|
| |
| publisher=Springer|location=New York|issn=0343-6993|pages=4–10|volume=9|doi=10.1007/BF03025891|mr='''883185'''|ref=harv|issue=2}}</ref> The simplicial cones in question are the corners (i.e., the neighborhoods of the vertices) of a geometric object called a [[polytope]]. The shape of this polytope is defined by the [[System of linear inequalities|constraints]] applied to the objective function.
| |
| | |
| == Overview ==
| |
| {{further2|[[Linear programming]]}}
| |
| [[Image:Simplex description.png|thumb|240px|A [[system of linear inequalities]] defines a [[polytope]] as a feasible region. The simplex algorithm begins at a starting [[vertex (geometry)|vertex]] and moves along the edges of the polytope until it reaches the vertex
| |
| of the optimum solution.]]
| |
| | |
| [[Image:Simplex-method-3-dimensions.png|thumb|240px|Polyhedron of simplex algorithm in 3D]]
| |
| | |
| The simplex algorithm operates on linear programs in ''standard form'', that is linear programming problems of the form,
| |
| :Minimize
| |
| ::<math>\mathbf{c} \cdot \mathbf{x}</math>
| |
| :Subject to
| |
| ::<math>\mathbf{A}\mathbf{x} = \mathbf{b},\, x_i \ge 0</math>
| |
| | |
| with <math>\scriptstyle x \;=\; (x_1,\, \dots,\, x_n)</math> the variables of the problem, <math>\scriptstyle c \;=\; (c_1,\, \dots,\, c_n)</math> are the coefficients of the objective function, ''A'' a ''p×n'' matrix, and <math>\scriptstyle b \;=\; (b_1,\, \dots,\, b_p)</math> constants with <math>\scriptstyle b_j\geq 0</math>. 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]]
| |
| ::<math>\mathbf{A}\mathbf{x} = \mathbf{b},\, x_i \ge 0</math>
| |
| | |
| is a (possibly unbounded) [[convex polytope]]. There is a simple characterization of the extreme points or vertices of this polytope, namely <math>\scriptstyle x \;=\; (x_1,\, \dots,\, x_n)</math> is an extreme point if and only if the column vectors <math>\scriptstyle A_i</math>, where <math>\scriptstyle x_i \,\ne\, 0</math>, are [[Linear independence|linearly independent]].<ref>{{harvtxt|Murty|1983|loc=Theorem 3.1}}</ref> 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.<ref>{{harvtxt|Murty|1983|loc=Theorem 3.3}}</ref> This in itself reduces the problem to a finite computation since there is a finite number of extreme points, but the number of extreme points is unmanageably large for all but the smallest linear programs.<ref>{{harvtxt|Murty|1983|loc=Section 3.13|p=143}}</ref>
| |
|
| |
| 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.<ref name="Murty137">{{harvtxt|Murty|1983|loc=Section 3.8|p=137}}</ref> 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.<ref name="Murty137"/>
| |
| | |
| 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.<ref name="DantzigThapa1"/><ref name="NeringTucker"/><ref name="Vanderbei" >Robert J. Vanderbei, [http://www.princeton.edu/~rvdb/LPbook/ ''Linear Programming: Foundations and Extensions''], 3rd ed., International Series in Operations Research & Management Science, Vol. 114, Springer Verlag, 2008. ISBN 978-0-387-74387-5. <!-- (An on-line second edition was formerly available. Vanderbei's site still contains extensive materials.) --></ref>
| |
| | |
| ==Standard form==
| |
| The transformation of a linear program to one in standard form may be accomplished as follows.<ref>{{harvtxt|Murty|1983|loc=Section 2.2}}</ref> First, for each variable with a lower bound other than 0, a new variable is introduced representing the difference between the variable and bound. The original variable can then be eliminated by substitution. For example, given the constraint
| |
| :<math>x_1 \ge 5</math>
| |
| | |
| a new variable, ''y''<sub>1</sub>, is introduced with
| |
| :<math>\begin{align} | |
| y_1 = x_1 - 5\\
| |
| x_1 = y_1 + 5
| |
| \end{align}</math>
| |
| | |
| The second equation may be used to eliminate ''x''<sub>1</sub> from the linear program. In this way, all lower bound constraints may be changed to non-negativity restrictions.
| |
| | |
| Second, for each remaining inequality constraint, a new variable, called a ''slack variable'', is introduced to change the constraint to an equality constraint. This variable represents the difference between the two sides of the inequality and is assumed to be nonnegative. For example the inequalities
| |
| :<math>\begin{align}
| |
| x_2 + 2x_3 &\le 3\\
| |
| -x_4 + 3x_5 &\ge 2
| |
| \end{align}</math>
| |
| | |
| are replaced with
| |
| :<math>\begin{align}
| |
| x_2 + 2x_3 + s_1 &= 3\\
| |
| -x_4 + 3x_5 - s_2 &= 2\\
| |
| s_1,\, s_2 &\ge 0
| |
| \end{align}</math>
| |
| | |
| It is much easier to perform algebraic manipulation on inequalities in this form. In inequalities where ≥ appears such as the second one, some authors refer to the variable introduced as a {{anchor|Surplus variable}}''surplus variable''.
| |
| | |
| Third, each unrestricted variable is eliminated from the linear program. This can be done in two ways, one is by solving for the variable in one of the equations in which it appears and then eliminating the variable by substitution. The other is to replace the variable with the difference of two restricted variables. For example if ''z''<sub>1</sub> is unrestricted then write
| |
| :<math>\begin{align} | |
| &z_1 = z_1^+ - z_1^-\\
| |
| &z_1^+,\, z_1^- \ge 0
| |
| \end{align}</math>
| |
| | |
| The equation may be used to eliminate ''z''<sub>1</sub> from the linear program.
| |
| | |
| When this process is complete the feasible region will be in the form
| |
| :<math>\mathbf{A}\mathbf{x} = \mathbf{b},\, x_i \ge 0</math>
| |
| | |
| It is also useful to assume that the rank of '''A''' is the number of rows. This results in no loss of generality since otherwise either the system '''Ax''' >= '''b''' has redundant equations which can be dropped, or the system is inconsistent and the linear program has no solution.<ref>{{harvtxt|Murty|1983|p=173}}</ref>
| |
| | |
| ==Canonical tableaux==
| |
| A linear program in standard form can be represented as a ''tableau'' of the form
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & -\mathbf{c}^T & 0 \\
| |
| 0 & \mathbf{A} & \mathbf{b}
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| The first row defines the objective function and the remaining rows specify the constraints. (Note, different authors use different conventions as to the exact layout.) If the columns of A can be rearranged so that it contains the [[identity matrix]] of order ''p'' (the number of rows in A) then the tableau is said to be in ''canonical form''.<ref>{{harvtxt|Murty|1983|loc=section 2.3.2}}</ref> The variables corresponding to the columns of the identity matrix are called ''basic variables'' while the remaining variables are called ''nonbasic'' or ''free variables''. If the nonbasic variables are assumed to be 0, then the values of the basic variables are easily obtained as entries in ''b'' and this solution is a basic feasible solution.
| |
| | |
| Conversely, given a basic feasible solution, the columns corresponding to the nonzero variables can be expanded to a nonsingular matrix. If the corresponding tableau is multiplied by the inverse of this matrix then the result is a tableau in canonical form.<ref>{{harvtxt|Murty|1983|loc=section 3.12}}</ref>
| |
| | |
| Let
| |
| :<math> | |
| \begin{bmatrix}
| |
| 1 & -\mathbf{c}^T_B & -\mathbf{c}^T_D & 0 \\
| |
| 0 & I & \mathbf{D} & \mathbf{b}
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| be a tableau in canonical form. Additional [[Elementary matrix#Row-addition transformations|row-addition transformations]] can be applied to remove the coefficients '''c'''<sup>T</sup><sub>''B''</sub> from the objective function. This process is called ''pricing out'' and results in a canonical tableau
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & 0 & -\bar{\mathbf{c}}^T_D & z_B \\
| |
| 0 & I & \mathbf{D} & \mathbf{b}
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| where ''z''<sub>''B''</sub> is the value of the objective function at the corresponding basic feasible solution. The updated coefficients, also known as ''relative cost coefficients'', are the rates of change of the objective function with respect to the nonbasic variables.<ref name="NeringTucker" >
| |
| Evar D. Nering and [[Albert W. Tucker]], 1993, ''Linear Programs and Related Problems'', Academic Press. (elementary<!-- but profound -->)</ref>
| |
| | |
| ==Pivot operations==
| |
| The geometrical operation of moving from a basic feasible solution to an adjacent basic feasible solution is implemented as a ''pivot operation''. First, a nonzero ''pivot element'' is selected in a nonbasic column. The row containing this element is [[Elementary matrix#Row-multiplying transformations|multiplied]] by its reciprocal to change this element to 1, and then multiples of the row are added to the other rows to change the other entries in the column to 0. The result is that, if the pivot element is in row ''r'', then the column becomes the ''r''-th column of the identity matrix. The variable for this column is now a basic variable, replacing the variable which corresponded to the ''r''-th column of the identity matrix before the operation. In effect, the variable corresponding to the pivot column enters the set of basic variables and is called the ''entering variable'', and the variable being replaced leaves the set of basic variables and is called the ''leaving variable''. The tableau is still in canonical form but with the set of basic variables changed by one element.<ref name="DantzigThapa1"/><ref name="NeringTucker"/>
| |
| | |
| ==Algorithm==
| |
| Let a linear program be given by a canonical tableau. The simplex algorithm proceeds by performing successive pivot operations which each give an improved basic feasible solution; the choice of pivot element at each step is largely determined by the requirement that this pivot improve the solution.
| |
| | |
| ===Entering variable selection===
| |
| Since the entering variable will, in general, increase from 0 to a positive number, the value of the objective function will decrease if the derivative of the objective function with respect to this variable is negative. Equivalently, the value of the objective function is decreased if the pivot column is selected so that the corresponding entry in the objective row of the tableau is positive.
| |
| | |
| If there is more than one column so that the entry in the objective row is positive then the choice of which one to add to the set of basic variables is somewhat arbitrary and several ''entering variable choice rules''<ref name="Murty66">{{harvtxt|Murty|1983|p=66}}</ref> have been developed. | |
| | |
| If all the entries in the objective row are less than or equal to 0 then no choice of entering variable can be made and the solution is in fact optimal. It is easily seen to be optimal since the objective row now corresponds to an equation of the form
| |
| :<math>z(\mathbf{x})=z_B+\text{nonnegative terms corresponding to nonbasic variables}</math>
| |
| | |
| Note that by changing the entering variable choice rule so that it selects a column where the entry in the objective row is negative, the algorithm is changed so that it finds the maximum of the objective function rather than the minimum.
| |
| | |
| ===Leaving variable selection===
| |
| Once the pivot column has been selected, the choice of pivot row is largely determined by the requirement that the resulting solution be feasible. First, only positive entries in the pivot column are considered since this guarantees that the value of the entering variable will be nonnegative. If there are no positive entries in the pivot column then the entering variable can take any nonnegative value with the solution remaining feasible. In this case the objective function is unbounded below and there is no minimum.
| |
| | |
| Next, the pivot row must be selected so that all the other basic variables remain positive. A calculation shows that this occurs when the resulting value of the entering variable is at a minimum. In other words, if the pivot column is ''c'', then the pivot row ''r'' is chosen so that
| |
| :<math>b_r / a_{cr}\,</math>
| |
| | |
| is the minimum over all ''r'' so that ''a''<sub>''cr''</sub> > 0. This is called the ''minimum ratio test''.<ref name="Murty66"/> If there is more than one row for which the minimum is achieved then a ''dropping variable choice rule''<ref>{{harvtxt|Murty|1983|p=67}}</ref> can be used to make the determination.
| |
| | |
| === Example ===
| |
| Consider the linear program
| |
| :Minimize
| |
| ::<math>Z = -2 x - 3 y - 4 z\,</math>
| |
| :Subject to
| |
| ::<math>\begin{align}
| |
| 3 x + 2 y + z &\le 10\\
| |
| 2 x + 5 y + 3 z &\le 15\\
| |
| x,\,y,\,z &\ge 0
| |
| \end{align}</math>
| |
| | |
| With the addition of slack variables ''s'' and ''t'', this is represented by the canonical tableau
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & 2 & 3 & 4 & 0 & 0 & 0 \\
| |
| 0 & 3 & 2 & 1 & 1 & 0 & 10 \\
| |
| 0 & 2 & 5 & 3 & 0 & 1 & 15
| |
| \end{bmatrix}
| |
| </math> | |
| | |
| where columns 5 and 6 represent the basic variables ''s'' and ''t'' and the corresponding basic feasible solution is
| |
| :<math>x=y=z=0,\,s=10,\,t=15.</math> | |
| | |
| Columns 2, 3, and 4 can be selected as pivot columns, for this example column 4 is selected. The values of ''x'' resulting from the choice of rows 2 and 3 as pivot rows are 10/1 = 10 and 15/3 = 5 respectively. Of these the minimum is 5, so row 3 must be the pivot row. Performing the pivot produces
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & -\tfrac{2}{3} & -\tfrac{11}{3} & 0 & 0 & -\tfrac{4}{3} & -20 \\
| |
| 0 & \tfrac{7}{3} & \tfrac{1}{3} & 0 & 1 & -\tfrac{1}{3} & 5 \\
| |
| 0 & \tfrac{2}{3} & \tfrac{5}{3} & 1 & 0 & \tfrac{1}{3} & 5
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| Now columns 4 and 5 represent the basic variables ''z'' and ''s'' and the corresponding basic feasible solution is
| |
| :<math>x=y=t=0,\,z=5,\,s=5.</math>
| |
| | |
| For the next step, there are no positive entries in the objective row and in fact
| |
| :<math>Z = -20 + \tfrac{2}{3} x + \tfrac{11}{3} y + \tfrac{4}{3} t</math>
| |
| so the minimum value of ''Z'' is −20.
| |
| | |
| ==Finding an initial canonical tableau==
| |
| In general, a linear program will not be given in canonical form and an equivalent canonical tableau must be found before the simplex algorithm can start. This can be accomplished by the introduction of ''artificial variables''. Columns of the identity matrix are added as column vectors for these variables. If the b value for a constraint equation is negative, the equation is negated before adding the identity matrix columns. This does not change the set of feasible solutions or the optimal solution, and it ensures that the slack variables will constitute an initial feasible solution. The new tableau is in canonical form but it is not equivalent to the original problem. So a new objective function, equal to the sum of the artificial variables, is introduced and the simplex algorithm is applied to find the minimum; the modified linear program is called the ''Phase I'' problem.<ref>{{harvtxt|Murty|1983|p=60}}</ref>
| |
| | |
| The simplex algorithm applied to the Phase I problem must terminate with a minimum value for the new objective function since, being the sum of nonnegative variables, its value is bounded below by 0. If the minimum is 0 then the artificial variables can be eliminated from the resulting canonical tableau producing a canonical tableau equivalent to the original problem. The simplex algorithm can then be applied to find the solution; this step is called ''Phase II''. If the minimum is positive then there is no feasible solution for the Phase I problem where the artificial variables are all zero. This implies that the feasible region for the original problem is empty, and so the original problem has no solution.<ref name="DantzigThapa1"/><ref name="NeringTucker"/><ref name="Padberg"/> | |
| | |
| ===Example===
| |
| Consider the linear program
| |
| :Minimize
| |
| ::<math>Z = -2 x - 3 y - 4 z\,</math>
| |
| | |
| :Subject to
| |
| ::<math>\begin{align}
| |
| 3 x + 2 y + z &= 10\\
| |
| 2 x + 5 y + 3 z &= 15\\
| |
| x,\, y,\, z &\ge 0
| |
| \end{align}</math>
| |
| | |
| This is represented by the (non-canonical) tableau
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & 2 & 3 & 4 & 0 \\
| |
| 0 & 3 & 2 & 1 & 10 \\
| |
| 0 & 2 & 5 & 3 & 15
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| Introduce artificial variables ''u'' and ''v'' and objective function ''W'' = ''u'' + ''v'', giving a new tableau
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & 0 & 0 & 0 & 0 & -1 & -1 & 0 \\
| |
| 0 & 1 & 2 & 3 & 4 & 0 & 0 & 0 \\
| |
| 0 & 0 & 3 & 2 & 1 & 1 & 0 & 10 \\
| |
| 0 & 0 & 2 & 5 & 3 & 0 & 1 & 15
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| Note that the equation defining the original objective function is retained in anticipation of Phase II.
| |
| | |
| After pricing out this becomes
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & 0 & 5 & 7 & 4 & 0 & 0 & 25 \\
| |
| 0 & 1 & 2 & 3 & 4 & 0 & 0 & 0 \\
| |
| 0 & 0 & 3 & 2 & 1 & 1 & 0 & 10 \\
| |
| 0 & 0 & 2 & 5 & 3 & 0 & 1 & 15
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| Select column 5 as a pivot column, so the pivot row must be row 4, and the updated tableau is
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & 0 & \tfrac{7}{3} & \tfrac{1}{3} & 0 & 0 & -\tfrac{4}{3} & 5 \\
| |
| 0 & 1 & -\tfrac{2}{3} & -\tfrac{11}{3} & 0 & 0 & -\tfrac{4}{3} & -20 \\
| |
| 0 & 0 & \tfrac{7}{3} & \tfrac{1}{3} & 0 & 1 & -\tfrac{1}{3} & 5 \\
| |
| 0 & 0 & \tfrac{2}{3} & \tfrac{5}{3} & 1 & 0 & \tfrac{1}{3} & 5
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| Now select column 3 as a pivot column, for which row 3 must be the pivot row, to get
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & 0 & 0 & 0 & 0 & -1 & -1 & 0 \\
| |
| 0 & 1 & 0 & -\tfrac{25}{7} & 0 & \tfrac{2}{7} & -\tfrac{10}{7} & -\tfrac{130}{7} \\
| |
| 0 & 0 & 1 & \tfrac{1}{7} & 0 & \tfrac{3}{7} & -\tfrac{1}{7} & \tfrac{15}{7} \\
| |
| 0 & 0 & 0 & \tfrac{11}{7} & 1 & -\tfrac{2}{7} & \tfrac{3}{7} & \tfrac{25}{7}
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| The artificial variables are now 0 and they may be dropped giving a canonical tableau equivalent to the original problem:
| |
| :<math>
| |
| \begin{bmatrix}
| |
| 1 & 0 & -\tfrac{25}{7} & 0 & -\tfrac{130}{7} \\
| |
| 0 & 1 & \tfrac{1}{7} & 0 & \tfrac{15}{7} \\
| |
| 0 & 0 & \tfrac{11}{7} & 1 & \tfrac{25}{7}
| |
| \end{bmatrix}
| |
| </math>
| |
| | |
| This is, fortuitously, already optimal and the optimum value for the original linear program is −130/7.
| |
| | |
| ==Advanced topics==
| |
| | |
| ===Implementation===
| |
| The tableau form used above to describe the algorithm lends itself to an immediate implementation in which the tableau is maintained as a rectangular (''m'' + 1)-by-(''m'' + ''n'' + 1) array. It is straightforward to avoid storing the m explicit columns of the identity matrix that will occur within the tableau by virtue of '''B''' being a subset of the columns of ['''A''', '''I''']. This implementation is referred to as the "''standard'' simplex algorithm". The storage and computation overhead are such that the standard simplex method is a prohibitively expensive approach to solving large linear programming problems.
| |
| | |
| In each simplex iteration, the only data required are the first row of the tableau, the (pivotal) column of the tableau corresponding to the entering variable and the right-hand-side. The latter can be updated using the pivotal column and the first row of the tableau can be updated using the (pivotal) row corresponding to the leaving variable. Both the pivotal column and pivotal row may be computed directly using the solutions of linear systems of equations involving the matrix '''B''' and a matrix-vector product using '''A'''. These observations motivate the "''revised'' simplex algorithm", for which implementations are distinguished by their invertible representation of '''B'''.<ref name="DantzigThapa2"/>
| |
| | |
| In large linear-programming problems '''A''' is typically a [[sparse matrix]] and, when the resulting sparsity of '''B''' is exploited when maintaining its invertible representation, the revised simplex algorithm is a much more efficient than the standard simplex method. Commercial simplex solvers are based on the revised simplex algorithm.<ref name="DantzigThapa2"/><ref name="Padberg" >M. Padberg, ''Linear Optimization and Extensions'', Second Edition, Springer-Verlag, 1999.</ref><ref>Dmitris Alevras and Manfred W. Padberg, ''Linear Optimization and Extensions: Problems and Extensions'', Universitext, Springer-Verlag, 2001. (Problems from Padberg with solutions.)</ref><ref name="MarosMitra" >{{cite book|last1=Maros|first1=István|last2=Mitra|first2=Gautam|chapter=Simplex algorithms|mr=1438309|title=Advances in linear and integer programming|pages=1–46|editor=J. E. Beasley|publisher=Oxford Science|year=1996}}</ref><ref>{{cite book|mr=1960274|last=Maros|first=István|title=Computational techniques of the simplex method|series=International Series in Operations Research & Management Science|volume=61|publisher=Kluwer Academic Publishers|location=Boston, MA|year=2003|pages=xx+325|isbn=1-4020-7332-1}}</ref>
| |
| | |
| ===Degeneracy: Stalling and cycling===
| |
| If the values of all basic variables are strictly positive, then a pivot must result in an improvement in the objective value. When this is always the case no set of basic variables occurs twice and the simplex algorithm must terminate after a finite number of steps. Basic feasible solutions where at least one of the ''basic ''variables is zero are called ''degenerate'' and may result in pivots for which there is no improvement in the objective value. In this case there is no actual change in the solution but only a change in the set of basic variables. When several such pivots occur in succession, there is no improvement; in large industrial applications, degeneracy is common and such "''stalling''" is notable.
| |
| Worse than stalling is the possibility the same set of basic variables occurs twice, in which case, the deterministic pivoting rules of the simplex algorithm will produce an infinite loop, or "cycle". While degeneracy is the rule in practice and stalling is common, cycling is rare in practice. A discussion of an example of practical cycling occurs in Padberg.<ref name="Padberg"/> [[Bland's rule]] prevents cycling and thus guarantee that the simplex algorithm always terminates.<ref name="Padberg"/><ref name="Bland">
| |
| {{cite journal|title=New finite pivoting rules for the simplex method|first=Robert G.|last=Bland|journal=Mathematics of Operations Research|volume=2|issue=2|date=May 1977|pages=103–107|doi=10.1287/moor.2.2.103|jstor=3689647|mr=459599|ref=harv}}</ref><ref>{{harvtxt|Murty|1983|p=79}}</ref> Another pivoting algorithm, the [[criss-cross algorithm]] never cycles on linear programs.<ref>There are abstract optimization problems, called [[oriented matroid]] programs, on which Bland's rule cycles (incorrectly) while the [[criss-cross algorithm]] terminates correctly.</ref>
| |
| | |
| ===Efficiency===
| |
| The simplex method is remarkably efficient in practice and was a great improvement over earlier methods such as [[Fourier–Motzkin elimination]]. However, in 1972, Klee and Minty<ref name="KleeMinty">{{cite book|title=Inequalities III (Proceedings of the Third Symposium on Inequalities held at the University of California, Los Angeles, Calif., September 1–9, 1969, dedicated to the memory of Theodore S. Motzkin)|editor-first=Oved|editor-last=Shisha|publisher=Academic Press|location=New York-London|year=1972|mr=332165|last1=Klee|first1=Victor|authorlink1=Victor Klee|last2=Minty|first2= George J.|authorlink2=George J. Minty|chapter=How good is the simplex algorithm?|pages=159–175|ref=harv}}</ref> gave an example showing that the worst-case complexity of simplex method as formulated by Dantzig is [[exponential time]]. Since then, for almost every variation on the method, it has been shown that there is a family of linear programs for which it performs badly. It is an open question if there is a variation with [[polynomial time]], or even sub-exponential worst-case complexity.<ref name="PapSte">[[Christos H. Papadimitriou]] and Kenneth Steiglitz, ''Combinatorial Optimization: Algorithms and Complexity'', Corrected republication with a new preface, Dover. (computer science)</ref><ref name="Schrijver" >[[Alexander Schrijver]], ''Theory of Linear and Integer Programming''. John Wiley & sons, 1998, ISBN 0-471-98232-6 (mathematical)</ref>
| |
| | |
| Analyzing and quantifying the observation that the simplex algorithm is efficient in practice, even though it has exponential worst-case complexity, has led to the development of other measures of complexity. The simplex algorithm has polynomial-time [[Best, worst and average case|average-case complexity]] under various [[probability distribution]]s, with the precise average-case performance of the simplex algorithm depending on the choice of a probability distribution for the [[random matrix|random matrices]].<ref name="Schrijver"/><ref name="Borgwardt">The simplex algorithm takes on average ''D'' steps for a cube. {{harvtxt|Borgwardt|1987}}: {{cite book|last=Borgwardt|first=Karl-Heinz|title=The simplex method: A probabilistic analysis|series=Algorithms and Combinatorics (Study and Research Texts)|volume=1|publisher=Springer-Verlag|location=Berlin|year=1987|pages=xii+268|isbn=3-540-17096-0|mr=868467|ref=harv}}</ref> Another approach to studying "[[porous set|typical phenoma]]" uses [[Baire category theory]] from [[general topology]], and to show that (topologically) "most" matrices can be solved by the simplex algorithm in a polynomial number of steps. Another method to analyze the performance of the simplex algorithm studies the behavior of worst-case scenarios under small perturbation – are worst-case scenarios stable under a small change (in the sense of [[structural stability]]), or do they become tractable? Formally, this method uses random problems to which is added a [[normal distribution|Gaussian]] [[random vector]] ("[[smoothed complexity]]").<ref>{{Cite book | last1=Spielman | first1=Daniel | last2=Teng | first2=Shang-Hua | author2-link=Shanghua Teng | title=Proceedings of the Thirty-Third Annual ACM Symposium on Theory of Computing | publisher=ACM | isbn=978-1-58113-349-3 | doi=10.1145/380752.380813 | year=2001 | chapter=Smoothed analysis of algorithms: why the simplex algorithm usually takes polynomial time| pages=296–305 | arxiv=cs/0111050}}</ref>
| |
| | |
| ==Other algorithms==
| |
| Other algorithms for solving linear-programming problems are described in the [[linear programming|linear-programming]] article. Another basis-exchange pivoting algorithm is the [[criss-cross algorithm]].<ref>{{cite journal|last1=Terlaky|first1=Tamás|last2=Zhang|first2=Shu Zhong|title=Pivot rules for linear programming: A Survey on recent theoretical developments|issue=1|journal=Annals of Operations Research|volume=46–47|year=1993|pages=203–233|doi=10.1007/BF02096264|mr=1260019|id = {{citeseerx|10.1.1.36.7658}} |publisher=Springer Netherlands|issn=0254-5330|unused_data=<!-- authorlink1=Tamás Terlaky -->}}</ref><ref>{{cite article|first1=Komei|last1=Fukuda|first2=Tamás|last2=Terlaky|title=Criss-cross methods: A fresh view on pivot algorithms |journal=Mathematical Programming: Series B|volume=79|number=1—3|pages=369–395|editors=Thomas M. Liebling and Dominique de Werra|publisher=North-Holland Publishing Co. |location=Amsterdam|year=1997|doi=10.1007/BF02614325|MR=1464775}}</ref> There are polynomial-time algorithms for linear programming that use interior point methods: These include [[Khachiyan]]'s [[ellipsoidal algorithm]], [[Karmarkar]]'s [[Karmarkar's algorithm|projective algorithm]], and [[interior point method|path-following algorithm]]s.<ref name="Vanderbei"/>
| |
| | |
| ==Linear-fractional programming==
| |
| {{Main|Linear-fractional programming}}
| |
| [[Linear-fractional programming]] (LFP) is a generalization of [[linear programming]] (LP). Where the objective function of linear programs are [[linear functional|linear functions]], the objective function of a linear-fractional program is a ratio of two linear functions. In other words, a linear program is a fractional-linear program in which the denominator is the constant function having the value one everywhere. A linear-fractional program can be solved by a variant of the simplex algorithm.<ref>{{harvtxt|Murty|1983|loc=Chapter 3.20 (pp. 160–164) and pp. 168 and 179}}</ref><ref>Chapter five: {{cite book|last=Craven|first=B. D.|title=Fractional programming|series=Sigma Series in Applied Mathematics|volume=4|publisher=Heldermann Verlag|location=Berlin|year=1988|pages=145|isbn=3-88538-404-3|mr=949209}}</ref><ref>{{cite journal|last1=Kruk|first1=Serge|last2=Wolkowicz|first2=Henry|title=Pseudolinear programming|journal=[[SIAM Review]]|volume=41|year=1999|issue=4|pages=795–805|mr=1723002|jstor=2653207|doi=10.1137/S0036144598335259}}
| |
| </ref><ref>{{cite journal|last1=Mathis|first1=Frank H.|last2=Mathis|first2=Lenora Jane|title=A nonlinear programming algorithm for hospital management|journal=[[SIAM Review]]|volume=37 |year=1995 |issue=2 |pages=230–234|mr=1343214|jstor=2132826|doi=10.1137/1037046}}
| |
| </ref> They can be solved by the [[criss-cross algorithm]], also.<ref>{{cite journal|title=The finite criss-cross method for hyperbolic programming|journal=European Journal of Operational Research|volume=114|issue=1|
| |
| pages=198–214|year=1999|issn=0377-2217|doi=10.1016/S0377-2217(98)00049-6|url=http://www.sciencedirect.com/science/article/B6VCT-3W3DFHB-M/2/4b0e2fcfc2a71e8c14c61640b32e805a|first1=Tibor|last1=Illés|first2=Ákos|last2=Szirmai|first3=Tamás|last3=Terlaky|ref=harv|id=[http://www.cas.mcmaster.ca/~terlaky/files/dut-twi-96-103.ps.gz PDF preprint]}}</ref>
| |
| | |
| == See also ==
| |
| * [[Criss-cross algorithm]]
| |
| * [[Fourier–Motzkin elimination]]
| |
| * [[Karmarkar's algorithm]]
| |
| * [[Nelder–Mead method|Nelder–Mead simplicial heuristic]]
| |
| * [[Bland's rule|Pivoting rule of Bland, which avoids cycling]]
| |
| | |
| ==Notes==
| |
| {{reflist|2}}
| |
| | |
| ==References==
| |
| * {{cite book|last=Murty|first=Katta G.|authorlink=Katta G. Murty|title=Linear programming|publisher=John Wiley & Sons, Inc.|location=New York|year=1983|pages=xix+482|isbn=0-471-09725-X|mr=720547|ref=harv}}
| |
| | |
| == Further reading ==
| |
| These introductions are written for students of [[computer science]] and [[operations research]]:
| |
| *[[Thomas H. Cormen]], [[Charles E. Leiserson]], [[Ronald L. Rivest]], and [[Clifford Stein]]. ''Introduction to Algorithms'', Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Section 29.3: The simplex algorithm, pp. 790–804.
| |
| * Frederick S. Hillier and Gerald J. Lieberman: ''Introduction to Operations Research'', 8th edition. McGraw-Hill. ISBN 0-07-123828-X
| |
| * {{cite book|title=Optimization in operations research|first=Ronald L.|last=Rardin|year=1997|publisher=Prentice Hall|pages=919|isbn=0-02-398415-5}}
| |
| | |
| ==External links==
| |
| {{wikibooks|Operations Research|The Simplex Method}}
| |
| *[http://www.isye.gatech.edu/~spyros/LP/LP.html An Introduction to Linear Programming and the Simplex Algorithm] by Spyros Reveliotis of the Georgia Institute of Technology.
| |
| *Greenberg, Harvey J., ''Klee-Minty Polytope Shows Exponential Time Complexity of Simplex Method'' University of Colorado at Denver (1997) [http://glossary.computing.society.informs.org/notes/Klee-Minty.pdf PDF download]
| |
| *(dead link) [http://www.math.cuhk.edu.hk/course/math3210/lpch3.pdf Simplex Method] A tutorial for Simplex Method with examples (also two-phase and M-method).
| |
| *[http://math.uww.edu/~mcfarlat/s-prob.htm Example of Simplex Procedure for a Standard Linear Programming Problem] by Thomas McFarland of the University of Wisconsin-Whitewater.
| |
| *[http://www.phpsimplex.com/simplex/simplex.htm?l=en PHPSimplex: online tool to solve Linear Programming Problems] by Daniel Izquierdo and Juan José Ruiz of the University of Málaga (UMA, Spain)
| |
| | |
| {{Optimization algorithms|convex}}
| |
| {{Mathematical programming}}
| |
| | |
| {{DEFAULTSORT:Simplex Algorithm}}
| |
| [[Category:Optimization algorithms and methods]]
| |
| [[Category:Operations research]]
| |
| [[Category:1947 in computer science]]
| |
| [[Category:Exchange algorithms]]
| |
| [[Category:Linear programming]]
| |