Detailed Description
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:
- Put all the given bound changes to a priority queue, which is ordered, such that the bound change that was applied last due to branching or deduction is at the top of the queue. The variables in the queue are always active problem variables. Because binary variables are preferred over general integer variables, integer variables are put on the priority queue prior to the binary variables. Create an empty conflict set.
- Remove the top bound change b from the priority queue.
- Perform the following case distinction:
- If the remaining queue is non-empty, and bound change b' (the one that is now on the top of the queue) was applied at the same depth level as b, and if b was a deduction with known inference reason, and if the inference constraint's valid depth is smaller or equal to the conflict detecting constraint's valid depth:
- Resolve bound change b by asking the constraint that inferred the bound change to put all the bound changes on the priority queue, that lead to the deduction of b. Note that these bound changes have at most the same inference depth level as b, and were deduced earlier than b.
- Otherwise, the bound change b was a branching decision or a deduction with missing inference reason, or the inference constraint's validity is more local than the one of the conflict detecting constraint.
- If a the bound changed corresponds to a binary variable, add it or its negation to the conflict set, depending on which of them is currently fixed to FALSE (i.e., the conflict set consists of literals that cannot be FALSE altogether at the same time).
- Otherwise put the bound change into the conflict set. Note that if the bound change was a branching, all deduced bound changes remaining in the priority queue have smaller inference depth level than b, since deductions are always applied after the branching decisions. However, there is the possibility, that b was a deduction, where the inference reason was not given or the inference constraint was too local. With this lack of information, we must treat the deduced bound change like a branching, and there may exist other deduced bound changes of the same inference depth level in the priority queue.
- If the remaining queue is non-empty, and bound change b' (the one that is now on the top of the queue) was applied at the same depth level as b, and if b was a deduction with known inference reason, and if the inference constraint's valid depth is smaller or equal to the conflict detecting constraint's valid depth:
- If priority queue is non-empty, goto step 2.
- The conflict set represents the conflict clause saying that at least one of the conflict variables must take a different value. The conflict set is then passed to the conflict handlers, that may create a corresponding constraint (e.g. a logicor constraint or bound disjunction constraint) out of these conflict variables and add it to the problem.
If all deduced bound changes come with (global) inference information, depending on the conflict analyzing strategy, the resulting conflict set has the following property:
- 1-FirstUIP: In the depth level where the conflict was found, at most one variable assigned at that level is member of the conflict set. This conflict variable is the first unique implication point of its depth level (FUIP).
- All-FirstUIP: For each depth level, at most one variable assigned at that level is member of the conflict set. This conflict variable is the first unique implication point of its depth level (FUIP).
The user has to do the following to get the conflict analysis running in its current implementation:
- A constraint handler or propagator supporting the conflict analysis must implement the CONSRESPROP/PROPRESPROP call, that processes a bound change inference b and puts all the reason bounds leading to the application of b with calls to SCIPaddConflictBound() on the conflict queue (algorithm step 3.(a)).
- If the current bounds lead to a deduction of a bound change (e.g. in domain propagation), a constraint handler should call SCIPinferVarLbCons() or SCIPinferVarUbCons(), thus providing the constraint that infered the bound change. A propagator should call SCIPinferVarLbProp() or SCIPinferVarUbProp() instead, thus providing a pointer to itself.
- If (in the current bounds) an infeasibility is detected, the constraint handler or propagator should
- call SCIPinitConflictAnalysis() to initialize the conflict queue,
- call SCIPaddConflictBound() for each bound that lead to the conflict,
- call SCIPanalyzeConflictCons() or SCIPanalyzeConflict() to analyze the conflict and add an appropriate conflict constraint.
Definition in file conflict.c.
#include "lpi/lpi.h"
#include "scip/clock.h"
#include "scip/conflict.h"
#include "scip/conflictstore.h"
#include "scip/cons.h"
#include "scip/cons_linear.h"
#include "scip/cuts.h"
#include "scip/history.h"
#include "scip/lp.h"
#include "scip/presolve.h"
#include "scip/prob.h"
#include "scip/prop.h"
#include "scip/pub_conflict.h"
#include "scip/pub_cons.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_paramset.h"
#include "scip/pub_prop.h"
#include "scip/pub_tree.h"
#include "scip/pub_var.h"
#include "scip/scip_conflict.h"
#include "scip/scip_cons.h"
#include "scip/scip_mem.h"
#include "scip/scip_sol.h"
#include "scip/scip_var.h"
#include "scip/set.h"
#include "scip/sol.h"
#include "scip/struct_conflict.h"
#include "scip/struct_lp.h"
#include "scip/struct_prob.h"
#include "scip/struct_set.h"
#include "scip/struct_stat.h"
#include "scip/struct_tree.h"
#include "scip/struct_var.h"
#include "scip/tree.h"
#include "scip/var.h"
#include "scip/visual.h"
#include <string.h>
#include <strings.h>
Go to the source code of this file.
Macros | |
#define | BOUNDSWITCH 0.51 |
#define | POSTPROCESS FALSE |
#define | USEVBDS FALSE |
#define | ALLOWLOCAL FALSE |
#define | MINFRAC 0.05 |
#define | MAXFRAC 0.999 |
#define | NUMSTOP 9007199254740992.0 |
#define | debugPrintViolationInfo(...) |
Macro Definition Documentation
◆ BOUNDSWITCH
#define BOUNDSWITCH 0.51 |
threshold for bound switching - see cuts.c
Definition at line 163 of file conflict.c.
Referenced by separateAlternativeProofs().
◆ POSTPROCESS
#define POSTPROCESS FALSE |
apply postprocessing to the cut - see cuts.c
Definition at line 164 of file conflict.c.
Referenced by separateAlternativeProofs().
◆ USEVBDS
#define USEVBDS FALSE |
use variable bounds - see cuts.c
Definition at line 165 of file conflict.c.
Referenced by separateAlternativeProofs().
◆ ALLOWLOCAL
#define ALLOWLOCAL FALSE |
allow to generate local cuts - see cuts.
Definition at line 166 of file conflict.c.
Referenced by separateAlternativeProofs().
◆ MINFRAC
#define MINFRAC 0.05 |
minimal fractionality of floor(rhs) - see cuts.c
Definition at line 167 of file conflict.c.
Referenced by separateAlternativeProofs().
◆ MAXFRAC
#define MAXFRAC 0.999 |
maximal fractionality of floor(rhs) - see cuts.c
Definition at line 168 of file conflict.c.
Referenced by separateAlternativeProofs().
◆ NUMSTOP
#define NUMSTOP 9007199254740992.0 |
Definition at line 6379 of file conflict.c.
Referenced by getDualProof(), and getFarkasProof().
◆ debugPrintViolationInfo
#define debugPrintViolationInfo | ( | ... | ) |
Definition at line 7336 of file conflict.c.
Referenced by getDualProof(), and tightenDualproof().
Function Documentation
◆ SCIP_DECL_PARAMCHGD()
|
static |
method to call, when the priority of a conflict handler was changed
Definition at line 366 of file conflict.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetConflicthdlrPriority().
◆ SCIPconflicthdlrCopyInclude()
SCIP_RETCODE SCIPconflicthdlrCopyInclude | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
copies the given conflict handler to a new scip
- Parameters
-
conflicthdlr conflict handler set SCIP_SET of SCIP to copy to
Definition at line 380 of file conflict.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrGetName(), and SCIPsetDebugMsg.
Referenced by SCIPsetCopyPlugins().
◆ doConflicthdlrCreate()
|
static |
internal method for creating a conflict handler
- Parameters
-
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 400 of file conflict.c.
References BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddIntParam(), SCIPsnprintf(), and TRUE.
Referenced by SCIPconflicthdlrCreate().
◆ SCIPconflicthdlrCreate()
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
- Parameters
-
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 454 of file conflict.c.
References doConflicthdlrCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPconflicthdlrFree().
Referenced by SCIPincludeConflicthdlr(), and SCIPincludeConflicthdlrBasic().
◆ SCIPconflicthdlrFree()
SCIP_RETCODE SCIPconflicthdlrFree | ( | SCIP_CONFLICTHDLR ** | conflicthdlr, |
SCIP_SET * | set | ||
) |
calls destructor and frees memory of conflict handler
- Parameters
-
conflicthdlr pointer to conflict handler data structure set global SCIP settings
Definition at line 485 of file conflict.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
Referenced by SCIPconflicthdlrCreate().
◆ SCIPconflicthdlrInit()
SCIP_RETCODE SCIPconflicthdlrInit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
calls initialization method of conflict handler
- Parameters
-
conflicthdlr conflict handler set global SCIP settings
Definition at line 513 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.
Referenced by SCIPsetSetPriorityNlpi().
◆ SCIPconflicthdlrExit()
SCIP_RETCODE SCIPconflicthdlrExit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
calls exit method of conflict handler
- Parameters
-
conflicthdlr conflict handler set global SCIP settings
Definition at line 550 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.
Referenced by SCIPsetInitPlugins().
◆ SCIPconflicthdlrInitsol()
SCIP_RETCODE SCIPconflicthdlrInitsol | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
informs conflict handler that the branch and bound process is being started
- Parameters
-
conflicthdlr conflict handler set global SCIP settings
Definition at line 581 of file conflict.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Conflicthdlr::setuptime.
Referenced by SCIPsetExitprePlugins().
◆ SCIPconflicthdlrExitsol()
SCIP_RETCODE SCIPconflicthdlrExitsol | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set | ||
) |
informs conflict handler that the branch and bound process data is being freed
- Parameters
-
conflicthdlr conflict handler set global SCIP settings
Definition at line 605 of file conflict.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Conflicthdlr::setuptime.
Referenced by SCIPsetInitsolPlugins().
◆ SCIPconflicthdlrExec()
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
- Parameters
-
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 629 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().
◆ SCIPconflicthdlrSetCopy()
void SCIPconflicthdlrSetCopy | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTCOPY((*conflictcopy)) | |||
) |
set copy method of conflict handler
- Parameters
-
conflicthdlr conflict handler
Definition at line 697 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrCopy().
◆ SCIPconflicthdlrSetFree()
void SCIPconflicthdlrSetFree | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTFREE((*conflictfree)) | |||
) |
set destructor of conflict handler
- Parameters
-
conflicthdlr conflict handler
Definition at line 708 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrFree().
◆ SCIPconflicthdlrSetInit()
void SCIPconflicthdlrSetInit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTINIT((*conflictinit)) | |||
) |
set initialization method of conflict handler
- Parameters
-
conflicthdlr conflict handler
Definition at line 719 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrInit().
◆ SCIPconflicthdlrSetExit()
void SCIPconflicthdlrSetExit | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTEXIT((*conflictexit)) | |||
) |
set deinitialization method of conflict handler
- Parameters
-
conflicthdlr conflict handler
Definition at line 730 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrExit().
◆ SCIPconflicthdlrSetInitsol()
void SCIPconflicthdlrSetInitsol | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)) | |||
) |
set solving process initialization method of conflict handler
- Parameters
-
conflicthdlr conflict handler
Definition at line 741 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrInitsol().
◆ SCIPconflicthdlrSetExitsol()
void SCIPconflicthdlrSetExitsol | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)) | |||
) |
set solving process deinitialization method of conflict handler
- Parameters
-
conflicthdlr conflict handler
Definition at line 752 of file conflict.c.
References NULL.
Referenced by SCIPsetConflicthdlrExitsol().
◆ SCIPconflicthdlrSetPriority()
void SCIPconflicthdlrSetPriority | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_SET * | set, | ||
int | priority | ||
) |
sets priority of conflict handler
- Parameters
-
conflicthdlr conflict handler set global SCIP settings priority new priority of the conflict handler
Definition at line 793 of file conflict.c.
References FALSE, NULL, and SCIP_Conflicthdlr::priority.
Referenced by SCIPsetConflicthdlrPriority().
◆ SCIPconflicthdlrEnableOrDisableClocks()
void SCIPconflicthdlrEnableOrDisableClocks | ( | SCIP_CONFLICTHDLR * | conflicthdlr, |
SCIP_Bool | enable | ||
) |
enables or disables all clocks of conflicthdlr
, depending on the value of the flag
- Parameters
-
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 817 of file conflict.c.
References SCIP_Conflicthdlr::conflicttime, NULL, SCIPclockEnableOrDisable(), and SCIP_Conflicthdlr::setuptime.
◆ lpbdchgsCreate()
|
static |
create conflict LP bound change data structure
- Parameters
-
lpbdchgs pointer to store the conflict LP bound change data structure set global SCIP settings ncols number of columns
Definition at line 855 of file conflict.c.
References BMSclearMemoryArray, SCIP_CALL, SCIP_OKAY, SCIPsetAllocBuffer, and SCIPsetAllocBufferArray.
Referenced by runBoundHeuristic().
◆ lpbdchgsReset()
|
static |
reset conflict LP bound change data structure
- Parameters
-
lpbdchgs conflict LP bound change data structure ncols number of columns
Definition at line 877 of file conflict.c.
References BMSclearMemoryArray, SCIP_LPBdChgs::nbdchgs, NULL, and SCIP_LPBdChgs::usedcols.
Referenced by runBoundHeuristic().
◆ lpbdchgsFree()
|
static |
free conflict LP bound change data structure
- Parameters
-
lpbdchgs pointer to store the conflict LP bound change data structure set global SCIP settings
Definition at line 890 of file conflict.c.
References SCIPsetFreeBuffer, and SCIPsetFreeBufferArray.
Referenced by runBoundHeuristic().
◆ varGetChar()
|
static |
return the char associated with the type of the variable
- Parameters
-
var variable
Definition at line 910 of file conflict.c.
References SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPvarGetType(), and SCIPvarIsIntegral().
Referenced by tightenSingleVar().
◆ proofsetClear()
|
static |
resets the data structure of a proofset
- Parameters
-
proofset proof set
Definition at line 923 of file conflict.c.
References SCIP_ProofSet::conflicttype, SCIP_ProofSet::nnz, NULL, SCIP_ProofSet::rhs, SCIP_CONFTYPE_UNKNOWN, and SCIP_ProofSet::validdepth.
Referenced by conflictFlushProofset(), and tightenDualproof().
◆ proofsetCreate()
|
static |
creates a proofset
- Parameters
-
proofset proof set blkmem block memory of transformed problem
Definition at line 937 of file conflict.c.
References BMSallocBlockMemory, NULL, SCIP_ALLOC, SCIP_CONFTYPE_UNKNOWN, and SCIP_OKAY.
Referenced by conflictInitProofset(), separateAlternativeProofs(), and tightenDualproof().
◆ conflictInitProofset()
|
static |
creates and clears the proofset
- Parameters
-
conflict conflict analysis data blkmem block memory of transformed problem
Definition at line 958 of file conflict.c.
References NULL, SCIP_Conflict::proofset, proofsetCreate(), SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPconflictCreate().
◆ proofsetFree()
|
static |
frees a proofset
- Parameters
-
proofset proof set blkmem block memory
Definition at line 973 of file conflict.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, SCIP_ProofSet::inds, SCIP_ProofSet::nnz, NULL, SCIP_ProofSet::rhs, SCIPprobGetVars(), SCIPvarGetName(), and SCIP_ProofSet::vals.
Referenced by conflictFlushProofset(), SCIPconflictFree(), separateAlternativeProofs(), and tightenDualproof().
◆ proofsetGetInds()
|
static |
return the indices of variables in the proofset
- Parameters
-
proofset proof set
Definition at line 1013 of file conflict.c.
References SCIP_ProofSet::inds, and NULL.
Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenDualproof().
◆ proofsetGetVals()
|
static |
return coefficient of variable in the proofset with given probindex
- Parameters
-
proofset proof set
Definition at line 1024 of file conflict.c.
References NULL, and SCIP_ProofSet::vals.
Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenDualproof().
◆ proofsetGetRhs()
|
static |
return the right-hand side if a proofset
- Parameters
-
proofset proof set
Definition at line 1035 of file conflict.c.
References NULL, and SCIP_ProofSet::rhs.
Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenCoefficients().
◆ proofsetGetNVars()
|
static |
returns the number of variables in the proofset
- Parameters
-
proofset proof set
Definition at line 1046 of file conflict.c.
References SCIP_ProofSet::nnz, and NULL.
Referenced by conflictAnalyzeLP(), conflictFlushProofset(), createAndAddProofcons(), tightenCoefficients(), and tightenDualproof().
◆ proofsetGetConftype()
|
static |
returns the number of variables in the proofset
- Parameters
-
proofset proof set
Definition at line 1057 of file conflict.c.
References SCIP_ProofSet::conflicttype, and NULL.
Referenced by conflictFlushProofset(), and createAndAddProofcons().
◆ proofsetAddSparseData()
|
static |
adds given data as aggregation row to the proofset
- Parameters
-
proofset proof set blkmem block memory vals variable coefficients inds variable array nnz size of variable and coefficient array rhs right-hand side of the aggregation row
Definition at line 1068 of file conflict.c.
References BMSduplicateBlockMemoryArray, BMSreallocBlockMemoryArray, SCIP_ProofSet::inds, SCIP_ProofSet::nnz, NULL, SCIP_ProofSet::rhs, SCIP_ALLOC, SCIP_OKAY, SCIP_ProofSet::size, and SCIP_ProofSet::vals.
Referenced by proofsetAddAggrrow(), and separateAlternativeProofs().
◆ proofsetAddAggrrow()
|
static |
adds an aggregation row to the proofset
- Parameters
-
proofset proof set set global SCIP settings blkmem block memory aggrrow aggregation row to add
Definition at line 1119 of file conflict.c.
References NULL, proofsetAddSparseData(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPsetAllocBufferArray, and SCIPsetFreeBufferArray.
Referenced by tightenDualproof().
◆ proofsetCancelVarWithBound()
|
static |
Removes a given variable var
from position pos
from the proofset and updates the right-hand side according to sign of the coefficient, i.e., rhs -= coef * bound, where bound = lb if coef >= 0 and bound = ub, otherwise.
- Note
- : The list of non-zero indices and coefficients will be updated by swapping the last non-zero index to
pos
.
Definition at line 1160 of file conflict.c.
References FALSE, SCIP_ProofSet::inds, SCIP_ProofSet::nnz, NULL, SCIP_ProofSet::rhs, SCIPsetIsInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), TRUE, and SCIP_ProofSet::vals.
Referenced by tightenDualproof().
◆ conflictEnsureTmpbdchginfosMem()
|
static |
resizes the array of the temporary bound change informations to be able to store at least num bound change entries
- Parameters
-
conflict conflict analysis data set global SCIP settings num minimal number of slots in arrays
Definition at line 1204 of file conflict.c.
References BMSreallocMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Conflict::tmpbdchginfos, and SCIP_Conflict::tmpbdchginfossize.
Referenced by conflictCreateTmpBdchginfo().
◆ conflictCreateTmpBdchginfo()
|
static |
creates a temporary bound change information object that is destroyed after the conflict sets are flushed
- Parameters
-
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 1228 of file conflict.c.
References conflictEnsureTmpbdchginfosMem(), SCIP_Conflict::ntmpbdchginfos, NULL, SCIP_CALL, SCIP_OKAY, SCIPbdchginfoCreate(), and SCIP_Conflict::tmpbdchginfos.
Referenced by conflictAnalyzeRemainingBdchgs(), and conflictCreateReconvergenceConss().
◆ conflictFreeTmpBdchginfos()
|
static |
frees all temporarily created bound change information data
- Parameters
-
conflict conflict analysis data blkmem block memory
Definition at line 1252 of file conflict.c.
References SCIP_Conflict::ntmpbdchginfos, NULL, SCIPbdchginfoFree(), and SCIP_Conflict::tmpbdchginfos.
Referenced by SCIPconflictFlushConss().
◆ conflictsetClear()
|
static |
clears the given conflict set
- Parameters
-
conflictset conflict set
Definition at line 1268 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().
◆ conflictsetCreate()
|
static |
creates an empty conflict set
- Parameters
-
conflictset pointer to store the conflict set blkmem block memory of transformed problem
Definition at line 1286 of file conflict.c.
References BMSallocBlockMemory, conflictsetClear(), NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPconflictCreate().
◆ conflictsetCopy()
|
static |
creates a copy of the given conflict set, allocating an additional amount of memory
- Parameters
-
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 1306 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().
◆ conflictsetFree()
|
static |
frees a conflict set
- Parameters
-
conflictset pointer to the conflict set blkmem block memory of transformed problem
Definition at line 1342 of file conflict.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
Referenced by conflictAddConflictset(), conflictInsertConflictset(), SCIPconflictFlushConss(), and SCIPconflictFree().
◆ conflictsetEnsureBdchginfosMem()
|
static |
resizes the arrays of the conflict set to be able to store at least num bound change entries
- Parameters
-
conflictset conflict set blkmem block memory of transformed problem set global SCIP settings num minimal number of slots in arrays
Definition at line 1358 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().
◆ conflictsetCalcScore()
|
static |
calculates the score of the conflict set
the score is weighted sum of number of bound changes, repropagation depth, and valid depth
- Parameters
-
conflictset conflict set set global SCIP settings
Definition at line 1388 of file conflict.c.
References SCIP_ConflictSet::nbdchginfos, NULL, SCIP_ConflictSet::repropdepth, and SCIP_ConflictSet::validdepth.
Referenced by conflictInsertConflictset().
◆ calcBdchgScore()
|
static |
calculates the score of a bound change within a conflict
- Parameters
-
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 1402 of file conflict.c.
References MAX, NULL, SCIP_LOCKTYPE_MODEL, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPcolGetNNonz(), SCIPvarGetCol(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), and SCIPvarGetStatus().
Referenced by addCand().
◆ bdchginfoIsInvalid()
|
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.
- Parameters
-
conflict conflict analysis data bdchginfo bound change information
Definition at line 1479 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().
◆ conflictsetAddBound()
|
static |
adds a bound change to a conflict set
- Parameters
-
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 1522 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, conflictsetEnsureBdchginfosMem(), MAX, 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().
◆ conflictsetAddBounds()
|
static |
adds given bound changes to a conflict set
- Parameters
-
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 1592 of file conflict.c.
References bdchginfoIsInvalid(), SCIP_ConflictSet::bdchginfos, conflictsetAddBound(), conflictsetEnsureBdchginfosMem(), FALSE, MAX, 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().
◆ conflictsetCalcConflictDepth()
|
static |
calculates the conflict and the repropagation depths of the conflict set
- Parameters
-
conflictset conflict set
Definition at line 1758 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().
◆ conflictsetCalcInsertDepth()
|
static |
identifies the depth, at which the conflict set should be added:
- if the branching rule operates on variables only, and if all branching variables up to a certain depth level are member of the conflict, the conflict constraint can only be violated in the subtree of the node at that depth, because in all other nodes, at least one of these branching variables violates its conflicting bound, such that the conflict constraint is feasible
- if there is at least one branching variable in a node, we assume, that this branching was performed on variables, and that the siblings of this node are disjunct w.r.t. the branching variables' fixings
- we have to add the conflict set at least in the valid depth of the initial conflict set, so we start searching at the first branching after this depth level, i.e. validdepth+1
- Parameters
-
conflictset conflict set set global SCIP settings tree branch and bound tree
Definition at line 1802 of file conflict.c.
References SCIP_ConflictSet::bdchginfos, BMSclearMemoryArray, SCIP_ConflictSet::insertdepth, 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().
◆ conflictsetIsRedundant()
|
static |
checks whether the first conflict set is redundant to the second one
- Parameters
-
conflictset1 first conflict conflict set conflictset2 second conflict conflict set
Definition at line 1849 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().
◆ conflictEnsureProofsetsMem()
|
static |
resizes proofsets array to be able to store at least num entries
- Parameters
-
conflict conflict analysis data set global SCIP settings num minimal number of slots in array
Definition at line 1911 of file conflict.c.
References BMSreallocMemoryArray, NULL, SCIP_Conflict::proofsets, SCIP_Conflict::proofsetssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by conflictInsertProofset().
◆ conflictEnsureConflictsetsMem()
|
static |
resizes conflictsets array to be able to store at least num entries
- Parameters
-
conflict conflict analysis data set global SCIP settings num minimal number of slots in array
Definition at line 1935 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().
◆ conflictInsertProofset()
|
static |
add a proofset to the list of all proofsets
- Parameters
-
conflict conflict analysis data set global SCIP settings proofset proof set to add
Definition at line 1960 of file conflict.c.
References conflictEnsureProofsetsMem(), SCIP_Conflict::nproofsets, NULL, SCIP_Conflict::proofsets, SCIP_CALL, and SCIP_OKAY.
Referenced by separateAlternativeProofs(), and tightenDualproof().
◆ conflictInsertConflictset()
|
static |
inserts conflict set into sorted conflictsets array and deletes the conflict set pointer
- Parameters
-
conflict conflict analysis data blkmem block memory of transformed problem set global SCIP settings conflictset pointer to conflict set to insert
Definition at line 1980 of file conflict.c.
References conflictEnsureConflictsetsMem(), conflictsetCalcConflictDepth(), conflictsetCalcScore(), conflictsetFree(), conflictsetIsRedundant(), SCIP_Conflict::conflictsets, SCIP_Conflict::conflictsetscores, SCIP_Conflict::nconflictsets, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebug, and SCIPsetDebugMsg.
Referenced by conflictAddConflictset().
◆ conflictCalcMaxsize()
calculates the maximal size of conflict sets to be used
- Parameters
-
set global SCIP settings prob problem data
Definition at line 2074 of file conflict.c.
References MAX, SCIP_Prob::ncontvars, NULL, and SCIP_Prob::nvars.
Referenced by conflictAnalyzeRemainingBdchgs(), SCIPconflictAnalyze(), and SCIPconflictFlushConss().
◆ incVSIDS()
|
static |
increases the conflict score of the variable in the given direction
- Parameters
-
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 2092 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().
◆ updateStatistics()
|
static |
update conflict statistics
- Parameters
-
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 2123 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().
◆ checkRedundancy()
|
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
- Parameters
-
set global SCIP settings conflictset conflict set
Definition at line 2177 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().
◆ detectImpliedBounds()
|
static |
find global fixings which can be derived from the new conflict set
- Parameters
-
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 2242 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().
◆ tightenSingleVar()
|
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.
- Parameters
-
conflict conflict analysis data set global SCIP settings stat dynamic SCIP statistics tree tree data blkmem block memory origprob original problem transprob transformed problem reopt reoptimization data lp LP data branchcand branching candidates eventqueue event queue cliquetable clique table var problem variable val coefficient of the variable rhs rhs of the constraint prooftype type of the proof validdepth depth where the bound change is valid
Definition at line 2512 of file conflict.c.
References SCIP_Conflict::dualproofsbndnnonzeros, SCIP_Conflict::dualproofsinfnnonzeros, FALSE, SCIP_Conflict::nboundlpsuccess, SCIP_Conflict::ndualproofsbndglobal, SCIP_Conflict::ndualproofsbndlocal, SCIP_Conflict::ndualproofsbndsuccess, SCIP_Conflict::ndualproofsinfglobal, SCIP_Conflict::ndualproofsinflocal, SCIP_Conflict::ndualproofsinfsuccess, SCIP_Conflict::nglbchgbds, SCIP_Conflict::ninflpsuccess, SCIP_Conflict::nlocchgbds, NULL, SCIP_Tree::path, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_INFEASLP, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPconsRelease(), SCIPcreateConsLinear(), SCIPnodeAddBoundchg(), SCIPnodeAddCons(), SCIPnodeCutoff(), SCIPnodeGetNumber(), SCIPnodePropagateAgain(), SCIPprobAddCons(), SCIPsetDebugMsg, SCIPsetFeasFloor(), SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsIntegral(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsnprintf(), SCIPtreeGetEffectiveRootDepth(), SCIPvarAdjustBd(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), SCIP_Lp::strongbranching, TRUE, and varGetChar().
Referenced by conflictFlushProofset(), and propagateLongProof().
◆ aggrRowGetMinActivity()
|
static |
calculates the minimal activity of a given aggregation row
- Parameters
-
set global SCIP settings transprob transformed problem data aggrrow aggregation row curvarlbs current lower bounds of active problem variables (or NULL for global bounds) curvarubs current upper bounds of active problem variables (or NULL for global bounds) infdelta pointer to store whether at least one variable contributes with an infinite value
Definition at line 2662 of file conflict.c.
References FALSE, NULL, QUAD, QUAD_ASSIGN, QUAD_TO_DBL, REALABS, SCIP_Real, SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPprobGetVars(), SCIPquadprecProdDD, SCIPquadprecSumQQ, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by addLocalRows(), conflictAnalyzeDualProof(), getDualProof(), getFarkasProof(), separateAlternativeProofs(), and tightenDualproof().
◆ getMinActivity()
|
static |
calculates the minimal activity of a given set of bounds and coefficients
- Parameters
-
set global SCIP settings transprob transformed problem data coefs coefficients in sparse representation inds non-zero indices nnz number of non-zero indices curvarlbs current lower bounds of active problem variables (or NULL for global bounds) curvarubs current upper bounds of active problem variables (or NULL for global bounds)
Definition at line 2731 of file conflict.c.
References NULL, QUAD, QUAD_ASSIGN, QUAD_TO_DBL, SCIP_Real, SCIPprobGetVars(), SCIPquadprecProdDD, SCIPquadprecSumQQ, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), and SCIPvarGetUbGlobal().
Referenced by createAndAddProofcons(), and propagateLongProof().
◆ getMaxActivity()
|
static |
calculates the minimal activity of a given set of bounds and coefficients
- Parameters
-
set global SCIP settings transprob transformed problem data coefs coefficients in sparse representation inds non-zero indices nnz number of non-zero indices curvarlbs current lower bounds of active problem variables (or NULL for global bounds) curvarubs current upper bounds of active problem variables (or NULL for global bounds)
Definition at line 2797 of file conflict.c.
References NULL, QUAD, QUAD_ASSIGN, QUAD_TO_DBL, SCIP_Real, SCIPprobGetVars(), SCIPquadprecProdDD, SCIPquadprecSumQQ, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), and SCIPvarGetUbGlobal().
Referenced by createAndAddProofcons(), and tightenDualproof().
◆ propagateLongProof()
|
static |
- Parameters
-
conflict conflict analysis data set global SCIP settings stat dynamic SCIP statistics reopt reoptimization data tree tree data blkmem block memory origprob original problem transprob transformed problem lp LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure coefs coefficients in sparse representation inds non-zero indices nnz number of non-zero indices rhs right-hand side conflicttype type of the conflict validdepth depth where the proof is valid
Definition at line 2862 of file conflict.c.
References getMinActivity(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPprobGetVars(), SCIPsetIsEQ(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsZero(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and tightenSingleVar().
Referenced by createAndAddProofcons().
◆ createAndAddProofcons()
|
static |
creates a proof constraint and tries to add it to the storage
- Parameters
-
conflict conflict analysis data conflictstore conflict pool data proofset proof set set global SCIP settings stat dynamic SCIP statistics origprob original problem transprob transformed problem tree tree data reopt reoptimization data lp LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure blkmem block memory
Definition at line 2966 of file conflict.c.
References SCIP_Stat::avgnnz, SCIP_Conflict::dualproofsbndnnonzeros, SCIP_Conflict::dualproofsinfnnonzeros, FALSE, getMaxActivity(), getMinActivity(), SCIP_Conflict::ndualproofsbndglobal, SCIP_Conflict::ndualproofsbndlocal, SCIP_Conflict::ndualproofsbndsuccess, SCIP_Conflict::ndualproofsinfglobal, SCIP_Conflict::ndualproofsinflocal, SCIP_Conflict::ndualproofsinfsuccess, NULL, SCIP_Prob::nvars, SCIP_Tree::path, proofsetGetConftype(), proofsetGetInds(), proofsetGetNVars(), proofsetGetRhs(), proofsetGetVals(), propagateLongProof(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_ALTBNDPROOF, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_INVALIDCALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPconflictstoreAddDualraycons(), SCIPconflictstoreAddDualsolcons(), SCIPconflictstoreGetAvgNnzDualBndProofs(), SCIPconflictstoreGetAvgNnzDualInfProofs(), SCIPconflictstoreGetNDualBndProofs(), SCIPconflictstoreGetNDualInfProofs(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsMarkConflict(), SCIPcreateConsLinear(), SCIPgetLhsLinear(), SCIPgetRhsLinear(), SCIPnodeAddCons(), SCIPnodeCutoff(), SCIPnodeGetNumber(), SCIPprobAddCons(), SCIPprobGetVars(), SCIPreleaseCons(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPsnprintf(), SCIPtreeGetEffectiveRootDepth(), SCIPtreeGetFocusDepth(), SCIPupgradeConsLinear(), SCIPvarIsIntegral(), SCIPvarIsRelaxationOnly(), SCIP_Prob::startnconss, TRUE, and SCIP_ProofSet::validdepth.
Referenced by conflictFlushProofset().
◆ conflictFlushProofset()
|
static |
- Parameters
-
conflict conflict analysis data conflictstore conflict store blkmem block memory set global SCIP settings stat dynamic problem statistics transprob transformed problem after presolve origprob original problem tree branch and bound tree reopt reoptimization data structure lp current LP data branchcand branching candidate storage eventqueue event queue cliquetable clique table data structure
Definition at line 3245 of file conflict.c.
References SCIP_ProofSet::conflicttype, createAndAddProofcons(), FALSE, SCIP_Conflict::nproofsets, NULL, SCIP_Conflict::proofset, proofsetClear(), proofsetFree(), proofsetGetConftype(), proofsetGetInds(), proofsetGetNVars(), proofsetGetRhs(), proofsetGetVals(), SCIP_Conflict::proofsets, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_CONFTYPE_UNKNOWN, SCIP_OKAY, SCIP_Real, SCIPprobGetVars(), tightenSingleVar(), TRUE, and SCIP_ProofSet::validdepth.
Referenced by conflictAnalyzeLP().
◆ conflictAddConflictCons()
|
static |
adds the given conflict set as conflict constraint to the problem
- Parameters
-
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 3364 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, h, 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().
◆ 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
- Parameters
-
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 3515 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().
◆ SCIPconflictGetNConflicts()
int SCIPconflictGetNConflicts | ( | SCIP_CONFLICT * | conflict | ) |
returns the current number of conflict sets in the conflict set storage
- Parameters
-
conflict conflict analysis data
Definition at line 3724 of file conflict.c.
References SCIP_Conflict::nconflictsets, and NULL.
Referenced by propAndSolve(), SCIPgetNConflictConssFoundNode(), SCIPgetVarStrongbranchWithPropagation(), and solveNode().
◆ SCIPconflictGetNAppliedConss()
SCIP_Longint SCIPconflictGetNAppliedConss | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of conflict constraints that were added to the problem
- Parameters
-
conflict conflict analysis data
Definition at line 3734 of file conflict.c.
References SCIP_Conflict::nappliedglbconss, SCIP_Conflict::nappliedlocconss, and NULL.
Referenced by SCIPgetNConflictConssApplied().
◆ SCIPconflictGetNAppliedLiterals()
SCIP_Longint SCIPconflictGetNAppliedLiterals | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of literals in conflict constraints that were added to the problem
- Parameters
-
conflict conflict analysis data
Definition at line 3744 of file conflict.c.
References SCIP_Conflict::nappliedglbliterals, SCIP_Conflict::nappliedlocliterals, and NULL.
◆ SCIPconflictGetNGlobalChgBds()
SCIP_Longint SCIPconflictGetNGlobalChgBds | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of global bound changes applied by the conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 3754 of file conflict.c.
References SCIP_Conflict::nglbchgbds, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNAppliedGlobalConss()
SCIP_Longint SCIPconflictGetNAppliedGlobalConss | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of conflict constraints that were added globally to the problem
- Parameters
-
conflict conflict analysis data
Definition at line 3764 of file conflict.c.
References SCIP_Conflict::nappliedglbconss, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNAppliedGlobalLiterals()
SCIP_Longint SCIPconflictGetNAppliedGlobalLiterals | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of literals in conflict constraints that were added globally to the problem
- Parameters
-
conflict conflict analysis data
Definition at line 3774 of file conflict.c.
References SCIP_Conflict::nappliedglbliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNLocalChgBds()
SCIP_Longint SCIPconflictGetNLocalChgBds | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of local bound changes applied by the conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 3784 of file conflict.c.
References SCIP_Conflict::nlocchgbds, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNAppliedLocalConss()
SCIP_Longint SCIPconflictGetNAppliedLocalConss | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of conflict constraints that were added locally to the problem
- Parameters
-
conflict conflict analysis data
Definition at line 3794 of file conflict.c.
References SCIP_Conflict::nappliedlocconss, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNAppliedLocalLiterals()
SCIP_Longint SCIPconflictGetNAppliedLocalLiterals | ( | SCIP_CONFLICT * | conflict | ) |
returns the total number of literals in conflict constraints that were added locally to the problem
- Parameters
-
conflict conflict analysis data
Definition at line 3804 of file conflict.c.
References SCIP_Conflict::nappliedlocliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ bdchginfoIsResolvable()
|
static |
returns whether bound change has a valid reason that can be resolved in conflict analysis
- Parameters
-
bdchginfo bound change information
Definition at line 3822 of file conflict.c.
References NULL, SCIP_BOUNDCHGTYPE_CONSINFER, SCIP_BOUNDCHGTYPE_PROPINFER, SCIPbdchginfoGetChgtype(), SCIPbdchginfoGetInferProp(), and SCIPbdchginfoIsRedundant().
Referenced by addCand(), and conflictCreateReconvergenceConss().
◆ SCIP_DECL_SORTPTRCOMP()
|
static |
compares two conflict set entries, such that bound changes infered later are ordered prior to ones that were infered earlier
Definition at line 3838 of file conflict.c.
References NULL, SCIPbdchgidxIsEarlierNonNull(), SCIPbdchginfoGetIdx(), and SCIPbdchginfoIsRedundant().
◆ SCIPconflictApplicable()
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
- Parameters
-
set global SCIP settings
Definition at line 3862 of file conflict.c.
Referenced by SCIPconflictAnalyze(), and SCIPisConflictAnalysisApplicable().
◆ SCIPconflictCreate()
SCIP_RETCODE SCIPconflictCreate | ( | SCIP_CONFLICT ** | conflict, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set | ||
) |
creates conflict analysis data for propagation conflicts
- Parameters
-
conflict pointer to conflict analysis data blkmem block memory of transformed problem set global SCIP settings
Definition at line 3878 of file conflict.c.
References BMSallocMemory, conflictInitProofset(), conflictsetCreate(), NULL, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_OKAY, SCIPclockCreate(), SCIPconflictEnableOrDisableClocks(), and SCIPpqueueCreate().
Referenced by SCIPtransformProb().
◆ SCIPconflictFree()
SCIP_RETCODE SCIPconflictFree | ( | SCIP_CONFLICT ** | conflict, |
BMS_BLKMEM * | blkmem | ||
) |
frees conflict analysis data for propagation conflicts
- Parameters
-
conflict pointer to conflict analysis data blkmem block memory of transformed problem
Definition at line 3968 of file conflict.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, conflictsetFree(), NULL, proofsetFree(), SCIP_OKAY, SCIPclockFree(), and SCIPpqueueFree().
Referenced by freeTransform().
◆ conflictClear()
|
static |
clears the conflict queue and the current conflict set
- Parameters
-
conflict conflict analysis data
Definition at line 4004 of file conflict.c.
References SCIP_Conflict::bdchgqueue, SCIP_Conflict::conflictset, conflictsetClear(), SCIP_Conflict::forcedbdchgqueue, NULL, and SCIPpqueueClear().
Referenced by conflictAnalyze(), conflictCreateReconvergenceConss(), and SCIPconflictInit().
◆ 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
- Parameters
-
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 4016 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().
◆ conflictMarkBoundCheckPresence()
|
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)
- Parameters
-
conflict conflict analysis data set global SCIP settings bdchginfo bound change to add to the conflict set relaxedbd relaxed bound
Definition at line 4085 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, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPABORT, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPerrorMessage, SCIPsetDebugMsg, SCIPvarGetName(), and TRUE.
Referenced by conflictAddConflictBound(), and conflictQueueBound().
◆ conflictAddConflictBound()
|
static |
puts bound change into the current conflict set
- Parameters
-
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 4174 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().
◆ isBoundchgUseless()
|
static |
returns whether the negation of the given bound change would lead to a globally valid literal
- Parameters
-
set global SCIP settings bdchginfo bound change information
Definition at line 4217 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().
◆ conflictQueueBound()
|
static |
adds given bound change information to the conflict candidate queue
- Parameters
-
conflict conflict analysis data set global SCIP settings bdchginfo bound change information relaxedbd relaxed bound
Definition at line 4237 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().
◆ convertToActiveVar()
|
static |
convert variable and bound change to active variable
- Parameters
-
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 4283 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().
◆ conflictAddBound()
|
static |
adds variable's bound to conflict candidate queue
- Parameters
-
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 4318 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().
◆ SCIPconflictAddBound()
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
- Parameters
-
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 4374 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().
◆ 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
- Parameters
-
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 4435 of file conflict.c.
References SCIP_BdChgInfo::bdchgidx, conflictAddBound(), convertToActiveVar(), FALSE, MAX, 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().
◆ SCIPconflictIsVarUsed()
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
- Parameters
-
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 4599 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().
◆ SCIPconflictGetVarLb()
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
- Parameters
-
conflict conflict analysis data var problem variable
Definition at line 4659 of file conflict.c.
References SCIP_Var::conflictlb, SCIP_Var::conflictlbcount, SCIP_Var::conflictrelaxedlb, SCIP_Conflict::count, EPSGE, and SCIPvarGetLbGlobal().
Referenced by SCIPgetConflictVarLb().
◆ SCIPconflictGetVarUb()
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
- Parameters
-
conflict conflict analysis data var problem variable
Definition at line 4676 of file conflict.c.
References SCIP_Var::conflictrelaxedub, SCIP_Var::conflictub, SCIP_Var::conflictubcount, SCIP_Conflict::count, EPSLE, and SCIPvarGetUbGlobal().
Referenced by SCIPgetConflictVarUb().
◆ conflictRemoveCand()
|
static |
removes and returns next conflict analysis candidate from the candidate queue
- Parameters
-
conflict conflict analysis data
Definition at line 4692 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().
◆ conflictFirstCand()
|
static |
returns next conflict analysis candidate from the candidate queue without removing it
- Parameters
-
conflict conflict analysis data
Definition at line 4736 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().
◆ conflictAddConflictset()
|
static |
adds the current conflict set (extended by all remaining bound changes in the queue) to the pool of conflict sets
- Parameters
-
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 4790 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().
◆ conflictResolveBound()
|
static |
tries to resolve given bound change
- resolutions on local constraints are only applied, if the constraint is valid at the current minimal valid depth level, because this depth level is the topmost level to add the conflict constraint to anyways
- Note
- it is sufficient to explain the relaxed bound change
- Parameters
-
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 4889 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().
◆ 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
- Parameters
-
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 5102 of file conflict.c.
References bdchginfoIsResolvable(), SCIP_ConflictSet::bdchginfos, SCIP_Conflict::bdchgqueue, conflictAddConflictBound(), conflictAddConflictset(), conflictClear(), conflictCreateTmpBdchginfo(), conflictFirstCand(), conflictQueueBound(), conflictRemoveCand(), conflictResolveBound(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::forcedbdchgqueue, SCIP_ConflictSet::nbdchginfos, 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().
◆ 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
- Parameters
-
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 5339 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_ConflictSet::conflicttype, SCIP_Node::domchg, SCIP_DomChg::domchgbound, FALSE, SCIP_Conflict::forcedbdchgqueue, 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().
◆ 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
- Parameters
-
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 5626 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().
◆ SCIPconflictGetGlobalApplTime()
SCIP_Real SCIPconflictGetGlobalApplTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for preprocessing global conflict constraint before appliance
- Parameters
-
conflict conflict analysis data
Definition at line 5684 of file conflict.c.
References SCIP_Conflict::dIBclock, NULL, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetPropTime()
SCIP_Real SCIPconflictGetPropTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing propagation conflicts
- Parameters
-
conflict conflict analysis data
Definition at line 5694 of file conflict.c.
References NULL, SCIP_Conflict::propanalyzetime, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNPropCalls()
SCIP_Longint SCIPconflictGetNPropCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to propagation conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 5704 of file conflict.c.
References SCIP_Conflict::npropcalls, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNPropSuccess()
SCIP_Longint SCIPconflictGetNPropSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to propagation conflict analysis that yield at least one conflict constraint
- Parameters
-
conflict conflict analysis data
Definition at line 5714 of file conflict.c.
References SCIP_Conflict::npropsuccess, and NULL.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
◆ SCIPconflictGetNPropConflictConss()
SCIP_Longint SCIPconflictGetNPropConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in propagation conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 5724 of file conflict.c.
References SCIP_Conflict::npropconfconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNPropConflictLiterals()
SCIP_Longint SCIPconflictGetNPropConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in propagation conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 5734 of file conflict.c.
References SCIP_Conflict::npropconfliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNPropReconvergenceConss()
SCIP_Longint SCIPconflictGetNPropReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in propagation conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 5744 of file conflict.c.
References SCIP_Conflict::npropreconvconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNPropReconvergenceLiterals()
SCIP_Longint SCIPconflictGetNPropReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in propagation conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 5754 of file conflict.c.
References SCIP_Conflict::npropreconvliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ ensureSidechgsSize()
|
static |
ensures, that side change arrays can store at least num entries
- Parameters
-
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 5772 of file conflict.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIPsetReallocBufferArray.
Referenced by addSideRemoval().
◆ 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
- Parameters
-
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 5811 of file conflict.c.
References ensureSidechgsSize(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetRhs(), and SCIPsetIsInfinity().
Referenced by runBoundHeuristic().
◆ addBdchg()
|
static |
inserts variable's new bounds into bound change arrays
- Parameters
-
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 5880 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().
◆ ensureCandsSize()
|
static |
ensures, that candidate array can store at least num entries
- Parameters
-
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 5961 of file conflict.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIPsetReallocBufferArray.
Referenced by addCand().
◆ 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:
- prefer bound changes that have been applied deeper in the tree, to get a more global conflict
- prefer variables with small Farkas coefficient to get rid of as many bound changes as possible
- Parameters
-
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 5998 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, QUAD, QUAD_TO_DBL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPsetDebugMsg, SCIPsetIsGT(), SCIPsetIsZero(), SCIPvarGetLbLocal(), SCIPvarGetLbLP(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPvarGetUbLP(), SCIPvarIsBinary(), and SCIP_Var::ubchginfos.
Referenced by undoBdchgsProof().
◆ skipRedundantBdchginfos()
|
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
- Parameters
-
var problem variable lbchginfopos pointer to lower bound change information position ubchginfopos pointer to upper bound change information position
Definition at line 6134 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().
◆ undoBdchgsProof()
|
static |
undoes bound changes on variables, still leaving the given infeasibility proof valid
- Parameters
-
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 6166 of file conflict.c.
References addBdchg(), addCand(), FALSE, NULL, SCIP_Prob::nvars, QUAD, QUAD_TO_DBL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPquadprecProdQD, SCIPquadprecSumDD, 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().
◆ undoBdchgsDualfarkas()
|
static |
analyzes an infeasible LP and undoes additional bound changes while staying infeasible
- Parameters
-
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 6383 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().
◆ undoBdchgsDualsol()
|
static |
analyzes an LP exceeding the objective limit and undoes additional bound changes while staying beyond the objective limit
- Parameters
-
set global SCIP settings prob problem data lp LP data currentdepth current depth in the tree curvarlbs current lower bounds of active problem variables curvarubs current upper bounds of active problem variables lbchginfoposs positions of currently active lower bound change information in variables' arrays ubchginfoposs positions of currently active upper bound change information in variables' arrays oldlpbdchgs old LP bound changes used for reset the LP bound change, or NULL relaxedlpbdchgs relaxed LP bound changes used for reset the LP bound change, or NULL valid pointer to store whether the unfixings are valid resolve pointer to store whether the changed LP should be resolved again dualcoefs coefficients in the proof constraint duallhs lhs of the proof constraint dualactivity maximal activity of the proof constraint
Definition at line 6441 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().
◆ conflictAnalyzeRemainingBdchgs()
|
static |
applies conflict analysis starting with given bound changes, that could not be undone during previous infeasibility analysis
- Parameters
-
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 6498 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().
◆ addRowToAggrRow()
|
static |
adds a weighted LP row to an aggregation row
- Parameters
-
set global SCIP settings row LP row weight weight for scaling aggrrow aggregation row
Definition at line 6637 of file conflict.c.
References SCIP_Row::constant, SCIP_Row::lhs, SCIP_Row::local, SCIP_Row::lpdepth, NULL, SCIP_Row::rhs, SCIP_CALL, SCIP_OKAY, SCIPaggrRowAddRow(), SCIPaggrRowGetRhs(), SCIProwGetName(), SCIPsetDebugMsg, and SCIPsetIsInfinity().
Referenced by addLocalRows(), getDualProof(), and getFarkasProof().
◆ checkDualFeasibility()
|
static |
checks validity of an LP row and a corresponding weight
- Parameters
-
set global SCIP settings row LP row weight weight for scaling zerocontribution pointer to store whether every row entry is zero within tolerances
Definition at line 6669 of file conflict.c.
References FALSE, SCIP_Row::len, SCIP_Row::lhs, QUAD_EPSILON, REALABS, SCIP_Row::rhs, SCIP_Bool, SCIProwGetName(), SCIPsetDebugMsg, SCIPsetIsDualfeasZero(), SCIPsetIsInfinity(), TRUE, and SCIP_Row::vals.
Referenced by addLocalRows(), getDualProof(), and getFarkasProof().
◆ sortLocalRows()
|
static |
sort local rows by increasing depth and number of nonzeros as tie-breaker
- Parameters
-
set global SCIP settings aggrrow aggregation row rows array of local rows rowinds array of row indices rowdepth array of LP depths nrows number of local rows
Definition at line 6717 of file conflict.c.
References SCIP_Row::len, NULL, SCIP_CALL, SCIP_OKAY, SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPsortIntInt(), and SCIPsortIntIntInt().
Referenced by addLocalRows().
◆ addLocalRows()
|
static |
adds locally valid rows to the proof constraint
- Parameters
-
set global SCIP settings transprob transformed problem lp LP data proofrow aggregated row representing the proof rows array if locally valid rows dualsols dual solution vector localrowinds array of row indecies localrowdepth array of row depths nlocalrows number of local rows stored in rows array proofact pointer to store the activity of the proof constraint validdepth pointer to store the depth where the proof constraint is valid 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 6785 of file conflict.c.
References addRowToAggrRow(), aggrRowGetMinActivity(), checkDualFeasibility(), SCIP_Row::cols, FALSE, SCIP_Row::len, SCIP_Row::local, SCIP_Row::lpdepth, SCIP_Lp::lpirows, NULL, r, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaggrRowGetRhs(), SCIPaggrRowRemoveZeros(), SCIPsetDebugMsg, SCIPsetIsDualfeasZero(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLE(), sortLocalRows(), TRUE, and SCIP_Row::vals.
Referenced by getDualProof(), and getFarkasProof().
◆ getFarkasProof()
|
static |
calculates a Farkas proof from the current dual LP solution
- Parameters
-
set global SCIP settings prob transformed problem lp LP data lpi LPI data tree tree data farkasrow aggregated row representing the proof farkasact maximal activity of the proof constraint validdepth pointer to store the valid depth 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 6926 of file conflict.c.
References addLocalRows(), addRowToAggrRow(), aggrRowGetMinActivity(), BMSclearMemoryArray, checkDualFeasibility(), SCIP_Row::cols, FALSE, SCIP_Lp::flushed, SCIP_Row::len, SCIP_Row::local, SCIP_Lp::lpirows, SCIP_Lp::nlpirows, NULL, NUMSTOP, r, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowGetRhs(), SCIPaggrRowRemoveZeros(), SCIPfreeBufferArrayNull, SCIPlpDivingObjChanged(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiGetDualfarkas(), SCIPlpiHasDualRay(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsPrimalInfeasible(), SCIProwGetLPDepth(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasZero(), SCIPsetIsFeasLE(), SCIPtreeGetFocusDepth(), SCIP_Lp::solved, TRUE, and SCIP_Row::vals.
Referenced by conflictAnalyzeLP(), and runBoundHeuristic().
◆ getDualProof()
|
static |
calculates a Farkas proof from the current dual LP solution
- Parameters
-
set global SCIP settings transprob transformed problem lp LP data lpi LPI data tree tree data farkasrow aggregated row representing the proof farkasact maximal activity of the proof constraint validdepth pointer to store the valid depth 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 7099 of file conflict.c.
References addLocalRows(), addRowToAggrRow(), aggrRowGetMinActivity(), checkDualFeasibility(), SCIP_Row::cols, SCIP_Lp::cutoffbound, debugPrintViolationInfo, FALSE, SCIP_Lp::flushed, SCIP_Row::len, SCIP_Row::local, SCIP_Lp::lpirows, SCIP_Lp::nlpirows, NULL, NUMSTOP, r, REALABS, SCIP_Bool, SCIP_CALL, SCIP_LPERROR, SCIP_OKAY, SCIP_Real, SCIPaggrRowAddObjectiveFunction(), SCIPaggrRowClear(), SCIPaggrRowGetRhs(), SCIPaggrRowRemoveZeros(), SCIPfreeBufferArrayNull, SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiGetObjval(), SCIPlpiGetSol(), SCIProwGetLPDepth(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasZero(), SCIPsetIsFeasLE(), SCIPsetSumepsilon(), SCIPtreeGetFocusDepth(), SCIP_Lp::solved, TRUE, and SCIP_Row::vals.
Referenced by conflictAnalyzeLP(), and runBoundHeuristic().
◆ tightenCoefficients()
|
static |
apply coefficient tightening
- Parameters
-
set global SCIP settings proofset proof set nchgcoefs pointer to store number of changed coefficients redundant pointer to store whether the proof set is redundant
Definition at line 7341 of file conflict.c.
References FALSE, SCIP_ProofSet::inds, MAX, SCIP_ProofSet::nnz, proofsetGetNVars(), proofsetGetRhs(), REALABS, SCIP_ProofSet::rhs, SCIP_Real, SCIPcutsTightenCoefficients(), SCIPsetDebugMsg, SCIPsetInfinity(), and SCIP_ProofSet::vals.
Referenced by separateAlternativeProofs(), and tightenDualproof().
◆ separateAlternativeProofs()
|
static |
try to generate alternative proofs by applying subadditive functions
- Parameters
-
conflict conflict analysis data set global SCIP settings stat dynamic SCIP statistics transprob transformed problem tree tree data blkmem block memory proofrow proof rows data curvarlbs current lower bounds of active problem variables curvarubs current upper bounds of active problem variables conflicttype type of the conflict
Definition at line 7383 of file conflict.c.
References aggrRowGetMinActivity(), ALLOWLOCAL, BOUNDSWITCH, conflictInsertProofset(), SCIP_ProofSet::conflicttype, MAX, MAXFRAC, MINFRAC, NULL, POSTPROCESS, proofsetAddSparseData(), proofsetCreate(), proofsetFree(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_ALTBNDPROOF, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_INFEASLP, SCIP_OKAY, SCIP_Real, SCIPaggrRowCalcEfficacyNorm(), SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPcalcFlowCover(), SCIPcreateSol(), SCIPcutGenerationHeuristicCMIR(), SCIPfreeSol(), SCIPprobGetNVars(), SCIPprobGetVars(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsPositive(), SCIPsolSetVal(), SCIPvarGetAvgSol(), tightenCoefficients(), and USEVBDS.
Referenced by tightenDualproof().
◆ tightenDualproof()
|
static |
tighten a given infeasibility proof a^Tx <= b with minact > b w.r.t. local bounds
1) Apply cut generating functions
- c-MIR
- Flow-cover
- TODO: implement other subadditive functions 2) Remove continuous variables contributing with its global bound
- TODO: implement a variant of non-zero-cancellation
- Parameters
-
conflict conflict analysis data set global SCIP settings stat dynamic SCIP statistics blkmem block memory transprob transformed problem tree tree data proofrow aggregated row representing the proof validdepth depth where the proof is valid curvarlbs current lower bounds of active problem variables curvarubs current upper bounds of active problem variables initialproof do we analyze the initial reason of infeasibility?
Definition at line 7514 of file conflict.c.
References aggrRowGetMinActivity(), conflictInsertProofset(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_ProofSet::conflicttype, debugPrintViolationInfo, eps, getMaxActivity(), SCIP_ProofSet::inds, SCIP_ProofSet::nnz, NULL, SCIP_Conflict::proofset, proofsetAddAggrrow(), proofsetCancelVarWithBound(), proofsetClear(), proofsetCreate(), proofsetFree(), proofsetGetInds(), proofsetGetNVars(), proofsetGetVals(), SCIP_ProofSet::rhs, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_ALTBNDPROOF, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetRhs(), SCIPprobGetVars(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsetIsZero(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarIsIntegral(), separateAlternativeProofs(), tightenCoefficients(), SCIP_ProofSet::validdepth, and SCIP_ProofSet::vals.
Referenced by conflictAnalyzeDualProof().
◆ conflictAnalyzeDualProof()
|
static |
perform conflict analysis based on a dual unbounded ray
given an aggregation of rows lhs <= a^Tx such that lhs > maxactivity. if the constraint has size one we add a bound change instead of the constraint.
- Parameters
-
conflict conflict analysis data set global SCIP settings stat dynamic SCIP statistics blkmem block memory origprob original problem transprob transformed problem tree tree data reopt reoptimization data lp LP data proofrow aggregated row representing the proof validdepth valid depth of the dual proof curvarlbs current lower bounds of active problem variables curvarubs current upper bounds of active problem variables initialproof do we analyze the initial reason of infeasibility? globalinfeasible pointer to store whether global infeasibility could be proven success pointer to store success result
Definition at line 7706 of file conflict.c.
References aggrRowGetMinActivity(), FALSE, SCIP_Conflict::ndualproofsinfsuccess, NULL, SCIP_Tree::path, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowGetNNz(), SCIPaggrRowGetRhs(), SCIPnodeCutoff(), SCIPsetDebugMsg, SCIPsetIsFeasLE(), SCIPtreeGetFocusDepth(), tightenDualproof(), and TRUE.
Referenced by conflictAnalyzeLP(), and runBoundHeuristic().
◆ runBoundHeuristic()
|
static |
try to find a subset of changed bounds leading to an infeasible LP
- call undoBdchgsDualfarkas() or undoBdchgsDualsol() -> update lb/ubchginfoposs arrays -> store additional changes in bdchg and curvarlbs/ubs arrays -> apply additional changes to the LPI
- (optional) if additional bound changes were undone: -> resolve LP -> goto 1.
- redo all bound changes in the LPI to restore the LPI to its original state
- analyze conflict -> put remaining changed bounds (see lb/ubchginfoposs arrays) into starting conflict set
- Parameters
-
conflict conflict data set global SCIP settings stat problem statistics origprob original problem transprob transformed problem tree branch and bound tree reopt reoptimization data lp LP data lpi LPI data blkmem block memory proofcoefs coefficients in the proof constraint prooflhs lhs of the proof constraint proofactivity maximal activity of the proof constraint curvarlbs current lower bounds of active problem variables curvarubs current upper bounds of active problem variables lbchginfoposs positions of currently active lower bound change information in variables' arrays ubchginfoposs positions of currently active upper bound change information in variables' arrays iterations pointer to store the total number of LP iterations used marklpunsolved whether LP should be marked unsolved after analysis (needed for strong branching) dualproofsuccess pointer to store success result of dual proof analysis valid pointer to store whether the result is still a valid proof
Definition at line 7797 of file conflict.c.
References addSideRemoval(), SCIP_LPBdChgs::bdchginds, SCIP_LPBdChgs::bdchglbs, SCIP_LPBdChgs::bdchgubs, BMSclearMemoryArray, conflictAnalyzeDualProof(), SCIP_Stat::conflictlptime, SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, getDualProof(), getFarkasProof(), lpbdchgsCreate(), lpbdchgsFree(), lpbdchgsReset(), SCIP_Lp::lpiitlim, SCIP_Lp::lpiobjlim, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_LPBdChgs::nbdchgs, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, NULL, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, r, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_INFEASLP, SCIP_INVALID, SCIP_LPERROR, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_OBJLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPaggrRowCreate(), SCIPaggrRowFree(), SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPclockStart(), SCIPclockStop(), SCIPlpDivingObjChanged(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiChgBounds(), SCIPlpiChgSides(), SCIPlpiGetIterations(), SCIPlpiGetObjval(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsPrimalInfeasible(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPprobAllColsInLP(), SCIPprobGetNVars(), SCIPprobGetVars(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetRhs(), SCIProwIsLocal(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPtreeGetCurrentDepth(), SCIPtreeGetEffectiveRootDepth(), SCIPvarGetProbindex(), SCIP_Lp::solved, undoBdchgsDualfarkas(), and undoBdchgsDualsol().
Referenced by conflictAnalyzeLP().
◆ conflictAnalyzeLP()
|
static |
actually performs analysis of infeasible LP
- Parameters
-
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? dualproofsuccess pointer to store success result of dual proof 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 8174 of file conflict.c.
References BMSclearMemoryArray, conflictAnalyzeDualProof(), conflictAnalyzeRemainingBdchgs(), conflictFlushProofset(), SCIP_Stat::conflictlptime, SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Lp::flushed, getDualProof(), getFarkasProof(), SCIP_Lp::lpiitlim, SCIP_Lp::lpiobjlim, SCIP_Stat::nconflictlpiterations, SCIP_Stat::nconflictlps, SCIP_Conflict::nconflictsets, SCIP_Var::nlbchginfos, SCIP_Conflict::nproofsets, SCIP_Var::nubchginfos, NULL, SCIP_Prob::nvars, SCIP_Conflict::proofset, proofsetGetNVars(), runBoundHeuristic(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_CONFTYPE_INFEASLP, SCIP_LPERROR, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_OBJLIM, SCIP_OKAY, SCIP_Real, SCIPaggrRowCreate(), SCIPaggrRowFree(), SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPclockStart(), SCIPclockStop(), SCIPconflictFlushConss(), SCIPlpDivingObjChanged(), SCIPlpGetLPI(), SCIPlpiGetIterations(), SCIPlpiGetObjval(), SCIPlpiGetRealpar(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsPrimalInfeasible(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPprobAllColsInLP(), SCIPprobGetNVars(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsEQ(), SCIPsetIsGT(), SCIPsetIsLT(), SCIPtreeGetCurrentDepth(), SCIPtreeGetEffectiveRootDepth(), SCIPvarGetLbLocal(), SCIPvarGetLbLP(), SCIPvarGetProbindex(), SCIPvarGetUbLocal(), SCIPvarGetUbLP(), SCIP_Lp::solved, TRUE, and SCIP_Prob::vars.
Referenced by conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), and SCIPconflictAnalyzeStrongbranch().
◆ conflictAnalyzeInfeasibleLP()
|
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
- Parameters
-
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 8491 of file conflict.c.
References conflictAnalyzeLP(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::inflpanalyzetime, SCIP_Conflict::ndualproofsinfsuccess, 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_Longint, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPlpDiving(), SCIPlpDivingObjChanged(), SCIPlpGetSolstat(), SCIPprobAllColsInLP(), SCIPsetDebugMsg, SCIPtreeGetCurrentDepth(), and TRUE.
Referenced by SCIPconflictAnalyzeLP().
◆ conflictAnalyzeBoundexceedingLP()
|
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
- Parameters
-
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 8567 of file conflict.c.
References SCIP_Conflict::boundlpanalyzetime, conflictAnalyzeLP(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::nboundlpcalls, SCIP_Conflict::nboundlpconfconss, SCIP_Conflict::nboundlpconfliterals, SCIP_Conflict::nboundlpiterations, SCIP_Conflict::nboundlpreconvconss, SCIP_Conflict::nboundlpreconvliterals, SCIP_Conflict::nboundlpsuccess, SCIP_Conflict::ndualproofsbndsuccess, SCIP_Conflict::ndualproofsinfsuccess, NULL, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_Longint, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPlpDiving(), SCIPlpDivingObjChanged(), SCIPlpGetSolstat(), SCIPprobAllColsInLP(), SCIPsetDebugMsg, SCIPtreeGetCurrentDepth(), TRUE, and SCIP_ConflictSet::usescutoffbound.
Referenced by SCIPconflictAnalyzeLP().
◆ 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()
- Parameters
-
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 8646 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, r, 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().
◆ SCIPconflictGetInfeasibleLPTime()
SCIP_Real SCIPconflictGetInfeasibleLPTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing infeasible LP conflicts
- Parameters
-
conflict conflict analysis data
Definition at line 8793 of file conflict.c.
References SCIP_Conflict::inflpanalyzetime, NULL, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNInfeasibleLPCalls()
SCIP_Longint SCIPconflictGetNInfeasibleLPCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8803 of file conflict.c.
References SCIP_Conflict::ninflpcalls, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNInfeasibleLPSuccess()
SCIP_Longint SCIPconflictGetNInfeasibleLPSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible LP conflict analysis that yield at least one conflict constraint
- Parameters
-
conflict conflict analysis data
Definition at line 8813 of file conflict.c.
References SCIP_Conflict::ninflpsuccess, and NULL.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
◆ SCIPconflictGetNInfeasibleLPConflictConss()
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in infeasible LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8823 of file conflict.c.
References SCIP_Conflict::ninflpconfconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNInfeasibleLPConflictLiterals()
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in infeasible LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8833 of file conflict.c.
References SCIP_Conflict::ninflpconfliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNInfeasibleLPReconvergenceConss()
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in infeasible LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8843 of file conflict.c.
References SCIP_Conflict::ninflpreconvconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNInfeasibleLPReconvergenceLiterals()
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in infeasible LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8853 of file conflict.c.
References SCIP_Conflict::ninflpreconvliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNInfeasibleLPIterations()
SCIP_Longint SCIPconflictGetNInfeasibleLPIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in infeasible LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8863 of file conflict.c.
References SCIP_Conflict::ninflpiterations, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetBoundexceedingLPTime()
SCIP_Real SCIPconflictGetBoundexceedingLPTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing bound exceeding LP conflicts
- Parameters
-
conflict conflict analysis data
Definition at line 8873 of file conflict.c.
References SCIP_Conflict::boundlpanalyzetime, NULL, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNBoundexceedingLPCalls()
SCIP_Longint SCIPconflictGetNBoundexceedingLPCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to bound exceeding LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8883 of file conflict.c.
References SCIP_Conflict::nboundlpcalls, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNBoundexceedingLPSuccess()
SCIP_Longint SCIPconflictGetNBoundexceedingLPSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to bound exceeding LP conflict analysis that yield at least one conflict constraint
- Parameters
-
conflict conflict analysis data
Definition at line 8893 of file conflict.c.
References SCIP_Conflict::nboundlpsuccess, and NULL.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
◆ SCIPconflictGetNBoundexceedingLPConflictConss()
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in bound exceeding LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8903 of file conflict.c.
References SCIP_Conflict::nboundlpconfconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNBoundexceedingLPConflictLiterals()
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in bound exceeding LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8913 of file conflict.c.
References SCIP_Conflict::nboundlpconfliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNBoundexceedingLPReconvergenceConss()
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in bound exceeding LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8923 of file conflict.c.
References SCIP_Conflict::nboundlpreconvconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNBoundexceedingLPReconvergenceLiterals()
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in bound exceeding LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8933 of file conflict.c.
References SCIP_Conflict::nboundlpreconvliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNBoundexceedingLPIterations()
SCIP_Longint SCIPconflictGetNBoundexceedingLPIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in bound exceeding LP conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 8943 of file conflict.c.
References SCIP_Conflict::nboundlpiterations, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictAnalyzeStrongbranch()
SCIP_RETCODE SCIPconflictAnalyzeStrongbranch | ( | SCIP_CONFLICT * | conflict, |
SCIP_CONFLICTSTORE * | conflictstore, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | transprob, | ||
SCIP_PROB * | origprob, | ||
SCIP_TREE * | tree, | ||
SCIP_REOPT * | reopt, | ||
SCIP_LP * | lp, | ||
SCIP_BRANCHCAND * | branchcand, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_COL * | col, | ||
SCIP_Bool * | downconflict, | ||
SCIP_Bool * | upconflict | ||
) |
analyses infeasible strong branching sub problems for conflicts
- Parameters
-
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 8960 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().
◆ SCIPconflictGetStrongbranchTime()
SCIP_Real SCIPconflictGetStrongbranchTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing infeasible strong branching conflicts
- Parameters
-
conflict conflict analysis data
Definition at line 9197 of file conflict.c.
References NULL, SCIP_Conflict::sbanalyzetime, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNDualproofsInfSuccess()
SCIP_Longint SCIPconflictGetNDualproofsInfSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of successful calls to dual proof analysis derived from infeasible LPs
- Parameters
-
conflict conflict analysis data
Definition at line 9207 of file conflict.c.
References SCIP_Conflict::ndualproofsinfsuccess, and NULL.
Referenced by SCIPgetNConflictDualproofsApplied(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNDualproofsInfGlobal()
SCIP_Longint SCIPconflictGetNDualproofsInfGlobal | ( | SCIP_CONFLICT * | conflict | ) |
gets number of globally valid dual proof constraints derived from infeasible LPs
- Parameters
-
conflict conflict analysis data
Definition at line 9217 of file conflict.c.
References SCIP_Conflict::ndualproofsinfglobal, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNDualproofsInfLocal()
SCIP_Longint SCIPconflictGetNDualproofsInfLocal | ( | SCIP_CONFLICT * | conflict | ) |
gets number of locally valid dual proof constraints derived from infeasible LPs
- Parameters
-
conflict conflict analysis data
Definition at line 9227 of file conflict.c.
References SCIP_Conflict::ndualproofsinflocal, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNDualproofsInfNonzeros()
SCIP_Longint SCIPconflictGetNDualproofsInfNonzeros | ( | SCIP_CONFLICT * | conflict | ) |
gets average length of dual proof constraints derived from infeasible LPs
- Parameters
-
conflict conflict analysis data
Definition at line 9237 of file conflict.c.
References SCIP_Conflict::dualproofsinfnnonzeros, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNDualproofsBndSuccess()
SCIP_Longint SCIPconflictGetNDualproofsBndSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of successfully analyzed dual proofs derived from bound exceeding LPs
- Parameters
-
conflict conflict analysis data
Definition at line 9247 of file conflict.c.
References SCIP_Conflict::ndualproofsbndsuccess, and NULL.
Referenced by SCIPgetNConflictDualproofsApplied(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNDualproofsBndGlobal()
SCIP_Longint SCIPconflictGetNDualproofsBndGlobal | ( | SCIP_CONFLICT * | conflict | ) |
gets number of globally applied dual proofs derived from bound exceeding LPs
- Parameters
-
conflict conflict analysis data
Definition at line 9257 of file conflict.c.
References SCIP_Conflict::ndualproofsbndglobal, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNDualproofsBndLocal()
SCIP_Longint SCIPconflictGetNDualproofsBndLocal | ( | SCIP_CONFLICT * | conflict | ) |
gets number of locally applied dual proofs derived from bound exceeding LPs
- Parameters
-
conflict conflict analysis data
Definition at line 9267 of file conflict.c.
References SCIP_Conflict::ndualproofsbndlocal, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNDualproofsBndNonzeros()
SCIP_Longint SCIPconflictGetNDualproofsBndNonzeros | ( | SCIP_CONFLICT * | conflict | ) |
gets average length of dual proofs derived from bound exceeding LPs
- Parameters
-
conflict conflict analysis data
Definition at line 9277 of file conflict.c.
References SCIP_Conflict::dualproofsbndnnonzeros, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNStrongbranchCalls()
SCIP_Longint SCIPconflictGetNStrongbranchCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible strong branching conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9287 of file conflict.c.
References SCIP_Conflict::nsbcalls, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNStrongbranchSuccess()
SCIP_Longint SCIPconflictGetNStrongbranchSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to infeasible strong branching conflict analysis that yield at least one conflict constraint
- Parameters
-
conflict conflict analysis data
Definition at line 9297 of file conflict.c.
References SCIP_Conflict::nsbsuccess, and NULL.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
◆ SCIPconflictGetNStrongbranchConflictConss()
SCIP_Longint SCIPconflictGetNStrongbranchConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in infeasible strong branching conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9307 of file conflict.c.
References SCIP_Conflict::nsbconfconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNStrongbranchConflictLiterals()
SCIP_Longint SCIPconflictGetNStrongbranchConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in infeasible strong branching conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9317 of file conflict.c.
References SCIP_Conflict::nsbconfliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNStrongbranchReconvergenceConss()
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in infeasible strong branching conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9327 of file conflict.c.
References SCIP_Conflict::nsbreconvconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNStrongbranchReconvergenceLiterals()
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in infeasible strong branching conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9337 of file conflict.c.
References SCIP_Conflict::nsbreconvliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNStrongbranchIterations()
SCIP_Longint SCIPconflictGetNStrongbranchIterations | ( | SCIP_CONFLICT * | conflict | ) |
gets number of LP iterations in infeasible strong branching conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9347 of file conflict.c.
References SCIP_Conflict::nsbiterations, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictAnalyzePseudo()
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
- Parameters
-
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 9369 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(), SCIPsetIsZero(), SCIPsetSumepsilon(), SCIPtreeGetCurrentDepth(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetUbLocal(), TRUE, undoBdchgsProof(), SCIP_ConflictSet::usescutoffbound, and SCIP_Prob::vars.
Referenced by applyBounding().
◆ SCIPconflictGetPseudoTime()
SCIP_Real SCIPconflictGetPseudoTime | ( | SCIP_CONFLICT * | conflict | ) |
gets time in seconds used for analyzing pseudo solution conflicts
- Parameters
-
conflict conflict analysis data
Definition at line 9521 of file conflict.c.
References NULL, SCIP_Conflict::pseudoanalyzetime, and SCIPclockGetTime().
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNPseudoCalls()
SCIP_Longint SCIPconflictGetNPseudoCalls | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to pseudo solution conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9531 of file conflict.c.
References SCIP_Conflict::npseudocalls, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNPseudoSuccess()
SCIP_Longint SCIPconflictGetNPseudoSuccess | ( | SCIP_CONFLICT * | conflict | ) |
gets number of calls to pseudo solution conflict analysis that yield at least one conflict constraint
- Parameters
-
conflict conflict analysis data
Definition at line 9541 of file conflict.c.
References SCIP_Conflict::npseudosuccess, and NULL.
Referenced by SCIPprintConflictStatistics(), and SCIPsolveCIP().
◆ SCIPconflictGetNPseudoConflictConss()
SCIP_Longint SCIPconflictGetNPseudoConflictConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of conflict constraints detected in pseudo solution conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9551 of file conflict.c.
References SCIP_Conflict::npseudoconfconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNPseudoConflictLiterals()
SCIP_Longint SCIPconflictGetNPseudoConflictLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in conflict constraints created in pseudo solution conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9561 of file conflict.c.
References SCIP_Conflict::npseudoconfliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictGetNPseudoReconvergenceConss()
SCIP_Longint SCIPconflictGetNPseudoReconvergenceConss | ( | SCIP_CONFLICT * | conflict | ) |
gets number of reconvergence constraints detected in pseudo solution conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9571 of file conflict.c.
References SCIP_Conflict::npseudoreconvconss, and NULL.
Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().
◆ SCIPconflictGetNPseudoReconvergenceLiterals()
SCIP_Longint SCIPconflictGetNPseudoReconvergenceLiterals | ( | SCIP_CONFLICT * | conflict | ) |
gets total number of literals in reconvergence constraints created in pseudo solution conflict analysis
- Parameters
-
conflict conflict analysis data
Definition at line 9581 of file conflict.c.
References SCIP_Conflict::npseudoreconvliterals, and NULL.
Referenced by SCIPprintConflictStatistics().
◆ SCIPconflictEnableOrDisableClocks()
void SCIPconflictEnableOrDisableClocks | ( | SCIP_CONFLICT * | conflict, |
SCIP_Bool | enable | ||
) |
enables or disables all clocks of conflict
, depending on the value of the flag
- Parameters
-
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 9592 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().