0% found this document useful (0 votes)
11 views5 pages

Postopt

Will be helpful.

Uploaded by

pealghosh007
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views5 pages

Postopt

Will be helpful.

Uploaded by

pealghosh007
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

MA3231 Linear Programming

W. J. Martin
September 21, 2018

Post-Optimality Analysis

Overview
We consider the situation where, after an optimal dictionary has been reached, a single piece
of data in the original problem changes. The questions to ask are

1. What effect does this have on the optimal primal and/or dual solution?

2. Within what range of modification does the optimal basis remain optimal?

3. When changes to the data push us outside of this range, what steps should be taken
in order to return to optimality?

We assume that we started with an LP in equality form

max c> x
Ax = b
x ≥ 0

At optimality, the variables are partitioned into basic (B) and non-basic (N ). So the matrix
A, the vector x of variables, and cost vector c are partitioned accordingly
. .. > .. >
A = [ B .. AN ], x> = [ x>
B . xN ], c> = [ c>
B . cN ]

and the same problem is now written

max c> >


B x B + cN x N
BxB + AN xN = b
xB , xN ≥ 0

When we discuss the optimal dictionary, it is convenient to have both notation for its
individual entries and expressions for these entries in terms of the original data. If we wish
to refer to individual entries, we use the “bar” notation:
X
ζ = ζ̄ + c̄j xj
j∈N

X
xi = b̄i − āij xj (i ∈ B)
j∈N

1
(Note that the numbers c̄j are called “reduced costs”, a term that makes sense for minimiza-
tion problems, but seems odd in our maximization setting.)
But we will also need to know how all of these values b̄i , c̄j , āij depend on the original
data, so we keep track of the optimal dictionary in matrix form:
ζ = c> −1
c> > −1

BB b + N − cB B A N x N

xB = B −1 b − B −1 AN xN

It is important here to know how to recover the matrix B −1 from the optimal dictionary,
given the initial basis. For example, when the equality-form problem is obtained from an
LP in standard form by introducing one slack variable for each constraint, then the slack
variables become the initial basis and we recover B −1 column by column from the final
dictionary — the ith column of B −1 is the column of the final dictionary corresponding to
the ith slack variable, where we multiply by −1 in the case that the variable is non-basic.

We consider here only isolated changes in one datum. We will use δ to indicate the
amount of change, û to indicate the modified value of datum u, and ū¯ to indicate the
resulting modification in an entry ū in the optimal dictionary.
We begin with the objective coefficients, then consider the righthand side values, and
then finally the entries of matrix A.

1. For j ∈ N , cj changes to ĉj = cj + δ.


Consequence: Reduced cost c̄j will change.
Compute: c̄¯j = c̄j + δ
Analysis:
case (i): If c̄j + δ ≤ 0 (e.g., when δ ≤ 0), then the current dictionary is still optimal.
The primal solution does not change, nor does the dual solution.
case (ii): If c̄j + δ > 0, then we need to carry out a primal pivot. (Hopefully just one
will do, but not always.)
Range for δ under which optimality of the current dictionary is retained is (−∞, |c̄j |].

2. For i ∈ B, ci changes to ĉi = ci + δ.


Consequence: All reduced costs c̄j can potentially change.
Compute: Let ei denote the vector with rows indexed by basic variables, a one in
position i and zeros elsewhere. With ĉB = cB + δei , we need

ĉ> −1 > −1 > −1


B B AN = cB B AN + δ(ei B AN ).

Ah, but all of the entries of B −1 AN are already in the final dictionary! So we just
update each non-basic reduced cost: c̄¯j = c̄j − δāij (j ∈ N ).

2
Analysis:
case (i): If all c̄¯j ≤ 0, then the current dictionary is still optimal. The primal solution
is the same, but the dual optimal solution y = ĉ> BB
−1
and the optimal objective value
ζ̄ will change.
case (ii): If some c̄¯j > 0, then we need to carry out a primal pivot.
Range for δ under which optimality of the current dictionary is retained is
 
c̄j c̄j
δ ∈ max , min .
āij >0 āij āij <0 āij

(Please do not take my word for it; think about this!)

3. For i ∈ B, bi changes to b̂i = bi + δ.


Consequence: Potentially, all right-hand side values change and feasibility is at
stake.
Compute: Let ei denote the vector with rows indexed by basic variables, a one in po-
sition i and zeros elsewhere. Let v denote the ith column of matrix B −1 (corresponding
to the ith slack variable in the standard form case). Then we have

B −1 b̂ = B −1 (b + δei )
= B −1 b + δv

so that, for each h ∈ B, the updated RHS is


¯b̄ = b̄ + δv .
h h h

Analysis:
case (i): If all ¯b̄h ≥ 0, then the current dictionary is still feasible. The primal solution
will change accordingly and so will ζ̄, but the dual optimal solution y remains the
same.
case (ii): If some ¯b̄ < 0, then we need to carry out a dual simplex pivot. (Hopefully
h
just one will suffice, but not always.)
Range for δ under which optimality of the current dictionary is retained is
 
b̄h b̄h
δ ∈ max − , min − .
vh >0 vh vh <0 vh

(Why?)

3
4. For some i, j, aij changes. First consider j ∈ N and assume aij changes to âij = aij +δ.
Consequence: Since this is an entry of AN , and it’s in column j, only c̄j can change.
We need to see if the dictionary is still optimal.
Compute: We have access to the dual optimal solution y. So we just compute
c̄¯j = cj − y > (ÂN )j = c̄j − δyi
where  is the updated matrix (with only the (i, j)-entry changed and (ÂN )j is short-
hand for the j th column of this matrix. (Why does this simplify? Think about it.)
Analysis:
case (i): If c̄¯j = c̄j − δyi ≤ 0, then the current dictionary is still optimal. The primal
solution does not change, nor does the objective value. But if j was a slack variable,
then the corresponding dual variable will change.
case (ii): If we have c̄¯j > 0, then we need to carry out one or more pivots of the simplex
method.
Range for δ under which optimality of the current dictionary is retained is
 
c̄j
δ∈ ,∞
yi
provided yi > 0.

5. Some aij changes where j is basic.

We Will Not Deal With This Case on Assignments or Tests.

Consequence: Since this is an entry of B, the matrix B −1 changes. So both feasibility


and dual feasibility are at risk.
Compute: Let v denote the j th column of B and let w denote the ith column of B −1 .
We have
B −1 v = ej
B −1 (v + δei ) = ej + δw
so the new B −1 is obtained by adding, for each h, δwh /(1 + δwj ) times row j of the old
B −1 to row h of the old B −1 . (This is just Gaussian elimination, applied to compute
the inverse of a matrix; in our scenario, most of the work is already done, except for
one column.) Call this new inverse matrix B 0 .
Now we must re-compute
¯b̄ = B 0 b, ȳ¯> = c> 0
c> ¯>
BB , N − ȳ AN .

The analysis involves checking both feasibility and dual feasibility. If one is compro-
mised, then we proceed to pivot with either the primal or dual method. If both are
compromised, we need to appeal to some sort of Phase I algorithm.

4
Adding and Removing Constraints and Variables

One more important component of post-optimality analysis is the addition and deletion
of primal and dual variables. In short,

• if after optimizing, you find a constraint that needs to be removed, then you can make
that slack variable basic and subsequently delete that row from the dictionary; you
don’t care anymore whether that variable is positive or negative or zero.

• if after optimizing, you are forced to add a new constraint, just give it a new slack
variable, insert this slack variable into the basis and the equation for it gets appended
to the bottom of the dictionary. Typically, the right-hand side of this equation will
involve other basic variables, so these need to be eliminated before you can proceed
to analyze this dictionary for optimality. Often, an infeasibility results and the dual
simplex method is employed to return to feasibility.

• if after optimizing, a variable is to be eliminated (i.e., forced to zero), just make it


non-basic and delete that column from the dictionary.

• on the other hand, if a new variable is introduced, we have to introduce it carefully


into the set N . Suppose this variable, x0 , has objective coefficient c0 (in terms of the
original data) and the corresponding column of the constraint matrix is a0 . Then put
x0 into N , give it coefficients ā0 = −B −1 a0 in the current optimal dictionary and give
it coefficient c̄0 = c0 + y > ā0 in the objective row. If c̄0 ≤ 0, the the dictionary is still
optimal and the newfangled variable does not enter into the problem. If c̄0 > 0, then
proceed with the simplex method to return to optimality. A key point here is that the
computation c0 − y > a0 quickly decides if this new variable is worth considering (vis a
vis the current dictionary).

That’s all I feel like writing about for now. I hope this helps!

You might also like