Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

public methods related to conflict analysis

Functions

 SCIP_DECL_SORTPTRCOMP (SCIPconflicthdlrComp)
 
 SCIP_DECL_SORTPTRCOMP (SCIPconflicthdlrCompName)
 
SCIP_CONFLICTHDLRDATASCIPconflicthdlrGetData (SCIP_CONFLICTHDLR *conflicthdlr)
 
void SCIPconflicthdlrSetData (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
 
const char * SCIPconflicthdlrGetName (SCIP_CONFLICTHDLR *conflicthdlr)
 
const char * SCIPconflicthdlrGetDesc (SCIP_CONFLICTHDLR *conflicthdlr)
 
int SCIPconflicthdlrGetPriority (SCIP_CONFLICTHDLR *conflicthdlr)
 
SCIP_Bool SCIPconflicthdlrIsInitialized (SCIP_CONFLICTHDLR *conflicthdlr)
 
SCIP_Real SCIPconflicthdlrGetSetupTime (SCIP_CONFLICTHDLR *conflicthdlr)
 
SCIP_Real SCIPconflicthdlrGetTime (SCIP_CONFLICTHDLR *conflicthdlr)
 
SCIP_RETCODE SCIPincludeConflicthdlr (SCIP *scip, const char *name, const char *desc, int priority, SCIP_DECL_CONFLICTCOPY((*conflictcopy)), SCIP_DECL_CONFLICTFREE((*conflictfree)), SCIP_DECL_CONFLICTINIT((*conflictinit)), SCIP_DECL_CONFLICTEXIT((*conflictexit)), SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)), SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)), SCIP_DECL_CONFLICTEXEC((*conflictexec)), SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
 
SCIP_RETCODE SCIPincludeConflicthdlrBasic (SCIP *scip, SCIP_CONFLICTHDLR **conflicthdlrptr, const char *name, const char *desc, int priority, SCIP_DECL_CONFLICTEXEC((*conflictexec)), SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
 
SCIP_RETCODE SCIPsetConflicthdlrCopy (SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTCOPY((*conflictcopy)))
 
SCIP_RETCODE SCIPsetConflicthdlrFree (SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTFREE((*conflictfree)))
 
SCIP_RETCODE SCIPsetConflicthdlrInit (SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINIT((*conflictinit)))
 
SCIP_RETCODE SCIPsetConflicthdlrExit (SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXIT((*conflictexit)))
 
SCIP_RETCODE SCIPsetConflicthdlrInitsol (SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)))
 
SCIP_RETCODE SCIPsetConflicthdlrExitsol (SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)))
 
SCIP_CONFLICTHDLRSCIPfindConflicthdlr (SCIP *scip, const char *name)
 
SCIP_CONFLICTHDLR ** SCIPgetConflicthdlrs (SCIP *scip)
 
int SCIPgetNConflicthdlrs (SCIP *scip)
 
SCIP_RETCODE SCIPsetConflicthdlrPriority (SCIP *scip, SCIP_CONFLICTHDLR *conflicthdlr, int priority)
 
SCIP_Bool SCIPisConflictAnalysisApplicable (SCIP *scip)
 
SCIP_RETCODE SCIPinitConflictAnalysis (SCIP *scip, SCIP_CONFTYPE conftype, SCIP_Bool iscutoffinvolved)
 
SCIP_RETCODE SCIPaddConflictLb (SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
 
SCIP_RETCODE SCIPaddConflictRelaxedLb (SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedlb)
 
SCIP_RETCODE SCIPaddConflictUb (SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx)
 
SCIP_RETCODE SCIPaddConflictRelaxedUb (SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedub)
 
SCIP_RETCODE SCIPaddConflictBd (SCIP *scip, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx)
 
SCIP_RETCODE SCIPaddConflictRelaxedBd (SCIP *scip, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd)
 
SCIP_RETCODE SCIPaddConflictBinvar (SCIP *scip, SCIP_VAR *var)
 
SCIP_RETCODE SCIPisConflictVarUsed (SCIP *scip, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool *used)
 
SCIP_Real SCIPgetConflictVarLb (SCIP *scip, SCIP_VAR *var)
 
SCIP_Real SCIPgetConflictVarUb (SCIP *scip, SCIP_VAR *var)
 
SCIP_RETCODE SCIPanalyzeConflict (SCIP *scip, int validdepth, SCIP_Bool *success)
 
SCIP_RETCODE SCIPanalyzeConflictCons (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success)
 

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP() [1/2]

SCIP_DECL_SORTPTRCOMP ( SCIPconflicthdlrComp  )

compares two conflict handlers w. r. to their priority

Definition at line 337 of file conflict.c.

◆ SCIP_DECL_SORTPTRCOMP() [2/2]

SCIP_DECL_SORTPTRCOMP ( SCIPconflicthdlrCompName  )

comparison method for sorting conflict handler w.r.t. to their name

Definition at line 343 of file conflict.c.

References SCIPconflicthdlrGetName().

◆ SCIPconflicthdlrGetData()

SCIP_CONFLICTHDLRDATA* SCIPconflicthdlrGetData ( SCIP_CONFLICTHDLR conflicthdlr)

gets user data of conflict handler

Parameters
conflicthdlrconflict handler

Definition at line 627 of file conflict.c.

References SCIP_Conflicthdlr::conflicthdlrdata, and NULL.

Referenced by SCIP_DECL_CONFLICTEXEC(), and SCIP_DECL_CONFLICTFREE().

◆ SCIPconflicthdlrSetData()

void SCIPconflicthdlrSetData ( SCIP_CONFLICTHDLR conflicthdlr,
SCIP_CONFLICTHDLRDATA conflicthdlrdata 
)

sets user data of conflict handler; user has to free old data in advance!

Parameters
conflicthdlrconflict handler
conflicthdlrdatanew conflict handler user data

Definition at line 637 of file conflict.c.

References SCIP_Conflicthdlr::conflicthdlrdata, and NULL.

◆ SCIPconflicthdlrGetName()

const char* SCIPconflicthdlrGetName ( SCIP_CONFLICTHDLR conflicthdlr)

◆ SCIPconflicthdlrGetDesc()

const char* SCIPconflicthdlrGetDesc ( SCIP_CONFLICTHDLR conflicthdlr)

gets description of conflict handler

Parameters
conflicthdlrconflict handler

Definition at line 724 of file conflict.c.

References SCIP_Conflicthdlr::desc, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPconflicthdlrGetPriority()

int SCIPconflicthdlrGetPriority ( SCIP_CONFLICTHDLR conflicthdlr)

gets priority of conflict handler

Parameters
conflicthdlrconflict handler

Definition at line 734 of file conflict.c.

References NULL, and SCIP_Conflicthdlr::priority.

Referenced by conflictAddConflictCons(), and SCIP_DECL_DIALOGEXEC().

◆ SCIPconflicthdlrIsInitialized()

SCIP_Bool SCIPconflicthdlrIsInitialized ( SCIP_CONFLICTHDLR conflicthdlr)

is conflict handler initialized?

Parameters
conflicthdlrconflict handler

Definition at line 758 of file conflict.c.

References SCIP_Conflicthdlr::initialized, and NULL.

Referenced by SCIPsetReinsertConshdlrSepaPrio().

◆ SCIPconflicthdlrGetSetupTime()

SCIP_Real SCIPconflicthdlrGetSetupTime ( SCIP_CONFLICTHDLR conflicthdlr)

gets time in seconds used in this conflict handler for setting up for next stages

Parameters
conflicthdlrconflict handler

Definition at line 780 of file conflict.c.

References NULL, SCIPclockGetTime(), and SCIP_Conflicthdlr::setuptime.

◆ SCIPconflicthdlrGetTime()

SCIP_Real SCIPconflicthdlrGetTime ( SCIP_CONFLICTHDLR conflicthdlr)

gets time in seconds used in this conflict handler

Parameters
conflicthdlrconflict handler

Definition at line 790 of file conflict.c.

References SCIP_Conflicthdlr::conflicttime, NULL, and SCIPclockGetTime().

◆ SCIPincludeConflicthdlr()

SCIP_RETCODE SCIPincludeConflicthdlr ( SCIP scip,
const char *  name,
const char *  desc,
int  priority,
SCIP_DECL_CONFLICTCOPY((*conflictcopy))  ,
SCIP_DECL_CONFLICTFREE((*conflictfree))  ,
SCIP_DECL_CONFLICTINIT((*conflictinit))  ,
SCIP_DECL_CONFLICTEXIT((*conflictexit))  ,
SCIP_DECL_CONFLICTINITSOL((*conflictinitsol))  ,
SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol))  ,
SCIP_DECL_CONFLICTEXEC((*conflictexec))  ,
SCIP_CONFLICTHDLRDATA conflicthdlrdata 
)

creates a conflict handler and includes it in SCIP

Note
method has all conflict handler callbacks as arguments and is thus changed every time a new callback is added in future releases; consider using SCIPincludeConflicthdlrBasic() and setter functions if you seek for a method which is less likely to change in future releases
Parameters
scipSCIP data structure
namename of conflict handler
descdescription of conflict handler
prioritypriority of the conflict handler
conflicthdlrdataconflict handler data

Definition at line 6582 of file scip.c.

References checkStage(), FALSE, Scip::mem, Scip::messagehdlr, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconflicthdlrCreate(), SCIPerrorMessage, SCIPfindConflicthdlr(), SCIPsetIncludeConflicthdlr(), Scip::set, SCIP_Mem::setmem, and TRUE.

◆ SCIPincludeConflicthdlrBasic()

SCIP_RETCODE SCIPincludeConflicthdlrBasic ( SCIP scip,
SCIP_CONFLICTHDLR **  conflicthdlrptr,
const char *  name,
const char *  desc,
int  priority,
SCIP_DECL_CONFLICTEXEC((*conflictexec))  ,
SCIP_CONFLICTHDLRDATA conflicthdlrdata 
)

creates a conflict handler and includes it in SCIP with its most fundamental callbacks. All non-fundamental (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter functions SCIPsetConflicthdlrCopy(), SCIPsetConflicthdlrFree(), SCIPsetConflicthdlrInit(), SCIPsetConflicthdlrExit(), SCIPsetConflicthdlrInitsol(), and SCIPsetConflicthdlrExitsol()

Note
if you want to set all callbacks with a single method call, consider using SCIPincludeConflicthdlr() instead
Parameters
scipSCIP data structure
conflicthdlrptrreference to a conflict handler pointer, or NULL
namename of conflict handler
descdescription of conflict handler
prioritypriority of the conflict handler
conflicthdlrdataconflict handler data

Definition at line 6625 of file scip.c.

References checkStage(), FALSE, Scip::mem, Scip::messagehdlr, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconflicthdlrCreate(), SCIPerrorMessage, SCIPfindConflicthdlr(), SCIPsetIncludeConflicthdlr(), Scip::set, SCIP_Mem::setmem, and TRUE.

Referenced by SCIPincludeConshdlrBounddisjunction(), SCIPincludeConshdlrIndicator(), and SCIPincludeConshdlrLogicor().

◆ SCIPsetConflicthdlrCopy()

SCIP_RETCODE SCIPsetConflicthdlrCopy ( SCIP scip,
SCIP_CONFLICTHDLR conflicthdlr,
SCIP_DECL_CONFLICTCOPY((*conflictcopy))   
)

set copy method of conflict handler

Parameters
scipSCIP data structure
conflicthdlrconflict handler

Definition at line 6657 of file scip.c.

References checkStage(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrSetCopy(), and TRUE.

◆ SCIPsetConflicthdlrFree()

SCIP_RETCODE SCIPsetConflicthdlrFree ( SCIP scip,
SCIP_CONFLICTHDLR conflicthdlr,
SCIP_DECL_CONFLICTFREE((*conflictfree))   
)

set destructor of conflict handler

Parameters
scipSCIP data structure
conflicthdlrconflict handler

Definition at line 6673 of file scip.c.

References checkStage(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrSetFree(), and TRUE.

Referenced by SCIPincludeConshdlrBounddisjunction(), and SCIPincludeConshdlrIndicator().

◆ SCIPsetConflicthdlrInit()

SCIP_RETCODE SCIPsetConflicthdlrInit ( SCIP scip,
SCIP_CONFLICTHDLR conflicthdlr,
SCIP_DECL_CONFLICTINIT((*conflictinit))   
)

set initialization method of conflict handler

Parameters
scipSCIP data structure
conflicthdlrconflict handler

Definition at line 6689 of file scip.c.

References checkStage(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrSetInit(), and TRUE.

◆ SCIPsetConflicthdlrExit()

SCIP_RETCODE SCIPsetConflicthdlrExit ( SCIP scip,
SCIP_CONFLICTHDLR conflicthdlr,
SCIP_DECL_CONFLICTEXIT((*conflictexit))   
)

set deinitialization method of conflict handler

Parameters
scipSCIP data structure
conflicthdlrconflict handler

Definition at line 6705 of file scip.c.

References checkStage(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrSetExit(), and TRUE.

◆ SCIPsetConflicthdlrInitsol()

SCIP_RETCODE SCIPsetConflicthdlrInitsol ( SCIP scip,
SCIP_CONFLICTHDLR conflicthdlr,
SCIP_DECL_CONFLICTINITSOL((*conflictinitsol))   
)

set solving process initialization method of conflict handler

Parameters
scipSCIP data structure
conflicthdlrconflict handler

Definition at line 6721 of file scip.c.

References checkStage(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrSetInitsol(), and TRUE.

◆ SCIPsetConflicthdlrExitsol()

SCIP_RETCODE SCIPsetConflicthdlrExitsol ( SCIP scip,
SCIP_CONFLICTHDLR conflicthdlr,
SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol))   
)

set solving process deinitialization method of conflict handler

Parameters
scipSCIP data structure
conflicthdlrconflict handler

Definition at line 6737 of file scip.c.

References checkStage(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrSetExitsol(), and TRUE.

◆ SCIPfindConflicthdlr()

SCIP_CONFLICTHDLR* SCIPfindConflicthdlr ( SCIP scip,
const char *  name 
)

returns the conflict handler of the given name, or NULL if not existing

Parameters
scipSCIP data structure
namename of conflict handler

Definition at line 6753 of file scip.c.

References NULL, SCIPsetFindConflicthdlr(), and Scip::set.

Referenced by SCIPincludeConflicthdlr(), and SCIPincludeConflicthdlrBasic().

◆ SCIPgetConflicthdlrs()

SCIP_CONFLICTHDLR** SCIPgetConflicthdlrs ( SCIP scip)

returns the array of currently available conflict handlers

Parameters
scipSCIP data structure

Definition at line 6766 of file scip.c.

References SCIP_Set::conflicthdlrs, NULL, SCIPsetSortConflicthdlrs(), and Scip::set.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPgetNConflicthdlrs()

int SCIPgetNConflicthdlrs ( SCIP scip)

returns the number of currently available conflict handlers

Parameters
scipSCIP data structure

Definition at line 6779 of file scip.c.

References SCIP_Set::nconflicthdlrs, NULL, and Scip::set.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPsetConflicthdlrPriority()

SCIP_RETCODE SCIPsetConflicthdlrPriority ( SCIP scip,
SCIP_CONFLICTHDLR conflicthdlr,
int  priority 
)

sets the priority of a conflict handler

Parameters
scipSCIP data structure
conflicthdlrconflict handler
prioritynew priority of the conflict handler

Definition at line 6790 of file scip.c.

References NULL, SCIP_OKAY, SCIPconflicthdlrSetPriority(), and Scip::set.

Referenced by SCIP_DECL_PARAMCHGD().

◆ SCIPisConflictAnalysisApplicable()

SCIP_Bool SCIPisConflictAnalysisApplicable ( SCIP scip)

return TRUE if conflict analysis is applicable; In case the function return FALSE there is no need to initialize the conflict analysis since it will not be applied

Returns
return TRUE if conflict analysis is applicable; In case the function return FALSE there is no need to initialize the conflict analysis since it will not be applied
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure

Definition at line 26695 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPconflictApplicable(), SCIPgetDepth(), Scip::set, and TRUE.

Referenced by analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictLowerbound(), analyzeConflictOne(), analyzeConflictOverload(), analyzeConflictUpperbound(), analyzeConflictZero(), analyzeGenVBoundConflict(), inferboundsEdgeFinding(), processBinvarFixings(), propagateCons(), propagateCutoffboundBinvar(), propagateLbTTEF(), propagateTTEF(), propagateUbTTEF(), propIndicator(), SCIPaddCut(), tightenedIntvar(), tightenLbTTEF(), and tightenUbTTEF().

◆ SCIPinitConflictAnalysis()

SCIP_RETCODE SCIPinitConflictAnalysis ( SCIP scip,
SCIP_CONFTYPE  conftype,
SCIP_Bool  iscutoffinvolved 
)

initializes the conflict analysis by clearing the conflict candidate queue; this method must be called before you enter the conflict variables by calling SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar();

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
conftypetype of conflict
iscutoffinvolvedis the current cutoff bound involved?

Definition at line 26717 of file scip.c.

References checkStage(), Scip::conflict, FALSE, SCIP_CALL, SCIP_OKAY, SCIPconflictInit(), Scip::set, Scip::stat, Scip::transprob, and TRUE.

Referenced by analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictLowerbound(), analyzeConflictOne(), analyzeConflictOverload(), analyzeConflictUpperbound(), analyzeConflictZero(), analyzeGenVBoundConflict(), inferboundsEdgeFinding(), processBinvarFixings(), propagateCons(), propagateCutoffboundBinvar(), propagateLbTTEF(), propagateTTEF(), propagateUbTTEF(), propIndicator(), SCIP_DECL_CONSPROP(), SCIPaddCut(), tightenedIntvar(), tightenLbTTEF(), and tightenUbTTEF().

◆ SCIPaddConflictLb()

SCIP_RETCODE SCIPaddConflictLb ( SCIP scip,
SCIP_VAR var,
SCIP_BDCHGIDX bdchgidx 
)

adds lower bound of variable at the time of the given bound change index to the conflict analysis' candidate storage; this method should be called in one of the following two cases:

  1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictLb() should be called for each lower bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
  2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictLb() should be called for each lower bound, whose current assignment led to the deduction of the given conflict bound.
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varvariable whose lower bound should be added to conflict candidate queue
bdchgidxbound change index representing time on path to current node, when the conflicting bound was valid, NULL for current local bound

Definition at line 26746 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPconflictAddBound(), Scip::set, Scip::stat, and TRUE.

Referenced by addConflictBinvar(), addConflictBounds(), addConflictReasonVars(), analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictOverload(), analyzeConflictUpperbound(), analyzeEnergyRequirement(), inferboundsEdgeFinding(), propagateTTEF(), propIndicator(), resolvePropagation(), resolvePropagationCoretimes(), respropCumulativeCondition(), SCIP_DECL_CONSRESPROP(), SCIPaddCut(), tightenedIntvar(), and tightenUbTTEF().

◆ SCIPaddConflictRelaxedLb()

SCIP_RETCODE SCIPaddConflictRelaxedLb ( SCIP scip,
SCIP_VAR var,
SCIP_BDCHGIDX bdchgidx,
SCIP_Real  relaxedlb 
)

adds lower bound of variable at the time of the given bound change index to the conflict analysis' candidate storage with the additional information of a relaxed lower bound; this relaxed lower bound is the one which would be enough to explain a certain bound change; this method should be called in one of the following two cases:

  1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedLb() should be called for each (relaxed) lower bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
  2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelexedLb() should be called for each (relaxed) lower bound, whose current assignment led to the deduction of the given conflict bound.
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varvariable whose lower bound should be added to conflict candidate queue
bdchgidxbound change index representing time on path to current node, when the conflicting bound was valid, NULL for current local bound
relaxedlbthe relaxed lower bound

Definition at line 26780 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPconflictAddRelaxedBound(), Scip::set, Scip::stat, and TRUE.

Referenced by analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictOverload(), analyzeConflictUpperbound(), analyzeEnergyRequirement(), analyzeGenVBoundConflict(), relaxVbdvar(), resolveGenVBoundPropagation(), resolvePropagation(), resolvePropagationCoretimes(), and respropCumulativeCondition().

◆ SCIPaddConflictUb()

SCIP_RETCODE SCIPaddConflictUb ( SCIP scip,
SCIP_VAR var,
SCIP_BDCHGIDX bdchgidx 
)

adds upper bound of variable at the time of the given bound change index to the conflict analysis' candidate storage; this method should be called in one of the following two cases:

  1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictUb() should be called for each upper bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
  2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictUb() should be called for each upper bound, whose current assignment led to the deduction of the given conflict bound.
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varvariable whose upper bound should be added to conflict candidate queue
bdchgidxbound change index representing time on path to current node, when the conflicting bound was valid, NULL for current local bound

Definition at line 26813 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPconflictAddBound(), Scip::set, Scip::stat, and TRUE.

Referenced by addConflictBinvar(), addConflictBounds(), addConflictReasonVars(), analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictLowerbound(), analyzeConflictOverload(), analyzeEnergyRequirement(), inferboundsEdgeFinding(), propagateLbTTEF(), propagateUbTTEF(), resolvePropagation(), resolvePropagationCoretimes(), respropCumulativeCondition(), SCIP_DECL_CONSRESPROP(), SCIPaddCut(), tightenedIntvar(), and tightenLbTTEF().

◆ SCIPaddConflictRelaxedUb()

SCIP_RETCODE SCIPaddConflictRelaxedUb ( SCIP scip,
SCIP_VAR var,
SCIP_BDCHGIDX bdchgidx,
SCIP_Real  relaxedub 
)

adds upper bound of variable at the time of the given bound change index to the conflict analysis' candidate storage with the additional information of a relaxed upper bound; this relaxed upper bound is the one which would be enough to explain a certain bound change; this method should be called in one of the following two cases:

  1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedUb() should be called for each (relaxed) upper bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
  2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelaxedUb() should be called for each (relaxed) upper bound, whose current assignment led to the deduction of the given conflict bound.
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varvariable whose upper bound should be added to conflict candidate queue
bdchgidxbound change index representing time on path to current node, when the conflicting bound was valid, NULL for current local bound
relaxedubthe relaxed upper bound

Definition at line 26848 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPconflictAddRelaxedBound(), Scip::set, Scip::stat, and TRUE.

Referenced by analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictLowerbound(), analyzeConflictOverload(), analyzeEnergyRequirement(), analyzeGenVBoundConflict(), relaxVbdvar(), resolveGenVBoundPropagation(), resolvePropagation(), resolvePropagationCoretimes(), and respropCumulativeCondition().

◆ SCIPaddConflictBd()

SCIP_RETCODE SCIPaddConflictBd ( SCIP scip,
SCIP_VAR var,
SCIP_BOUNDTYPE  boundtype,
SCIP_BDCHGIDX bdchgidx 
)

adds lower or upper bound of variable at the time of the given bound change index to the conflict analysis' candidate storage; this method should be called in one of the following two cases:

  1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictBd() should be called for each bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
  2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictBd() should be called for each bound, whose current assignment led to the deduction of the given conflict bound.
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varvariable whose upper bound should be added to conflict candidate queue
boundtypethe type of the conflicting bound (lower or upper bound)
bdchgidxbound change index representing time on path to current node, when the conflicting bound was valid, NULL for current local bound

Definition at line 26881 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_CALL, SCIP_OKAY, SCIPconflictAddBound(), Scip::set, Scip::stat, and TRUE.

Referenced by analyzeConflict(), and SCIP_DECL_CONSRESPROP().

◆ SCIPaddConflictRelaxedBd()

SCIP_RETCODE SCIPaddConflictRelaxedBd ( SCIP scip,
SCIP_VAR var,
SCIP_BOUNDTYPE  boundtype,
SCIP_BDCHGIDX bdchgidx,
SCIP_Real  relaxedbd 
)

adds lower or upper bound of variable at the time of the given bound change index to the conflict analysis' candidate storage; with the additional information of a relaxed upper bound; this relaxed upper bound is the one which would be enough to explain a certain bound change; this method should be called in one of the following two cases:

  1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictRelaxedBd() should be called for each (relaxed) bound that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
  2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictRelaxedBd() should be called for each (relaxed) bound, whose current assignment led to the deduction of the given conflict bound.
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varvariable whose upper bound should be added to conflict candidate queue
boundtypethe type of the conflicting bound (lower or upper bound)
bdchgidxbound change index representing time on path to current node, when the conflicting bound was valid, NULL for current local bound
relaxedbdthe relaxed bound

Definition at line 26916 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_CALL, SCIP_OKAY, SCIPconflictAddRelaxedBound(), Scip::set, Scip::stat, and TRUE.

◆ SCIPaddConflictBinvar()

SCIP_RETCODE SCIPaddConflictBinvar ( SCIP scip,
SCIP_VAR var 
)

adds changed bound of fixed binary variable to the conflict analysis' candidate storage; this method should be called in one of the following two cases:

  1. Before calling the SCIPanalyzeConflict() method, SCIPaddConflictBinvar() should be called for each fixed binary variable that led to the conflict (e.g. the infeasibility of globally or locally valid constraint).
  2. In the propagation conflict resolving method of a constraint handler, SCIPaddConflictBinvar() should be called for each binary variable, whose current fixing led to the deduction of the given conflict bound.
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varbinary variable whose changed bound should be added to conflict queue

Definition at line 26950 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPconflictAddBound(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), Scip::set, Scip::stat, and TRUE.

Referenced by addConflictBounds(), analyzeConflict(), analyzeConflictOne(), analyzeConflictZero(), processBinvarFixings(), propagateCons(), propIndicator(), resolvePropagation(), SCIP_DECL_CONSPROP(), SCIP_DECL_CONSRESPROP(), and tightenedIntvar().

◆ SCIPisConflictVarUsed()

SCIP_RETCODE SCIPisConflictVarUsed ( SCIP scip,
SCIP_VAR var,
SCIP_BOUNDTYPE  boundtype,
SCIP_BDCHGIDX bdchgidx,
SCIP_Bool used 
)

checks if the given variable is already part of the current conflict set or queued for resolving with the same or even stronger bound

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varvariable whose upper bound should be added to conflict candidate queue
boundtypethe type of the conflicting bound (lower or upper bound)
bdchgidxbound change index representing time on path to current node, when the conflicting bound was valid, NULL for current local bound
usedpointer to store if the variable is already used

Definition at line 26984 of file scip.c.

References checkStage(), Scip::conflict, FALSE, SCIP_Var::scip, SCIP_CALL_ABORT, SCIPconflictIsVarUsed(), Scip::set, and TRUE.

◆ SCIPgetConflictVarLb()

SCIP_Real SCIPgetConflictVarLb ( SCIP scip,
SCIP_VAR var 
)

returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower bound

Returns
returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower bound
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varproblem variable

Definition at line 27012 of file scip.c.

References checkStage(), Scip::conflict, FALSE, SCIP_Var::scip, SCIP_CALL_ABORT, SCIPconflictGetVarLb(), and TRUE.

Referenced by analyzeConflict(), analyzeConflictUpperbound(), analyzeEnergyRequirement(), analyzeGenVBoundConflict(), getGenVBoundsMinActivityConflict(), resolveGenVBoundPropagation(), and resolvePropagationCoretimes().

◆ SCIPgetConflictVarUb()

SCIP_Real SCIPgetConflictVarUb ( SCIP scip,
SCIP_VAR var 
)

returns the conflict upper bound if the variable is present in the current conflict set; otherwise minus global upper bound

Returns
returns the conflict upper bound if the variable is present in the current conflict set; otherwise minus global upper bound
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
varproblem variable

Definition at line 27036 of file scip.c.

References checkStage(), Scip::conflict, FALSE, SCIP_Var::scip, SCIP_CALL_ABORT, SCIPconflictGetVarUb(), and TRUE.

Referenced by analyzeConflict(), analyzeConflictLowerbound(), analyzeEnergyRequirement(), analyzeGenVBoundConflict(), getGenVBoundsMinActivityConflict(), resolveGenVBoundPropagation(), and resolvePropagationCoretimes().

◆ SCIPanalyzeConflict()

SCIP_RETCODE SCIPanalyzeConflict ( SCIP scip,
int  validdepth,
SCIP_Bool success 
)

analyzes conflict bounds that were added after a call to SCIPinitConflictAnalysis() with calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar(); on success, calls the conflict handlers to create a conflict constraint out of the resulting conflict set; the given valid depth must be a depth level, at which the conflict set defined by calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), and SCIPaddConflictBinvar() is valid for the whole subtree; if the conflict was found by a violated constraint, use SCIPanalyzeConflictCons() instead of SCIPanalyzeConflict() to make sure, that the correct valid depth is used

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
validdepthminimal depth level at which the initial conflict set is valid
successpointer to store whether a conflict constraint was created, or NULL

Definition at line 27066 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPconflictAnalyze(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.

Referenced by analyzeConflictLowerbound(), analyzeConflictUpperbound(), analyzeGenVBoundConflict(), propagateCutoffboundBinvar(), and SCIPaddCut().

◆ SCIPanalyzeConflictCons()

SCIP_RETCODE SCIPanalyzeConflictCons ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool success 
)

analyzes conflict bounds that were added with calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar(); on success, calls the conflict handlers to create a conflict constraint out of the resulting conflict set; the given constraint must be the constraint that detected the conflict, i.e. the constraint that is infeasible in the local bounds of the initial conflict set (defined by calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), and SCIPaddConflictBinvar())

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if SCIP is in one of the following stages:
Note
SCIP stage does not get changed
Parameters
scipSCIP data structure
consconstraint that detected the conflict
successpointer to store whether a conflict constraint was created, or NULL

Definition at line 27097 of file scip.c.

References checkStage(), Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPconflictAnalyze(), SCIPconsGetValidDepth(), SCIPconsIsActive(), SCIPconsIsGlobal(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.

Referenced by analyzeConflict(), analyzeConflictOne(), analyzeConflictZero(), processBinvarFixings(), propagateCons(), propIndicator(), SCIP_DECL_CONSPROP(), and tightenedIntvar().