The LP Procedure

Example 6.3 Sensitivity Analysis: Changes in Objective Coefficients

Simple solution of a linear program is often not enough. A manager needs to evaluate how sensitive the solution is to changing assumptions. The LP procedure provides several tools that are useful for what if, or sensitivity, analysis. One tool studies the effects of changes in the objective coefficients.

For example, in the oil blending problem, the cost of crude and the selling price of jet fuel can be highly variable. If you want to know the range over which each objective coefficient can vary without changing the variables in the basis, you can use the RANGEPRICE option in the PROC LP statement.

proc lp data=oil sparsedata 
   rangeprice primalout=solution;
run;

In addition to the Problem and Solution summaries, the LP procedure produces a Price Range Summary, shown in Output 6.3.1.

For each structural variable, the upper and lower ranges of the price (objective function coefficient) and the objective value are shown. The blocking variables, those variables that would enter the basis if the objective coefficient were perturbed further, are also given. For example, the output shows that if the cost of ARABIAN_LIGHT crude were to increase from 175 to 186.6 per unit (remember that you are maximizing profit so the ARABIAN_LIGHT objective coefficient would decrease from -175 to -186.6), then it would become optimal to use less of this crude for any fractional increase in its cost. Increasing the unit cost to 186.6 would drive its reduced cost to zero. Any additional increase would drive its reduced cost negative and would destroy the optimality conditions; thus, you would want to use less of it in your processing. The output shows that, at the point where the reduced cost is zero, you would only be realizing a profit of 268 = 1544 - (110 $\times $ 11.6) and that ARABIAN_LIGHT enters the basis, that is, leaves its upper bound. On the other hand, if the cost of ARABIAN_HEAVY were to decrease to 143.55, you would want to stop using the formulation of 110 units of ARABIAN_LIGHT and 80 units of BREGA and switch to a production scheme that included ARABIAN_HEAVY, in which case the profit would increase from the 1544 level.

Output 6.3.1: Price Range Summary for the Oil Blending Problem

The LP Procedure

Problem Summary
Objective Function Max profit
Rhs Variable _rhs_
Type Variable _type_
Problem Density (%) 45.00
   
Variables Number
   
Non-negative 5
Upper Bounded 3
   
Total 8
   
Constraints Number
   
EQ 5
Objective 1
   
Total 6

Solution Summary

Terminated Successfully
Objective Value 1544
   
Phase 1 Iterations 0
Phase 2 Iterations 5
Phase 3 Iterations 0
Integer Iterations 0
Integer Solutions 0
Initial Basic Feasible Variables 5
Time Used (seconds) 0
Number of Inversions 3
   
Epsilon 1E-8
Infinity 1.797693E308
Maximum Phase 1 Iterations 100
Maximum Phase 2 Iterations 100
Maximum Phase 3 Iterations 99999999
Maximum Integer Iterations 100
Time Limit (seconds) 120

Variable Summary
Col Variable Name Status Type Price Activity Reduced Cost
1 arabian_heavy   UPPERBD -165 0 -21.45
2 arabian_light UPPBD UPPERBD -175 110 11.6
3 brega UPPBD UPPERBD -205 80 3.35
4 heating_oil BASIC NON-NEG 0 77.3 0
5 jet_1 BASIC NON-NEG 300 60.65 0
6 jet_2 BASIC NON-NEG 300 63.33 0
7 naphtha_inter BASIC NON-NEG 0 21.8 0
8 naphtha_light BASIC NON-NEG 0 7.45 0

Constraint Summary
Row Constraint Name Type S/S Col Rhs Activity Dual Activity
1 profit OBJECTVE . 0 1544 .
2 napha_l_conv EQ . 0 0 -60
3 napha_i_conv EQ . 0 0 -90
4 heating_oil_conv EQ . 0 0 -450
5 recipe_1 EQ . 0 0 -300
6 recipe_2 EQ . 0 0 -300

Price Range Analysis
Col Variable Name Minimum Phi Maximum Phi
Price Entering Objective Price Entering Objective
1 arabian_heavy -INFINITY . 1544 -143.55 arabian_heavy 1544
2 arabian_light -186.6 arabian_light 268 INFINITY . INFINITY
3 brega -208.35 brega 1276 INFINITY . INFINITY
4 heating_oil -7.790698 brega 941.77907 71.5 arabian_heavy 7070.95
5 jet_1 290.19034 brega 949.04392 392.25806 arabian_heavy 7139.4516
6 jet_2 290.50992 brega 942.99292 387.19512 arabian_heavy 7066.0671
7 naphtha_inter -24.81481 brega 1003.037 286 arabian_heavy 7778.8
8 naphtha_light -74.44444 brega 989.38889 715 arabian_heavy 6870.75


Note that in the PROC LP statement, the PRIMALOUT= SOLUTION option was given. This caused the procedure to save the optimal solution in a SAS data set named SOLUTION. This data set can be used to perform further analysis on the problem without having to restart the solution process. Example 6.4 shows how this is done. A display of the data follows in Output 6.3.2.

Output 6.3.2: The PRIMALOUT= Data Set for the Oil Blending Problem

Obs _OBJ_ID_ _RHS_ID_ _VAR_ _TYPE_ _STATUS_ _LBOUND_ _VALUE_ _UBOUND_ _PRICE_ _R_COST_
1 profit _rhs_ arabian_heavy UPPERBD   0 0.00 165 -165 -21.45
2 profit _rhs_ arabian_light UPPERBD _UPPER_ 0 110.00 110 -175 11.60
3 profit _rhs_ brega UPPERBD _UPPER_ 0 80.00 80 -205 3.35
4 profit _rhs_ heating_oil NON-NEG _BASIC_ 0 77.30 1.7977E308 0 0.00
5 profit _rhs_ jet_1 NON-NEG _BASIC_ 0 60.65 1.7977E308 300 0.00
6 profit _rhs_ jet_2 NON-NEG _BASIC_ 0 63.33 1.7977E308 300 0.00
7 profit _rhs_ naphtha_inter NON-NEG _BASIC_ 0 21.80 1.7977E308 0 0.00
8 profit _rhs_ naphtha_light NON-NEG _BASIC_ 0 7.45 1.7977E308 0 0.00
9 profit _rhs_ PHASE_1_OBJECTIV OBJECT _DEGEN_ 0 0.00 0 0 0.00
10 profit _rhs_ profit OBJECT _BASIC_ 0 1544.00 1.7977E308 0 0.00