methods and datastructures for conflict analysis
This file implements a conflict analysis method like the one used in modern SAT solvers like zchaff. The algorithm works as follows:
Given is a set of bound changes that are not allowed being applied simultaneously, because they render the current node infeasible (e.g. because a single constraint is infeasible in the these bounds, or because the LP relaxation is infeasible). The goal is to deduce a clause on variables – a conflict clause – representing the "reason" for this conflict, i.e., the branching decisions or the deductions (applied e.g. in domain propagation) that lead to the conflict. This clause can then be added to the constraint set to help cutting off similar parts of the branch and bound tree, that would lead to the same conflict. A conflict clause can also be generated, if the conflict was detected by a locally valid constraint. In this case, the resulting conflict clause is also locally valid in the same depth as the conflict detecting constraint. If all involved variables are binary, a linear (set covering) constraint can be generated, otherwise a bound disjunction constraint is generated. Details are given in
Tobias Achterberg, Conflict Analysis in Mixed Integer Programming
Discrete Optimization, 4, 4-20 (2007)
See also How to use conflict analysis. Here is an outline of the algorithm:
If all deduced bound changes come with (global) inference information, depending on the conflict analyzing strategy, the resulting conflict set has the following property:
The user has to do the following to get the conflict analysis running in its current implementation:
Definition in file conflict.c.
#include <assert.h>
#include <string.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/clock.h"
#include "scip/visual.h"
#include "scip/history.h"
#include "scip/paramset.h"
#include "scip/lp.h"
#include "scip/var.h"
#include "scip/prob.h"
#include "scip/tree.h"
#include "scip/sol.h"
#include "scip/scip.h"
#include "scip/conflict.h"
#include "scip/cons.h"
#include "scip/prop.h"
#include "scip/presolve.h"
#include "scip/debug.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/cuts.h"
#include "lpi/lpi.h"
#include "scip/struct_conflict.h"
#include "scip/cons_linear.h"
Go to the source code of this file.
Macros | |
#define | BOUNDSWITCH 0.51 |
#define | POSTPROCESS FALSE |
#define | USEVBDS FALSE |
#define | ALLOWLOCAL FALSE |
#define | MINFRAC 0.05 |
#define | MAXFRAC 0.999 |
#define | NUMSTOP 9007199254740992.0 |
#define | debugPrintViolationInfo(...) |
#define BOUNDSWITCH 0.51 |
threshold for bound switching - see cuts.c
Definition at line 145 of file conflict.c.
Referenced by separateAlternativeProofs().
#define POSTPROCESS FALSE |
apply postprocessing to the cut - see cuts.c
Definition at line 146 of file conflict.c.
Referenced by separateAlternativeProofs().
#define USEVBDS FALSE |
use variable bounds - see cuts.c
Definition at line 147 of file conflict.c.
Referenced by separateAlternativeProofs().
#define ALLOWLOCAL FALSE |
allow to generate local cuts - see cuts.
Definition at line 148 of file conflict.c.
Referenced by separateAlternativeProofs().
#define MINFRAC 0.05 |
minimal fractionality of floor(rhs) - see cuts.c
Definition at line 149 of file conflict.c.
Referenced by separateAlternativeProofs().
#define MAXFRAC 0.999 |
maximal fractionality of floor(rhs) - see cuts.c
Definition at line 150 of file conflict.c.
Referenced by separateAlternativeProofs().
#define NUMSTOP 9007199254740992.0 |
Definition at line 6119 of file conflict.c.
Referenced by getFarkasProof().
#define debugPrintViolationInfo | ( | ... | ) |
Definition at line 6725 of file conflict.c.
Referenced by getDualProof(), and tightenDualproof().
|
static |
method to call, when the priority of a conflict handler was changed
Definition at line 349 of file conflict.c.
References SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetConflicthdlrPriority().
SCIP_RETCODE SCIPconflicthdlrCopyInclude | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
copies the given conflict handler to a new scip
conflicthdlr | conflict handler |
set | SCIP_SET of SCIP to copy to |
Definition at line 363 of file conflict.c.
References SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrGetName(), and SCIPsetDebugMsg.
SCIP_RETCODE SCIPconflicthdlrCreate | ( | SCIP_CONFLICTHDLR ** | conflicthdlr, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
BMS_BLKMEM * | blkmem, | ||
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
conflicthdlr | pointer to conflict handler data structure |
set | global SCIP settings |
messagehdlr | message handler |
blkmem | block memory for parameter settings |
name | name of conflict handler |
desc | description of conflict handler |
priority | priority of the conflict handler |
conflicthdlrdata | conflict handler data |
Definition at line 382 of file conflict.c.
References BMSallocMemory, BMSduplicateMemoryArray, FALSE, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddIntParam(), SCIPsnprintf(), and TRUE.
Referenced by SCIPincludeConflicthdlr(), and SCIPincludeConflicthdlrBasic().
SCIP_RETCODE SCIPconflicthdlrFree | ( | SCIP_CONFLICTHDLR ** | conflicthdlr, |
SCIP_SET * | set | ||
) |
calls destructor and frees memory of conflict handler
conflicthdlr | pointer to conflict handler data structure |
set | global SCIP settings |
Definition at line 434 of file conflict.c.
References BMSfreeMemory, BMSfreeMemoryArray, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
SCIP_RETCODE SCIPconflicthdlrInit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
calls initialization method of conflict handler
conflicthdlr | conflict handler |
set | global SCIP settings |
Definition at line 461 of file conflict.c.
References SCIP_Conflicthdlr::conflicttime, SCIP_Conflicthdlr::initialized, SCIP_Conflicthdlr::name, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIP_Conflicthdlr::setuptime, and TRUE.
Referenced by SCIPsetSortNlpis().
SCIP_RETCODE SCIPconflicthdlrExit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
calls exit method of conflict handler
conflicthdlr | conflict handler |
set | global SCIP settings |
Definition at line 498 of file conflict.c.
References FALSE, SCIP_Conflicthdlr::initialized, SCIP_Conflicthdlr::name, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Conflicthdlr::setuptime.
Referenced by SCIPsetInitPlugins().
SCIP_RETCODE SCIPconflicthdlrInitsol | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
informs conflict handler that the branch and bound process is being started
conflicthdlr | conflict handler |
set | global SCIP settings |
Definition at line 529 of file conflict.c.
References SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Conflicthdlr::setuptime.
SCIP_RETCODE SCIPconflicthdlrExitsol | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
informs conflict handler that the branch and bound process data is being freed
conflicthdlr | conflict handler |
set | global SCIP settings |
Definition at line 553 of file conflict.c.
References SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Conflicthdlr::setuptime.
Referenced by SCIPsetInitsolPlugins().
SCIP_RETCODE SCIPconflicthdlrExec | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set, | ||
SCIP_NODE * | node, | ||
SCIP_NODE * | validnode, | ||
SCIP_BDCHGINFO ** | bdchginfos, | ||
SCIP_Real * | relaxedbds, | ||
int | nbdchginfos, | ||
SCIP_CONFTYPE | conftype, | ||
SCIP_Bool | usescutoffbound, | ||
SCIP_Bool | resolved, | ||
SCIP_RESULT * | result | ||
) |
calls execution method of conflict handler
conflicthdlr | conflict handler |
set | global SCIP settings |
node | node to add conflict constraint to |
validnode | node at which the constraint is valid |
bdchginfos | bound change resembling the conflict set |
relaxedbds | array with relaxed bounds which are efficient to create a valid conflict |
nbdchginfos | number of bound changes in the conflict set |
conftype | type of the conflict |
usescutoffbound | depends the conflict on the cutoff bound? |
resolved | was the conflict set already used to create a constraint? |
result | pointer to store the result of the callback method |
Definition at line 577 of file conflict.c.
References SCIP_Conflicthdlr::conflicttime, SCIP_Conflicthdlr::name, SCIP_CALL, SCIP_CONSADDED, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIPnodeGetDepth().
Referenced by conflictAddConflictCons().
void SCIPconflicthdlrSetCopy | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTCOPY((*conflictcopy)) | |||
) |
set copy method of conflict handler
conflicthdlr | conflict handler |
Definition at line 646 of file conflict.c.
Referenced by SCIPsetConflicthdlrCopy().
void SCIPconflicthdlrSetFree | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTFREE((*conflictfree)) | |||
) |
set destructor of conflict handler
conflicthdlr | conflict handler |
Definition at line 657 of file conflict.c.
Referenced by SCIPsetConflicthdlrFree().
void SCIPconflicthdlrSetInit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTINIT((*conflictinit)) | |||
) |
set initialization method of conflict handler
conflicthdlr | conflict handler |
Definition at line 668 of file conflict.c.
Referenced by SCIPsetConflicthdlrInit().
void SCIPconflicthdlrSetExit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTEXIT((*conflictexit)) | |||
) |
set deinitialization method of conflict handler
conflicthdlr | conflict handler |
Definition at line 679 of file conflict.c.
Referenced by SCIPsetConflicthdlrExit().
void SCIPconflicthdlrSetInitsol | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)) | |||
) |
set solving process initialization method of conflict handler
conflicthdlr | conflict handler |
Definition at line 690 of file conflict.c.
Referenced by SCIPsetConflicthdlrInitsol().
void SCIPconflicthdlrSetExitsol | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)) | |||
) |
set solving process deinitialization method of conflict handler
conflicthdlr | conflict handler |
Definition at line 701 of file conflict.c.
Referenced by SCIPsetConflicthdlrExitsol().
void SCIPconflicthdlrSetPriority | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set, | ||
int | priority | ||
) |
sets priority of conflict handler
conflicthdlr | conflict handler |
set | global SCIP settings |
priority | new priority of the conflict handler |
Definition at line 742 of file conflict.c.
References FALSE, and SCIP_Conflicthdlr::priority.
Referenced by SCIPsetConflicthdlrPriority().
void SCIPconflicthdlrEnableOrDisableClocks | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_Bool | enable | ||
) |
enables or disables all clocks of conflicthdlr
, depending on the value of the flag
conflicthdlr | the conflict handler for which all clocks should be enabled or disabled |
enable | should the clocks of the conflict handler be enabled? |
Definition at line 766 of file conflict.c.
References SCIP_Conflicthdlr::conflicttime, SCIPclockEnableOrDisable(), and SCIP_Conflicthdlr::setuptime.
|
static |
create conflict LP bound change data structure
lpbdchgs | pointer to store the conflict LP bound change data structure |
set | global SCIP settings |
ncols | number of columns |
Definition at line 804 of file conflict.c.
References BMSclearMemoryArray, SCIP_CALL, SCIP_OKAY, SCIPsetAllocBuffer, and SCIPsetAllocBufferArray.
Referenced by runBoundHeuristic().
|
static |
reset conflict LP bound change data structure
lpbdchgs | conflict LP bound change data structure |
ncols | number of columns |
Definition at line 826 of file conflict.c.
References BMSclearMemoryArray, SCIP_LPBdChgs::nbdchgs, and SCIP_LPBdChgs::usedcols.
Referenced by runBoundHeuristic().
|
static |
free conflict LP bound change data structure
lpbdchgs | pointer to store the conflict LP bound change data structure |
set | global SCIP settings |
Definition at line 839 of file conflict.c.
References SCIPsetFreeBuffer, and SCIPsetFreeBufferArray.
Referenced by runBoundHeuristic().
|
static |
resets the data structure of a proofset
proofset | proof set |
Definition at line 859 of file conflict.c.
References SCIP_ProofSet::conflicttype, SCIP_ProofSet::nnz, SCIP_ProofSet::rhs, and SCIP_CONFTYPE_UNKNOWN.
Referenced by conflictFlushProofset(), and tightenDualproof().
|
static |
creates a proofset
proofset | proof set |
blkmem | block memory of transformed problem |
Definition at line 872 of file conflict.c.
References BMSallocBlockMemory, SCIP_ALLOC, SCIP_CONFTYPE_UNKNOWN, and SCIP_OKAY.
Referenced by conflictInitProofset(), separateAlternativeProofs(), and tightenDualproof().
|
static |
creates and clears the proofset
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
Definition at line 892 of file conflict.c.
References SCIP_Conflict::proofset, proofsetCreate(), SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPconflictCreate().
|
static |
frees a proofset
proofset | proof set |
blkmem | block memory |
Definition at line 907 of file conflict.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, SCIP_ProofSet::inds, SCIP_ProofSet::nnz, SCIP_ProofSet::rhs, SCIPprobGetVars(), SCIPvarGetName(), and SCIP_ProofSet::vals.
Referenced by conflictFlushProofset(), SCIPconflictFree(), and separateAlternativeProofs().
|
static |
return the indices of variables in the proofset
proofset | proof set |
Definition at line 947 of file conflict.c.
References SCIP_ProofSet::inds.
Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenDualproof().
|
static |
return coefficient of variable in the proofset with given probindex
proofset | proof set |
Definition at line 958 of file conflict.c.
References SCIP_ProofSet::vals.
Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenDualproof().
|
static |
return the right-hand side if a proofset
proofset | proof set |
Definition at line 969 of file conflict.c.
References SCIP_ProofSet::rhs.
Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenCoefficients().
|
static |
returns the number of variables in the proofset
proofset | proof set |
Definition at line 980 of file conflict.c.
References SCIP_ProofSet::nnz.
Referenced by conflictAnalyzeLP(), conflictFlushProofset(), createAndAddProofcons(), tightenCoefficients(), and tightenDualproof().
|
static |
returns the number of variables in the proofset
proofset | proof set |
Definition at line 991 of file conflict.c.
References SCIP_ProofSet::conflicttype.
Referenced by conflictFlushProofset(), and createAndAddProofcons().
|
static |
adds given data as aggregation row to the proofset
proofset | proof set |
blkmem | block memory |
vals | variable coefficients |
inds | variable array |
nnz | size of variable and coefficient array |
rhs | right-hand side of the aggregation row |
Definition at line 1002 of file conflict.c.
References BMSduplicateBlockMemoryArray, BMSreallocBlockMemoryArray, SCIP_ProofSet::inds, SCIP_ProofSet::nnz, SCIP_ProofSet::rhs, SCIP_ALLOC, SCIP_OKAY, SCIP_ProofSet::size, and SCIP_ProofSet::vals.
Referenced by proofsetAddAggrrow(), and separateAlternativeProofs().
|
static |
adds an aggregation row to the proofset
proofset | proof set |
set | global SCIP settings |
blkmem | block memory |
aggrrow | aggregation row to add |
Definition at line 1053 of file conflict.c.
References proofsetAddSparseData(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPsetAllocBufferArray, and SCIPsetFreeBufferArray.
Referenced by tightenDualproof().
|
static |
Removes a given variable var
from position pos
from the proofset and updates the right-hand side according to sign of the coefficient, i.e., rhs -= coef * bound, where bound = lb if coef >= 0 and bound = ub, otherwise.
pos
. Definition at line 1094 of file conflict.c.
References FALSE, SCIP_ProofSet::inds, SCIP_ProofSet::nnz, SCIP_ProofSet::rhs, SCIPsetIsInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), TRUE, and SCIP_ProofSet::vals.
Referenced by tightenDualproof().
|
static |
resizes the array of the temporary bound change informations to be able to store at least num bound change entries
conflict | conflict analysis data |
set | global SCIP settings |
num | minimal number of slots in arrays |
Definition at line 1138 of file conflict.c.
References BMSreallocMemoryArray, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Conflict::tmpbdchginfos, and SCIP_Conflict::tmpbdchginfossize.
Referenced by conflictCreateTmpBdchginfo().
|
static |
creates a temporary bound change information object that is destroyed after the conflict sets are flushed
conflict | conflict analysis data |
blkmem | block memory |
set | global SCIP settings |
var | active variable that changed the bounds |
boundtype | type of bound for var: lower or upper bound |
oldbound | old value for bound |
newbound | new value for bound |
bdchginfo | pointer to store bound change information |
Definition at line 1162 of file conflict.c.
References conflictEnsureTmpbdchginfosMem(), SCIP_Conflict::ntmpbdchginfos, SCIP_CALL, SCIP_OKAY, SCIPbdchginfoCreate(), and SCIP_Conflict::tmpbdchginfos.
Referenced by conflictAnalyzeRemainingBdchgs(), and conflictCreateReconvergenceConss().
|
static |
frees all temporarily created bound change information data
conflict | conflict analysis data |
blkmem | block memory |
Definition at line 1186 of file conflict.c.
References SCIP_Conflict::ntmpbdchginfos, SCIPbdchginfoFree(), and SCIP_Conflict::tmpbdchginfos.
Referenced by SCIPconflictFlushConss().
|
static |
clears the given conflict set
conflictset | conflict set |
Definition at line 1202 of file conflict.c.
References SCIP_ConflictSet::conflictdepth, SCIP_ConflictSet::conflicttype, FALSE, SCIP_ConflictSet::insertdepth, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::repropagate, SCIP_ConflictSet::repropdepth, SCIP_CONFTYPE_UNKNOWN, TRUE, SCIP_ConflictSet::usescutoffbound, and SCIP_ConflictSet::validdepth.
Referenced by conflictClear(), and conflictsetCreate().
|
static |
creates an empty conflict set
conflictset | pointer to store the conflict set |
blkmem | block memory of transformed problem |
Definition at line 1220 of file conflict.c.
References BMSallocBlockMemory, conflictsetClear(), SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPconflictCreate().
|
static |
creates a copy of the given conflict set, allocating an additional amount of memory
targetconflictset | pointer to store the conflict set |
blkmem | block memory of transformed problem |
sourceconflictset | source conflict set |
nadditionalelems | number of additional elements to allocate memory for |
Definition at line 1240 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, BMSallocBlockMemory, BMSallocBlockMemoryArray, BMScopyMemoryArray, SCIP_ConflictSet::conflictdepth, SCIP_ConflictSet::conflicttype, SCIP_ConflictSet::insertdepth, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::relaxedbds, SCIP_ConflictSet::repropdepth, SCIP_ALLOC, SCIP_OKAY, SCIP_ConflictSet::sortvals, SCIP_ConflictSet::usescutoffbound, and SCIP_ConflictSet::validdepth.
Referenced by conflictAddConflictset().
|
static |
frees a conflict set
conflictset | pointer to the conflict set |
blkmem | block memory of transformed problem |
Definition at line 1276 of file conflict.c.
References BMSfreeBlockMemory, and BMSfreeBlockMemoryArrayNull.
Referenced by conflictAddConflictset(), conflictInsertConflictset(), SCIPconflictFlushConss(), and SCIPconflictFree().
|
static |
resizes the arrays of the conflict set to be able to store at least num bound change entries
conflictset | conflict set |
blkmem | block memory of transformed problem |
set | global SCIP settings |
num | minimal number of slots in arrays |
Definition at line 1292 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, SCIP_ConflictSet::bdchginfossize, BMSreallocBlockMemoryArray, SCIP_ConflictSet::relaxedbds, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIP_ConflictSet::sortvals.
Referenced by conflictsetAddBound(), and conflictsetAddBounds().
|
static |
calculates the score of the conflict set
the score is weighted sum of number of bound changes, repropagation depth, and valid depth
conflictset | conflict set |
set | global SCIP settings |
Definition at line 1322 of file conflict.c.
References SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::repropdepth, and SCIP_ConflictSet::validdepth.
Referenced by conflictInsertConflictset().
|
static |
calculates the score of a bound change within a conflict
prooflhs | lhs of proof constraint |
proofact | activity of the proof constraint |
proofactdelta | activity change |
proofcoef | coefficient in proof constraint |
depth | bound change depth |
currentdepth | current depth |
var | variable corresponding to bound change |
set | global SCIP settings |
Definition at line 1336 of file conflict.c.
References MAX, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPcolGetNNonz(), SCIPvarGetCol(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), and SCIPvarGetStatus().
Referenced by addCand().
|
static |
check if the bound change info (which is the potential next candidate which is queued) is valid for the current conflict analysis; a bound change info can get invalid if after this one was added to the queue, a weaker bound change was added to the queue (due the bound widening idea) which immediately makes this bound change redundant; due to the priority we did not removed that bound change info since that cost O(log(n)); hence we have to skip/ignore it now
The following situations can occur before for example the bound change info (x >= 3) is potentially popped from the queue.
Postcondition: the reason why (x >= 3) was queued is that at this time point no lower bound of x was involved yet in the current conflict or the lower bound which was involved until then was stronger, e.g., (x >= 2).
1) during the time until (x >= 3) gets potentially popped no weaker lower bound was added to the queue, in that case the conflictlbcount is valid and conflictlb is 3; that is (var->conflictlbcount == conflict->count && var->conflictlb == 3)
2) a weaker bound change info gets queued (e.g., x >= 4); this bound change is popped before (x >= 3) since it has higher priority (which is the time stamp of the bound change info and (x >= 4) has to be done after (x >= 3) during propagation or branching)
a) if (x >= 4) is popped and added to the conflict set the conflictlbcount is still valid and conflictlb is at most 4; that is (var->conflictlbcount == conflict->count && var->conflictlb >= 4); it follows that any bound change info which is stronger than (x >= 4) gets ignored (for example x >= 2)
b) if (x >= 4) is popped and resolved without introducing a new lower bound on x until (x >= 3) is a potentially candidate the conflictlbcount indicates that bound change is currently not present; that is (var->conflictlbcount != conflict->count)
c) if (x >= 4) is popped and resolved and a new lower bound on x (e.g., x >= 2) is introduced until (x >= 3) is pooped, the conflictlbcount indicates that bound change is currently present; that is (var->conflictlbcount == conflict->count); however the (x >= 3) only has be explained if conflictlb matches that one; that is (var->conflictlb == bdchginfo->newbound); otherwise it redundant/invalid.
conflict | conflict analysis data |
bdchginfo | bound change information |
Definition at line 1411 of file conflict.c.
References SCIP_Var::conflictlb, SCIP_Var::conflictlbcount, SCIP_Var::conflictub, SCIP_Var::conflictubcount, SCIP_Conflict::count, FALSE, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPvarIsBinary(), and TRUE.
Referenced by conflictFirstCand(), conflictRemoveCand(), conflictResolveBound(), and conflictsetAddBounds().
|
static |
adds a bound change to a conflict set
conflictset | conflict set |
blkmem | block memory of transformed problem |
set | global SCIP settings |
bdchginfo | bound change to add to the conflict set |
relaxedbd | relaxed bound |
Definition at line 1454 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, conflictsetEnsureBdchginfosMem(), MAX, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::relaxedbds, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsTighter(), SCIPsortedvecDelPosIntPtrReal(), SCIPsortedvecInsertIntPtrReal(), SCIPvarGetIndex(), and SCIP_ConflictSet::sortvals.
Referenced by conflictAddConflictBound(), and conflictsetAddBounds().
|
static |
adds given bound changes to a conflict set
conflict | conflict analysis data |
conflictset | conflict set |
blkmem | block memory of transformed problem |
set | global SCIP settings |
bdchginfos | bound changes to add to the conflict set |
nbdchginfos | number of bound changes to add |
Definition at line 1524 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_ConflictSet::bdchginfos, conflictsetAddBound(), conflictsetEnsureBdchginfosMem(), FALSE, MAX, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::relaxedbds, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetRelaxedBound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsTighter(), SCIPsetDebugMsg, SCIPsortIntPtrReal(), SCIPvarGetIndex(), SCIPvarGetName(), SCIP_ConflictSet::sortvals, and TRUE.
Referenced by conflictAddConflictset().
|
static |
calculates the conflict and the repropagation depths of the conflict set
conflictset | conflict set |
Definition at line 1690 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, SCIP_ConflictSet::conflictdepth, SCIP_ConflictSet::insertdepth, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::repropdepth, SCIPbdchginfoGetDepth(), and SCIP_ConflictSet::validdepth.
Referenced by conflictInsertConflictset().
|
static |
identifies the depth, at which the conflict set should be added:
conflictset | conflict set |
set | global SCIP settings |
tree | branch and bound tree |
Definition at line 1734 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, BMSclearMemoryArray, SCIP_ConflictSet::insertdepth, SCIP_ConflictSet::nbdchginfos, SCIP_Tree::pathlen, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPbdchginfoGetDepth(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPtreeGetCurrentDepth(), TRUE, and SCIP_ConflictSet::validdepth.
Referenced by conflictAddConflictset().
|
static |
checks whether the first conflict set is redundant to the second one
conflictset1 | first conflict conflict set |
conflictset2 | second conflict conflict set |
Definition at line 1781 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, FALSE, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::relaxedbds, SCIP_BOUNDTYPE_LOWER, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsTighter(), SCIPdebugPrintf, SCIPvarGetName(), SCIP_ConflictSet::sortvals, and SCIP_ConflictSet::validdepth.
Referenced by conflictInsertConflictset().
|
static |
resizes proofsets array to be able to store at least num entries
conflict | conflict analysis data |
set | global SCIP settings |
num | minimal number of slots in array |
Definition at line 1843 of file conflict.c.
References BMSreallocMemoryArray, SCIP_Conflict::proofsets, SCIP_Conflict::proofsetssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by conflictInsertProofset().
|
static |
resizes conflictsets array to be able to store at least num entries
conflict | conflict analysis data |
set | global SCIP settings |
num | minimal number of slots in array |
Definition at line 1867 of file conflict.c.
References BMSreallocMemoryArray, SCIP_Conflict::conflictsets, SCIP_Conflict::conflictsetscores, SCIP_Conflict::conflictsetssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by conflictInsertConflictset().
|
static |
add a proofset to the list of all proofsets
conflict | conflict analysis data |
set | global SCIP settings |
proofset | proof set to add |
Definition at line 1892 of file conflict.c.
References conflictEnsureProofsetsMem(), SCIP_Conflict::nproofsets, SCIP_Conflict::proofsets, SCIP_CALL, and SCIP_OKAY.
Referenced by separateAlternativeProofs(), and tightenDualproof().
|
static |
inserts conflict set into sorted conflictsets array and deletes the conflict set pointer
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
conflictset | pointer to conflict set to insert |
Definition at line 1912 of file conflict.c.
References conflictEnsureConflictsetsMem(), conflictsetCalcConflictDepth(), conflictsetCalcScore(), conflictsetFree(), conflictsetIsRedundant(), SCIP_Conflict::conflictsets, SCIP_Conflict::conflictsetscores, SCIP_Conflict::nconflictsets, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebug, and SCIPsetDebugMsg.
Referenced by conflictAddConflictset().
calculates the maximal size of conflict sets to be used
set | global SCIP settings |
prob | problem data |
Definition at line 2007 of file conflict.c.
References MAX, SCIP_Prob::ncontvars, and SCIP_Prob::nvars.
Referenced by conflictAnalyzeRemainingBdchgs(), SCIPconflictAnalyze(), and SCIPconflictFlushConss().
|
static |
increases the conflict score of the variable in the given direction
var | problem variable |
blkmem | block memory |
set | global SCIP settings |
stat | dynamic problem statistics |
boundtype | type of bound for which the score should be increased |
value | value of the bound |
weight | weight of this VSIDS updates |
Definition at line 2025 of file conflict.c.
References SCIP_Stat::glbhistory, SCIP_Stat::glbhistorycrun, SCIP_BOUNDTYPE_LOWER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_OKAY, SCIPhistoryIncVSIDS(), SCIPsetIsZero(), SCIPvarIncVSIDS(), and SCIP_Stat::vsidsweight.
Referenced by conflictAddBound(), conflictAnalyzeRemainingBdchgs(), and updateStatistics().
|
static |
update conflict statistics
conflict | conflict analysis data |
blkmem | block memory |
set | global SCIP settings |
stat | dynamic problem statistics |
conflictset | conflict set to add to the tree |
insertdepth | depth level at which the conflict set should be added |
Definition at line 2056 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, bound, SCIP_Stat::glbhistory, SCIP_Stat::glbhistorycrun, incVSIDS(), SCIP_Conflict::nappliedglbconss, SCIP_Conflict::nappliedglbliterals, SCIP_Conflict::nappliedlocconss, SCIP_Conflict::nappliedlocliterals, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::relaxedbds, SCIP_BOUNDTYPE_LOWER, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPhistoryIncNActiveConflicts(), SCIPvarIncNActiveConflicts(), and SCIP_BdChgInfo::var.
Referenced by conflictAddConflictCons().
|
static |
check conflict set for redundancy, other conflicts in the same conflict analysis could have led to global reductions an made this conflict set redundant
set | global SCIP settings |
conflictset | conflict set |
Definition at line 2110 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, bound, FALSE, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::relaxedbds, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPsetIsGE(), SCIPsetIsIntegral(), SCIPsetIsLE(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by detectImpliedBounds().
|
static |
find global fixings which can be derived from the new conflict set
set | global SCIP settings |
prob | transformed problem after presolve |
conflictset | conflict set to add to the tree |
nbdchgs | number of global deducted bound changes due to the conflict set |
nredvars | number of redundant and removed variables from conflict set |
redundant | did we found a global reduction on a conflict set variable, which makes this conflict redundant |
Definition at line 2175 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, BMSclearMemoryArray, bound, checkRedundancy(), FALSE, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::relaxedbds, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPboundtypeOpposite(), SCIPprobGetName(), SCIPprobIsTransformed(), SCIPsetAllocBufferArray, SCIPsetAllocCleanBufferArray, SCIPsetDebugMsg, SCIPsetDebugMsgPrint, SCIPsetFreeBufferArray, SCIPsetFreeCleanBufferArray, SCIPsetIsEQ(), SCIPsetIsFeasEQ(), SCIPsetIsFeasGT(), SCIPsetIsFeasLT(), SCIPsetIsGE(), SCIPsetIsIntegral(), SCIPsetIsLE(), SCIPsetIsZero(), SCIPshrinkDisjunctiveVarSet(), SCIPsortLongPtrRealRealBool(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNCliques(), SCIPvarGetNVlbs(), SCIPvarGetNVubs(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarIsIntegral(), SCIP_ConflictSet::sortvals, and TRUE.
Referenced by conflictAddConflictCons().
|
static |
tighten the bound of a singleton variable in a constraint
if the bound is contradicting with a global bound we cannot tighten the bound directly. in this case we need to create and add a constraint of size one such that propagating this constraint will enforce the infeasibility.
conflict | conflict analysis data |
set | global SCIP settings |
stat | dynamic SCIP statistics |
tree | tree data |
blkmem | block memory |
origprob | original problem |
transprob | transformed problem |
reopt | reoptimization data |
lp | LP data |
branchcand | branching candidates |
eventqueue | event queue |
cliquetable | clique table |
var | problem variable |
val | coefficient of the variable |
rhs | rhs of the constraint |
prooftype | type of the proof |
Definition at line 2436 of file conflict.c.
References SCIP_Conflict::dualraybndnnonzeros, SCIP_Conflict::dualrayinfnnonzeros, FALSE, SCIP_Conflict::nboundlpsuccess, SCIP_Conflict::ndualraybndglobal, SCIP_Conflict::ndualraybndsuccess, SCIP_Conflict::ndualrayinfglobal, SCIP_Conflict::ndualrayinfsuccess, SCIP_Conflict::nglbchgbds, SCIP_Conflict::ninflpsuccess, SCIP_Tree::path, SCIP_Tree::root, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_INFEASLP, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPconsRelease(), SCIPcreateConsLinear(), SCIPnodeAddBoundchg(), SCIPnodeCutoff(), SCIPnodePropagateAgain(), SCIPprobAddCons(), SCIPsetDebugMsg, SCIPsetFeasFloor(), SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsIntegral(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsnprintf(), SCIPvarAdjustBd(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), SCIP_Lp::strongbranching, and TRUE.
Referenced by conflictFlushProofset(), and propagateLongProof().
|
static |
calculates the minimal activity of a given aggregation row
transprob | transformed problem data |
aggrrow | aggregation row |
curvarlbs | current lower bounds of active problem variables (or NULL for global bounds) |
curvarubs | current upper bounds of active problem variables (or NULL for global bounds) |
Definition at line 2557 of file conflict.c.
References SCIP_Real, SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPprobGetVars(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), and SCIPvarGetUbGlobal().
Referenced by conflictAnalyzeDualProof(), getDualProof(), getFarkasProof(), separateAlternativeProofs(), and tightenDualproof().
|
static |
calculates the minimal activity of a given set of bounds and coefficients
transprob | transformed problem data |
coefs | coefficients in sparse representation |
inds | non-zero indices |
nnz | number of non-zero indices |
curvarlbs | current lower bounds of active problem variables (or NULL for global bounds) |
curvarubs | current upper bounds of active problem variables (or NULL for global bounds) |
Definition at line 2597 of file conflict.c.
References SCIP_Real, SCIPprobGetVars(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), and SCIPvarGetUbGlobal().
Referenced by createAndAddProofcons(), and propagateLongProof().
|
static |
calculates the minimal activity of a given set of bounds and coefficients
transprob | transformed problem data |
coefs | coefficients in sparse representation |
inds | non-zero indices |
nnz | number of non-zero indices |
curvarlbs | current lower bounds of active problem variables (or NULL for global bounds) |
curvarubs | current upper bounds of active problem variables (or NULL for global bounds) |
Definition at line 2637 of file conflict.c.
References SCIP_Real, SCIPprobGetVars(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), and SCIPvarGetUbGlobal().
Referenced by createAndAddProofcons(), and tightenDualproof().
|
static |
conflict | conflict analysis data |
set | global SCIP settings |
stat | dynamic SCIP statistics |
reopt | reoptimization data |
tree | tree data |
blkmem | block memory |
origprob | original problem |
transprob | transformed problem |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
coefs | coefficients in sparse representation |
inds | non-zero indices |
nnz | number of non-zero indices |
rhs | right-hand side |
conflicttype | type of the conflict |
Definition at line 2676 of file conflict.c.
References getMinActivity(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPprobGetVars(), SCIPsetIsEQ(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsZero(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and tightenSingleVar().
Referenced by createAndAddProofcons().
|
static |
creates a proof constraint and tries to add it to the storage
conflict | conflict analysis data |
conflictstore | conflict pool data |
proofset | proof set |
set | global SCIP settings |
stat | dynamic SCIP statistics |
origprob | original problem |
transprob | transformed problem |
tree | tree data |
reopt | reoptimization data |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
blkmem | block memory |
Definition at line 2775 of file conflict.c.
References SCIP_Stat::avgnnz, SCIP_Conflict::dualraybndnnonzeros, SCIP_Conflict::dualrayinfnnonzeros, FALSE, getMaxActivity(), getMinActivity(), SCIP_Conflict::ndualraybndglobal, SCIP_Conflict::ndualraybndsuccess, SCIP_Conflict::ndualrayinfglobal, SCIP_Conflict::ndualrayinfsuccess, SCIP_Prob::nvars, SCIP_Tree::path, proofsetGetConftype(), proofsetGetInds(), proofsetGetNVars(), proofsetGetRhs(), proofsetGetVals(), propagateLongProof(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_ALTBNDPROOF, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_INVALIDCALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPconflictstoreAddDualraycons(), SCIPconflictstoreAddDualsolcons(), SCIPconflictstoreGetAvgNnzDualBndProofs(), SCIPconflictstoreGetAvgNnzDualInfProofs(), SCIPconflictstoreGetNDualBndProofs(), SCIPconflictstoreGetNDualInfProofs(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsMarkConflict(), SCIPcreateConsLinear(), SCIPgetLhsLinear(), SCIPgetRhsLinear(), SCIPnodeCutoff(), SCIPprobAddCons(), SCIPprobGetVars(), SCIPreleaseCons(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPsnprintf(), SCIPupgradeConsLinear(), SCIP_Prob::startnconss, and TRUE.
Referenced by conflictFlushProofset().
|
static |
conflict | conflict analysis data |
conflictstore | conflict store |
blkmem | block memory |
set | global SCIP settings |
stat | dynamic problem statistics |
transprob | transformed problem after presolve |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | current LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
Definition at line 3013 of file conflict.c.
References SCIP_ProofSet::conflicttype, createAndAddProofcons(), FALSE, SCIP_Conflict::nproofsets, SCIP_Conflict::proofset, proofsetClear(), proofsetFree(), proofsetGetConftype(), proofsetGetInds(), proofsetGetNVars(), proofsetGetRhs(), proofsetGetVals(), SCIP_Conflict::proofsets, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_CONFTYPE_UNKNOWN, SCIP_OKAY, SCIP_Real, SCIPprobGetVars(), tightenSingleVar(), and TRUE.
Referenced by conflictAnalyzeLP().
|
static |
adds the given conflict set as conflict constraint to the problem
conflict | conflict analysis data |
blkmem | block memory |
set | global SCIP settings |
stat | dynamic problem statistics |
transprob | transformed problem after presolve |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | current LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
conflictset | conflict set to add to the tree |
insertdepth | depth level at which the conflict set should be added |
success | pointer to store whether the addition was successful |
Definition at line 3131 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, bound, SCIP_BdChgInfo::boundtype, SCIP_ConflictSet::conflictdepth, SCIP_ConflictSet::conflicttype, detectImpliedBounds(), SCIP_Conflict::dIBclock, SCIP_Lp::diving, FALSE, SCIP_ConflictSet::nbdchginfos, SCIP_Tree::path, SCIP_ConflictSet::relaxedbds, SCIP_Tree::root, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_CONFTYPE_UNKNOWN, SCIP_CONSADDED, SCIP_OKAY, SCIP_Real, SCIPboundtypeOpposite(), SCIPclockStart(), SCIPclockStop(), SCIPconflicthdlrExec(), SCIPconflicthdlrGetName(), SCIPconflicthdlrGetPriority(), SCIPdebugCheckConflict, SCIPnodeAddBoundchg(), SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPsetSortConflicthdlrs(), SCIPtreeGetCurrentDepth(), SCIPtreeGetFocusDepth(), SCIPvarGetName(), SCIPvarIsIntegral(), SCIP_Lp::strongbranching, TRUE, updateStatistics(), SCIP_ConflictSet::usescutoffbound, SCIP_ConflictSet::validdepth, and SCIP_BdChgInfo::var.
Referenced by SCIPconflictFlushConss().
SCIP_RETCODE SCIPconflictFlushConss | ( | SCIP_CONFLICT * | conflict, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable | ||
) |
adds the collected conflict constraints to the corresponding nodes; the best set->conf_maxconss conflict constraints are added to the node of their validdepth; additionally (if not yet added, and if repropagation is activated), the conflict constraint that triggers the earliest repropagation is added to the node of its validdepth
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | dynamic problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | current LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
Definition at line 3279 of file conflict.c.
References conflictAddConflictCons(), conflictCalcMaxsize(), SCIP_ConflictSet::conflictdepth, conflictFreeTmpBdchginfos(), conflictsetFree(), SCIP_Conflict::conflictsets, SCIP_Node::depth, SCIP_ConflictSet::insertdepth, SCIP_ConflictSet::nbdchginfos, SCIP_Conflict::nconflictsets, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_ConflictSet::repropagate, SCIP_ConflictSet::repropdepth, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPdebug, SCIPnodeCutoff(), SCIPnodePropagateAgain(), SCIPsetDebugMsg, SCIPtreeGetCurrentDepth(), SCIPtreeGetFocusDepth(), SCIPvisualFoundConflict(), SCIP_ConflictSet::validdepth, and SCIP_Stat::visual.
Referenced by conflictAnalyzeLP(), SCIPconflictAnalyzePseudo(), SCIPpropagateDomains(), and solveNode().
int SCIPconflictGetNConflicts | ( | SCIP_CONFLICT * | conflict | ) |
returns the current number of conflict sets in the conflict set storage
conflict | conflict analysis data |
Definition at line 3488 of file conflict.c.
References SCIP_Conflict::nconflictsets.
Referenced by propAndSolve(), SCIPgetNConflictConssFoundNode(), SCIPgetVarStrongbranchWithPropagation(), and solveNode().
SCIP_Longint SCIPconflictGetNAppliedConss | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of conflict constraints that were added to the problem
conflict | conflict analysis data |
Definition at line 3498 of file conflict.c.
References SCIP_Conflict::nappliedglbconss, and SCIP_Conflict::nappliedlocconss.
Referenced by SCIPgetNConflictConssApplied().
SCIP_Longint SCIPconflictGetNAppliedLiterals | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of literals in conflict constraints that were added to the problem
conflict | conflict analysis data |
Definition at line 3508 of file conflict.c.
References SCIP_Conflict::nappliedglbliterals, and SCIP_Conflict::nappliedlocliterals.
SCIP_Longint SCIPconflictGetNGlobalChgBds | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of global bound changes applied by the conflict analysis
conflict | conflict analysis data |
Definition at line 3518 of file conflict.c.
References SCIP_Conflict::nglbchgbds.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNAppliedGlobalConss | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of conflict constraints that were added globally to the problem
conflict | conflict analysis data |
Definition at line 3528 of file conflict.c.
References SCIP_Conflict::nappliedglbconss.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNAppliedGlobalLiterals | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of literals in conflict constraints that were added globally to the problem
conflict | conflict analysis data |
Definition at line 3538 of file conflict.c.
References SCIP_Conflict::nappliedglbliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNLocalChgBds | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of local bound changes applied by the conflict analysis
conflict | conflict analysis data |
Definition at line 3548 of file conflict.c.
References SCIP_Conflict::nlocchgbds.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNAppliedLocalConss | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of conflict constraints that were added locally to the problem
conflict | conflict analysis data |
Definition at line 3558 of file conflict.c.
References SCIP_Conflict::nappliedlocconss.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNAppliedLocalLiterals | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of literals in conflict constraints that were added locally to the problem
conflict | conflict analysis data |
Definition at line 3568 of file conflict.c.
References SCIP_Conflict::nappliedlocliterals.
Referenced by SCIPprintConflictStatistics().
|
static |
returns whether bound change has a valid reason that can be resolved in conflict analysis
bdchginfo | bound change information |
Definition at line 3586 of file conflict.c.
References SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIPbdchginfoGetChgtype(), SCIPbdchginfoGetInferProp(), and SCIPbdchginfoIsRedundant().
Referenced by addCand(), and conflictCreateReconvergenceConss().
|
static |
compares two conflict set entries, such that bound changes infered later are ordered prior to ones that were infered earlier
Definition at line 3602 of file conflict.c.
References SCIPbdchgidxIsEarlierNonNull(), SCIPbdchginfoGetIdx(), and SCIPbdchginfoIsRedundant().
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
set | global SCIP settings |
Definition at line 3623 of file conflict.c.
Referenced by SCIPconflictAnalyze(), and SCIPisConflictAnalysisApplicable().
SCIP_RETCODE SCIPconflictCreate | ( | SCIP_CONFLICT ** | conflict, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set | ||
) |
creates conflict analysis data for propagation conflicts
conflict | pointer to conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
Definition at line 3639 of file conflict.c.
References BMSallocMemory, conflictInitProofset(), conflictsetCreate(), SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_OKAY, SCIPclockCreate(), SCIPconflictEnableOrDisableClocks(), and SCIPpqueueCreate().
Referenced by SCIPtransformProb().
SCIP_RETCODE SCIPconflictFree | ( | SCIP_CONFLICT ** | conflict, |
BMS_BLKMEM * | blkmem | ||
) |
frees conflict analysis data for propagation conflicts
conflict | pointer to conflict analysis data |
blkmem | block memory of transformed problem |
Definition at line 3727 of file conflict.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, conflictsetFree(), proofsetFree(), SCIP_OKAY, SCIPclockFree(), and SCIPpqueueFree().
Referenced by freeTransform().
|
static |
clears the conflict queue and the current conflict set
conflict | conflict analysis data |
Definition at line 3763 of file conflict.c.
References SCIP_Conflict::bdchgqueue, SCIP_Conflict::conflictset, conflictsetClear(), SCIP_Conflict::forcedbdchgqueue, and SCIPpqueueClear().
Referenced by conflictAnalyze(), conflictCreateReconvergenceConss(), and SCIPconflictInit().
SCIP_RETCODE SCIPconflictInit | ( | SCIP_CONFLICT * | conflict, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | prob, | ||
SCIP_CONFTYPE | conftype, | ||
SCIP_Bool | usescutoffbound | ||
) |
initializes the propagation conflict analysis by clearing the conflict candidate queue
conflict | conflict analysis data |
set | global SCIP settings |
stat | problem statistics |
prob | problem data |
conftype | type of the conflict |
usescutoffbound | depends the conflict on a cutoff bound? |
Definition at line 3775 of file conflict.c.
References conflictClear(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_Conflict::count, SCIP_Stat::glbhistory, SCIP_Stat::glbhistorycrun, SCIP_Stat::lastconflictnode, SCIP_Stat::nnodes, SCIP_Prob::nvars, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIPhistoryScaleVSIDS(), SCIPsetDebugMsg, SCIPvarScaleVSIDS(), SCIP_ConflictSet::usescutoffbound, SCIP_Prob::vars, and SCIP_Stat::vsidsweight.
Referenced by conflictAnalyzeRemainingBdchgs(), conflictCreateReconvergenceConss(), and SCIPinitConflictAnalysis().
|
static |
marks bound to be present in the current conflict and returns whether a bound which is at least as tight was already member of the current conflict (i.e., the given bound change does not need to be added)
conflict | conflict analysis data |
set | global SCIP settings |
bdchginfo | bound change to add to the conflict set |
relaxedbd | relaxed bound |
Definition at line 3844 of file conflict.c.
References SCIP_Var::conflictlb, SCIP_Var::conflictlbcount, SCIP_Var::conflictrelaxedlb, SCIP_Var::conflictrelaxedub, SCIP_Var::conflictub, SCIP_Var::conflictubcount, SCIP_Conflict::count, FALSE, MAX, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPABORT, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPerrorMessage, SCIPsetDebugMsg, SCIPvarGetName(), and TRUE.
Referenced by conflictAddConflictBound(), and conflictQueueBound().
|
static |
puts bound change into the current conflict set
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
bdchginfo | bound change to add to the conflict set |
relaxedbd | relaxed bound |
Definition at line 3933 of file conflict.c.
References conflictMarkBoundCheckPresence(), SCIP_Conflict::conflictset, conflictsetAddBound(), SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsRedundant(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPsetIsLE(), and SCIPvarGetName().
Referenced by conflictAnalyze(), conflictAnalyzeRemainingBdchgs(), and conflictCreateReconvergenceConss().
|
static |
returns whether the negation of the given bound change would lead to a globally valid literal
set | global SCIP settings |
bdchginfo | bound change information |
Definition at line 3976 of file conflict.c.
References bound, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPvarGetLbGlobal(), SCIPvarGetType(), and SCIPvarGetUbGlobal().
Referenced by conflictQueueBound().
|
static |
adds given bound change information to the conflict candidate queue
conflict | conflict analysis data |
set | global SCIP settings |
bdchginfo | bound change information |
relaxedbd | relaxed bound |
Definition at line 3996 of file conflict.c.
References SCIP_Conflict::bdchgqueue, conflictMarkBoundCheckPresence(), SCIP_Conflict::forcedbdchgqueue, isBoundchgUseless(), SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsRedundant(), SCIPpqueueInsert(), SCIPsetIsGE(), SCIPsetIsLE(), and SCIPvarIsBinary().
Referenced by conflictAddBound(), and conflictCreateReconvergenceConss().
|
static |
convert variable and bound change to active variable
var | pointer to variable |
set | global SCIP settings |
boundtype | pointer to type of bound that was changed: lower or upper bound |
bound | pointer to bound to convert, or NULL |
Definition at line 4042 of file conflict.c.
References SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIPboundtypeOpposite(), SCIPvarGetProbvarSum(), and SCIPvarGetStatus().
Referenced by SCIPconflictAddBound(), SCIPconflictAddRelaxedBound(), and SCIPconflictIsVarUsed().
|
static |
adds variable's bound to conflict candidate queue
conflict | conflict analysis data |
blkmem | block memory |
set | global SCIP settings |
stat | dynamic problem statistics |
var | problem variable |
boundtype | type of bound that was changed: lower or upper bound |
bdchginfo | bound change info, or NULL |
relaxedbd | relaxed bound |
Definition at line 4077 of file conflict.c.
References conflictQueueBound(), incVSIDS(), SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetChgtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetInferCons(), SCIPbdchginfoGetInferInfo(), SCIPbdchginfoGetInferProp(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetOldbound(), SCIPbdchginfoGetPos(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsRedundant(), SCIPconsGetName(), SCIPpropGetName(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), and SCIPvarIsActive().
Referenced by conflictAnalyzeRemainingBdchgs(), SCIPconflictAddBound(), and SCIPconflictAddRelaxedBound().
SCIP_RETCODE SCIPconflictAddBound | ( | SCIP_CONFLICT * | conflict, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_VAR * | var, | ||
SCIP_BOUNDTYPE | boundtype, | ||
SCIP_BDCHGIDX * | bdchgidx | ||
) |
adds variable's bound to conflict candidate queue
conflict | conflict analysis data |
blkmem | block memory |
set | global SCIP settings |
stat | dynamic problem statistics |
var | problem variable |
boundtype | type of bound that was changed: lower or upper bound |
bdchgidx | bound change index (time stamp of bound change), or NULL for current time |
Definition at line 4133 of file conflict.c.
References conflictAddBound(), convertToActiveVar(), FALSE, scalars, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPbdchgidxIsEarlier(), SCIPbdchginfoGetIdx(), SCIPbdchginfoGetNewbound(), SCIPboundtypeOpposite(), SCIPconflictAddBound(), SCIPvarGetBdchgInfo(), SCIPvarGetMultaggrNVars(), SCIPvarGetMultaggrScalars(), SCIPvarGetMultaggrVars(), SCIPvarGetStatus(), and SCIPvarIsActive().
Referenced by SCIPaddConflictBd(), SCIPaddConflictBinvar(), SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPconflictAddBound(), and SCIPconflictAddRelaxedBound().
SCIP_RETCODE SCIPconflictAddRelaxedBound | ( | SCIP_CONFLICT * | conflict, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_VAR * | var, | ||
SCIP_BOUNDTYPE | boundtype, | ||
SCIP_BDCHGIDX * | bdchgidx, | ||
SCIP_Real | relaxedbd | ||
) |
adds variable's bound to conflict candidate queue
conflict | conflict analysis data |
blkmem | block memory |
set | global SCIP settings |
stat | dynamic problem statistics |
var | problem variable |
boundtype | type of bound that was changed: lower or upper bound |
bdchgidx | bound change index (time stamp of bound change), or NULL for current time |
relaxedbd | the relaxed bound |
Definition at line 4194 of file conflict.c.
References SCIP_BdChgInfo::bdchgidx, conflictAddBound(), convertToActiveVar(), FALSE, MAX, SCIP_BdChgInfo::pos, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPbdchgidxGetPos(), SCIPbdchgidxIsEarlier(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetIdx(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetOldbound(), SCIPbdchginfoGetPos(), SCIPbdchginfoIsRedundant(), SCIPconflictAddBound(), SCIPsetDebugMsg, SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetBdchgInfo(), SCIPvarGetBdchgInfoLb(), SCIPvarGetBdchgInfoUb(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), and SCIPvarIsActive().
Referenced by SCIPaddConflictRelaxedBd(), SCIPaddConflictRelaxedLb(), and SCIPaddConflictRelaxedUb().
SCIP_RETCODE SCIPconflictIsVarUsed | ( | SCIP_CONFLICT * | conflict, |
SCIP_VAR * | var, | ||
SCIP_SET * | set, | ||
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
conflict | conflict analysis data |
var | problem variable |
set | global SCIP settings |
boundtype | type of bound for which the score should be increased |
bdchgidx | bound change index (time stamp of bound change), or NULL for current time |
used | pointer to store if the variable is already used |
Definition at line 4358 of file conflict.c.
References SCIP_Var::conflictlb, SCIP_Var::conflictlbcount, SCIP_Var::conflictub, SCIP_Var::conflictubcount, convertToActiveVar(), SCIP_Conflict::count, FALSE, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPABORT, SCIPerrorMessage, SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPsetDebugMsg, SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsActive(), and TRUE.
Referenced by SCIPisConflictVarUsed().
SCIP_Real SCIPconflictGetVarLb | ( | SCIP_CONFLICT * | conflict, |
SCIP_VAR * | var | ||
) |
returns the conflict lower bound if the variable is present in the current conflict set; otherwise the global lower bound
conflict | conflict analysis data |
var | problem variable |
Definition at line 4418 of file conflict.c.
References SCIP_Var::conflictlb, SCIP_Var::conflictlbcount, SCIP_Var::conflictrelaxedlb, SCIP_Conflict::count, EPSGE, and SCIPvarGetLbGlobal().
Referenced by SCIPgetConflictVarLb().
SCIP_Real SCIPconflictGetVarUb | ( | SCIP_CONFLICT * | conflict, |
SCIP_VAR * | var | ||
) |
returns the conflict upper bound if the variable is present in the current conflict set; otherwise the global upper bound
conflict | conflict analysis data |
var | problem variable |
Definition at line 4435 of file conflict.c.
References SCIP_Var::conflictrelaxedub, SCIP_Var::conflictub, SCIP_Var::conflictubcount, SCIP_Conflict::count, EPSLE, and SCIPvarGetUbGlobal().
Referenced by SCIPgetConflictVarUb().
|
static |
removes and returns next conflict analysis candidate from the candidate queue
conflict | conflict analysis data |
Definition at line 4451 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_Conflict::bdchgqueue, SCIP_Var::conflictlbcount, SCIP_Var::conflictrelaxedlb, SCIP_Var::conflictrelaxedub, SCIP_Var::conflictubcount, SCIP_Conflict::forcedbdchgqueue, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsRedundant(), SCIPpqueueNElems(), and SCIPpqueueRemove().
Referenced by conflictAnalyze(), and conflictCreateReconvergenceConss().
|
static |
returns next conflict analysis candidate from the candidate queue without removing it
conflict | conflict analysis data |
Definition at line 4495 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_Conflict::bdchgqueue, SCIP_Conflict::forcedbdchgqueue, SCIP_BOUNDTYPE_LOWER, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsRedundant(), SCIPdebugMessage, SCIPpqueueFirst(), SCIPpqueueNElems(), SCIPpqueueRemove(), and SCIPvarGetName().
Referenced by conflictAnalyze(), and conflictCreateReconvergenceConss().
|
static |
adds the current conflict set (extended by all remaining bound changes in the queue) to the pool of conflict sets
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | dynamic problem statistics |
tree | branch and bound tree |
validdepth | minimal depth level at which the conflict set is valid |
diving | are we in strong branching or diving mode? |
repropagate | should the constraint trigger a repropagation? |
success | pointer to store whether the conflict set is valid |
nliterals | pointer to store the number of literals in the generated conflictset |
Definition at line 4549 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, SCIP_Conflict::bdchgqueue, conflictInsertConflictset(), SCIP_Conflict::conflictset, conflictsetAddBounds(), conflictsetCalcInsertDepth(), conflictsetCopy(), conflictsetFree(), FALSE, SCIP_Conflict::forcedbdchgqueue, SCIP_ConflictSet::insertdepth, MAX, SCIP_ConflictSet::nbdchginfos, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_ConflictSet::relaxedbds, SCIP_ConflictSet::repropagate, SCIP_CALL, SCIP_OKAY, SCIPdebugCheckConflict, SCIPpqueueElems(), SCIPpqueueNElems(), SCIPsetDebugMsg, SCIPtreeGetCurrentDepth(), SCIPtreeGetFocusDepth(), TRUE, and SCIP_ConflictSet::validdepth.
Referenced by conflictAnalyze(), and conflictCreateReconvergenceConss().
|
static |
tries to resolve given bound change
conflict | conflict analysis data |
set | global SCIP settings |
bdchginfo | bound change to resolve |
relaxedbd | the relaxed bound |
validdepth | minimal depth level at which the conflict is valid |
resolved | pointer to store whether the bound change was resolved |
Definition at line 4648 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_ConflictSet::bdchginfos, SCIP_Conflict::bdchgqueue, SCIP_Conflict::conflictset, FALSE, SCIP_Conflict::forcedbdchgqueue, SCIP_ConflictSet::nbdchginfos, SCIP_ConflictSet::relaxedbds, SCIP_BOUNDCHGTYPE_BRANCHING, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIP_VARSTATUS_AGGREGATED, SCIP_VARSTATUS_MULTAGGR, SCIP_VARSTATUS_NEGATED, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetChgtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetIdx(), SCIPbdchginfoGetInferBoundtype(), SCIPbdchginfoGetInferCons(), SCIPbdchginfoGetInferInfo(), SCIPbdchginfoGetInferProp(), SCIPbdchginfoGetInferVar(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetPos(), SCIPbdchginfoGetRelaxedBound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsRedundant(), SCIPconsGetName(), SCIPconsGetValidDepth(), SCIPconsIsGlobal(), SCIPconsResolvePropagation(), SCIPerrorMessage, SCIPgetVarBdAtIndex(), SCIPpqueueElems(), SCIPpqueueNElems(), SCIPpropGetName(), SCIPpropResolvePropagation(), SCIPsetDebugMsg, SCIPsetDebugMsgPrint, SCIPvarGetMultaggrNVars(), SCIPvarGetName(), SCIPvarGetProbvarSum(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarIsActive(), and TRUE.
Referenced by conflictAnalyze(), and conflictCreateReconvergenceConss().
|
static |
if only one conflicting bound change of the last depth level was used, and if this can be resolved, creates GRASP-like reconvergence conflict constraints in the conflict graph up to the branching variable of this depth level
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
prob | problem data |
tree | branch and bound tree |
diving | are we in strong branching or diving mode? |
validdepth | minimal depth level at which the initial conflict set is valid |
firstuip | first UIP of conflict graph |
nreconvconss | pointer to store the number of generated reconvergence constraints |
nreconvliterals | pointer to store the number of literals generated reconvergence constraints |
Definition at line 4861 of file conflict.c.
References bdchginfoIsResolvable(), SCIP_ConflictSet::bdchginfos, SCIP_Conflict::bdchgqueue, conflictAddConflictBound(), conflictAddConflictset(), conflictClear(), conflictCreateTmpBdchginfo(), conflictFirstCand(), conflictQueueBound(), conflictRemoveCand(), conflictResolveBound(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::forcedbdchgqueue, SCIP_ConflictSet::nbdchginfos, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_ConflictSet::relaxedbds, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetPos(), SCIPbdchginfoGetRelaxedBound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsRedundant(), SCIPboundtypeOpposite(), SCIPconflictInit(), SCIPdebugCheckConflictFrontier, SCIPpqueueNElems(), SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPtreeGetCurrentDepth(), SCIPtreeGetFocusDepth(), SCIPvarGetName(), SCIPvarIsActive(), SCIPvarIsIntegral(), and SCIP_ConflictSet::usescutoffbound.
Referenced by conflictAnalyze().
|
static |
analyzes conflicting bound changes that were added with calls to SCIPconflictAddBound() and SCIPconflictAddRelaxedBound(), and on success, calls the conflict handlers to create a conflict constraint out of the resulting conflict set; afterwards the conflict queue and the conflict set is cleared
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
prob | problem data |
tree | branch and bound tree |
diving | are we in strong branching or diving mode? |
validdepth | minimal depth level at which the initial conflict set is valid |
mustresolve | should the conflict set only be used, if a resolution was applied? |
nconss | pointer to store the number of generated conflict constraints |
nliterals | pointer to store the number of literals in generated conflict constraints |
nreconvconss | pointer to store the number of generated reconvergence constraints |
nreconvliterals | pointer to store the number of literals generated reconvergence constraints |
Definition at line 5099 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, SCIP_Conflict::bdchgqueue, SCIP_DomChgBound::boundchgs, conflictAddConflictBound(), conflictAddConflictset(), conflictClear(), conflictCreateReconvergenceConss(), conflictFirstCand(), conflictRemoveCand(), conflictResolveBound(), SCIP_Conflict::conflictset, SCIP_Node::domchg, SCIP_DomChg::domchgbound, FALSE, SCIP_Conflict::forcedbdchgqueue, SCIP_ConflictSet::nbdchginfos, SCIP_DomChgBound::nboundchgs, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_ConflictSet::relaxedbds, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetPos(), SCIPbdchginfoGetRelaxedBound(), SCIPbdchginfoGetVar(), SCIPbdchginfoHasInferenceReason(), SCIPbdchginfoIsRedundant(), SCIPdebugCheckConflictFrontier, SCIPpqueueNElems(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPtreeGetCurrentDepth(), SCIPtreeGetFocusDepth(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), and TRUE.
Referenced by conflictAnalyzeRemainingBdchgs(), and SCIPconflictAnalyze().
SCIP_RETCODE SCIPconflictAnalyze | ( | SCIP_CONFLICT * | conflict, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | prob, | ||
SCIP_TREE * | tree, | ||
int | validdepth, | ||
SCIP_Bool * | success | ||
) |
analyzes conflicting bound changes that were added with calls to SCIPconflictAddBound(), and on success, calls the conflict handlers to create a conflict constraint out of the resulting conflict set; updates statistics for propagation conflict analysis
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
prob | problem data |
tree | branch and bound tree |
validdepth | minimal depth level at which the initial conflict set is valid |
success | pointer to store whether a conflict constraint was created, or NULL |
Definition at line 5379 of file conflict.c.
References SCIP_Conflict::bdchgqueue, conflictAnalyze(), conflictCalcMaxsize(), SCIP_Conflict::conflictset, FALSE, SCIP_Conflict::forcedbdchgqueue, SCIP_ConflictSet::nbdchginfos, SCIP_Conflict::npropcalls, SCIP_Conflict::npropconfconss, SCIP_Conflict::npropconfliterals, SCIP_Conflict::npropreconvconss, SCIP_Conflict::npropreconvliterals, SCIP_Conflict::npropsuccess, SCIP_Conflict::propanalyzetime, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPconflictApplicable(), SCIPpqueueNElems(), SCIPsetDebugMsg, SCIPtreeGetCurrentDepth(), and TRUE.
Referenced by SCIPanalyzeConflict(), and SCIPanalyzeConflictCons().
SCIP_Real SCIPconflictGetGlobalApplTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for preprocessing global conflict constraint before appliance
conflict | conflict analysis data |
Definition at line 5437 of file conflict.c.
References SCIP_Conflict::dIBclock, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
SCIP_Real SCIPconflictGetPropTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing propagation conflicts
conflict | conflict analysis data |
Definition at line 5447 of file conflict.c.
References SCIP_Conflict::propanalyzetime, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPropCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to propagation conflict analysis
conflict | conflict analysis data |
Definition at line 5457 of file conflict.c.
References SCIP_Conflict::npropcalls.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPropSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to propagation conflict analysis that yield at least one conflict constraint
conflict | conflict analysis data |
Definition at line 5467 of file conflict.c.
References SCIP_Conflict::npropsuccess.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
SCIP_Longint SCIPconflictGetNPropConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in propagation conflict analysis
conflict | conflict analysis data |
Definition at line 5477 of file conflict.c.
References SCIP_Conflict::npropconfconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPropConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in propagation conflict analysis
conflict | conflict analysis data |
Definition at line 5487 of file conflict.c.
References SCIP_Conflict::npropconfliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPropReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in propagation conflict analysis
conflict | conflict analysis data |
Definition at line 5497 of file conflict.c.
References SCIP_Conflict::npropreconvconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPropReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in propagation conflict analysis
conflict | conflict analysis data |
Definition at line 5507 of file conflict.c.
References SCIP_Conflict::npropreconvliterals.
Referenced by SCIPprintConflictStatistics().
|
static |
ensures, that side change arrays can store at least num entries
set | global SCIP settings |
sidechginds | pointer to side change index array |
sidechgoldlhss | pointer to side change old left hand sides array |
sidechgoldrhss | pointer to side change old right hand sides array |
sidechgnewlhss | pointer to side change new left hand sides array |
sidechgnewrhss | pointer to side change new right hand sides array |
sidechgssize | pointer to size of side change arrays |
num | minimal number of entries to be able to store in side change arrays |
Definition at line 5525 of file conflict.c.
References SCIP_CALL, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIPsetReallocBufferArray.
Referenced by addSideRemoval().
|
static |
adds removal of row's side to side change arrays; finite sides are only replaced by near infinite sides, such that the row's sense in the LP solver is not changed
set | global SCIP settings |
row | LP row to change the sides for |
lpiinfinity | value treated as infinity in LP solver |
sidechginds | pointer to side change index array |
sidechgoldlhss | pointer to side change old left hand sides array |
sidechgoldrhss | pointer to side change old right hand sides array |
sidechgnewlhss | pointer to side change new left hand sides array |
sidechgnewrhss | pointer to side change new right hand sides array |
sidechgssize | pointer to size of side change arrays |
nsidechgs | pointer to number of used slots in side change arrays |
Definition at line 5564 of file conflict.c.
References ensureSidechgsSize(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetRhs(), and SCIPsetIsInfinity().
Referenced by runBoundHeuristic().
|
static |
inserts variable's new bounds into bound change arrays
set | global SCIP settings |
var | variable to change the LP bounds for |
newlb | new lower bound |
newub | new upper bound |
oldlpbdchgs | old LP bound changes used for reset the LP bound change |
relaxedlpbdchgs | relaxed LP bound changes used for reset the LP bound change |
lpi | pointer to LPi to access infinity of LP solver; necessary to set correct value |
Definition at line 5633 of file conflict.c.
References SCIP_LPBdChgs::bdchgcolinds, SCIP_LPBdChgs::bdchginds, SCIP_LPBdChgs::bdchglbs, SCIP_LPBdChgs::bdchgubs, SCIP_LPBdChgs::nbdchgs, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPcolGetLPPos(), SCIPlpiInfinity(), SCIPlpiIsInfinity(), SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPvarGetCol(), SCIPvarGetLbLP(), SCIPvarGetStatus(), SCIPvarGetUbLP(), TRUE, and SCIP_LPBdChgs::usedcols.
Referenced by undoBdchgsProof().
|
static |
ensures, that candidate array can store at least num entries
set | global SCIP settings |
cands | pointer to candidate array |
candscores | pointer to candidate score array |
newbounds | pointer to candidate new bounds array |
proofactdeltas | pointer to candidate proof delta array |
candssize | pointer to size of array |
num | minimal number of candidates to store in array |
Definition at line 5714 of file conflict.c.
References SCIP_CALL, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIPsetReallocBufferArray.
Referenced by addCand().
|
static |
adds variable to candidate list, if the current best bound corresponding to the proof coefficient is local; returns the array position in the candidate list, where the new candidate was inserted, or -1 if the variable can relaxed to global bounds immediately without increasing the proof's activity; the candidates are sorted with respect to the following two criteria:
set | global SCIP settings |
currentdepth | current depth in the tree |
var | variable to add to candidate array |
lbchginfopos | positions of currently active lower bound change information in variable's array |
ubchginfopos | positions of currently active upper bound change information in variable's array |
proofcoef | coefficient of variable in infeasibility/bound proof |
prooflhs | left hand side of infeasibility/bound proof |
proofact | activity of infeasibility/bound proof row |
cands | pointer to candidate array for undoing bound changes |
candscores | pointer to candidate score array for undoing bound changes |
newbounds | pointer to candidate new bounds array for undoing bound changes |
proofactdeltas | pointer to proof activity increase array for undoing bound changes |
candssize | pointer to size of cands arrays |
ncands | pointer to count number of candidates in bound change list |
firstcand | position of first unprocessed bound change candidate |
Definition at line 5751 of file conflict.c.
References SCIP_BdChgInfo::bdchgidx, bdchginfoIsResolvable(), calcBdchgScore(), SCIP_BdChgIdx::depth, ensureCandsSize(), FALSE, SCIP_Var::lbchginfos, SCIP_BdChgInfo::newbound, SCIP_Var::nlbchginfos, SCIP_Var::nubchginfos, SCIP_BdChgInfo::oldbound, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPsetDebugMsg, SCIPsetIsGT(), SCIPsetIsZero(), SCIPvarGetLbLocal(), SCIPvarGetLbLP(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPvarGetUbLP(), SCIPvarIsBinary(), and SCIP_Var::ubchginfos.
Referenced by undoBdchgsProof().
|
static |
after changing the global bound of a variable, the bdchginfos that are now redundant are replaced with oldbound = newbound = global bound; if the current bdchginfo is of such kind, the bound is equal to the global bound and we can ignore it by installing a -1 as the corresponding bound change info position
var | problem variable |
lbchginfopos | pointer to lower bound change information position |
ubchginfopos | pointer to upper bound change information position |
Definition at line 5887 of file conflict.c.
References SCIP_Var::lbchginfos, SCIP_BdChgInfo::newbound, SCIP_Var::nlbchginfos, SCIP_Var::nubchginfos, SCIP_BdChgInfo::oldbound, SCIP_BdChgInfo::redundant, SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and SCIP_Var::ubchginfos.
Referenced by undoBdchgsProof().
|
static |
undoes bound changes on variables, still leaving the given infeasibility proof valid
set | global SCIP settings |
prob | problem data |
currentdepth | current depth in the tree |
proofcoefs | coefficients in infeasibility proof |
prooflhs | left hand side of proof |
proofact | current activity of proof |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
lbchginfoposs | positions of currently active lower bound change information in variables' arrays |
ubchginfoposs | positions of currently active upper bound change information in variables' arrays |
oldlpbdchgs | old LP bound changes used for reset the LP bound change, or NULL |
relaxedlpbdchgs | relaxed LP bound changes used for reset the LP bound change, or NULL |
resolve | pointer to store whether the changed LP should be resolved again, or NULL |
lpi | pointer to LPi to access infinity of LP solver; necessary to set correct values |
Definition at line 5919 of file conflict.c.
References addBdchg(), addCand(), FALSE, SCIP_Prob::nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsEQ(), SCIPsetIsFeasGT(), SCIPsetIsGT(), SCIPsetIsLT(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvarIsInLP(), skipRedundantBdchginfos(), TRUE, and SCIP_Prob::vars.
Referenced by SCIPconflictAnalyzePseudo(), undoBdchgsDualfarkas(), and undoBdchgsDualsol().
|
static |
analyzes an infeasible LP and undoes additional bound changes while staying infeasible
set | global SCIP settings |
prob | problem data |
lp | LP data |
currentdepth | current depth in the tree |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
lbchginfoposs | positions of currently active lower bound change information in variables' arrays |
ubchginfoposs | positions of currently active upper bound change information in variables' arrays |
oldlpbdchgs | old LP bound changes used for reset the LP bound change, or NULL |
relaxedlpbdchgs | relaxed LP bound changes used for reset the LP bound change, or NULL |
valid | pointer to store whether the unfixings are valid |
resolve | pointer to store whether the changed LP should be resolved again |
farkascoefs | coefficients in the proof constraint |
farkaslhs | lhs of the proof constraint |
farkasactivity | maximal activity of the proof constraint |
Definition at line 6123 of file conflict.c.
References SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, SCIP_CALL, SCIP_OKAY, SCIPlpGetLPI(), SCIPsetDebugMsg, SCIPsetIsFeasGT(), SCIP_Lp::solved, TRUE, and undoBdchgsProof().
Referenced by runBoundHeuristic().
|
static |
analyzes an LP exceeding the objective limit and undoes additional bound changes while staying beyond the objective limit
set | global SCIP settings |
prob | problem data |
lp | LP data |
currentdepth | current depth in the tree |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
lbchginfoposs | positions of currently active lower bound change information in variables' arrays |
ubchginfoposs | positions of currently active upper bound change information in variables' arrays |
oldlpbdchgs | old LP bound changes used for reset the LP bound change, or NULL |
relaxedlpbdchgs | relaxed LP bound changes used for reset the LP bound change, or NULL |
valid | pointer to store whether the unfixings are valid |
resolve | pointer to store whether the changed LP should be resolved again |
dualcoefs | coefficients in the proof constraint |
duallhs | lhs of the proof constraint |
dualactivity | maximal activity of the proof constraint |
Definition at line 6181 of file conflict.c.
References SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, SCIP_CALL, SCIP_OKAY, SCIPlpGetLPI(), SCIPsetDebugMsg, SCIPsetIsFeasGT(), SCIP_Lp::solved, TRUE, and undoBdchgsProof().
Referenced by runBoundHeuristic().
|
static |
applies conflict analysis starting with given bound changes, that could not be undone during previous infeasibility analysis
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
prob | problem data |
tree | branch and bound tree |
diving | are we in strong branching or diving mode? |
lbchginfoposs | positions of currently active lower bound change information in variables' arrays |
ubchginfoposs | positions of currently active upper bound change information in variables' arrays |
nconss | pointer to store the number of generated conflict constraints |
nliterals | pointer to store the number of literals in generated conflict constraints |
nreconvconss | pointer to store the number of generated reconvergence constraints |
nreconvliterals | pointer to store the number of literals generated reconvergence constraints |
Definition at line 6238 of file conflict.c.
References conflictAddBound(), conflictAddConflictBound(), conflictAnalyze(), conflictCalcMaxsize(), conflictCreateTmpBdchginfo(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, incVSIDS(), SCIP_Var::lbchginfos, SCIP_Var::nlbchginfos, SCIP_Var::nubchginfos, SCIP_Prob::nvars, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoIsRedundant(), SCIPconflictInit(), SCIPsetDebugMsg, SCIPvarGetLbLocal(), SCIPvarGetLbLP(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarGetUbLP(), SCIP_Var::ubchginfos, SCIP_ConflictSet::usescutoffbound, and SCIP_Prob::vars.
Referenced by conflictAnalyzeLP(), and SCIPconflictAnalyzePseudo().
|
static |
calculates a Farkas proof from the current dual LP solution
set | global SCIP settings |
prob | transformed problem |
lp | LP data |
lpi | LPI data |
farkasrow | aggregated row representing the proof |
farkasact | maximal activity of the proof constraint |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
valid | pointer store whether the proof constraint is valid |
Definition at line 6377 of file conflict.c.
References aggrRowGetMinActivity(), BMSclearMemoryArray, SCIP_Row::cols, SCIP_Row::constant, FALSE, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::local, SCIP_Lp::lpirows, SCIP_Lp::nlpirows, NUMSTOP, REALABS, SCIP_Row::rhs, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowAddRow(), SCIPaggrRowGetRhs(), SCIPaggrRowRemoveZeros(), SCIPlpDivingObjChanged(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiGetDualfarkas(), SCIPlpiGetSides(), SCIPlpiHasDualRay(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsPrimalInfeasible(), SCIProwGetName(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasZero(), SCIPsetIsFeasLE(), SCIPsetIsInfinity(), SCIPsetIsRelEQ(), SCIPsetIsZero(), TRUE, and SCIP_Row::vals.
Referenced by conflictAnalyzeLP(), and runBoundHeuristic().
|
static |
calculates a Farkas proof from the current dual LP solution
set | global SCIP settings |
prob | transformed problem |
lp | LP data |
lpi | LPI data |
farkasrow | aggregated row representing the proof |
farkasact | maximal activity of the proof constraint |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
valid | pointer store whether the proof constraint is valid |
Definition at line 6527 of file conflict.c.
References aggrRowGetMinActivity(), SCIP_Row::cols, SCIP_Row::constant, SCIP_Lp::cutoffbound, debugPrintViolationInfo, FALSE, SCIP_Lp::flushed, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::local, SCIP_Lp::lpirows, SCIP_Lp::nlpirows, REALABS, SCIP_Row::rhs, SCIP_CALL, SCIP_LPERROR, SCIP_OKAY, SCIP_Real, SCIPaggrRowAddObjectiveFunction(), SCIPaggrRowAddRow(), SCIPaggrRowClear(), SCIPaggrRowGetRhs(), SCIPaggrRowRemoveZeros(), SCIPcolGetVar(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiGetObjval(), SCIPlpiGetSol(), SCIProwGetName(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasZero(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetSumepsilon(), SCIPvarGetProbindex(), SCIP_Lp::solved, TRUE, and SCIP_Row::vals.
Referenced by conflictAnalyzeLP(), and runBoundHeuristic().
|
static |
apply coefficient tightening
set | global SCIP settings |
proofset | proof set |
nchgcoefs | pointer to store number of changed coefficients |
redundant | pointer to store whether the proof set is redundant |
Definition at line 6730 of file conflict.c.
References FALSE, SCIP_ProofSet::inds, MAX, SCIP_ProofSet::nnz, proofsetGetNVars(), proofsetGetRhs(), REALABS, SCIP_ProofSet::rhs, SCIP_Real, SCIPcutsTightenCoefficients(), SCIPsetDebugMsg, SCIPsetInfinity(), and SCIP_ProofSet::vals.
Referenced by separateAlternativeProofs(), and tightenDualproof().
|
static |
try to generate alternative proofs by applying subadditive functions
conflict | conflict analysis data |
set | global SCIP settings |
stat | dynamic SCIP statistics |
transprob | transformed problem |
tree | tree data |
blkmem | block memory |
proofrow | proof rows data |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
conflicttype | type of the conflict |
Definition at line 6772 of file conflict.c.
References aggrRowGetMinActivity(), ALLOWLOCAL, BOUNDSWITCH, conflictInsertProofset(), SCIP_ProofSet::conflicttype, MAX, MAXFRAC, MINFRAC, POSTPROCESS, proofsetAddSparseData(), proofsetCreate(), proofsetFree(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_ALTBNDPROOF, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_INFEASLP, SCIP_OKAY, SCIP_Real, SCIPaggrRowCalcEfficacyNorm(), SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPcalcFlowCover(), SCIPcreateSol(), SCIPcutGenerationHeuristicCMIR(), SCIPfreeSol(), SCIPprobGetNVars(), SCIPprobGetVars(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsPositive(), SCIPsolSetVal(), SCIPvarGetAvgSol(), tightenCoefficients(), and USEVBDS.
Referenced by tightenDualproof().
|
static |
tighten a given infeasibility proof a^Tx <= b with minact > b w.r.t. local bounds
1) Apply cut generating functions
conflict | conflict analysis data |
set | global SCIP settings |
stat | dynamic SCIP statistics |
blkmem | block memory |
transprob | transformed problem |
tree | tree data |
proofrow | aggregated row representing the proof |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
initialproof | do we analyze the initial reason of infeasibility? |
Definition at line 6897 of file conflict.c.
References aggrRowGetMinActivity(), conflictInsertProofset(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_ProofSet::conflicttype, debugPrintViolationInfo, eps, getMaxActivity(), SCIP_ProofSet::inds, SCIP_ProofSet::nnz, SCIP_Conflict::proofset, proofsetAddAggrrow(), proofsetCancelVarWithBound(), proofsetClear(), proofsetCreate(), proofsetGetInds(), proofsetGetNVars(), proofsetGetVals(), SCIP_ProofSet::rhs, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_ALTBNDPROOF, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetRhs(), SCIPprobGetVars(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsZero(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), SCIPvarIsIntegral(), separateAlternativeProofs(), tightenCoefficients(), and SCIP_ProofSet::vals.
Referenced by conflictAnalyzeDualProof().
|
static |
perform conflict analysis based on a dual unbounded ray
given an aggregation of rows lhs <= a^Tx such that lhs > maxactivity. if the constraint has size one we add a bound change instead of the constraint.
conflict | conflict analysis data |
set | global SCIP settings |
stat | dynamic SCIP statistics |
blkmem | block memory |
origprob | original problem |
transprob | transformed problem |
tree | tree data |
reopt | reoptimization data |
lp | LP data |
proofrow | aggregated row representing the proof |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
initialproof | do we analyze the initial reason of infeasibility? |
globalinfeasible | pointer to store whether global infeasibility could be proven |
success | pointer to store success result |
Definition at line 7060 of file conflict.c.
References aggrRowGetMinActivity(), FALSE, SCIP_Conflict::ndualrayinfsuccess, SCIP_Tree::path, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowGetNNz(), SCIPaggrRowGetRhs(), SCIPnodeCutoff(), SCIPsetDebugMsg, SCIPsetIsFeasLE(), SCIPtreeGetFocusDepth(), tightenDualproof(), and TRUE.
Referenced by conflictAnalyzeLP(), and runBoundHeuristic().
|
static |
try to find a subset of changed bounds leading to an infeasible LP
conflict | conflict data |
set | global SCIP settings |
stat | problem statistics |
origprob | original problem |
transprob | transformed problem |
tree | branch and bound tree |
reopt | reoptimization data |
lp | LP data |
lpi | LPI data |
blkmem | block memory |
proofcoefs | coefficients in the proof constraint |
prooflhs | lhs of the proof constraint |
proofactivity | maximal activity of the proof constraint |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
lbchginfoposs | positions of currently active lower bound change information in variables' arrays |
ubchginfoposs | positions of currently active upper bound change information in variables' arrays |
iterations | pointer to store the total number of LP iterations used |
marklpunsolved | whether LP should be marked unsolved after analysis (needed for strong branching) |
dualraysuccess | pointer to store success result of dualray analysis |
valid | pointer to store whether the result is still a valid proof |
Definition at line 7143 of file conflict.c.
References addSideRemoval(), SCIP_LPBdChgs::bdchginds, SCIP_LPBdChgs::bdchglbs, SCIP_LPBdChgs::bdchgubs, BMSclearMemoryArray, conflictAnalyzeDualProof(), SCIP_Stat::conflictlptime, SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, getDualProof(), getFarkasProof(), lpbdchgsCreate(), lpbdchgsFree(), lpbdchgsReset(), SCIP_Lp::lpiitlim, SCIP_Lp::lpiobjlim, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_LPBdChgs::nbdchgs, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_INFEASLP, SCIP_INVALID, SCIP_LPERROR, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_OBJLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPaggrRowCreate(), SCIPaggrRowFree(), SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPclockStart(), SCIPclockStop(), SCIPlpDivingObjChanged(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiChgBounds(), SCIPlpiChgSides(), SCIPlpiGetIterations(), SCIPlpiGetObjval(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsPrimalInfeasible(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPprobAllColsInLP(), SCIPprobGetNVars(), SCIPprobGetVars(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetRhs(), SCIProwIsLocal(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPtreeGetCurrentDepth(), SCIPvarGetProbindex(), SCIP_Lp::solved, undoBdchgsDualfarkas(), and undoBdchgsDualsol().
Referenced by conflictAnalyzeLP().
|
static |
actually performs analysis of infeasible LP
conflict | conflict analysis data |
conflictstore | conflict store |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
diving | are we in strong branching or diving mode? |
dualraysuccess | pointer to store success result of dualray analysis |
iterations | pointer to store the total number of LP iterations used |
nconss | pointer to store the number of generated conflict constraints |
nliterals | pointer to store the number of literals in generated conflict constraints |
nreconvconss | pointer to store the number of generated reconvergence constraints |
nreconvliterals | pointer to store the number of literals generated reconvergence constraints |
marklpunsolved | whether LP should be marked unsolved after analysis (needed for strong branching) |
Definition at line 7515 of file conflict.c.
References BMSclearMemoryArray, conflictAnalyzeDualProof(), conflictAnalyzeRemainingBdchgs(), conflictFlushProofset(), SCIP_Stat::conflictlptime, SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Lp::flushed, getDualProof(), getFarkasProof(), SCIP_Lp::lpiitlim, SCIP_Lp::lpiobjlim, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, SCIP_Conflict::nconflictsets, SCIP_Var::nlbchginfos, SCIP_Conflict::nproofsets, SCIP_Var::nubchginfos, SCIP_Prob::nvars, SCIP_Conflict::proofset, proofsetGetNVars(), runBoundHeuristic(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_LPERROR, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_OBJLIM, SCIP_OKAY, SCIP_Real, SCIPaggrRowCreate(), SCIPaggrRowFree(), SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPclockStart(), SCIPclockStop(), SCIPconflictFlushConss(), SCIPlpDivingObjChanged(), SCIPlpGetLPI(), SCIPlpiGetIterations(), SCIPlpiGetObjval(), SCIPlpiGetRealpar(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsPrimalInfeasible(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPprobAllColsInLP(), SCIPprobGetNVars(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsEQ(), SCIPsetIsGT(), SCIPsetIsLT(), SCIPtreeGetCurrentDepth(), SCIPvarGetLbLocal(), SCIPvarGetLbLP(), SCIPvarGetProbindex(), SCIPvarGetUbLocal(), SCIPvarGetUbLP(), SCIP_Lp::solved, TRUE, and SCIP_Prob::vars.
Referenced by conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), and SCIPconflictAnalyzeStrongbranch().
|
static |
analyzes an infeasible LP to find out the bound changes on variables that were responsible for the infeasibility; on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating a conflict constraint out of the resulting conflict set; updates statistics for infeasible LP conflict analysis
conflict | conflict analysis data |
conflictstore | conflict store |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
success | pointer to store whether a conflict constraint was created, or NULL |
Definition at line 7827 of file conflict.c.
References conflictAnalyzeLP(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::inflpanalyzetime, SCIP_Conflict::ndualrayinfsuccess, SCIP_Conflict::ninflpcalls, SCIP_Conflict::ninflpconfconss, SCIP_Conflict::ninflpconfliterals, SCIP_Conflict::ninflpiterations, SCIP_Conflict::ninflpreconvconss, SCIP_Conflict::ninflpreconvliterals, SCIP_Conflict::ninflpsuccess, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_INFEASLP, SCIP_Longint, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPlpDiving(), SCIPlpDivingObjChanged(), SCIPlpGetSolstat(), SCIPprobAllColsInLP(), SCIPsetDebugMsg, SCIPtreeGetCurrentDepth(), and TRUE.
Referenced by SCIPconflictAnalyzeLP().
|
static |
analyzes a bound exceeding LP to find out the bound changes on variables that were responsible for exceeding the primal bound; on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating a conflict constraint out of the resulting conflict set; updates statistics for bound exceeding LP conflict analysis
conflict | conflict analysis data |
conflictstore | conflict store |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
success | pointer to store whether a conflict constraint was created, or NULL |
Definition at line 7903 of file conflict.c.
References SCIP_Conflict::boundlpanalyzetime, conflictAnalyzeLP(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::nboundlpcalls, SCIP_Conflict::nboundlpconfconss, SCIP_Conflict::nboundlpconfliterals, SCIP_Conflict::nboundlpiterations, SCIP_Conflict::nboundlpreconvconss, SCIP_Conflict::nboundlpreconvliterals, SCIP_Conflict::nboundlpsuccess, SCIP_Conflict::ndualraybndsuccess, SCIP_Conflict::ndualrayinfsuccess, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_Longint, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPlpDiving(), SCIPlpDivingObjChanged(), SCIPlpGetSolstat(), SCIPprobAllColsInLP(), SCIPsetDebugMsg, SCIPtreeGetCurrentDepth(), TRUE, and SCIP_ConflictSet::usescutoffbound.
Referenced by SCIPconflictAnalyzeLP().
SCIP_RETCODE SCIPconflictAnalyzeLP | ( | SCIP_CONFLICT * | conflict, |
SCIP_CONFLICTSTORE * | conflictstore, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_Bool * | success | ||
) |
analyzes an infeasible or bound exceeding LP to find out the bound changes on variables that were responsible for the infeasibility or for exceeding the primal bound; on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating a conflict constraint out of the resulting conflict set; updates statistics for infeasible or bound exceeding LP conflict analysis; may only be called if SCIPprobAllColsInLP()
conflict | conflict analysis data |
conflictstore | conflict store |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
success | pointer to store whether a conflict constraint was created, or NULL |
Definition at line 7982 of file conflict.c.
References SCIP_RowSolVals::activity, SCIP_Row::activity, SCIP_ColSolVals::basisstatus, SCIP_RowSolVals::basisstatus, SCIP_Col::basisstatus, SCIP_Row::basisstatus, SCIP_Lp::cols, conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), SCIP_LpSolVals::dualchecked, SCIP_Lp::dualchecked, SCIP_Row::dualfarkas, SCIP_LpSolVals::dualfeasible, SCIP_Lp::dualfeasible, SCIP_RowSolVals::dualsol, SCIP_Row::dualsol, FALSE, SCIP_Lp::flushed, SCIP_LpSolVals::lpissolved, SCIP_LpSolVals::lpobjval, SCIP_Lp::lpobjval, SCIP_LpSolVals::lpsolstat, SCIP_Lp::lpsolstat, SCIP_Lp::ncols, SCIP_Lp::nrows, SCIP_LpSolVals::primalchecked, SCIP_Lp::primalchecked, SCIP_LpSolVals::primalfeasible, SCIP_Lp::primalfeasible, SCIP_ColSolVals::primsol, SCIP_Col::primsol, SCIP_ColSolVals::redcost, SCIP_Col::redcost, SCIP_Lp::rows, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetLPI(), SCIPlpGetSolstat(), SCIPlpiIsPrimalInfeasible(), SCIPlpiWasSolved(), SCIPprobAllColsInLP(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIP_LpSolVals::solisbasic, SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by priceAndCutLoop(), SCIPsolveDiveLP(), and solveProbingLP().
SCIP_Real SCIPconflictGetInfeasibleLPTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing infeasible LP conflicts
conflict | conflict analysis data |
Definition at line 8129 of file conflict.c.
References SCIP_Conflict::inflpanalyzetime, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 8139 of file conflict.c.
References SCIP_Conflict::ninflpcalls.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible LP conflict analysis that yield at least one conflict constraint
conflict | conflict analysis data |
Definition at line 8149 of file conflict.c.
References SCIP_Conflict::ninflpsuccess.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 8159 of file conflict.c.
References SCIP_Conflict::ninflpconfconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 8169 of file conflict.c.
References SCIP_Conflict::ninflpconfliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 8179 of file conflict.c.
References SCIP_Conflict::ninflpreconvconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 8189 of file conflict.c.
References SCIP_Conflict::ninflpreconvliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 8199 of file conflict.c.
References SCIP_Conflict::ninflpiterations.
Referenced by SCIPprintConflictStatistics().
SCIP_Real SCIPconflictGetBoundexceedingLPTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing bound exceeding LP conflicts
conflict | conflict analysis data |
Definition at line 8209 of file conflict.c.
References SCIP_Conflict::boundlpanalyzetime, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNBoundexceedingLPCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to bound exceeding LP conflict analysis
conflict | conflict analysis data |
Definition at line 8219 of file conflict.c.
References SCIP_Conflict::nboundlpcalls.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNBoundexceedingLPSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to bound exceeding LP conflict analysis that yield at least one conflict constraint
conflict | conflict analysis data |
Definition at line 8229 of file conflict.c.
References SCIP_Conflict::nboundlpsuccess.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in bound exceeding LP conflict analysis
conflict | conflict analysis data |
Definition at line 8239 of file conflict.c.
References SCIP_Conflict::nboundlpconfconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in bound exceeding LP conflict analysis
conflict | conflict analysis data |
Definition at line 8249 of file conflict.c.
References SCIP_Conflict::nboundlpconfliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in bound exceeding LP conflict analysis
conflict | conflict analysis data |
Definition at line 8259 of file conflict.c.
References SCIP_Conflict::nboundlpreconvconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in bound exceeding LP conflict analysis
conflict | conflict analysis data |
Definition at line 8269 of file conflict.c.
References SCIP_Conflict::nboundlpreconvliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNBoundexceedingLPIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in bound exceeding LP conflict analysis
conflict | conflict analysis data |
Definition at line 8279 of file conflict.c.
References SCIP_Conflict::nboundlpiterations.
Referenced by SCIPprintConflictStatistics().
SCIP_RETCODE SCIPconflictAnalyzeStrongbranch | ( | SCIP_CONFLICT * | conflict, |
SCIP_CONFLICTSTORE * | conflictstore, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_COL * | col, | ||
SCIP_Bool * | downconflict, | ||
SCIP_Bool * | upconflict | ||
) |
analyses infeasible strong branching sub problems for conflicts
conflict | conflict analysis data |
conflictstore | conflict store |
blkmem | block memory buffers |
set | global SCIP settings |
stat | dynamic problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
col | LP column with at least one infeasible strong branching subproblem |
downconflict | pointer to store whether a conflict constraint was created for an infeasible downwards branch, or NULL |
upconflict | pointer to store whether a conflict constraint was created for an infeasible upwards branch, or NULL |
Definition at line 8296 of file conflict.c.
References conflictAnalyzeLP(), SCIP_Stat::conflictlptime, SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, SCIP_Col::lb, SCIP_Lp::lpi, SCIP_Col::lpipos, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Conflict::nsbcalls, SCIP_Conflict::nsbconfconss, SCIP_Conflict::nsbconfliterals, SCIP_Conflict::nsbiterations, SCIP_Conflict::nsbreconvconss, SCIP_Conflict::nsbreconvliterals, SCIP_Conflict::nsbsuccess, SCIP_Col::primsol, SCIP_Conflict::sbanalyzetime, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_INFEASLP, SCIP_LPERROR, SCIP_OKAY, SCIP_Real, SCIPclockStart(), SCIPclockStop(), SCIPcolGetVar(), SCIPlpiChgBounds(), SCIPlpiEndStrongbranch(), SCIPlpiGetBase(), SCIPlpiGetIterations(), SCIPlpiSetBase(), SCIPlpiSolveDual(), SCIPlpiStartStrongbranch(), SCIPprobAllColsInLP(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFeasCeil(), SCIPsetFeasFloor(), SCIPsetFreeBufferArray, SCIPsetIsGE(), SCIPtreeGetCurrentDepth(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIP_Lp::solved, TRUE, and SCIP_Col::ub.
Referenced by analyzeStrongbranch().
SCIP_Real SCIPconflictGetStrongbranchTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing infeasible strong branching conflicts
conflict | conflict analysis data |
Definition at line 8533 of file conflict.c.
References SCIP_Conflict::sbanalyzetime, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayInfSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of successful calls to infeasible dualray analysis
conflict | conflict analysis data |
Definition at line 8543 of file conflict.c.
References SCIP_Conflict::ndualrayinfsuccess.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayInfGlobal | ( | SCIP_CONFLICT * | conflict | ) |
gets number of globally valid dualray constraints
conflict | conflict analysis data |
Definition at line 8553 of file conflict.c.
References SCIP_Conflict::ndualrayinfglobal.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayInfNonzeros | ( | SCIP_CONFLICT * | conflict | ) |
gets average length of infeasible dualrays
conflict | conflict analysis data |
Definition at line 8563 of file conflict.c.
References SCIP_Conflict::dualrayinfnnonzeros.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayBndSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of successfully analyzed dual proofs of boundexceeding LPs
conflict | conflict analysis data |
Definition at line 8573 of file conflict.c.
References SCIP_Conflict::ndualraybndsuccess.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayBndGlobal | ( | SCIP_CONFLICT * | conflict | ) |
gets number of globally applied dual proofs of boundexceeding LPs
conflict | conflict analysis data |
Definition at line 8583 of file conflict.c.
References SCIP_Conflict::ndualraybndglobal.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayBndNonzeros | ( | SCIP_CONFLICT * | conflict | ) |
gets average length of dual proofs of boundexceeding LPs
conflict | conflict analysis data |
Definition at line 8593 of file conflict.c.
References SCIP_Conflict::dualraybndnnonzeros.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNStrongbranchCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible strong branching conflict analysis
conflict | conflict analysis data |
Definition at line 8603 of file conflict.c.
References SCIP_Conflict::nsbcalls.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNStrongbranchSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible strong branching conflict analysis that yield at least one conflict constraint
conflict | conflict analysis data |
Definition at line 8613 of file conflict.c.
References SCIP_Conflict::nsbsuccess.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
SCIP_Longint SCIPconflictGetNStrongbranchConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in infeasible strong branching conflict analysis
conflict | conflict analysis data |
Definition at line 8623 of file conflict.c.
References SCIP_Conflict::nsbconfconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNStrongbranchConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in infeasible strong branching conflict analysis
conflict | conflict analysis data |
Definition at line 8633 of file conflict.c.
References SCIP_Conflict::nsbconfliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in infeasible strong branching conflict analysis
conflict | conflict analysis data |
Definition at line 8643 of file conflict.c.
References SCIP_Conflict::nsbreconvconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in infeasible strong branching conflict analysis
conflict | conflict analysis data |
Definition at line 8653 of file conflict.c.
References SCIP_Conflict::nsbreconvliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNStrongbranchIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in infeasible strong branching conflict analysis
conflict | conflict analysis data |
Definition at line 8663 of file conflict.c.
References SCIP_Conflict::nsbiterations.
Referenced by SCIPprintConflictStatistics().
SCIP_RETCODE SCIPconflictAnalyzePseudo | ( | SCIP_CONFLICT * | conflict, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_Bool * | success | ||
) |
analyzes a pseudo solution with objective value exceeding the current cutoff to find out the bound changes on variables that were responsible for the objective value degradation; on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating a conflict constraint out of the resulting conflict set; updates statistics for pseudo solution conflict analysis
conflict | conflict analysis data |
blkmem | block memory of transformed problem |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
success | pointer to store whether a conflict constraint was created, or NULL |
Definition at line 8685 of file conflict.c.
References conflictAnalyzeRemainingBdchgs(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::lpi, SCIP_Conflict::nconflictsets, SCIP_Var::nlbchginfos, SCIP_Conflict::npseudocalls, SCIP_Conflict::npseudoconfconss, SCIP_Conflict::npseudoconfliterals, SCIP_Conflict::npseudoreconvconss, SCIP_Conflict::npseudoreconvliterals, SCIP_Conflict::npseudosuccess, SCIP_Var::nubchginfos, SCIP_Prob::nvars, SCIP_Conflict::pseudoanalyzetime, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_OKAY, SCIP_Real, SCIPclockStart(), SCIPclockStop(), SCIPconflictFlushConss(), SCIPlpGetPseudoObjval(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsFeasEQ(), SCIPsetIsFeasGT(), SCIPsetIsInfinity(), SCIPsetSumepsilon(), SCIPtreeGetCurrentDepth(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetUbLocal(), TRUE, undoBdchgsProof(), SCIP_ConflictSet::usescutoffbound, and SCIP_Prob::vars.
Referenced by applyBounding().
SCIP_Real SCIPconflictGetPseudoTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing pseudo solution conflicts
conflict | conflict analysis data |
Definition at line 8830 of file conflict.c.
References SCIP_Conflict::pseudoanalyzetime, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPseudoCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to pseudo solution conflict analysis
conflict | conflict analysis data |
Definition at line 8840 of file conflict.c.
References SCIP_Conflict::npseudocalls.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPseudoSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to pseudo solution conflict analysis that yield at least one conflict constraint
conflict | conflict analysis data |
Definition at line 8850 of file conflict.c.
References SCIP_Conflict::npseudosuccess.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
SCIP_Longint SCIPconflictGetNPseudoConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in pseudo solution conflict analysis
conflict | conflict analysis data |
Definition at line 8860 of file conflict.c.
References SCIP_Conflict::npseudoconfconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPseudoConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in pseudo solution conflict analysis
conflict | conflict analysis data |
Definition at line 8870 of file conflict.c.
References SCIP_Conflict::npseudoconfliterals.
Referenced by SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPseudoReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in pseudo solution conflict analysis
conflict | conflict analysis data |
Definition at line 8880 of file conflict.c.
References SCIP_Conflict::npseudoreconvconss.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
SCIP_Longint SCIPconflictGetNPseudoReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in pseudo solution conflict analysis
conflict | conflict analysis data |
Definition at line 8890 of file conflict.c.
References SCIP_Conflict::npseudoreconvliterals.
Referenced by SCIPprintConflictStatistics().
void SCIPconflictEnableOrDisableClocks | ( | SCIP_CONFLICT * | conflict, |
SCIP_Bool | enable | ||
) |
enables or disables all clocks of conflict
, depending on the value of the flag
conflict | the conflict analysis data for which all clocks should be enabled or disabled |
enable | should the clocks of the conflict analysis data be enabled? |
Definition at line 8901 of file conflict.c.
References SCIP_Conflict::boundlpanalyzetime, SCIP_Conflict::dIBclock, SCIP_Conflict::inflpanalyzetime, SCIP_Conflict::propanalyzetime, SCIP_Conflict::pseudoanalyzetime, SCIP_Conflict::sbanalyzetime, and SCIPclockEnableOrDisable().
Referenced by SCIPconflictCreate(), and SCIPenableOrDisableStatisticTiming().