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/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 | USEVBDS FALSE |
#define | ALLOWLOCAL FALSE |
#define | FIXINTEGRALRHS FALSE |
#define | MINFRAC 0.05 |
#define | SCALE 1.0 |
#define | NUMSTOP 9007199254740992.0 |
#define | debugPrintViolationInfo(...) |
#define BOUNDSWITCH 0.51 |
threshold for bound switching - see SCIPcutsAppyMIR()
Definition at line 144 of file conflict.c.
Referenced by applyMIR().
#define USEVBDS FALSE |
use variable bounds - see SCIPcutsAppyMIR()
Definition at line 145 of file conflict.c.
Referenced by applyMIR().
#define ALLOWLOCAL FALSE |
allow to generate local cuts - see SCIPcutsAppyMIR()
Definition at line 146 of file conflict.c.
Referenced by applyMIR().
#define FIXINTEGRALRHS FALSE |
try to generate an integral rhs - see SCIPcutsAppyMIR()
Definition at line 147 of file conflict.c.
Referenced by applyMIR().
#define MINFRAC 0.05 |
minimal fractionality of floor(rhs) - see SCIPcutsApplyMIR()
Definition at line 148 of file conflict.c.
Referenced by applyMIR().
#define SCALE 1.0 |
additional scaling factor - see SCIPcutsApplyMIR()
Definition at line 149 of file conflict.c.
Referenced by applyMIR().
#define NUMSTOP 9007199254740992.0 |
Definition at line 5090 of file conflict.c.
Referenced by getFarkasProof().
#define debugPrintViolationInfo | ( | ... | ) |
Definition at line 5908 of file conflict.c.
Referenced by applyMIR(), and tightenDualray().
|
static |
method to call, when the priority of a conflict handler was changed
Definition at line 350 of file conflict.c.
References NULL, 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 364 of file conflict.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrGetName(), and SCIPsetDebugMsg.
Referenced by SCIPsetCopyPlugins().
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 383 of file conflict.c.
References BMSallocMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, 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 436 of file conflict.c.
References BMSfreeMemory, BMSfreeMemoryArray, NULL, 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 463 of file conflict.c.
References SCIP_Conflicthdlr::conflicttime, SCIP_Conflicthdlr::initialized, SCIP_Conflicthdlr::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIP_Conflicthdlr::setuptime, and TRUE.
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 500 of file conflict.c.
References FALSE, SCIP_Conflicthdlr::initialized, SCIP_Conflicthdlr::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Conflicthdlr::setuptime.
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 531 of file conflict.c.
References NULL, 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 555 of file conflict.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Conflicthdlr::setuptime.
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 579 of file conflict.c.
References SCIP_Conflicthdlr::conflicttime, SCIP_Conflicthdlr::name, NULL, 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 648 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrCopy().
void SCIPconflicthdlrSetFree | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTFREE((*conflictfree)) | |||
) |
set destructor of conflict handler
conflicthdlr | conflict handler |
Definition at line 659 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrFree().
void SCIPconflicthdlrSetInit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTINIT((*conflictinit)) | |||
) |
set initialization method of conflict handler
conflicthdlr | conflict handler |
Definition at line 670 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrInit().
void SCIPconflicthdlrSetExit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTEXIT((*conflictexit)) | |||
) |
set deinitialization method of conflict handler
conflicthdlr | conflict handler |
Definition at line 681 of file conflict.c.
References NULL.
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 692 of file conflict.c.
References NULL.
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 703 of file conflict.c.
References NULL.
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 744 of file conflict.c.
References FALSE, NULL, 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 768 of file conflict.c.
References SCIP_Conflicthdlr::conflicttime, NULL, 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 806 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 828 of file conflict.c.
References BMSclearMemoryArray, SCIP_LPBdChgs::nbdchgs, NULL, 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 841 of file conflict.c.
References SCIPsetFreeBuffer, and SCIPsetFreeBufferArray.
Referenced by runBoundHeuristic().
|
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 861 of file conflict.c.
References BMSreallocMemoryArray, NULL, 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 885 of file conflict.c.
References conflictEnsureTmpbdchginfosMem(), SCIP_Conflict::ntmpbdchginfos, NULL, 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 909 of file conflict.c.
References SCIP_Conflict::ntmpbdchginfos, NULL, SCIPbdchginfoFree(), and SCIP_Conflict::tmpbdchginfos.
Referenced by SCIPconflictFlushConss().
|
static |
clears the given conflict set
conflictset | conflict set |
Definition at line 925 of file conflict.c.
References SCIP_ConflictSet::conflictdepth, SCIP_ConflictSet::conflicttype, FALSE, SCIP_ConflictSet::insertdepth, SCIP_ConflictSet::nbdchginfos, NULL, 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 943 of file conflict.c.
References BMSallocBlockMemory, conflictsetClear(), NULL, 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 963 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, BMSallocBlockMemory, BMSallocBlockMemoryArray, BMScopyMemoryArray, SCIP_ConflictSet::conflictdepth, SCIP_ConflictSet::conflicttype, SCIP_ConflictSet::insertdepth, SCIP_ConflictSet::nbdchginfos, NULL, 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 999 of file conflict.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
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 1015 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, SCIP_ConflictSet::bdchginfossize, BMSreallocBlockMemoryArray, NULL, 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 1045 of file conflict.c.
References SCIP_ConflictSet::nbdchginfos, NULL, 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 1059 of file conflict.c.
References MAX, NULL, 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 1134 of file conflict.c.
References SCIP_Var::conflictlb, SCIP_Var::conflictlbcount, SCIP_Var::conflictub, SCIP_Var::conflictubcount, SCIP_Conflict::count, FALSE, NULL, 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 1177 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, conflictsetEnsureBdchginfosMem(), MAX, MIN, SCIP_ConflictSet::nbdchginfos, NULL, 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 1247 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_ConflictSet::bdchginfos, conflictsetAddBound(), conflictsetEnsureBdchginfosMem(), FALSE, MAX, MIN, SCIP_ConflictSet::nbdchginfos, NULL, 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 1413 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, SCIP_ConflictSet::conflictdepth, SCIP_ConflictSet::insertdepth, SCIP_ConflictSet::nbdchginfos, NULL, 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 1457 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, BMSclearMemoryArray, SCIP_ConflictSet::insertdepth, MIN, SCIP_ConflictSet::nbdchginfos, NULL, 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 1504 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, FALSE, SCIP_ConflictSet::nbdchginfos, NULL, 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 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 1566 of file conflict.c.
References BMSreallocMemoryArray, SCIP_Conflict::conflictsets, SCIP_Conflict::conflictsetscores, SCIP_Conflict::conflictsetssize, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by conflictInsertConflictset().
|
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 1591 of file conflict.c.
References conflictEnsureConflictsetsMem(), conflictsetCalcConflictDepth(), conflictsetCalcScore(), conflictsetFree(), conflictsetIsRedundant(), SCIP_Conflict::conflictsets, SCIP_Conflict::conflictsetscores, MIN, SCIP_Conflict::nconflictsets, NULL, 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 1686 of file conflict.c.
References MAX, SCIP_Prob::ncontvars, NULL, 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 1704 of file conflict.c.
References SCIP_Stat::glbhistory, SCIP_Stat::glbhistorycrun, NULL, 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 1735 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, NULL, 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 1789 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, bound, FALSE, SCIP_ConflictSet::nbdchginfos, NULL, 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 1854 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, BMSclearMemoryArray, bound, checkRedundancy(), FALSE, SCIP_ConflictSet::nbdchginfos, NULL, 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 |
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 2110 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, NULL, 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 2258 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, NULL, 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 2467 of file conflict.c.
References SCIP_Conflict::nconflictsets, and NULL.
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 2477 of file conflict.c.
References SCIP_Conflict::nappliedglbconss, SCIP_Conflict::nappliedlocconss, and NULL.
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 2487 of file conflict.c.
References SCIP_Conflict::nappliedglbliterals, SCIP_Conflict::nappliedlocliterals, and NULL.
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 2497 of file conflict.c.
References SCIP_Conflict::nglbchgbds, and NULL.
Referenced by printConflictStatistics().
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 2507 of file conflict.c.
References SCIP_Conflict::nappliedglbconss, and NULL.
Referenced by printConflictStatistics().
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 2517 of file conflict.c.
References SCIP_Conflict::nappliedglbliterals, and NULL.
Referenced by printConflictStatistics().
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 2527 of file conflict.c.
References SCIP_Conflict::nlocchgbds, and NULL.
Referenced by printConflictStatistics().
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 2537 of file conflict.c.
References SCIP_Conflict::nappliedlocconss, and NULL.
Referenced by printConflictStatistics().
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 2547 of file conflict.c.
References SCIP_Conflict::nappliedlocliterals, and NULL.
Referenced by printConflictStatistics().
|
static |
returns whether bound change has a valid reason that can be resolved in conflict analysis
bdchginfo | bound change information |
Definition at line 2565 of file conflict.c.
References NULL, 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 2581 of file conflict.c.
References NULL, 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 2602 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 2618 of file conflict.c.
References BMSallocMemory, conflictsetCreate(), NULL, 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 2699 of file conflict.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, conflictsetFree(), NULL, 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 2732 of file conflict.c.
References SCIP_Conflict::bdchgqueue, SCIP_Conflict::conflictset, conflictsetClear(), SCIP_Conflict::forcedbdchgqueue, NULL, 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 2744 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, NULL, 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 |
bdchginfo | bound change to add to the conflict set |
relaxedbd | relaxed bound |
Definition at line 2813 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, MIN, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPABORT, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPdebugMessage, SCIPerrorMessage, 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 2901 of file conflict.c.
References conflictMarkBoundCheckPresence(), SCIP_Conflict::conflictset, conflictsetAddBound(), NULL, 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 2944 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 2964 of file conflict.c.
References SCIP_Conflict::bdchgqueue, conflictMarkBoundCheckPresence(), SCIP_Conflict::forcedbdchgqueue, isBoundchgUseless(), NULL, 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 3010 of file conflict.c.
References NULL, 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 3045 of file conflict.c.
References conflictQueueBound(), incVSIDS(), NULL, 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 3101 of file conflict.c.
References conflictAddBound(), convertToActiveVar(), FALSE, NULL, 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 3162 of file conflict.c.
References SCIP_BdChgInfo::bdchgidx, conflictAddBound(), convertToActiveVar(), FALSE, MAX, MIN, NULL, 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 3326 of file conflict.c.
References SCIP_Var::conflictlb, SCIP_Var::conflictlbcount, SCIP_Var::conflictub, SCIP_Var::conflictubcount, convertToActiveVar(), SCIP_Conflict::count, FALSE, NULL, 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 3386 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 3403 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 3419 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_Conflict::bdchgqueue, SCIP_Var::conflictlbcount, SCIP_Var::conflictrelaxedlb, SCIP_Var::conflictrelaxedub, SCIP_Var::conflictubcount, SCIP_Conflict::forcedbdchgqueue, NULL, 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 3463 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_Conflict::bdchgqueue, SCIP_Conflict::forcedbdchgqueue, NULL, 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 3517 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, NULL, 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 3616 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_ConflictSet::bdchginfos, SCIP_Conflict::bdchgqueue, SCIP_Conflict::conflictset, FALSE, SCIP_Conflict::forcedbdchgqueue, SCIP_ConflictSet::nbdchginfos, NULL, 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 3829 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, MIN, SCIP_ConflictSet::nbdchginfos, NULL, 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 4069 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, MIN, SCIP_ConflictSet::nbdchginfos, SCIP_DomChgBound::nboundchgs, NULL, 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 4350 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, NULL, 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 4408 of file conflict.c.
References SCIP_Conflict::dIBclock, NULL, and SCIPclockGetTime().
Referenced by printConflictStatistics().
SCIP_Real SCIPconflictGetPropTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing propagation conflicts
conflict | conflict analysis data |
Definition at line 4418 of file conflict.c.
References NULL, SCIP_Conflict::propanalyzetime, and SCIPclockGetTime().
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNPropCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to propagation conflict analysis
conflict | conflict analysis data |
Definition at line 4428 of file conflict.c.
References SCIP_Conflict::npropcalls, and NULL.
Referenced by printConflictStatistics().
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 4438 of file conflict.c.
References SCIP_Conflict::npropsuccess, and NULL.
Referenced by printConflictStatistics(), 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 4448 of file conflict.c.
References SCIP_Conflict::npropconfconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 4458 of file conflict.c.
References SCIP_Conflict::npropconfliterals, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNPropReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in propagation conflict analysis
conflict | conflict analysis data |
Definition at line 4468 of file conflict.c.
References SCIP_Conflict::npropreconvconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 4478 of file conflict.c.
References SCIP_Conflict::npropreconvliterals, and NULL.
Referenced by printConflictStatistics().
|
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 4496 of file conflict.c.
References NULL, 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 4535 of file conflict.c.
References ensureSidechgsSize(), NULL, 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 4604 of file conflict.c.
References SCIP_LPBdChgs::bdchgcolinds, SCIP_LPBdChgs::bdchginds, SCIP_LPBdChgs::bdchglbs, SCIP_LPBdChgs::bdchgubs, SCIP_LPBdChgs::nbdchgs, NULL, 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 4685 of file conflict.c.
References NULL, 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 4722 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, NULL, 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 4858 of file conflict.c.
References SCIP_Var::lbchginfos, SCIP_BdChgInfo::newbound, SCIP_Var::nlbchginfos, SCIP_Var::nubchginfos, NULL, 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 4890 of file conflict.c.
References addBdchg(), addCand(), FALSE, NULL, 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 5094 of file conflict.c.
References SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, NULL, 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 |
Definition at line 5152 of file conflict.c.
References BMSclearMemoryArray, SCIP_Row::cols, SCIP_Lp::cols, SCIP_Row::constant, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::local, SCIP_Lp::lpicols, SCIP_Lp::lpirows, SCIP_Lp::nlpirows, NULL, SCIP_Prob::nvars, SCIP_Row::rhs, SCIP_CALL, SCIP_LPERROR, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPcolCalcRedcost(), SCIPcolGetLPPos(), SCIPcolGetVar(), SCIPlpGetLPI(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiGetObjval(), SCIPlpiGetSol(), SCIProwGetName(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsDualfeasNegative(), SCIPsetIsDualfeasPositive(), SCIPsetIsFeasGT(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetIsZero(), SCIPsetSumepsilon(), SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIP_Lp::solved, TRUE, undoBdchgsProof(), SCIP_Row::vals, and SCIP_Prob::vars.
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 5406 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, NULL, 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 |
farkascoefs | coefficients in the proof constraint |
farkaslhs | lhs of the proof constraint |
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 5543 of file conflict.c.
References SCIP_Row::cols, SCIP_Row::constant, FALSE, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::local, SCIP_Lp::lpirows, SCIP_Lp::nlpirows, NULL, NUMSTOP, SCIP_Prob::nvars, REALABS, SCIP_Row::rhs, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPcolGetLPPos(), SCIPcolGetVar(), SCIPdebugMessage, SCIPlpDivingObjChanged(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiGetDualfarkas(), SCIPlpiGetSides(), SCIPlpiHasDualRay(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsPrimalInfeasible(), SCIProwGetName(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsFeasLE(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsRelEQ(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetLbGlobal(), SCIPvarGetLbLP(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLP(), TRUE, SCIP_Row::vals, and SCIP_Prob::vars.
Referenced by conflictAnalyzeLP(), and runBoundHeuristic().
|
static |
calculates the minimal activity of a given set of bounds and coefficients
vals | array of values |
varinds | sparse data of variable indices |
nvarinds | number of variable indices |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
Definition at line 5749 of file conflict.c.
References SCIP_Real.
Referenced by performDualRayAnalysis(), and tightenDualray().
|
static |
returns true if the given constraint (represented by variables, coefficients, and side) separates the root LP solution
set | global SCIP settings |
vars | array of problem variables |
vals | array of variable coefficients |
side | side (lhs/rhs) of the constraint |
nvars | number of variables |
islhs | true iff the side is a lhs |
Definition at line 5776 of file conflict.c.
References NULL, SCIP_Bool, SCIP_Real, SCIPsetIsFeasGT(), SCIPsetIsFeasLT(), and SCIPvarGetRootSol().
Referenced by applyMIR(), and createAndAddDualray().
|
static |
apply the MIR function to a given constraint
set | global SCIP settings |
transprob | transformed problem |
vals | values of variables |
varused | used array |
varinds | array of indices with non-zero value |
nvarinds | number of indices with non-zero value |
rhs | right-hand side of constraint |
success | pointer to store whether apply MIR was successful |
Definition at line 5806 of file conflict.c.
References ALLOWLOCAL, BMScopyMemoryArray, BOUNDSWITCH, debugPrintViolationInfo, FALSE, FIXINTEGRALRHS, isSeparatingRootLPSol(), MINFRAC, NULL, SCIP_Prob::nvars, SCALE, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcutsApplyMIR(), SCIPsetDebugMsg, SCIPsetDuplicateBufferArray, SCIPsetFreeBufferArray, SCIPsetIsFeasGE(), TRUE, USEVBDS, and SCIP_Prob::vars.
Referenced by tightenDualray().
|
static |
tighten a given infeasibility proof a^Tx <= b with minact > b wrt local bounds
remove all continuous variables from the proof. we don't care if the proof is locally invalid afterwards because we have already proven the infeasibility of the current node.
Apply the MIR function after each step (if enabled) but use it iff the resulting constraint separated the root LP solution.
set | global SCIP settings |
transprob | transformed problem |
vals | coefficients of the proof constraint |
rhs | rhs of the proof constraint |
varinds | sparse data of variable indices |
nvarinds | number of variable indices |
varused | bool array indicating whether a variable is part of the proof constraint |
curvarlbs | current lower bounds of active problem variables |
curvarubs | current upper bounds of active problem variables |
diving | are we in strong branching or diving mode? |
success | success pointer |
Definition at line 5924 of file conflict.c.
References applyMIR(), debugPrintViolationInfo, FALSE, getMinActivity(), NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPprobGetVars(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsZero(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsActive(), and TRUE.
Referenced by performDualRayAnalysis().
|
static |
creates a constraint and tries to add it to the storage
conflict | conflict analysis data |
conflictstore | conflict pool data |
set | global SCIP settings |
stat | dynamic SCIP statistics |
origprob | original problem |
transprob | transformed problem |
tree | tree data |
reopt | reoptimization data |
lp | LP data |
blkmem | block memory |
nvars | number of variables in the proof constraint |
vars | problem variables |
vals | coefficients of the proof constraint |
lhs | lhs of the proof constraint |
rhs | rhs of the proof constraint |
success | pointer to store whether the constraint was accepted |
Definition at line 6068 of file conflict.c.
References SCIP_Stat::avgnnz, SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_Conflict::dualrayinfnnonzeros, FALSE, isSeparatingRootLPSol(), SCIP_Conflict::ndualrayinfglobal, SCIP_Conflict::ndualrayinfseparoot, SCIP_Conflict::ndualrayinfsuccess, NULL, SCIP_Prob::nvars, SCIP_Tree::path, REALABS, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_INFEASLP, SCIP_INVALIDCALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPconflictstoreAddDualraycons(), SCIPconflictstoreGetAvgNnzDualray(), SCIPconflictstoreGetNDualrays(), SCIPconsMarkConflict(), SCIPcreateConsLinear(), SCIPnodeCutoff(), SCIPreleaseCons(), SCIPsetDebugMsg, SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetIsZero(), SCIPsnprintf(), SCIPtreeGetCurrentDepth(), SCIPtreeGetFocusDepth(), SCIPupgradeConsLinear(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by performDualRayAnalysis().
|
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 |
success | pointer to store success result |
Definition at line 6245 of file conflict.c.
References SCIP_Conflict::dualrayinfnnonzeros, FALSE, SCIP_Conflict::ndualrayinfsuccess, SCIP_Conflict::nglbchgbds, SCIP_Conflict::ninflpsuccess, NULL, SCIP_Tree::path, SCIP_Tree::root, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPnodeAddBoundchg(), SCIPnodeCutoff(), SCIPsetFeasFloor(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsIntegral(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPvarAdjustBd(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), and TRUE.
Referenced by performDualRayAnalysis().
|
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.
we call tightenDualray() to strengthen 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 |
branchcand | branching candidates |
eventqueue | event queue |
cliquetable | clique table |
conflictstore | conflict store |
farkascoefs | coefficients in the proof constraint |
farkaslhs | lhs 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 |
diving | are we in strong branching or diving mode? |
globalinfeasible | pointer to store whether global infeasibility could be proven |
success | pointer to store success result |
Definition at line 6333 of file conflict.c.
References createAndAddDualray(), FALSE, getMinActivity(), SCIP_Conflict::ndualrayinfsuccess, NULL, SCIP_Prob::nvars, SCIP_Tree::path, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcutsCleanupRow(), SCIPnodeCutoff(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetDuplicateBufferArray, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsFeasLE(), SCIPsetIsInfinity(), SCIPtreeGetFocusDepth(), tightenDualray(), tightenSingleVar(), TRUE, and SCIP_Prob::vars.
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 |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table |
conflictstore | conflict store |
blkmem | block memory |
farkascoefs | coefficients in the proof constraint |
farkaslhs | lhs of the proof constraint |
farkasactivity | 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 |
diving | are we in strong branching or diving mode? |
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 6491 of file conflict.c.
References addSideRemoval(), SCIP_LPBdChgs::bdchginds, SCIP_LPBdChgs::bdchglbs, SCIP_LPBdChgs::bdchgubs, SCIP_Stat::conflictlptime, SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, getFarkasProof(), lpbdchgsCreate(), lpbdchgsFree(), lpbdchgsReset(), SCIP_Lp::lpiitlim, SCIP_Lp::lpiuobjlim, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_LPBdChgs::nbdchgs, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, NULL, performDualRayAnalysis(), SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_INFEASLP, SCIP_INVALID, SCIP_LPERROR, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_UOBJLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPclockStart(), SCIPclockStop(), SCIPdebugMessage, SCIPlpDivingObjChanged(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiChgBounds(), SCIPlpiChgSides(), SCIPlpiGetIterations(), SCIPlpiGetObjval(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsPrimalInfeasible(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPprobAllColsInLP(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetRhs(), SCIProwIsLocal(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPtreeGetCurrentDepth(), 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 6796 of file conflict.c.
References BMSclearMemoryArray, conflictAnalyzeRemainingBdchgs(), SCIP_Stat::conflictlptime, SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Lp::flushed, getFarkasProof(), SCIP_Lp::lpiitlim, SCIP_Lp::lpiuobjlim, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, SCIP_Conflict::nconflictsets, SCIP_Var::nlbchginfos, SCIP_Var::nubchginfos, NULL, SCIP_Prob::nvars, performDualRayAnalysis(), runBoundHeuristic(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_INFEASLP, SCIP_LPERROR, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_UOBJLIM, SCIP_OKAY, SCIP_Real, SCIPclockStart(), SCIPclockStop(), SCIPconflictFlushConss(), SCIPdebugMessage, SCIPlpDivingObjChanged(), SCIPlpGetLPI(), SCIPlpiGetIterations(), SCIPlpiGetObjval(), SCIPlpiGetRealpar(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsPrimalInfeasible(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPprobAllColsInLP(), SCIPprobGetNVars(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPsetIsEQ(), SCIPsetIsGT(), SCIPsetIsLT(), SCIPtreeGetCurrentDepth(), SCIPvarGetLbLocal(), SCIPvarGetLbLP(), 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 7080 of file conflict.c.
References conflictAnalyzeLP(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::inflpanalyzetime, SCIP_Conflict::ninflpcalls, SCIP_Conflict::ninflpconfconss, SCIP_Conflict::ninflpconfliterals, SCIP_Conflict::ninflpiterations, SCIP_Conflict::ninflpreconvconss, SCIP_Conflict::ninflpreconvliterals, SCIP_Conflict::ninflpsuccess, NULL, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_INFEASLP, 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 7153 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, NULL, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, 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 7229 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, NULL, 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 7376 of file conflict.c.
References SCIP_Conflict::inflpanalyzetime, NULL, and SCIPclockGetTime().
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 7386 of file conflict.c.
References SCIP_Conflict::ninflpcalls, and NULL.
Referenced by printConflictStatistics().
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 7396 of file conflict.c.
References SCIP_Conflict::ninflpsuccess, and NULL.
Referenced by printConflictStatistics(), 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 7406 of file conflict.c.
References SCIP_Conflict::ninflpconfconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 7416 of file conflict.c.
References SCIP_Conflict::ninflpconfliterals, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 7426 of file conflict.c.
References SCIP_Conflict::ninflpreconvconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 7436 of file conflict.c.
References SCIP_Conflict::ninflpreconvliterals, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNInfeasibleLPIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in infeasible LP conflict analysis
conflict | conflict analysis data |
Definition at line 7446 of file conflict.c.
References SCIP_Conflict::ninflpiterations, and NULL.
Referenced by printConflictStatistics().
SCIP_Real SCIPconflictGetBoundexceedingLPTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing bound exceeding LP conflicts
conflict | conflict analysis data |
Definition at line 7456 of file conflict.c.
References SCIP_Conflict::boundlpanalyzetime, NULL, and SCIPclockGetTime().
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNBoundexceedingLPCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to bound exceeding LP conflict analysis
conflict | conflict analysis data |
Definition at line 7466 of file conflict.c.
References SCIP_Conflict::nboundlpcalls, and NULL.
Referenced by printConflictStatistics().
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 7476 of file conflict.c.
References SCIP_Conflict::nboundlpsuccess, and NULL.
Referenced by printConflictStatistics(), 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 7486 of file conflict.c.
References SCIP_Conflict::nboundlpconfconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 7496 of file conflict.c.
References SCIP_Conflict::nboundlpconfliterals, and NULL.
Referenced by printConflictStatistics().
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 7506 of file conflict.c.
References SCIP_Conflict::nboundlpreconvconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 7516 of file conflict.c.
References SCIP_Conflict::nboundlpreconvliterals, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNBoundexceedingLPIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in bound exceeding LP conflict analysis
conflict | conflict analysis data |
Definition at line 7526 of file conflict.c.
References SCIP_Conflict::nboundlpiterations, and NULL.
Referenced by printConflictStatistics().
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 | ||
) |
analyzes 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 7543 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, NULL, 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 7779 of file conflict.c.
References NULL, SCIP_Conflict::sbanalyzetime, and SCIPclockGetTime().
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayInfSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of successful calls to infeasible dualray analysis
conflict | conflict analysis data |
Definition at line 7789 of file conflict.c.
References SCIP_Conflict::ndualrayinfsuccess, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayInfGlobal | ( | SCIP_CONFLICT * | conflict | ) |
gets number of globally valid dualray constraints
conflict | conflict analysis data |
Definition at line 7799 of file conflict.c.
References SCIP_Conflict::ndualrayinfglobal, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNDualrayInfeasibleNonzeros | ( | SCIP_CONFLICT * | conflict | ) |
gets average length of infeasible dualrays
conflict | conflict analysis data |
Definition at line 7809 of file conflict.c.
References SCIP_Conflict::dualrayinfnnonzeros, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNStrongbranchCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible strong branching conflict analysis
conflict | conflict analysis data |
Definition at line 7819 of file conflict.c.
References SCIP_Conflict::nsbcalls, and NULL.
Referenced by printConflictStatistics().
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 7829 of file conflict.c.
References SCIP_Conflict::nsbsuccess, and NULL.
Referenced by printConflictStatistics(), 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 7839 of file conflict.c.
References SCIP_Conflict::nsbconfconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 7849 of file conflict.c.
References SCIP_Conflict::nsbconfliterals, and NULL.
Referenced by printConflictStatistics().
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 7859 of file conflict.c.
References SCIP_Conflict::nsbreconvconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 7869 of file conflict.c.
References SCIP_Conflict::nsbreconvliterals, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNStrongbranchIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in infeasible strong branching conflict analysis
conflict | conflict analysis data |
Definition at line 7879 of file conflict.c.
References SCIP_Conflict::nsbiterations, and NULL.
Referenced by printConflictStatistics().
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 7901 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, NULL, 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 8046 of file conflict.c.
References NULL, SCIP_Conflict::pseudoanalyzetime, and SCIPclockGetTime().
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNPseudoCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to pseudo solution conflict analysis
conflict | conflict analysis data |
Definition at line 8056 of file conflict.c.
References SCIP_Conflict::npseudocalls, and NULL.
Referenced by printConflictStatistics().
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 8066 of file conflict.c.
References SCIP_Conflict::npseudosuccess, and NULL.
Referenced by printConflictStatistics(), 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 8076 of file conflict.c.
References SCIP_Conflict::npseudoconfconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 8086 of file conflict.c.
References SCIP_Conflict::npseudoconfliterals, and NULL.
Referenced by printConflictStatistics().
SCIP_Longint SCIPconflictGetNPseudoReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in pseudo solution conflict analysis
conflict | conflict analysis data |
Definition at line 8096 of file conflict.c.
References SCIP_Conflict::npseudoreconvconss, and NULL.
Referenced by printConflictStatistics(), and SCIPgetNConflictConssFound().
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 8106 of file conflict.c.
References SCIP_Conflict::npseudoreconvliterals, and NULL.
Referenced by printConflictStatistics().
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 8117 of file conflict.c.
References SCIP_Conflict::boundlpanalyzetime, SCIP_Conflict::dIBclock, SCIP_Conflict::inflpanalyzetime, NULL, SCIP_Conflict::propanalyzetime, SCIP_Conflict::pseudoanalyzetime, SCIP_Conflict::sbanalyzetime, and SCIPclockEnableOrDisable().
Referenced by SCIPconflictCreate(), and SCIPenableOrDisableStatisticTiming().