The Revised Simplex Method: Combinatorial Problem Solving (CPS)
The Revised Simplex Method: Combinatorial Problem Solving (CPS)
The Revised Simplex Method: Combinatorial Problem Solving (CPS)
■ Some observations:
◆ But ...
■ For pricing only one negative reduced cost is needed
■ For ratio test, only
◆ the column of the chosen non-basic variable in the tableau, and
◆ the current basic solution
are needed
2 / 17
Revised Simplex Method
■ Idea: do not keep a representation of the full tableau, only B −1
■ Advantages over the tableau version:
3 / 17
Revised Simplex Method
■ Idea: do not keep a representation of the full tableau, only B −1
■ Advantages over the tableau version:
3 / 17
Basic Solution
■ Let us see how the basic solution is expressed in terms of B −1
BxB + RxR = b
BxB = b − RxR
xB = B −1 b − B −1 RxR
4 / 17
Basic Solution
■ Let us see how the basic solution is expressed in terms of B −1
BxB + RxR = b
BxB = b − RxR
xB = B −1 b − B −1 RxR
4 / 17
Optimality Condition
■ Let us see now how to express the reduced costs in terms of B −1
xB = B −1 b − B −1 RxR
5 / 17
Optimality Condition
■ Let us see now how to express the reduced costs in terms of B −1
xB = B −1 b − B −1 RxR
5 / 17
Optimality Condition
6 / 17
Cost at Basic Solution
■ Let’s see how to express the value of the cost function at the basic solution
■ We will denote the value of the cost function at the basic solution with z
7 / 17
Cost at Basic Solution
■ Let’s see how to express the value of the cost function at the basic solution
■ We will denote the value of the cost function at the basic solution with z
So dj = cj − π T aj
(and z = π T b)
7 / 17
Improving a Non-Optimal Solution
■ Current value of xq is 0.
We can improve by increasing only this value
while non-negativity constraints of basic variables are satisfied.
8 / 17
Improving a Non-Optimal Solution
■ Current value of xq is 0.
We can improve by increasing only this value
while non-negativity constraints of basic variables are satisfied.
8 / 17
Improving a Non-Optimal Solution
■ Current value of xq is 0.
We can improve by increasing only this value
while non-negativity constraints of basic variables are satisfied.
z(t) =
cT x(t) =
cTB xB (t) + cTR xR (t) =
cTB xB (t) + cq t =
cTB β − tcTB αq + cq t =
cTB β − tcTB B −1 aq + cq t =
z + tdq
9 / 17
Improving a Non-Optimal Solution
■ Recall that xB (t) = β − tαq
■ How can we satisfy the non-negativity constraints of basic variables?
10 / 17
Improving a Non-Optimal Solution
■ Recall that xB (t) = β − tαq
■ How can we satisfy the non-negativity constraints of basic variables?
■ Basic variables have indices B = (k1 , ..., km )
■ Let i ∈ {1, ..., m}. The i-th basic variable is xki
■ Value of xki as a function of t is the i-th component of xB (t): βi − tαqi ,
where βi is the i-th component of β and αqi is the i-th component of αq
10 / 17
Improving a Non-Optimal Solution
■ Recall that xB (t) = β − tαq
■ How can we satisfy the non-negativity constraints of basic variables?
■ Basic variables have indices B = (k1 , ..., km )
■ Let i ∈ {1, ..., m}. The i-th basic variable is xki
■ Value of xki as a function of t is the i-th component of xB (t): βi − tαqi ,
where βi is the i-th component of β and αqi is the i-th component of αq
■ We need βi − tαqi ≥ 0 ⇐⇒ βi ≥ tαqi
10 / 17
Improving a Non-Optimal Solution
■ Recall that xB (t) = β − tαq
■ How can we satisfy the non-negativity constraints of basic variables?
■ Basic variables have indices B = (k1 , ..., km )
■ Let i ∈ {1, ..., m}. The i-th basic variable is xki
■ Value of xki as a function of t is the i-th component of xB (t): βi − tαqi ,
where βi is the i-th component of β and αqi is the i-th component of αq
■ We need βi − tαqi ≥ 0 ⇐⇒ βi ≥ tαqi
■ The best improvement is achieved with the strongest of the upper bounds:
βp
■ We say the p-th basic variable xkp is blocking or tight when θ = αpq
.
Then αqp is the pivot 10 / 17
Improving a Non-Optimal Solution
1. If θ = +∞
(there is no upper bound, i.e., no i such that 1 ≤ i ≤ m and αqi > 0):
11 / 17
Improving a Non-Optimal Solution
1. If θ = +∞
(there is no upper bound, i.e., no i such that 1 ≤ i ≤ m and αqi > 0):
11 / 17
Update
■ New basic indices: B̄ = (k1 , . . . , kp−1 , q, kp+1 . . . , km )
12 / 17
Algorithmic Description
4. Update:
B̄ = B − {kp } ∪ {q} B̄ = B + (aq − akp )eTp
β̄p = θ, β̄i = βi − θαqi if i 6= p z̄ = z + θdq
Go to 2.
13 / 17
Updating Matrix Inverse
■ Actually what we really care about is B −1 , not B
We need it for computing π = cTB B −1 and αq = B −1 aq at each step
(and also β = B −1 b in the initialization)
14 / 17
Updating Matrix Inverse
■ Let us make a diversion into linear algebra
■ Let b1 , ..., bm be the columns of an invertible matrix B
Pm
Let a, α be such that a = Bα = i=1 αi bi
Let p be such that 1 ≤ p ≤ m
■ Ba = (b1 , . . . , bp−1 , a, bp+1 , . . . , bm ). Want to compute Ba−1
15 / 17
Updating Matrix Inverse
■ Let us make a diversion into linear algebra
■ Let b1 , ..., bm be the columns of an invertible matrix B
Pm
Let a, α be such that a = Bα = i=1 αi bi
Let p be such that 1 ≤ p ≤ m
■ Ba = (b1 , . . . , bp−1 , a, bp+1 , . . . , bm ). Want to compute Ba−1
■ Note αp 6= 0 as otherwise rank(Ba ) < m.
P P
Then a = αp bp + i6=p αi bi ⇒ bp = α1p a + i6=p −α
αp
i
bi
T
−α1 −αp−1 −αp+1 −αm
■ Let η T = αp ,..., αp , α1p , αp ,..., αp .
Then bp = Ba η
■ Space is saved:
✗ Tableau: even if A sparse, tableau tends to get filled
✓ Revised: sparsity of A can be exploited for storage,
and pivots can be chosen to represent B −1 compactly
17 / 17