The simplex algorithm. The simplex algorithm is the classical method for solving linear programs. Its running time is not polynomial in the worst case. It does yield insight into linear programs, however, and is often remarkably fast in practice.
2x + y - z = 8 ----- (1)
-3x - y - 2z = -11 ----- (2)
-2x + y + 2z = -3 ----- (3)
Eliminate x in both (2) and (3):
(2) + 3/2(1) (2)
0x + 1/2 y + 1/2 z = 1 ----(2)
(3) + (1) (3)
0x + 2 y + z = 5 ----(3)
(3) - 4 (2) (3)
0x + 0y – z = 1 -----(3)
We have that (upper triangle)
2x + y – z = 8 ----(1)
0x + 1/2 y + 1/2 z = 1 ----(2)
0x + 0y – z = 1 ----(3)
Then, we have z = -1 from (3), y = 3 from (2) and z=-1, and x = 2 from (1) and y=3,z=-1
We first convert the linear program from standard form into slackform.
Convert standard form to slack form equations:
X4 = 30 – x1 – x2 – 3x3
X5 = 24 – 2x1 – 2x2 – 5x3
X6 = 36 – 4x1 – x2 – 2x3
Clearly, slack variables equations: x4 , x5 ,x6 must be non-negative, and they are called basic variables, and the original variables
x1 , x2 ,x3 are called non-basic variables.
Therefore, we have
x1 , x2 ,x3 , x4 , x5 ,x6 >= 0
2. Let the object function be in slack form.
z = 0 + 2x1 – 3x2 + 3x3
The LP in equations: Slack form
as well as the value of object function z.
1.We choose a non-basic variable with positive
coefficient in objective function.
2. We increase the value of this variable to a
limit that will violate any of these constraints.
3. Then the non-basic variable as entering
variable and the basic variable as leaving
variable in this constraint will exchange places. This is pivoting.
different. If we set zero to non-basic variables
and calculate the values for basic variables and finally find the value for z, we have
(9, 0, 0, 21, 6, 0) and z = (3*9) + (1*0) + (2*0) = 27.
z= 111/4. (27.75)
The only way to increase the value of z
is to increase x2. since it is positive term.
form with the final solution for x1 , x2 ,x3
= 8, 4, 0, we have that
x4 , x5 ,x6 = 18, 0, 0. That is, only slack
variable x4has big slack.
The coefficients intermediate form and the solution may also be real numbers.
PIVOT(N, B, A, b, c, v, l, e) in which
ale ≠ 0. Let the values returned fromthe call be , and let denote the basic solution after the call. Then
• How do we determine if a linear program is feasible?
• What do we do if the linear program is feasible, but the initial basic solution is not feasible?
• How do we determine if a linear program is unbounded?
• How do we choose the entering and leaving variables?
Sumj=1 to n aij xj - x0 <= bi for i=1,…, m
xj >= 0 for j=0,…,n.
Then, L is feasible iff the optimal objective solution for Lmaxis 0.
negative the coefficients of the objective
function to obtain the maximize form.
replace occurrences of xi with x’I - x’’I, and
add constraints: x’I >= 0 and x’’I >= 0 .
‘>= ‘ and ‘<=‘
the constraint by -1 to obtain a ‘<=‘ form.
In line 1, it calls the procedure INITIALIZESIMPLEX(A, b, c), described above, which either determines that the linear program isinfeasible or returns a slack form for which the basic solution is feasible.
The main part of the algorithm is given in the while loop in lines 2–11. If all the coefficients in the objective function are negative, then the while loop terminates. Otherwise, in line 3, we select a variable xewhose coefficient in the objective function is positive to be the entering variable.
by setting all the nonbasic variables to 0 and each basic variable to bi .
Finally, we can show that the solution returned is optimal.
If SIMPLEX returns "unbounded" in line 10, the linear program is unbounded.
Althoughexplicitly maintaining A, b, c, and v is essential for the efficient implementation of the simplex algorithm, it is not strictly necessary.
Before proving this fact, we prove a useful algebraic lemma.
Then αi = βifor each i Є I, and γ = 0.
This phenomenon is called degeneracy