import com.dashoptimization.*;
class IISExample implements XPRSmessageListener
{
public void Run_getIISData(XPRSprob problem, int i)
{
IntHolder ncol = new IntHolder(), nrow = new IntHolder();
problem.getIISData(i, nrow, ncol, null, null, null, null, null, null, null, null);
int[] miisrow = new int[nrow.value];
int[] miiscol = new int[ncol.value];
byte[] constrainttype = new byte[nrow.value];
byte[] colbndtype = new byte[ncol.value];
double[] duals = new double[nrow.value];
double[] rdcs = new double[ncol.value];
byte[] isolationrows = new byte[nrow.value];
byte[] isolationcols = new byte[ncol.value];
problem.getIISData(i, nrow, ncol, miisrow, miiscol, constrainttype, colbndtype, duals, rdcs, isolationrows, isolationcols);
}
public void Run_IISStatus(XPRSprob problem, int i)
{
IntHolder count = new IntHolder();
problem.IISStatus(count, null, null, null, null);
int[] rowsizes = new int[count.value + 1];
int[] colsizes = new int[count.value + 1];
double[] suminfeas = new double[count.value + 1];
int[] numinfeas = new int[count.value + 1];
problem.IISStatus(count, rowsizes, colsizes, suminfeas, numinfeas);
}
public void run (int iMode)
{
try {
XPRSprob problem = new XPRSprob ();
int i = 0;
problem.setIntControl (XPRS.LPLOG, 1);
problem.addMessageListener(this,null);
problem.readProb ("iisexample","");
problem.setIntControl(XPRS.PRESOLVE, -1);
problem.minim ("");
switch(iMode) {
case(0) :
/* Get all iis at once and then iterate through the results */
problem.IISAll();
for(i = 1; i < problem.getIntAttrib(XPRS.NUMIIS); i++) {
Run_getIISData(problem, i);
Run_IISStatus(problem, i);
problem.writeIIS(i, "iis_result" + i, 0);
}
break;
case(1) :
i = 0;
/* Get the iis one at a time */
if(problem.firstIIS(1) == 0) {
do {
i++;
Run_getIISData(problem, i);
Run_IISStatus(problem, i);
problem.writeIIS(i, "iis_result" + i, 0);
} while(problem.nextIIS() == 0);
}
break;
}
problem.removeMessageListener();
} catch(XPRSprobException xpe) {
xpe.printStackTrace();
}
}
public void XPRSmessageEvent(XPRSprob prob,
Object data, String msg, int len, int type)
{
if(msg != null)
System.out.println (msg);
}
public static void main(String [] args)
{
try {
XPRS.init ();
} catch (Exception e) {
System.out.println ("Failed to initialize");
return;
}
try {
IISExample c = new IISExample ();
c.run (0);
c.run (1);
} finally {
XPRS.free ();
}
}
}
|