CSC 445/545 Notes 3.2: Certificates of Optimality

Student: Solves primal or dual problem whichever is easiest.

Example:

Primal: 9 variables, and 100 equations.

Dual: 100 variables, and  9 equations.
Text: claims that in practice, it is usually best to choose the problem with the least rows.

Student reads both primal and dual solutions from last dictionary.

Certificate: x* and y*, the optimal primal and dual solutions.


Supervisor:

Has certificate plus primal and dual problems.

  1. Check that x* is primal feasible.
  2. Check that y* is dual feasible.
  3. Check cT x* = bT y*.

Above checks guarantee optimality.

Easier usually than solving LP problem.


The problems:
The primal problem:

Maximize  - 3 X1 - 2 X2 

subject to

  1 X1 - 1 X2 <= -3 
- 2 X1 - 1 X2 <= -5 
- 0 X1 - 2 X2 <= -1 
- 1 X1 - 4 X2 <=  0 

X1, X2 >= 0

The dual problem in standard form:

Maximize 3 Y1 + 5 Y2 + 1 Y3 + 0 Y4 

subject to

- 1 Y1 + 2 Y2 + 0 Y3 + 1 Y4 <= 3 
  1 Y1 + 1 Y2 + 2 Y3 + 4 Y4 <= 2

Y1, Y2, Y3, Y4 >= 0


The student notices that the primal has no initial feasible basis so cannot be handled by the code written for the project. So the student solves the dual instead:
The initial dictionary:
Y5= 3.00 +1.00 Y1 -2.00 Y2 +0.00 Y3 -1.00 Y4 
Y6= 2.00 -1.00 Y1 -1.00 Y2 -2.00 Y3 -4.00 Y4 
-------------------------------------------------
z = 0.00 +3.00 Y1 +5.00 Y2 +1.00 Y3 +0.00 Y4 

After  2 pivots:
Y2= 1.67 -0.67 Y3  -1.67 Y4 -0.33 Y5 -0.33 Y6 
Y1= 0.33 -1.33 Y3  -2.33 Y4 +0.33 Y5 -0.67 Y6 
-------------------------------------------------
z = 9.33 -6.33 Y3 -15.33 Y4 -0.67 Y5 -3.67 Y6 

The student guesses that 0.33 really means 1/3 and 0.67 is 2/3. So the certificate passed on the the supervisor is:

Y1= 1/3
Y2= 5/3
Y3= 0
Y4= 0
X1 = -1 (coeff. of Y5 in z row)= 2/3
X2 = -1 (coeff. of Y6 in z row)= 3 2/3 = 11/3

The Supervisor

1. Check if (2/3, 11/3) is primal feasible:


The primal constraints:

  1 X1 - 1 X2 <= -3 
- 2 X1 - 1 X2 <= -5 
- 0 X1 - 2 X2 <= -1 
- 1 X1 - 4 X2 <=  0 

X1, X2 >=  0

Plugging in these values:

  1 (2/3) - 1 (11/3) =  -9/3  <= -3 
- 2 (2/3) - 1 (11/3) = -15/3  <= -5 
- 0 (2/3) - 2 (11/3) = -22/3  <= -1 
- 1 (2/3) - 4 (11/3) = -46/3  <=  0 

2/3, 11/3 >=  0

2. Check if (1/3, 5/3, 0, 0) is dual feasible:

The dual constraints:

- 1 Y1 + 2 Y2 - 0 Y3 + 1 Y4 <=  3 
  1 Y1 + 1 Y2 + 2 Y3 + 4 Y4 <=  2

Y1, Y2, Y3, Y4 >=  0

Plugging in these values:

- 1(1/3) + 2(5/3) - 0(0) + 1(0) = 9/3  <=  3 
  1(1/3) + 1(5/3) + 2(0) + 4(0) = 6/3  <=  2

1/3, 5/3, 0, 0 >=  0

3. Check if the objective function values are the same:

Primal:

-3 X1 -2 X2 = -3(2/3) -2(11/3)= -28/3
The dual problem solved by the program was:
Maximize  3 Y1 + 5 Y2 + 1 Y3 + 0 Y4 

But recall that the problem we really want the solution to is:

Minimize  -3 Y1 - 5 Y2 - 1 Y3 - 0 Y4 
Dual:
 -3(1/3) -5(5/3) -1(0) - 0(0) = -28/3 

Conclusion: