84 SCIPdebugMsg(
set->scip,
"An IIS for this problem already exists. Removing it before starting search procedure again.\n");
173 for(
i = 0;
i < nconss; ++
i )
193 for( j = 0; j <
nvars; ++j )
213 for( j = 0; j <
nvars; ++j )
229 for(
i = nconss - 1;
i >= 0;
i-- )
231 if(
i == violatingcons )
267 (*iisfinder)->priority = priority;
268 (*iisfinder)->iisfindercopy = iisfindercopy;
269 (*iisfinder)->iisfinderfree = iisfinderfree;
270 (*iisfinder)->iisfinderexec = iisfinderexec;
271 (*iisfinder)->iisfinderdata = iisfinderdata;
280 &(*iisfinder)->priority,
FALSE, priority, INT_MIN/4, INT_MAX/2,
308 iisfindercopy, iisfinderfree, iisfinderexec, iisfinderdata), (
void)
SCIPiisfinderFree(iisfinder,
set, blkmem) );
320 return iisfinder->
name;
349 if(
set->exact_enable )
447 SCIPinfoMessage(iis->
subscip,
NULL,
"Initial problem does not have an infeasible status. Not performing an IIS algorithm.\n");
468 for(
i = 0;
i <
set->niisfinders; ++
i )
471 iisfinder =
set->iisfinders[
i];
506 SCIPdebugMsg(iis->
subscip,
"----- STARTING GREEDY SINGLETON DELETION ALGORITHM. ATTEMPT TO ENSURE IRREDUCIBILITY -----\n");
517 for(
i = nconss -1;
i >= 0; --
i )
524 for( j = 0; j <
nvars; ++j )
536 if( removeunusedvars )
600 return iisfinder->
desc;
613 if( iisfinder->iisfindercopy !=
NULL )
616 SCIP_CALL( iisfinder->iisfindercopy(
set->scip, iisfinder) );
630 if( *iisfinder ==
NULL )
636 if( (*iisfinder)->iisfinderfree !=
NULL )
638 SCIP_CALL( (*iisfinder)->iisfinderfree(
set->scip, *iisfinder) );
701 iisfinder->iisfindercopy = iisfindercopy;
712 iisfinder->iisfinderfree = iisfinderfree;
750 const char* infeasible = iis->
infeasible ?
"yes" :
"no";
786 (*iis)->subscip =
NULL;
787 (*iis)->subscip =
NULL;
788 (*iis)->varsmap =
NULL;
789 (*iis)->conssmap =
NULL;
792 (*iis)->niismessagecalls = 0;
794 (*iis)->infeasible =
FALSE;
795 (*iis)->irreducible =
FALSE;
810 if( (*iis)->subscip !=
NULL )
813 (*iis)->subscip =
NULL;
816 if( (*iis)->varsmap !=
NULL )
819 (*iis)->varsmap =
NULL;
822 if( (*iis)->conssmap !=
NULL )
825 (*iis)->conssmap =
NULL;
828 if( (*iis)->randnumgen !=
NULL )
831 (*iis)->randnumgen =
NULL;
851 if( (*iis)->subscip !=
NULL )
854 (*iis)->subscip =
NULL;
857 if( (*iis)->varsmap !=
NULL )
860 (*iis)->varsmap =
NULL;
863 if( (*iis)->conssmap !=
NULL )
866 (*iis)->conssmap =
NULL;
870 (*iis)->niismessagecalls = 0;
872 (*iis)->infeasible =
FALSE;
873 (*iis)->irreducible =
FALSE;
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
void SCIPclockReset(SCIP_CLOCK *clck)
void SCIPclockFree(SCIP_CLOCK **clck)
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for clocks and timing issues
Constraint handler for linear constraints in their most general form, .
#define SCIP_CALL_FINALLY(x, y)
SCIP_VAR ** SCIPgetVarsLinear(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNVarsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_Real * SCIPgetValsLinear(SCIP *scip, SCIP_CONS *cons)
SCIP_RETCODE SCIPcopyOrig(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
SCIP_RETCODE SCIPcopyParamSettings(SCIP *sourcescip, SCIP *targetscip)
SCIP_RETCODE SCIPfree(SCIP **scip)
SCIP_RETCODE SCIPcreate(SCIP **scip)
SCIP_STATUS SCIPgetStatus(SCIP *scip)
SCIP_STAGE SCIPgetStage(SCIP *scip)
int SCIPgetNOrigConss(SCIP *scip)
SCIP_VAR ** SCIPgetOrigVars(SCIP *scip)
SCIP_CONS ** SCIPgetConss(SCIP *scip)
SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
int SCIPgetNConss(SCIP *scip)
int SCIPgetNOrigVars(SCIP *scip)
SCIP_RETCODE SCIPdelVar(SCIP *scip, SCIP_VAR *var, SCIP_Bool *deleted)
SCIP_CONS ** SCIPgetOrigConss(SCIP *scip)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
SCIP_RETCODE SCIPiisGreedyMakeIrreducible(SCIP_IIS *iis)
void SCIPinfoMessage(SCIP *scip, FILE *file, const char *formatstr,...)
SCIP_RETCODE SCIPgetBoolParam(SCIP *scip, const char *name, SCIP_Bool *value)
SCIP_RETCODE SCIPsetLongintParam(SCIP *scip, const char *name, SCIP_Longint value)
SCIP_RETCODE SCIPsetIntParam(SCIP *scip, const char *name, int value)
SCIP_RETCODE SCIPsetSubscipsOff(SCIP *scip, SCIP_Bool quiet)
SCIP_RETCODE SCIPgetRealParam(SCIP *scip, const char *name, SCIP_Real *value)
SCIP_RETCODE SCIPgetLongintParam(SCIP *scip, const char *name, SCIP_Longint *value)
SCIP_RETCODE SCIPsetBoolParam(SCIP *scip, const char *name, SCIP_Bool value)
SCIP_RETCODE SCIPsetRealParam(SCIP *scip, const char *name, SCIP_Real value)
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
SCIP_CONSHDLR * SCIPconsGetHdlr(SCIP_CONS *cons)
int SCIPconsGetNUses(SCIP_CONS *cons)
SCIP_RETCODE SCIPsetIISfinderPriority(SCIP *scip, SCIP_IISFINDER *iisfinder, int priority)
const char * SCIPiisfinderGetName(SCIP_IISFINDER *iisfinder)
SCIP_IISFINDERDATA * SCIPiisfinderGetData(SCIP_IISFINDER *iisfinder)
int SCIPiisfinderGetPriority(SCIP_IISFINDER *iisfinder)
void SCIPiisfinderSetData(SCIP_IISFINDER *iisfinder, SCIP_IISFINDERDATA *iisfinderdata)
void SCIPiisfinderInfoMessage(SCIP_IIS *iis, SCIP_Bool printheaders)
SCIP_Real SCIPiisfinderGetTime(SCIP_IISFINDER *iisfinder)
const char * SCIPiisfinderGetDesc(SCIP_IISFINDER *iisfinder)
SCIP_RANDNUMGEN * SCIPiisGetRandnumgen(SCIP_IIS *iis)
void SCIPiisAddNNodes(SCIP_IIS *iis, SCIP_Longint nnodes)
SCIP * SCIPiisGetSubscip(SCIP_IIS *iis)
void SCIPiisSetSubscipIrreducible(SCIP_IIS *iis, SCIP_Bool irreducible)
SCIP_Longint SCIPiisGetNNodes(SCIP_IIS *iis)
SCIP_Real SCIPiisGetTime(SCIP_IIS *iis)
SCIP_Bool SCIPiisIsSubscipInfeasible(SCIP_IIS *iis)
void SCIPiisSetSubscipInfeasible(SCIP_IIS *iis, SCIP_Bool infeasible)
SCIP_Bool SCIPiisIsSubscipIrreducible(SCIP_IIS *iis)
SCIP_IIS * SCIPgetIIS(SCIP *scip)
BMS_BLKMEM * SCIPblkmem(SCIP *scip)
SCIP_RETCODE SCIPfreeTransform(SCIP *scip)
SCIP_RETCODE SCIPsolve(SCIP *scip)
SCIP_Longint SCIPgetNTotalNodes(SCIP *scip)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
SCIP_Bool SCIPisSumLT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Bool SCIPisGT(SCIP *scip, SCIP_Real val1, SCIP_Real val2)
SCIP_Real SCIPvarGetLbOriginal(SCIP_VAR *var)
int SCIPvarGetNUses(SCIP_VAR *var)
SCIP_Real SCIPvarGetUbOriginal(SCIP_VAR *var)
SCIP_Bool SCIPvarIsDeletable(SCIP_VAR *var)
SCIP_RETCODE SCIPchgVarObj(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
int SCIPsnprintf(char *t, int len, const char *s,...)
assert(minobj< SCIPgetCutoffbound(scip))
SCIP_RETCODE SCIPiisCreate(SCIP_IIS **iis, SCIP_SET *set, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPiisReset(SCIP_IIS **iis)
SCIP_RETCODE SCIPiisfinderCreate(SCIP_IISFINDER **iisfinder, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, SCIP_DECL_IISFINDERCOPY((*iisfindercopy)), SCIP_DECL_IISFINDERFREE((*iisfinderfree)), SCIP_DECL_IISFINDEREXEC((*iisfinderexec)), SCIP_IISFINDERDATA *iisfinderdata)
void SCIPiisfinderSetPriority(SCIP_IISFINDER *iisfinder, SCIP_SET *set, int priority)
static SCIP_RETCODE checkTrivialInfeas(SCIP *scip, SCIP_Bool *trivial)
void SCIPiisfinderSetCopy(SCIP_IISFINDER *iisfinder,)
SCIP_RETCODE SCIPiisFree(SCIP_IIS **iis, BMS_BLKMEM *blkmem)
static SCIP_RETCODE createSubscipIIS(SCIP_SET *set, SCIP_IIS *iis, SCIP_Real timelim, SCIP_Longint nodelim, SCIP_Bool *success)
void SCIPiisfinderEnableOrDisableClocks(SCIP_IISFINDER *iisfinder, SCIP_Bool enable)
void SCIPiisfinderSetFree(SCIP_IISFINDER *iisfinder,)
SCIP_RETCODE SCIPiisfinderFree(SCIP_IISFINDER **iisfinder, SCIP_SET *set, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPiisfinderCopyInclude(SCIP_IISFINDER *iisfinder, SCIP_SET *set)
SCIP_RETCODE SCIPiisGenerate(SCIP_SET *set)
static SCIP_RETCODE doIISfinderCreate(SCIP_IISFINDER **iisfinder, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, SCIP_DECL_IISFINDERCOPY((*iisfindercopy)), SCIP_DECL_IISFINDERFREE((*iisfinderfree)), SCIP_DECL_IISFINDEREXEC((*iisfinderexec)), SCIP_IISFINDERDATA *iisfinderdata)
internal methods for IIS finder
greedy deletion and addition filter heuristic to compute IISs
static const char * paramname[]
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
#define BMSallocClearBlockMemory(mem, ptr)
struct BMS_BlkMem BMS_BLKMEM
void SCIPrandomFree(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPrandomCreate(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem, unsigned int initialseed)
internal miscellaneous methods
SCIP_Real SCIPconsGetLhs(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
SCIP_Real SCIPconsGetRhs(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
SCIP_PARAMDATA * SCIPparamGetData(SCIP_PARAM *param)
int SCIPparamGetInt(SCIP_PARAM *param)
internal methods for handling parameter settings
SCIP_RETCODE SCIPsetAddIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
void SCIPsetSortIISfinders(SCIP_SET *set)
unsigned int SCIPsetInitializeRandomSeed(SCIP_SET *set, unsigned int initialseedvalue)
internal methods for global SCIP settings
SCIP_RANDNUMGEN * randnumgen
SCIP_CLOCK * iisfindertime
SCIP_IISFINDERDATA * iisfinderdata
data structures for irreducible infeasible subsystems (IIS)
struct SCIP_Cons SCIP_CONS
#define SCIP_DECL_IISFINDERFREE(x)
#define SCIP_DECL_IISFINDEREXEC(x)
struct SCIP_IISfinder SCIP_IISFINDER
struct SCIP_IISfinderData SCIP_IISFINDERDATA
#define SCIP_DECL_IISFINDERCOPY(x)
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
#define SCIP_DECL_SORTPTRCOMP(x)
struct SCIP_RandNumGen SCIP_RANDNUMGEN
struct SCIP_ParamData SCIP_PARAMDATA
#define SCIP_DECL_PARAMCHGD(x)
enum SCIP_Result SCIP_RESULT
enum SCIP_Retcode SCIP_RETCODE
@ SCIP_STATUS_TOTALNODELIMIT
@ SCIP_STATUS_BESTSOLLIMIT
@ SCIP_STATUS_PRIMALLIMIT
@ SCIP_STATUS_USERINTERRUPT
@ SCIP_STATUS_STALLNODELIMIT
@ SCIP_STATUS_RESTARTLIMIT