This example demonstrates the use of the IIS= option to locate an irreducible infeasible set. Suppose you have the following nonlinear programming problem:
It is easy to verify that the following three linear constraints and one variable bound form an IIS for this problem:
You can formulate the problem and call the NLP solver by using the following statements:
proc optmodel; /* declare variables */ var x{1..3} >= 0; /* upper bound on variable x[3] */ x[3].ub = 3; /* objective function */ min f = x[1]^4 + x[2]^4 + x[3]^4; /* constraints */ con c1: x[1] + x[2] >= 10; con c2: x[1] + x[3] <= 4; con c3: 4 <= x[2] + x[3] <= 5; con c4: x[1]^2 + x[3] <= 5; solve with nlp / iis = on; print x.status; print c1.status c2.status c3.status; quit;
The SAS log output is shown in Output 10.7.1. Note that the PROC OPTMODEL presolver is disabled because the IIS= option is enabled. Also, a warning message is displayed to alert the user that the nonlinear constraints are ignored for the purpose of detecting an IIS.
Output 10.7.1: Finding an IIS: Original Problem
NOTE: The OPTMODEL presolver is disabled when the IIS= option is enabled. |
NOTE: Problem generation will use 4 threads. |
NOTE: The problem has 3 variables (0 free, 0 fixed). |
NOTE: The problem has 3 linear constraints (1 LE, 0 EQ, 1 GE, 1 range). |
NOTE: The problem has 6 linear constraint coefficients. |
NOTE: The problem has 1 nonlinear constraints (1 LE, 0 EQ, 0 GE, 0 range). |
WARNING: The nonlinear constraints are ignored because the IIS= option is |
enabled. |
NOTE: The NLP solver is called. |
NOTE: The IIS= option is enabled. |
Objective |
Phase Iteration Value Time |
P 1 1 1.400000E+01 0 |
P 1 3 9.999420E-01 0 |
NOTE: Applying the IIS sensitivity filter. |
NOTE: The sensitivity filter removed 1 constraints and 3 variable bounds. |
NOTE: Applying the IIS deletion filter. |
NOTE: Processing constraints. |
Processed Removed Time |
0 0 0 |
1 0 0 |
2 0 0 |
3 0 0 |
NOTE: Processing variable bounds. |
Processed Removed Time |
0 0 0 |
1 0 0 |
2 0 0 |
3 0 0 |
NOTE: The deletion filter removed 0 constraints and 0 variable bounds. |
NOTE: The IIS= option found this problem to be infeasible. |
NOTE: The IIS= option found an irreducible infeasible set with 1 variables and |
3 constraints. |
NOTE: The IIS solve time is 0.02 seconds. |
The "Solution Summary" table and the output of the PRINT statements appear in Output 10.7.2.
Output 10.7.2: Solution Summary and PRINT Statement Output
The "Solution Summary" table shows that the problem is infeasible. As you can see, the lower bound of variable , the lower bound of constraint c1
, and the upper bounds of constraints c2
and c3
form an IIS.
Making any of the components in the preceding IIS nonbinding removes the infeasibility from the IIS. Because there could be
multiple IISs, you would want to remove the infeasibility from the preceding IIS and call the NLP solver with the IIS= option
enabled again to see whether there is any other IIS. The following statements show how to modify the original PROC OPTMODEL
statements to set the upper bound of constraint c3
to infinity, represented by CONSTANT(’BIG’), and invoke the NLP IIS detection:
/* relax upper bound on constraint c3 */ c3.ub = constant('BIG'); solve with nlp / iis = on; print x.status; print c1.status c2.status c3.status;
The SAS log output for the modified problem is shown in Output 10.7.3.
Output 10.7.3: Finding an IIS: Modified Problem
NOTE: The OPTMODEL presolver is disabled when the IIS= option is enabled. |
NOTE: Problem generation will use 4 threads. |
NOTE: The problem has 3 variables (0 free, 0 fixed). |
NOTE: The problem has 3 linear constraints (1 LE, 0 EQ, 2 GE, 0 range). |
NOTE: The problem has 6 linear constraint coefficients. |
NOTE: The problem has 1 nonlinear constraints (1 LE, 0 EQ, 0 GE, 0 range). |
WARNING: The nonlinear constraints are ignored because the IIS= option is |
enabled. |
NOTE: The NLP solver is called. |
NOTE: The IIS= option is enabled. |
Objective |
Phase Iteration Value Time |
P 1 1 1.400000E+01 0 |
P 1 3 0.000000E+00 0 |
NOTE: The IIS= option found this problem to be feasible. |
NOTE: The IIS solve time is 0.02 seconds. |
The "Solution Summary" table and the output of the PRINT statements appear in Output 10.7.4. As you can see, both the variable status and constraint status tables are empty. There is no other IIS, and the problem becomes feasible.
Output 10.7.4: Solution Summary and PRINT Statement Output