Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

public methods for 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_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 362 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 368 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 685 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 695 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 782 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 792 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 816 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 838 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 848 of file conflict.c.

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

◆ 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 301 of file scip_conflict.c.

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

Referenced by analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictLowerbound(), analyzeConflictOne(), analyzeConflictOverload(), analyzeConflictUpperbound(), analyzeConflictZero(), analyzeGenVBoundConflict(), inferboundsEdgeFinding(), processBinvarFixings(), propagateCons(), propagateCutoffboundBinvar(), propagateLbTTEF(), propagatePackingPartitioningCons(), propagateTTEF(), propagateUbTTEF(), propIndicator(), propVariables(), SCIPaddRow(), tightenedLinkvar(), 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 323 of file scip_conflict.c.

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

Referenced by analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictLowerbound(), analyzeConflictOne(), analyzeConflictOverload(), analyzeConflictUpperbound(), analyzeConflictZero(), analyzeGenVBoundConflict(), applyOptcumulative(), inferboundsEdgeFinding(), processBinvarFixings(), propagateCons(), propagateCutoffboundBinvar(), propagateLbTTEF(), propagatePackingPartitioningCons(), propagateTTEF(), propagateUbTTEF(), propIndicator(), propVariables(), SCIP_DECL_CONSPROP(), SCIPaddRow(), solveSubproblem(), tightenedLinkvar(), 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 352 of file scip_conflict.c.

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

Referenced by addConflictBinvar(), addConflictBounds(), addConflictReasonVars(), analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictOverload(), analyzeConflictUpperbound(), analyzeEnergyRequirement(), applyOptcumulative(), inferboundsEdgeFinding(), propagateTTEF(), propIndicator(), resolvePropagation(), resolvePropagationCoretimes(), respropCumulativeCondition(), SCIP_DECL_CONSRESPROP(), SCIPaddRow(), solveSubproblem(), tightenedLinkvar(), 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 386 of file scip_conflict.c.

References Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), 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 419 of file scip_conflict.c.

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

Referenced by addConflictBinvar(), addConflictBounds(), addConflictReasonVars(), analyseInfeasibelCoreInsertion(), analyzeConflict(), analyzeConflictLowerbound(), analyzeConflictOverload(), analyzeEnergyRequirement(), applyOptcumulative(), inferboundsEdgeFinding(), propagateLbTTEF(), propagateUbTTEF(), resolvePropagation(), resolvePropagationCoretimes(), respropCumulativeCondition(), SCIP_DECL_CONSRESPROP(), SCIPaddRow(), solveSubproblem(), tightenedLinkvar(), 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 454 of file scip_conflict.c.

References Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), 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 487 of file scip_conflict.c.

References Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), 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 522 of file scip_conflict.c.

References Scip::conflict, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_Var::scip, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), 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 556 of file scip_conflict.c.

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

Referenced by addConflictBounds(), analyzeConflict(), analyzeConflictOne(), analyzeConflictZero(), applyOptcumulative(), processBinvarFixings(), propagateCons(), propagatePackingPartitioningCons(), propIndicator(), propVariables(), resolvePropagation(), resolvePropagationFullOrbitope(), SCIP_DECL_CONSPROP(), SCIP_DECL_CONSRESPROP(), solveSubproblem(), and tightenedLinkvar().

◆ 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 590 of file scip_conflict.c.

References Scip::conflict, FALSE, SCIP_Var::scip, SCIP_CALL_ABORT, SCIPcheckStage(), 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 618 of file scip_conflict.c.

References Scip::conflict, FALSE, SCIP_Var::scip, SCIP_CALL_ABORT, SCIPcheckStage(), 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 642 of file scip_conflict.c.

References Scip::conflict, FALSE, SCIP_Var::scip, SCIP_CALL_ABORT, SCIPcheckStage(), 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 672 of file scip_conflict.c.

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

Referenced by analyzeConflictLowerbound(), analyzeConflictUpperbound(), analyzeGenVBoundConflict(), applyOptcumulative(), propagateCutoffboundBinvar(), and SCIPaddRow().

◆ 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 703 of file scip_conflict.c.

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

Referenced by analyzeConflict(), analyzeConflictOne(), analyzeConflictZero(), processBinvarFixings(), propagateCons(), propagatePackingPartitioningCons(), propIndicator(), propVariables(), SCIP_DECL_CONSPROP(), solveSubproblem(), and tightenedLinkvar().