- Procedure GMP::SolverSession::GetIIS(solverSession, rowSet, colSet)
GMP::SolverSession::GetIIS
The procedure GMP::SolverSession::GetIIS
returns an
irreducible infeasible set (IIS) for an infeasible math program, by
returning the numbers of the rows and columns that are part of the IIS.
GMP::SolverSession::GetIIS(
solverSession, ! (input) a solver session
rowSet, ! (output) a subset of Integers
colSet ! (output) a subset of Integers
)
Arguments
- solverSession
An element in the set
AllSolverSessions
.- rowSet
A subset of the set
Integers
, representing a set of row numbers.- colSet
A subset of the set
Integers
, representing a set of column numbers.
Return Value
The procedure returns 1 on success, or 0 otherwise.
Note
This procedure is only supported by BARON, CPLEX and Gurobi. In case of BARON, the BARON option
Compute IIS
should be set to a non-default value.Calculating the IIS procedure can be time consuming, especially if the model contains binary or integer variables.
Example
To use GMP::SolverSession::GetIIS
we declare the following identifiers (in ams format):
ElementParameter myGMP {
Range: AllGeneratedMathematicalPrograms;
}
ElementParameter session {
Range: AllSolverSessions;
}
ElementParameter ProgramStatus {
Range: AllSolutionStates;
}
Set RowSet {
SubsetOf: Integers;
Index: rr;
}
Set ColSet {
SubsetOf: Integers;
Index: cc;
}
StringParameter name;
To retrieve the IIS, and print the rows and columns that are part of the IIS, we can use:
myGMP := GMP::Instance::Generate( MP );
session := GMP::Instance::CreateSolverSession( myGMP );
GMP::SolverSession::Execute( session );
ProgramStatus := GMP::SolverSession::GetProgramStatus( session );
if ( ProgramStatus = 'Infeasible' or ProgramStatus = 'InfeasibleOrUnbounded' ) then
GMP::SolverSession::GetIIS( session, RowSet, ColSet );
for ( rr ) do
name := GMP::Row::GetName( myGMP, rr );
display name;
endfor;
for ( cc ) do
name := GMP::Column::GetName( myGMP, cc );
display name;
endfor;
else
GMP::Solution::RetrieveFromSolverSession( session, 1 );
GMP::Solution::SendToModel( myGMP, 1 );
endif;
GMP::Instance::Delete( myGMP );