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 5.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 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 5.3.1: Price Range Summary for the Oil Blending Problem
Problem Summary  

Objective Function  Max profit 
Rhs Variable  _rhs_ 
Type Variable  _type_ 
Problem Density (%)  45.00 
Variables  Number 
Nonnegative  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  1E8 
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  NONNEG  0  77.3  0 
5  jet_1  BASIC  NONNEG  300  60.65  0 
6  jet_2  BASIC  NONNEG  300  63.33  0 
7  naphtha_inter  BASIC  NONNEG  0  21.8  0 
8  naphtha_light  BASIC  NONNEG  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 5.4 shows how this is done. A display of the data follows in Output 5.3.2.
Output 5.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  NONNEG  _BASIC_  0  77.30  1.7977E308  0  0.00 
5  profit  _rhs_  jet_1  NONNEG  _BASIC_  0  60.65  1.7977E308  300  0.00 
6  profit  _rhs_  jet_2  NONNEG  _BASIC_  0  63.33  1.7977E308  300  0.00 
7  profit  _rhs_  naphtha_inter  NONNEG  _BASIC_  0  21.80  1.7977E308  0  0.00 
8  profit  _rhs_  naphtha_light  NONNEG  _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 