Finding an Irreducible Infeasible Set (nlpse07)

/***************************************************************/
/*                                                             */
/*          S A S   S A M P L E   L I B R A R Y                */
/*                                                             */
/*     NAME: nlpse07                                           */
/*   TITLE: Finding an Irreducible Infeasible Set (nlpse07)    */
/* PRODUCT: OR                                                 */
/*  SYSTEM: ALL                                                */
/*    KEYS: OR                                                 */
/*   PROCS: OPTMODEL                                           */
/*    DATA:                                                    */
/*                                                             */
/* SUPPORT:                             UPDATE:                */
/*     REF:                                                    */
/*    MISC: Example 7 from the Nonlinear Programming Solver    */
/*          chapter of Mathematical Programming.               */
/*                                                             */
/***************************************************************/

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;

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;

/* 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;
quit;