The Linear Programming Solver |
This example demonstrates the use of the experimental IIS= option to locate an irreducible infeasible set. Suppose you want to solve a linear program that has the following simple formulation:
It is easy to verify that the following three constraints (or rows) and one variable (or column) bound form an IIS for this problem:
You can formulate the problem and call the LP solver by using the following statements:
proc optmodel presolver=none; /* declare variables */ var x{1..3} >=0; /* upper bound on variable x[3] */ x[3].ub = 3; /* objective function */ min obj = x[1] + x[2] + x[3]; /* constraints */ con c1: x[1] + x[2] >= 10; con c2: x[1] + x[3] <= 4; con c3: 4 <= x[2] + x[3] <= 5; solve with lp / iis = on; print x.status; print c1.status c2.status c3.status;
The notes printed in the log appear in Output 8.4.1.
Output 8.4.1: Finding an IIS: LogThe output of the PRINT statements appears in Output 8.4.2. The value of the .status suffix for the variables x[1] and x[2] is "I," which indicates an infeasible problem. The value I is not one of those assigned by the IIS= option to members of the IIS, however, so the variable bounds for x[1] and x[2] are not in the IIS.
Output 8.4.2: Solution Summary,Variable Status,and Constraint StatusThe value of c3.status is I_U, which indicates that is an element of the IIS. The original constraint is c3, a range constraint with a lower bound of 4. If you choose to remove the constraint , you can change the value of c3.ub to the largest positive number representable in your operating environment. You can specify this number by using the MIN aggregation expression in the OPTMODEL procedure. See "MIN Aggregation Expression" for details.
The modified LP problem is specified and solved by adding the following lines to the original PROC OPTMODEL call.
/* relax upper bound on constraint c3 */ c3.ub = min{{}}0; solve with lp / iis = on; /* print solution */ print x;
Because one element of the IIS has been removed, the modified LP problem should no longer contain the infeasible set. Due to the size of this problem, there should be no additional irreducible infeasible sets.
The notes shown in Output 8.4.3 are printed to the log.
Output 8.4.3: Infeasibility Removed: Log
|
The solution summary and primal solution are displayed in Output 8.4.4.
Output 8.4.4: Infeasibility Removed: Solution
Copyright © 2008 by SAS Institute Inc., Cary, NC, USA. All rights reserved.