 
               
 
               You can also solve the oil refinery problem described in Example 10.1 by using the interior point solver. You can create the input data set from an external MPS-format flat file by using the SAS macro %MPS2SASD or SAS DATA step code, both of which are described in Getting Started: OPTLP Procedure. You can use the following SAS code to solve the problem:
proc optlp data=ex1 objsense = max algorithm = ip primalout = ex1ipout dualout = ex1idout logfreq = 1; run;
The optimal solution is displayed in Output 10.2.1.
Output 10.2.1: Interior Point Solver: Primal Solution Output
| The OPTLP Procedure | 
| Primal Solution | 
| Obs | Objective Function ID | RHS ID | Variable Name | Variable Type | Objective Coefficient | Lower Bound | Upper Bound | Variable Value | Variable Status | Reduced Cost | 
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | profit | a_l | D | -175 | 0 | 110 | 110.000 | . | ||
| 2 | profit | a_h | D | -165 | 0 | 165 | 0.000 | . | ||
| 3 | profit | br | D | -205 | 0 | 80 | 80.000 | . | ||
| 4 | profit | na_l | N | 0 | 0 | 1.7977E308 | 7.450 | . | ||
| 5 | profit | na_i | N | 0 | 0 | 1.7977E308 | 21.800 | . | ||
| 6 | profit | h_o | N | 0 | 0 | 1.7977E308 | 77.300 | . | ||
| 7 | profit | j_1 | N | 350 | 0 | 1.7977E308 | 72.667 | . | ||
| 8 | profit | j_2 | N | 350 | 0 | 1.7977E308 | 33.042 | . | 
The iteration log is displayed in Output 10.2.2.
Output 10.2.2: Log: Solution Progress
| The OPTLP Procedure | 
| NOTE: The problem EX1 has 8 variables (0 free, 0 fixed). | 
| NOTE: The problem has 6 constraints (3 LE, 3 EQ, 0 GE, 0 range). | 
| NOTE: The problem has 19 constraint coefficients. | 
| WARNING: The objective sense has been changed to maximization. | 
| NOTE: The LP presolver value AUTOMATIC is applied. | 
| NOTE: The LP presolver removed 3 variables and 3 constraints. | 
| NOTE: The LP presolver removed 6 constraint coefficients. | 
| NOTE: The presolved problem has 5 variables, 3 constraints, and 13 constraint | 
| coefficients. | 
| NOTE: The LP solver is called. | 
| NOTE: The Interior Point algorithm is used. | 
| NOTE: The deterministic parallel mode is enabled. | 
| NOTE: The Interior Point algorithm is using up to 4 threads. | 
| Primal Bound Dual | 
| Iter Complement Duality Gap Infeas Infeas Infeas | 
| 0 6.20283e+03 5.78876e+02 5.68712e-15 0.00000e+00 3.17241e+01 | 
| 1 2.09898e+03 1.31204e+02 1.46482e-14 2.87422e-17 1.00841e+01 | 
| 2 5.67772e+01 3.75090e+01 1.79424e-14 6.40072e-17 3.01831e-01 | 
| 3 1.65558e+00 2.91985e-01 2.62897e-14 2.99468e-17 4.53328e-02 | 
| 4 5.90964e-01 1.08785e-01 1.56135e-14 2.02409e-17 4.53328e-04 | 
| 5 6.05069e-03 1.01179e-03 1.87802e-14 2.50428e-17 4.57642e-06 | 
| 6 6.05112e-05 1.01093e-05 1.68631e-14 1.84100e-17 4.57643e-08 | 
| 7 6.05112e-07 1.01092e-07 1.74638e-14 4.48274e-17 4.57643e-10 | 
| NOTE: Optimal. | 
| NOTE: Objective = 1347.91653. | 
| NOTE: The Interior Point solve time is 0.00 seconds. | 
| NOTE: The data set WORK.EX1IPOUT has 8 observations and 10 variables. | 
| NOTE: The data set WORK.EX1IDOUT has 6 observations and 10 variables. |