Scippy

SCIP

Solving Constraint Integer Programs

conflict.c File Reference

Detailed Description

methods and datastructures for conflict analysis

Author
Tobias Achterberg
Timo Berthold
Stefan Heinz
Marc Pfetsch
Michael Winkler
Jakob Witzig

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:

  1. 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.
  2. Remove the top bound change b from the priority queue.
  3. Perform the following case distinction:
    1. 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.
    2. 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.
  4. If priority queue is non-empty, goto step 2.
  5. 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
    1. call SCIPinitConflictAnalysis() to initialize the conflict queue,
    2. call SCIPaddConflictBound() for each bound that lead to the conflict,
    3. 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_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(...)
 

Functions

 SCIP_DECL_SORTPTRCOMP (SCIPconflicthdlrComp)
 
 SCIP_DECL_SORTPTRCOMP (SCIPconflicthdlrCompName)
 
static SCIP_DECL_PARAMCHGD (paramChgdConflicthdlrPriority)
 
SCIP_RETCODE SCIPconflicthdlrCopyInclude (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
 
static SCIP_RETCODE doConflicthdlrCreate (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)
 
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)
 
SCIP_RETCODE SCIPconflicthdlrFree (SCIP_CONFLICTHDLR **conflicthdlr, SCIP_SET *set)
 
SCIP_RETCODE SCIPconflicthdlrInit (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
 
SCIP_RETCODE SCIPconflicthdlrExit (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
 
SCIP_RETCODE SCIPconflicthdlrInitsol (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
 
SCIP_RETCODE SCIPconflicthdlrExitsol (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
 
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)
 
SCIP_CONFLICTHDLRDATASCIPconflicthdlrGetData (SCIP_CONFLICTHDLR *conflicthdlr)
 
void SCIPconflicthdlrSetData (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_CONFLICTHDLRDATA *conflicthdlrdata)
 
void SCIPconflicthdlrSetCopy (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTCOPY((*conflictcopy)))
 
void SCIPconflicthdlrSetFree (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTFREE((*conflictfree)))
 
void SCIPconflicthdlrSetInit (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINIT((*conflictinit)))
 
void SCIPconflicthdlrSetExit (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXIT((*conflictexit)))
 
void SCIPconflicthdlrSetInitsol (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTINITSOL((*conflictinitsol)))
 
void SCIPconflicthdlrSetExitsol (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_DECL_CONFLICTEXITSOL((*conflictexitsol)))
 
const char * SCIPconflicthdlrGetName (SCIP_CONFLICTHDLR *conflicthdlr)
 
const char * SCIPconflicthdlrGetDesc (SCIP_CONFLICTHDLR *conflicthdlr)
 
int SCIPconflicthdlrGetPriority (SCIP_CONFLICTHDLR *conflicthdlr)
 
void SCIPconflicthdlrSetPriority (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set, int priority)
 
SCIP_Bool SCIPconflicthdlrIsInitialized (SCIP_CONFLICTHDLR *conflicthdlr)
 
void SCIPconflicthdlrEnableOrDisableClocks (SCIP_CONFLICTHDLR *conflicthdlr, SCIP_Bool enable)
 
SCIP_Real SCIPconflicthdlrGetSetupTime (SCIP_CONFLICTHDLR *conflicthdlr)
 
SCIP_Real SCIPconflicthdlrGetTime (SCIP_CONFLICTHDLR *conflicthdlr)
 
static SCIP_RETCODE lpbdchgsCreate (SCIP_LPBDCHGS **lpbdchgs, SCIP_SET *set, int ncols)
 
static void lpbdchgsReset (SCIP_LPBDCHGS *lpbdchgs, int ncols)
 
static void lpbdchgsFree (SCIP_LPBDCHGS **lpbdchgs, SCIP_SET *set)
 
static void proofsetClear (SCIP_PROOFSET *proofset)
 
static SCIP_RETCODE proofsetCreate (SCIP_PROOFSET **proofset, BMS_BLKMEM *blkmem)
 
static SCIP_RETCODE conflictInitProofset (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem)
 
static void proofsetFree (SCIP_PROOFSET **proofset, BMS_BLKMEM *blkmem)
 
static int * proofsetGetInds (SCIP_PROOFSET *proofset)
 
static SCIP_RealproofsetGetVals (SCIP_PROOFSET *proofset)
 
static SCIP_Real proofsetGetRhs (SCIP_PROOFSET *proofset)
 
static int proofsetGetNVars (SCIP_PROOFSET *proofset)
 
static SCIP_CONFTYPE proofsetGetConftype (SCIP_PROOFSET *proofset)
 
static SCIP_RETCODE proofsetAddSparseData (SCIP_PROOFSET *proofset, BMS_BLKMEM *blkmem, SCIP_Real *vals, int *inds, int nnz, SCIP_Real rhs)
 
static SCIP_RETCODE proofsetAddAggrrow (SCIP_PROOFSET *proofset, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_AGGRROW *aggrrow)
 
static void proofsetCancelVarWithBound (SCIP_PROOFSET *proofset, SCIP_SET *set, SCIP_VAR *var, int pos, SCIP_Bool *valid)
 
static SCIP_RETCODE conflictEnsureTmpbdchginfosMem (SCIP_CONFLICT *conflict, SCIP_SET *set, int num)
 
static SCIP_RETCODE conflictCreateTmpBdchginfo (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BDCHGINFO **bdchginfo)
 
static void conflictFreeTmpBdchginfos (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem)
 
static void conflictsetClear (SCIP_CONFLICTSET *conflictset)
 
static SCIP_RETCODE conflictsetCreate (SCIP_CONFLICTSET **conflictset, BMS_BLKMEM *blkmem)
 
static SCIP_RETCODE conflictsetCopy (SCIP_CONFLICTSET **targetconflictset, BMS_BLKMEM *blkmem, SCIP_CONFLICTSET *sourceconflictset, int nadditionalelems)
 
static void conflictsetFree (SCIP_CONFLICTSET **conflictset, BMS_BLKMEM *blkmem)
 
static SCIP_RETCODE conflictsetEnsureBdchginfosMem (SCIP_CONFLICTSET *conflictset, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
 
static SCIP_Real conflictsetCalcScore (SCIP_CONFLICTSET *conflictset, SCIP_SET *set)
 
static SCIP_Real calcBdchgScore (SCIP_Real prooflhs, SCIP_Real proofact, SCIP_Real proofactdelta, SCIP_Real proofcoef, int depth, int currentdepth, SCIP_VAR *var, SCIP_SET *set)
 
static SCIP_Bool bdchginfoIsInvalid (SCIP_CONFLICT *conflict, SCIP_BDCHGINFO *bdchginfo)
 
static SCIP_RETCODE conflictsetAddBound (SCIP_CONFLICTSET *conflictset, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BDCHGINFO *bdchginfo, SCIP_Real relaxedbd)
 
static SCIP_RETCODE conflictsetAddBounds (SCIP_CONFLICT *conflict, SCIP_CONFLICTSET *conflictset, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BDCHGINFO **bdchginfos, int nbdchginfos)
 
static void conflictsetCalcConflictDepth (SCIP_CONFLICTSET *conflictset)
 
static SCIP_RETCODE conflictsetCalcInsertDepth (SCIP_CONFLICTSET *conflictset, SCIP_SET *set, SCIP_TREE *tree)
 
static SCIP_Bool conflictsetIsRedundant (SCIP_CONFLICTSET *conflictset1, SCIP_CONFLICTSET *conflictset2)
 
static SCIP_RETCODE conflictEnsureProofsetsMem (SCIP_CONFLICT *conflict, SCIP_SET *set, int num)
 
static SCIP_RETCODE conflictEnsureConflictsetsMem (SCIP_CONFLICT *conflict, SCIP_SET *set, int num)
 
static SCIP_RETCODE conflictInsertProofset (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_PROOFSET *proofset)
 
static SCIP_RETCODE conflictInsertConflictset (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONFLICTSET **conflictset)
 
static int conflictCalcMaxsize (SCIP_SET *set, SCIP_PROB *prob)
 
static SCIP_RETCODE incVSIDS (SCIP_VAR *var, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_BOUNDTYPE boundtype, SCIP_Real value, SCIP_Real weight)
 
static SCIP_RETCODE updateStatistics (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONFLICTSET *conflictset, int insertdepth)
 
static SCIP_Bool checkRedundancy (SCIP_SET *set, SCIP_CONFLICTSET *conflictset)
 
static SCIP_RETCODE detectImpliedBounds (SCIP_SET *set, SCIP_PROB *prob, SCIP_CONFLICTSET *conflictset, int *nbdchgs, int *nredvars, SCIP_Bool *redundant)
 
static SCIP_RETCODE tightenSingleVar (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Real val, SCIP_Real rhs, SCIP_CONFTYPE prooftype)
 
static SCIP_Real aggrRowGetMinActivity (SCIP_PROB *transprob, SCIP_AGGRROW *aggrrow, SCIP_Real *curvarlbs, SCIP_Real *curvarubs)
 
static SCIP_Real getMinActivity (SCIP_PROB *transprob, SCIP_Real *coefs, int *inds, int nnz, SCIP_Real *curvarlbs, SCIP_Real *curvarubs)
 
static SCIP_Real getMaxActivity (SCIP_PROB *transprob, SCIP_Real *coefs, int *inds, int nnz, SCIP_Real *curvarlbs, SCIP_Real *curvarubs)
 
static SCIP_RETCODE propagateLongProof (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, SCIP_REOPT *reopt, SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Real *coefs, int *inds, int nnz, SCIP_Real rhs, SCIP_CONFTYPE conflicttype)
 
static SCIP_RETCODE createAndAddProofcons (SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, SCIP_PROOFSET *proofset, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, BMS_BLKMEM *blkmem)
 
static SCIP_RETCODE conflictFlushProofset (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)
 
static SCIP_RETCODE conflictAddConflictCons (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_CONFLICTSET *conflictset, int insertdepth, SCIP_Bool *success)
 
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)
 
int SCIPconflictGetNConflicts (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNAppliedConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNAppliedLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNGlobalChgBds (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNAppliedGlobalConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNAppliedGlobalLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNLocalChgBds (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNAppliedLocalConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNAppliedLocalLiterals (SCIP_CONFLICT *conflict)
 
static SCIP_Bool bdchginfoIsResolvable (SCIP_BDCHGINFO *bdchginfo)
 
static SCIP_DECL_SORTPTRCOMP (conflictBdchginfoComp)
 
SCIP_Bool SCIPconflictApplicable (SCIP_SET *set)
 
SCIP_RETCODE SCIPconflictCreate (SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem, SCIP_SET *set)
 
SCIP_RETCODE SCIPconflictFree (SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem)
 
static void conflictClear (SCIP_CONFLICT *conflict)
 
SCIP_RETCODE SCIPconflictInit (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_CONFTYPE conftype, SCIP_Bool usescutoffbound)
 
static SCIP_Bool conflictMarkBoundCheckPresence (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_BDCHGINFO *bdchginfo, SCIP_Real relaxedbd)
 
static SCIP_RETCODE conflictAddConflictBound (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BDCHGINFO *bdchginfo, SCIP_Real relaxedbd)
 
static SCIP_Bool isBoundchgUseless (SCIP_SET *set, SCIP_BDCHGINFO *bdchginfo)
 
static SCIP_RETCODE conflictQueueBound (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_BDCHGINFO *bdchginfo, SCIP_Real relaxedbd)
 
static SCIP_RETCODE convertToActiveVar (SCIP_VAR **var, SCIP_SET *set, SCIP_BOUNDTYPE *boundtype, SCIP_Real *bound)
 
static SCIP_RETCODE conflictAddBound (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGINFO *bdchginfo, SCIP_Real relaxedbd)
 
SCIP_RETCODE SCIPconflictAddBound (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx)
 
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)
 
SCIP_RETCODE SCIPconflictIsVarUsed (SCIP_CONFLICT *conflict, SCIP_VAR *var, SCIP_SET *set, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool *used)
 
SCIP_Real SCIPconflictGetVarLb (SCIP_CONFLICT *conflict, SCIP_VAR *var)
 
SCIP_Real SCIPconflictGetVarUb (SCIP_CONFLICT *conflict, SCIP_VAR *var)
 
static SCIP_BDCHGINFOconflictRemoveCand (SCIP_CONFLICT *conflict)
 
static SCIP_BDCHGINFOconflictFirstCand (SCIP_CONFLICT *conflict)
 
static SCIP_RETCODE conflictAddConflictset (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, int validdepth, SCIP_Bool diving, SCIP_Bool repropagate, SCIP_Bool *success, int *nliterals)
 
static SCIP_RETCODE conflictResolveBound (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_BDCHGINFO *bdchginfo, SCIP_Real relaxedbd, int validdepth, SCIP_Bool *resolved)
 
static SCIP_RETCODE conflictCreateReconvergenceConss (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_Bool diving, int validdepth, SCIP_BDCHGINFO *firstuip, int *nreconvconss, int *nreconvliterals)
 
static SCIP_RETCODE conflictAnalyze (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_Bool diving, int validdepth, SCIP_Bool mustresolve, int *nconss, int *nliterals, int *nreconvconss, int *nreconvliterals)
 
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)
 
SCIP_Real SCIPconflictGetGlobalApplTime (SCIP_CONFLICT *conflict)
 
SCIP_Real SCIPconflictGetPropTime (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPropCalls (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPropSuccess (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPropConflictConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPropConflictLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPropReconvergenceConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPropReconvergenceLiterals (SCIP_CONFLICT *conflict)
 
static SCIP_RETCODE ensureSidechgsSize (SCIP_SET *set, int **sidechginds, SCIP_Real **sidechgoldlhss, SCIP_Real **sidechgoldrhss, SCIP_Real **sidechgnewlhss, SCIP_Real **sidechgnewrhss, int *sidechgssize, int num)
 
static SCIP_RETCODE addSideRemoval (SCIP_SET *set, SCIP_ROW *row, SCIP_Real lpiinfinity, int **sidechginds, SCIP_Real **sidechgoldlhss, SCIP_Real **sidechgoldrhss, SCIP_Real **sidechgnewlhss, SCIP_Real **sidechgnewrhss, int *sidechgssize, int *nsidechgs)
 
static SCIP_RETCODE addBdchg (SCIP_SET *set, SCIP_VAR *var, SCIP_Real newlb, SCIP_Real newub, SCIP_LPBDCHGS *oldlpbdchgs, SCIP_LPBDCHGS *relaxedlpbdchgs, SCIP_LPI *lpi)
 
static SCIP_RETCODE ensureCandsSize (SCIP_SET *set, SCIP_VAR ***cands, SCIP_Real **candscores, SCIP_Real **newbounds, SCIP_Real **proofactdeltas, int *candssize, int num)
 
static SCIP_RETCODE addCand (SCIP_SET *set, int currentdepth, SCIP_VAR *var, int lbchginfopos, int ubchginfopos, SCIP_Real proofcoef, SCIP_Real prooflhs, SCIP_Real proofact, SCIP_VAR ***cands, SCIP_Real **candscores, SCIP_Real **newbounds, SCIP_Real **proofactdeltas, int *candssize, int *ncands, int firstcand)
 
static void skipRedundantBdchginfos (SCIP_VAR *var, int *lbchginfopos, int *ubchginfopos)
 
static SCIP_RETCODE undoBdchgsProof (SCIP_SET *set, SCIP_PROB *prob, int currentdepth, SCIP_Real *proofcoefs, SCIP_Real prooflhs, SCIP_Real *proofact, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, int *lbchginfoposs, int *ubchginfoposs, SCIP_LPBDCHGS *oldlpbdchgs, SCIP_LPBDCHGS *relaxedlpbdchgs, SCIP_Bool *resolve, SCIP_LPI *lpi)
 
static SCIP_RETCODE undoBdchgsDualfarkas (SCIP_SET *set, SCIP_PROB *prob, SCIP_LP *lp, int currentdepth, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, int *lbchginfoposs, int *ubchginfoposs, SCIP_LPBDCHGS *oldlpbdchgs, SCIP_LPBDCHGS *relaxedlpbdchgs, SCIP_Bool *valid, SCIP_Bool *resolve, SCIP_Real *farkascoefs, SCIP_Real farkaslhs, SCIP_Real *farkasactivity)
 
static SCIP_RETCODE undoBdchgsDualsol (SCIP_SET *set, SCIP_PROB *prob, SCIP_LP *lp, int currentdepth, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, int *lbchginfoposs, int *ubchginfoposs, SCIP_LPBDCHGS *oldlpbdchgs, SCIP_LPBDCHGS *relaxedlpbdchgs, SCIP_Bool *valid, SCIP_Bool *resolve, SCIP_Real *dualcoefs, SCIP_Real duallhs, SCIP_Real *dualactivity)
 
static SCIP_RETCODE conflictAnalyzeRemainingBdchgs (SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_Bool diving, int *lbchginfoposs, int *ubchginfoposs, int *nconss, int *nliterals, int *nreconvconss, int *nreconvliterals)
 
static SCIP_RETCODE getFarkasProof (SCIP_SET *set, SCIP_PROB *prob, SCIP_LP *lp, SCIP_LPI *lpi, SCIP_AGGRROW *farkasrow, SCIP_Real *farkasact, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, SCIP_Bool *valid)
 
static SCIP_RETCODE getDualProof (SCIP_SET *set, SCIP_PROB *prob, SCIP_LP *lp, SCIP_LPI *lpi, SCIP_AGGRROW *farkasrow, SCIP_Real *farkasact, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, SCIP_Bool *valid)
 
static void tightenCoefficients (SCIP_SET *set, SCIP_PROOFSET *proofset, int *nchgcoefs, SCIP_Bool *redundant)
 
static SCIP_RETCODE separateAlternativeProofs (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_TREE *tree, BMS_BLKMEM *blkmem, SCIP_AGGRROW *proofrow, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, SCIP_CONFTYPE conflicttype)
 
static SCIP_RETCODE tightenDualproof (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_AGGRROW *proofrow, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, SCIP_Bool initialproof)
 
static SCIP_RETCODE conflictAnalyzeDualProof (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_AGGRROW *proofrow, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, SCIP_Bool initialproof, SCIP_Bool *globalinfeasible, SCIP_Bool *success)
 
static SCIP_RETCODE runBoundHeuristic (SCIP_CONFLICT *conflict, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_Real *proofcoefs, SCIP_Real *prooflhs, SCIP_Real *proofactivity, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, int *lbchginfoposs, int *ubchginfoposs, int *iterations, SCIP_Bool marklpunsolved, SCIP_Bool *dualraysuccess, SCIP_Bool *valid)
 
static SCIP_RETCODE conflictAnalyzeLP (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 diving, SCIP_Bool *dualraysuccess, int *iterations, int *nconss, int *nliterals, int *nreconvconss, int *nreconvliterals, SCIP_Bool marklpunsolved)
 
static SCIP_RETCODE conflictAnalyzeInfeasibleLP (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)
 
static SCIP_RETCODE conflictAnalyzeBoundexceedingLP (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)
 
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)
 
SCIP_Real SCIPconflictGetInfeasibleLPTime (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNInfeasibleLPCalls (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNInfeasibleLPSuccess (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNInfeasibleLPIterations (SCIP_CONFLICT *conflict)
 
SCIP_Real SCIPconflictGetBoundexceedingLPTime (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNBoundexceedingLPCalls (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNBoundexceedingLPSuccess (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNBoundexceedingLPIterations (SCIP_CONFLICT *conflict)
 
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)
 
SCIP_Real SCIPconflictGetStrongbranchTime (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNDualrayInfSuccess (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNDualrayInfGlobal (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNDualrayInfNonzeros (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNDualrayBndSuccess (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNDualrayBndGlobal (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNDualrayBndNonzeros (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNStrongbranchCalls (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNStrongbranchSuccess (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNStrongbranchConflictConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNStrongbranchConflictLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNStrongbranchIterations (SCIP_CONFLICT *conflict)
 
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)
 
SCIP_Real SCIPconflictGetPseudoTime (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPseudoCalls (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPseudoSuccess (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPseudoConflictConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPseudoConflictLiterals (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPseudoReconvergenceConss (SCIP_CONFLICT *conflict)
 
SCIP_Longint SCIPconflictGetNPseudoReconvergenceLiterals (SCIP_CONFLICT *conflict)
 
void SCIPconflictEnableOrDisableClocks (SCIP_CONFLICT *conflict, SCIP_Bool enable)
 

Macro Definition Documentation

◆ BOUNDSWITCH

#define BOUNDSWITCH   0.51

threshold for bound switching - see cuts.c

Definition at line 161 of file conflict.c.

Referenced by separateAlternativeProofs().

◆ POSTPROCESS

#define POSTPROCESS   FALSE

apply postprocessing to the cut - see cuts.c

Definition at line 162 of file conflict.c.

Referenced by separateAlternativeProofs().

◆ USEVBDS

#define USEVBDS   FALSE

use variable bounds - see cuts.c

Definition at line 163 of file conflict.c.

Referenced by separateAlternativeProofs().

◆ ALLOWLOCAL

#define ALLOWLOCAL   FALSE

allow to generate local cuts - see cuts.

Definition at line 164 of file conflict.c.

Referenced by separateAlternativeProofs().

◆ MINFRAC

#define MINFRAC   0.05

minimal fractionality of floor(rhs) - see cuts.c

Definition at line 165 of file conflict.c.

Referenced by separateAlternativeProofs().

◆ MAXFRAC

#define MAXFRAC   0.999

maximal fractionality of floor(rhs) - see cuts.c

Definition at line 166 of file conflict.c.

Referenced by separateAlternativeProofs().

◆ NUMSTOP

#define NUMSTOP   9007199254740992.0

Definition at line 6174 of file conflict.c.

Referenced by getFarkasProof().

◆ debugPrintViolationInfo

#define debugPrintViolationInfo (   ...)

Definition at line 6780 of file conflict.c.

Referenced by getDualProof(), and tightenDualproof().

Function Documentation

◆ SCIP_DECL_PARAMCHGD()

static SCIP_DECL_PARAMCHGD ( paramChgdConflicthdlrPriority  )
static

method to call, when the priority of a conflict handler was changed

Definition at line 364 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
conflicthdlrconflict handler
setSCIP_SET of SCIP to copy to

Definition at line 378 of file conflict.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPconflicthdlrGetName(), and SCIPsetDebugMsg.

◆ doConflicthdlrCreate()

static SCIP_RETCODE doConflicthdlrCreate ( 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 
)
static

internal method for creating a conflict handler

Parameters
conflicthdlrpointer to conflict handler data structure
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of conflict handler
descdescription of conflict handler
prioritypriority of the conflict handler
conflicthdlrdataconflict handler data

Definition at line 398 of file conflict.c.

References BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, 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
conflicthdlrpointer to conflict handler data structure
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of conflict handler
descdescription of conflict handler
prioritypriority of the conflict handler
conflicthdlrdataconflict handler data

Definition at line 452 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
conflicthdlrpointer to conflict handler data structure
setglobal SCIP settings

Definition at line 483 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
conflicthdlrconflict handler
setglobal SCIP settings

Definition at line 511 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
conflicthdlrconflict handler
setglobal SCIP settings

Definition at line 548 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
conflicthdlrconflict handler
setglobal SCIP settings

Definition at line 579 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
conflicthdlrconflict handler
setglobal SCIP settings

Definition at line 603 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
conflicthdlrconflict handler
setglobal SCIP settings
nodenode to add conflict constraint to
validnodenode at which the constraint is valid
bdchginfosbound change resembling the conflict set
relaxedbdsarray with relaxed bounds which are efficient to create a valid conflict
nbdchginfosnumber of bound changes in the conflict set
conftypetype of the conflict
usescutoffbounddepends the conflict on the cutoff bound?
resolvedwas the conflict set already used to create a constraint?
resultpointer to store the result of the callback method

Definition at line 627 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
conflicthdlrconflict handler

Definition at line 695 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
conflicthdlrconflict handler

Definition at line 706 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
conflicthdlrconflict handler

Definition at line 717 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
conflicthdlrconflict handler

Definition at line 728 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
conflicthdlrconflict handler

Definition at line 739 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
conflicthdlrconflict handler

Definition at line 750 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
conflicthdlrconflict handler
setglobal SCIP settings
prioritynew priority of the conflict handler

Definition at line 791 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
conflicthdlrthe conflict handler for which all clocks should be enabled or disabled
enableshould the clocks of the conflict handler be enabled?

Definition at line 815 of file conflict.c.

References SCIP_Conflicthdlr::conflicttime, NULL, SCIPclockEnableOrDisable(), and SCIP_Conflicthdlr::setuptime.

◆ lpbdchgsCreate()

static SCIP_RETCODE lpbdchgsCreate ( SCIP_LPBDCHGS **  lpbdchgs,
SCIP_SET set,
int  ncols 
)
static

create conflict LP bound change data structure

Parameters
lpbdchgspointer to store the conflict LP bound change data structure
setglobal SCIP settings
ncolsnumber of columns

Definition at line 853 of file conflict.c.

References BMSclearMemoryArray, SCIP_CALL, SCIP_OKAY, SCIPsetAllocBuffer, and SCIPsetAllocBufferArray.

Referenced by runBoundHeuristic().

◆ lpbdchgsReset()

static void lpbdchgsReset ( SCIP_LPBDCHGS lpbdchgs,
int  ncols 
)
static

reset conflict LP bound change data structure

Parameters
lpbdchgsconflict LP bound change data structure
ncolsnumber of columns

Definition at line 875 of file conflict.c.

References BMSclearMemoryArray, SCIP_LPBdChgs::nbdchgs, NULL, and SCIP_LPBdChgs::usedcols.

Referenced by runBoundHeuristic().

◆ lpbdchgsFree()

static void lpbdchgsFree ( SCIP_LPBDCHGS **  lpbdchgs,
SCIP_SET set 
)
static

free conflict LP bound change data structure

Parameters
lpbdchgspointer to store the conflict LP bound change data structure
setglobal SCIP settings

Definition at line 888 of file conflict.c.

References SCIPsetFreeBuffer, and SCIPsetFreeBufferArray.

Referenced by runBoundHeuristic().

◆ proofsetClear()

static void proofsetClear ( SCIP_PROOFSET proofset)
static

resets the data structure of a proofset

Parameters
proofsetproof set

Definition at line 908 of file conflict.c.

References SCIP_ProofSet::conflicttype, SCIP_ProofSet::nnz, NULL, SCIP_ProofSet::rhs, and SCIP_CONFTYPE_UNKNOWN.

Referenced by conflictFlushProofset(), and tightenDualproof().

◆ proofsetCreate()

static SCIP_RETCODE proofsetCreate ( SCIP_PROOFSET **  proofset,
BMS_BLKMEM blkmem 
)
static

creates a proofset

Parameters
proofsetproof set
blkmemblock memory of transformed problem

Definition at line 921 of file conflict.c.

References BMSallocBlockMemory, NULL, SCIP_ALLOC, SCIP_CONFTYPE_UNKNOWN, and SCIP_OKAY.

Referenced by conflictInitProofset(), separateAlternativeProofs(), and tightenDualproof().

◆ conflictInitProofset()

static SCIP_RETCODE conflictInitProofset ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem 
)
static

creates and clears the proofset

Parameters
conflictconflict analysis data
blkmemblock memory of transformed problem

Definition at line 941 of file conflict.c.

References NULL, SCIP_Conflict::proofset, proofsetCreate(), SCIP_CALL, and SCIP_OKAY.

Referenced by SCIPconflictCreate().

◆ proofsetFree()

static void proofsetFree ( SCIP_PROOFSET **  proofset,
BMS_BLKMEM blkmem 
)
static

◆ proofsetGetInds()

static int* proofsetGetInds ( SCIP_PROOFSET proofset)
static

return the indices of variables in the proofset

Parameters
proofsetproof set

Definition at line 996 of file conflict.c.

References SCIP_ProofSet::inds, and NULL.

Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenDualproof().

◆ proofsetGetVals()

static SCIP_Real* proofsetGetVals ( SCIP_PROOFSET proofset)
static

return coefficient of variable in the proofset with given probindex

Parameters
proofsetproof set

Definition at line 1007 of file conflict.c.

References NULL, and SCIP_ProofSet::vals.

Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenDualproof().

◆ proofsetGetRhs()

static SCIP_Real proofsetGetRhs ( SCIP_PROOFSET proofset)
static

return the right-hand side if a proofset

Parameters
proofsetproof set

Definition at line 1018 of file conflict.c.

References NULL, and SCIP_ProofSet::rhs.

Referenced by conflictFlushProofset(), createAndAddProofcons(), and tightenCoefficients().

◆ proofsetGetNVars()

static int proofsetGetNVars ( SCIP_PROOFSET proofset)
static

returns the number of variables in the proofset

Parameters
proofsetproof set

Definition at line 1029 of file conflict.c.

References SCIP_ProofSet::nnz, and NULL.

Referenced by conflictAnalyzeLP(), conflictFlushProofset(), createAndAddProofcons(), tightenCoefficients(), and tightenDualproof().

◆ proofsetGetConftype()

static SCIP_CONFTYPE proofsetGetConftype ( SCIP_PROOFSET proofset)
static

returns the number of variables in the proofset

Parameters
proofsetproof set

Definition at line 1040 of file conflict.c.

References SCIP_ProofSet::conflicttype, and NULL.

Referenced by conflictFlushProofset(), and createAndAddProofcons().

◆ proofsetAddSparseData()

static SCIP_RETCODE proofsetAddSparseData ( SCIP_PROOFSET proofset,
BMS_BLKMEM blkmem,
SCIP_Real vals,
int *  inds,
int  nnz,
SCIP_Real  rhs 
)
static

adds given data as aggregation row to the proofset

Parameters
proofsetproof set
blkmemblock memory
valsvariable coefficients
indsvariable array
nnzsize of variable and coefficient array
rhsright-hand side of the aggregation row

Definition at line 1051 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 SCIP_RETCODE proofsetAddAggrrow ( SCIP_PROOFSET proofset,
SCIP_SET set,
BMS_BLKMEM blkmem,
SCIP_AGGRROW aggrrow 
)
static

adds an aggregation row to the proofset

Parameters
proofsetproof set
setglobal SCIP settings
blkmemblock memory
aggrrowaggregation row to add

Definition at line 1102 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 void proofsetCancelVarWithBound ( SCIP_PROOFSET proofset,
SCIP_SET set,
SCIP_VAR var,
int  pos,
SCIP_Bool valid 
)
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 1143 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 SCIP_RETCODE conflictEnsureTmpbdchginfosMem ( SCIP_CONFLICT conflict,
SCIP_SET set,
int  num 
)
static

resizes the array of the temporary bound change informations to be able to store at least num bound change entries

Parameters
conflictconflict analysis data
setglobal SCIP settings
numminimal number of slots in arrays

Definition at line 1187 of file conflict.c.

References BMSreallocMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Conflict::tmpbdchginfos, and SCIP_Conflict::tmpbdchginfossize.

Referenced by conflictCreateTmpBdchginfo().

◆ conflictCreateTmpBdchginfo()

static SCIP_RETCODE conflictCreateTmpBdchginfo ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_VAR var,
SCIP_BOUNDTYPE  boundtype,
SCIP_Real  oldbound,
SCIP_Real  newbound,
SCIP_BDCHGINFO **  bdchginfo 
)
static

creates a temporary bound change information object that is destroyed after the conflict sets are flushed

Parameters
conflictconflict analysis data
blkmemblock memory
setglobal SCIP settings
varactive variable that changed the bounds
boundtypetype of bound for var: lower or upper bound
oldboundold value for bound
newboundnew value for bound
bdchginfopointer to store bound change information

Definition at line 1211 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 void conflictFreeTmpBdchginfos ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem 
)
static

frees all temporarily created bound change information data

Parameters
conflictconflict analysis data
blkmemblock memory

Definition at line 1235 of file conflict.c.

References SCIP_Conflict::ntmpbdchginfos, NULL, SCIPbdchginfoFree(), and SCIP_Conflict::tmpbdchginfos.

Referenced by SCIPconflictFlushConss().

◆ conflictsetClear()

◆ conflictsetCreate()

static SCIP_RETCODE conflictsetCreate ( SCIP_CONFLICTSET **  conflictset,
BMS_BLKMEM blkmem 
)
static

creates an empty conflict set

Parameters
conflictsetpointer to store the conflict set
blkmemblock memory of transformed problem

Definition at line 1269 of file conflict.c.

References BMSallocBlockMemory, conflictsetClear(), NULL, SCIP_ALLOC, and SCIP_OKAY.

Referenced by SCIPconflictCreate().

◆ conflictsetCopy()

static SCIP_RETCODE conflictsetCopy ( SCIP_CONFLICTSET **  targetconflictset,
BMS_BLKMEM blkmem,
SCIP_CONFLICTSET sourceconflictset,
int  nadditionalelems 
)
static

creates a copy of the given conflict set, allocating an additional amount of memory

Parameters
targetconflictsetpointer to store the conflict set
blkmemblock memory of transformed problem
sourceconflictsetsource conflict set
nadditionalelemsnumber of additional elements to allocate memory for

Definition at line 1289 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 void conflictsetFree ( SCIP_CONFLICTSET **  conflictset,
BMS_BLKMEM blkmem 
)
static

frees a conflict set

Parameters
conflictsetpointer to the conflict set
blkmemblock memory of transformed problem

Definition at line 1325 of file conflict.c.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.

Referenced by conflictAddConflictset(), conflictInsertConflictset(), SCIPconflictFlushConss(), and SCIPconflictFree().

◆ conflictsetEnsureBdchginfosMem()

static SCIP_RETCODE conflictsetEnsureBdchginfosMem ( SCIP_CONFLICTSET conflictset,
BMS_BLKMEM blkmem,
SCIP_SET set,
int  num 
)
static

resizes the arrays of the conflict set to be able to store at least num bound change entries

Parameters
conflictsetconflict set
blkmemblock memory of transformed problem
setglobal SCIP settings
numminimal number of slots in arrays

Definition at line 1341 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 SCIP_Real conflictsetCalcScore ( SCIP_CONFLICTSET conflictset,
SCIP_SET set 
)
static

calculates the score of the conflict set

the score is weighted sum of number of bound changes, repropagation depth, and valid depth

Parameters
conflictsetconflict set
setglobal SCIP settings

Definition at line 1371 of file conflict.c.

References SCIP_ConflictSet::nbdchginfos, NULL, SCIP_ConflictSet::repropdepth, and SCIP_ConflictSet::validdepth.

Referenced by conflictInsertConflictset().

◆ calcBdchgScore()

static SCIP_Real calcBdchgScore ( SCIP_Real  prooflhs,
SCIP_Real  proofact,
SCIP_Real  proofactdelta,
SCIP_Real  proofcoef,
int  depth,
int  currentdepth,
SCIP_VAR var,
SCIP_SET set 
)
static

calculates the score of a bound change within a conflict

Parameters
prooflhslhs of proof constraint
proofactactivity of the proof constraint
proofactdeltaactivity change
proofcoefcoefficient in proof constraint
depthbound change depth
currentdepthcurrent depth
varvariable corresponding to bound change
setglobal SCIP settings

Definition at line 1385 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 SCIP_Bool bdchginfoIsInvalid ( SCIP_CONFLICT conflict,
SCIP_BDCHGINFO bdchginfo 
)
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
conflictconflict analysis data
bdchginfobound change information

Definition at line 1462 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 SCIP_RETCODE conflictsetAddBound ( SCIP_CONFLICTSET conflictset,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_BDCHGINFO bdchginfo,
SCIP_Real  relaxedbd 
)
static

adds a bound change to a conflict set

Parameters
conflictsetconflict set
blkmemblock memory of transformed problem
setglobal SCIP settings
bdchginfobound change to add to the conflict set
relaxedbdrelaxed bound

Definition at line 1505 of file conflict.c.

References SCIP_ConflictSet::bdchginfos, conflictsetEnsureBdchginfosMem(), MAX, MIN, SCIP_ConflictSet::nbdchginfos, NULL, SCIP_ConflictSet::relaxedbds, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsTighter(), SCIPsortedvecDelPosIntPtrReal(), SCIPsortedvecInsertIntPtrReal(), SCIPvarGetIndex(), and SCIP_ConflictSet::sortvals.

Referenced by conflictAddConflictBound(), and conflictsetAddBounds().

◆ conflictsetAddBounds()

static SCIP_RETCODE conflictsetAddBounds ( SCIP_CONFLICT conflict,
SCIP_CONFLICTSET conflictset,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_BDCHGINFO **  bdchginfos,
int  nbdchginfos 
)
static

adds given bound changes to a conflict set

Parameters
conflictconflict analysis data
conflictsetconflict set
blkmemblock memory of transformed problem
setglobal SCIP settings
bdchginfosbound changes to add to the conflict set
nbdchginfosnumber of bound changes to add

Definition at line 1575 of file conflict.c.

References bdchginfoIsInvalid(), SCIP_ConflictSet::bdchginfos, conflictsetAddBound(), conflictsetEnsureBdchginfosMem(), FALSE, MAX, MIN, SCIP_ConflictSet::nbdchginfos, NULL, SCIP_ConflictSet::relaxedbds, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetRelaxedBound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsTighter(), SCIPsetDebugMsg, SCIPsortIntPtrReal(), SCIPvarGetIndex(), SCIPvarGetName(), SCIP_ConflictSet::sortvals, and TRUE.

Referenced by conflictAddConflictset().

◆ conflictsetCalcConflictDepth()

static void conflictsetCalcConflictDepth ( SCIP_CONFLICTSET conflictset)
static

calculates the conflict and the repropagation depths of the conflict set

Parameters
conflictsetconflict set

Definition at line 1741 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 SCIP_RETCODE conflictsetCalcInsertDepth ( SCIP_CONFLICTSET conflictset,
SCIP_SET set,
SCIP_TREE tree 
)
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
conflictsetconflict set
setglobal SCIP settings
treebranch and bound tree

Definition at line 1785 of file conflict.c.

References SCIP_ConflictSet::bdchginfos, BMSclearMemoryArray, SCIP_ConflictSet::insertdepth, MIN, SCIP_ConflictSet::nbdchginfos, NULL, SCIP_Tree::pathlen, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPbdchginfoGetDepth(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPtreeGetCurrentDepth(), TRUE, and SCIP_ConflictSet::validdepth.

Referenced by conflictAddConflictset().

◆ conflictsetIsRedundant()

static SCIP_Bool conflictsetIsRedundant ( SCIP_CONFLICTSET conflictset1,
SCIP_CONFLICTSET conflictset2 
)
static

checks whether the first conflict set is redundant to the second one

Parameters
conflictset1first conflict conflict set
conflictset2second conflict conflict set

Definition at line 1832 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 SCIP_RETCODE conflictEnsureProofsetsMem ( SCIP_CONFLICT conflict,
SCIP_SET set,
int  num 
)
static

resizes proofsets array to be able to store at least num entries

Parameters
conflictconflict analysis data
setglobal SCIP settings
numminimal number of slots in array

Definition at line 1894 of file conflict.c.

References BMSreallocMemoryArray, NULL, SCIP_Conflict::proofsets, SCIP_Conflict::proofsetssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by conflictInsertProofset().

◆ conflictEnsureConflictsetsMem()

static SCIP_RETCODE conflictEnsureConflictsetsMem ( SCIP_CONFLICT conflict,
SCIP_SET set,
int  num 
)
static

resizes conflictsets array to be able to store at least num entries

Parameters
conflictconflict analysis data
setglobal SCIP settings
numminimal number of slots in array

Definition at line 1918 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 SCIP_RETCODE conflictInsertProofset ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_PROOFSET proofset 
)
static

add a proofset to the list of all proofsets

Parameters
conflictconflict analysis data
setglobal SCIP settings
proofsetproof set to add

Definition at line 1943 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 SCIP_RETCODE conflictInsertConflictset ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_CONFLICTSET **  conflictset 
)
static

inserts conflict set into sorted conflictsets array and deletes the conflict set pointer

Parameters
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
conflictsetpointer to conflict set to insert

Definition at line 1963 of file conflict.c.

References conflictEnsureConflictsetsMem(), conflictsetCalcConflictDepth(), conflictsetCalcScore(), conflictsetFree(), conflictsetIsRedundant(), SCIP_Conflict::conflictsets, SCIP_Conflict::conflictsetscores, MIN, SCIP_Conflict::nconflictsets, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebug, and SCIPsetDebugMsg.

Referenced by conflictAddConflictset().

◆ conflictCalcMaxsize()

static int conflictCalcMaxsize ( SCIP_SET set,
SCIP_PROB prob 
)
static

calculates the maximal size of conflict sets to be used

Parameters
setglobal SCIP settings
probproblem data

Definition at line 2057 of file conflict.c.

References MAX, SCIP_Prob::ncontvars, NULL, and SCIP_Prob::nvars.

Referenced by conflictAnalyzeRemainingBdchgs(), SCIPconflictAnalyze(), and SCIPconflictFlushConss().

◆ incVSIDS()

static SCIP_RETCODE incVSIDS ( SCIP_VAR var,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_BOUNDTYPE  boundtype,
SCIP_Real  value,
SCIP_Real  weight 
)
static

increases the conflict score of the variable in the given direction

Parameters
varproblem variable
blkmemblock memory
setglobal SCIP settings
statdynamic problem statistics
boundtypetype of bound for which the score should be increased
valuevalue of the bound
weightweight of this VSIDS updates

Definition at line 2075 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 SCIP_RETCODE updateStatistics ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_CONFLICTSET conflictset,
int  insertdepth 
)
static

update conflict statistics

Parameters
conflictconflict analysis data
blkmemblock memory
setglobal SCIP settings
statdynamic problem statistics
conflictsetconflict set to add to the tree
insertdepthdepth level at which the conflict set should be added

Definition at line 2106 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 SCIP_Bool checkRedundancy ( SCIP_SET set,
SCIP_CONFLICTSET conflictset 
)
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
setglobal SCIP settings
conflictsetconflict set

Definition at line 2160 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 SCIP_RETCODE detectImpliedBounds ( SCIP_SET set,
SCIP_PROB prob,
SCIP_CONFLICTSET conflictset,
int *  nbdchgs,
int *  nredvars,
SCIP_Bool redundant 
)
static

◆ tightenSingleVar()

static SCIP_RETCODE tightenSingleVar ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_CLIQUETABLE cliquetable,
SCIP_VAR var,
SCIP_Real  val,
SCIP_Real  rhs,
SCIP_CONFTYPE  prooftype 
)
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
conflictconflict analysis data
setglobal SCIP settings
statdynamic SCIP statistics
treetree data
blkmemblock memory
origproboriginal problem
transprobtransformed problem
reoptreoptimization data
lpLP data
branchcandbranching candidates
eventqueueevent queue
cliquetableclique table
varproblem variable
valcoefficient of the variable
rhsrhs of the constraint
prooftypetype of the proof

Definition at line 2486 of file conflict.c.

References SCIP_Conflict::dualraybndnnonzeros, SCIP_Conflict::dualrayinfnnonzeros, FALSE, SCIP_Conflict::nboundlpsuccess, SCIP_Conflict::ndualraybndglobal, SCIP_Conflict::ndualraybndsuccess, SCIP_Conflict::ndualrayinfglobal, SCIP_Conflict::ndualrayinfsuccess, SCIP_Conflict::nglbchgbds, SCIP_Conflict::ninflpsuccess, NULL, SCIP_Tree::path, SCIP_Tree::root, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CONFTYPE_ALTINFPROOF, SCIP_CONFTYPE_INFEASLP, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPconsRelease(), SCIPcreateConsLinear(), SCIPnodeAddBoundchg(), SCIPnodeCutoff(), SCIPnodePropagateAgain(), SCIPprobAddCons(), SCIPsetDebugMsg, SCIPsetFeasFloor(), SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsIntegral(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsnprintf(), SCIPvarAdjustBd(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), SCIP_Lp::strongbranching, and TRUE.

Referenced by conflictFlushProofset(), and propagateLongProof().

◆ aggrRowGetMinActivity()

static SCIP_Real aggrRowGetMinActivity ( SCIP_PROB transprob,
SCIP_AGGRROW aggrrow,
SCIP_Real curvarlbs,
SCIP_Real curvarubs 
)
static

calculates the minimal activity of a given aggregation row

Parameters
transprobtransformed problem data
aggrrowaggregation row
curvarlbscurrent lower bounds of active problem variables (or NULL for global bounds)
curvarubscurrent upper bounds of active problem variables (or NULL for global bounds)

Definition at line 2607 of file conflict.c.

References NULL, SCIP_Real, SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPprobGetVars(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), and SCIPvarGetUbGlobal().

Referenced by conflictAnalyzeDualProof(), getDualProof(), getFarkasProof(), separateAlternativeProofs(), and tightenDualproof().

◆ getMinActivity()

static SCIP_Real getMinActivity ( SCIP_PROB transprob,
SCIP_Real coefs,
int *  inds,
int  nnz,
SCIP_Real curvarlbs,
SCIP_Real curvarubs 
)
static

calculates the minimal activity of a given set of bounds and coefficients

Parameters
transprobtransformed problem data
coefscoefficients in sparse representation
indsnon-zero indices
nnznumber of non-zero indices
curvarlbscurrent lower bounds of active problem variables (or NULL for global bounds)
curvarubscurrent upper bounds of active problem variables (or NULL for global bounds)

Definition at line 2647 of file conflict.c.

References NULL, SCIP_Real, SCIPprobGetVars(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), and SCIPvarGetUbGlobal().

Referenced by createAndAddProofcons(), and propagateLongProof().

◆ getMaxActivity()

static SCIP_Real getMaxActivity ( SCIP_PROB transprob,
SCIP_Real coefs,
int *  inds,
int  nnz,
SCIP_Real curvarlbs,
SCIP_Real curvarubs 
)
static

calculates the minimal activity of a given set of bounds and coefficients

Parameters
transprobtransformed problem data
coefscoefficients in sparse representation
indsnon-zero indices
nnznumber of non-zero indices
curvarlbscurrent lower bounds of active problem variables (or NULL for global bounds)
curvarubscurrent upper bounds of active problem variables (or NULL for global bounds)

Definition at line 2687 of file conflict.c.

References NULL, SCIP_Real, SCIPprobGetVars(), SCIPvarGetLbGlobal(), SCIPvarGetProbindex(), and SCIPvarGetUbGlobal().

Referenced by createAndAddProofcons(), and tightenDualproof().

◆ propagateLongProof()

static SCIP_RETCODE propagateLongProof ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_STAT stat,
SCIP_REOPT reopt,
SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_CLIQUETABLE cliquetable,
SCIP_Real coefs,
int *  inds,
int  nnz,
SCIP_Real  rhs,
SCIP_CONFTYPE  conflicttype 
)
static
Parameters
conflictconflict analysis data
setglobal SCIP settings
statdynamic SCIP statistics
reoptreoptimization data
treetree data
blkmemblock memory
origproboriginal problem
transprobtransformed problem
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
coefscoefficients in sparse representation
indsnon-zero indices
nnznumber of non-zero indices
rhsright-hand side
conflicttypetype of the conflict

Definition at line 2726 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 SCIP_RETCODE createAndAddProofcons ( SCIP_CONFLICT conflict,
SCIP_CONFLICTSTORE conflictstore,
SCIP_PROOFSET proofset,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_BRANCHCAND branchcand,
SCIP_EVENTQUEUE eventqueue,
SCIP_CLIQUETABLE cliquetable,
BMS_BLKMEM blkmem 
)
static

creates a proof constraint and tries to add it to the storage

Parameters
conflictconflict analysis data
conflictstoreconflict pool data
proofsetproof set
setglobal SCIP settings
statdynamic SCIP statistics
origproboriginal problem
transprobtransformed problem
treetree data
reoptreoptimization data
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
blkmemblock memory

Definition at line 2825 of file conflict.c.

References SCIP_Stat::avgnnz, SCIP_Conflict::dualraybndnnonzeros, SCIP_Conflict::dualrayinfnnonzeros, FALSE, getMaxActivity(), getMinActivity(), MIN, SCIP_Conflict::ndualraybndglobal, SCIP_Conflict::ndualraybndsuccess, SCIP_Conflict::ndualrayinfglobal, SCIP_Conflict::ndualrayinfsuccess, 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(), SCIPnodeCutoff(), SCIPprobAddCons(), SCIPprobGetVars(), SCIPreleaseCons(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPsnprintf(), SCIPupgradeConsLinear(), SCIP_Prob::startnconss, and TRUE.

Referenced by conflictFlushProofset().

◆ conflictFlushProofset()

static SCIP_RETCODE conflictFlushProofset ( 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 
)
static
Parameters
conflictconflict analysis data
conflictstoreconflict store
blkmemblock memory
setglobal SCIP settings
statdynamic problem statistics
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure

Definition at line 3063 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(), and TRUE.

Referenced by conflictAnalyzeLP().

◆ conflictAddConflictCons()

static SCIP_RETCODE conflictAddConflictCons ( 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_CONFLICTSET conflictset,
int  insertdepth,
SCIP_Bool success 
)
static

adds the given conflict set as conflict constraint to the problem

Parameters
conflictconflict analysis data
blkmemblock memory
setglobal SCIP settings
statdynamic problem statistics
transprobtransformed problem after presolve
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
conflictsetconflict set to add to the tree
insertdepthdepth level at which the conflict set should be added
successpointer to store whether the addition was successful

Definition at line 3181 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
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
statdynamic problem statistics
transprobtransformed problem
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpcurrent LP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure

Definition at line 3329 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
conflictconflict analysis data

Definition at line 3538 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
conflictconflict analysis data

Definition at line 3548 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
conflictconflict analysis data

Definition at line 3558 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
conflictconflict analysis data

Definition at line 3568 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
conflictconflict analysis data

Definition at line 3578 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
conflictconflict analysis data

Definition at line 3588 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
conflictconflict analysis data

Definition at line 3598 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
conflictconflict analysis data

Definition at line 3608 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
conflictconflict analysis data

Definition at line 3618 of file conflict.c.

References SCIP_Conflict::nappliedlocliterals, and NULL.

Referenced by SCIPprintConflictStatistics().

◆ bdchginfoIsResolvable()

static SCIP_Bool bdchginfoIsResolvable ( SCIP_BDCHGINFO bdchginfo)
static

returns whether bound change has a valid reason that can be resolved in conflict analysis

Parameters
bdchginfobound change information

Definition at line 3636 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 SCIP_DECL_SORTPTRCOMP ( conflictBdchginfoComp  )
static

compares two conflict set entries, such that bound changes infered later are ordered prior to ones that were infered earlier

Definition at line 3652 of file conflict.c.

References NULL, SCIPbdchgidxIsEarlierNonNull(), SCIPbdchginfoGetIdx(), and SCIPbdchginfoIsRedundant().

◆ SCIPconflictApplicable()

SCIP_Bool SCIPconflictApplicable ( SCIP_SET set)

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
setglobal SCIP settings

Definition at line 3673 of file conflict.c.

References FALSE, and TRUE.

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
conflictpointer to conflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings

Definition at line 3689 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
conflictpointer to conflict analysis data
blkmemblock memory of transformed problem

Definition at line 3777 of file conflict.c.

References BMSfreeMemory, BMSfreeMemoryArrayNull, conflictsetFree(), NULL, proofsetFree(), SCIP_OKAY, SCIPclockFree(), and SCIPpqueueFree().

Referenced by freeTransform().

◆ conflictClear()

static void conflictClear ( SCIP_CONFLICT conflict)
static

clears the conflict queue and the current conflict set

Parameters
conflictconflict analysis data

Definition at line 3813 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
conflictconflict analysis data
setglobal SCIP settings
statproblem statistics
probproblem data
conftypetype of the conflict
usescutoffbounddepends the conflict on a cutoff bound?

Definition at line 3825 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 SCIP_Bool conflictMarkBoundCheckPresence ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_BDCHGINFO bdchginfo,
SCIP_Real  relaxedbd 
)
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
conflictconflict analysis data
setglobal SCIP settings
bdchginfobound change to add to the conflict set
relaxedbdrelaxed bound

Definition at line 3894 of file conflict.c.

References SCIP_Var::conflictlb, SCIP_Var::conflictlbcount, SCIP_Var::conflictrelaxedlb, SCIP_Var::conflictrelaxedub, SCIP_Var::conflictub, SCIP_Var::conflictubcount, SCIP_Conflict::count, FALSE, MAX, MIN, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPABORT, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetVar(), SCIPerrorMessage, SCIPsetDebugMsg, SCIPvarGetName(), and TRUE.

Referenced by conflictAddConflictBound(), and conflictQueueBound().

◆ conflictAddConflictBound()

static SCIP_RETCODE conflictAddConflictBound ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_BDCHGINFO bdchginfo,
SCIP_Real  relaxedbd 
)
static

puts bound change into the current conflict set

Parameters
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
bdchginfobound change to add to the conflict set
relaxedbdrelaxed bound

Definition at line 3983 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 SCIP_Bool isBoundchgUseless ( SCIP_SET set,
SCIP_BDCHGINFO bdchginfo 
)
static

returns whether the negation of the given bound change would lead to a globally valid literal

Parameters
setglobal SCIP settings
bdchginfobound change information

Definition at line 4026 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 SCIP_RETCODE conflictQueueBound ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_BDCHGINFO bdchginfo,
SCIP_Real  relaxedbd 
)
static

adds given bound change information to the conflict candidate queue

Parameters
conflictconflict analysis data
setglobal SCIP settings
bdchginfobound change information
relaxedbdrelaxed bound

Definition at line 4046 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 SCIP_RETCODE convertToActiveVar ( SCIP_VAR **  var,
SCIP_SET set,
SCIP_BOUNDTYPE boundtype,
SCIP_Real bound 
)
static

convert variable and bound change to active variable

Parameters
varpointer to variable
setglobal SCIP settings
boundtypepointer to type of bound that was changed: lower or upper bound
boundpointer to bound to convert, or NULL

Definition at line 4092 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 SCIP_RETCODE conflictAddBound ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_VAR var,
SCIP_BOUNDTYPE  boundtype,
SCIP_BDCHGINFO bdchginfo,
SCIP_Real  relaxedbd 
)
static

◆ 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
conflictconflict analysis data
blkmemblock memory
setglobal SCIP settings
statdynamic problem statistics
varproblem variable
boundtypetype of bound that was changed: lower or upper bound
bdchgidxbound change index (time stamp of bound change), or NULL for current time

Definition at line 4183 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 
)

◆ 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
conflictconflict analysis data
varproblem variable
setglobal SCIP settings
boundtypetype of bound for which the score should be increased
bdchgidxbound change index (time stamp of bound change), or NULL for current time
usedpointer to store if the variable is already used

Definition at line 4408 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
conflictconflict analysis data
varproblem variable

Definition at line 4468 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
conflictconflict analysis data
varproblem variable

Definition at line 4485 of file conflict.c.

References SCIP_Var::conflictrelaxedub, SCIP_Var::conflictub, SCIP_Var::conflictubcount, SCIP_Conflict::count, EPSLE, and SCIPvarGetUbGlobal().

Referenced by SCIPgetConflictVarUb().

◆ conflictRemoveCand()

◆ conflictFirstCand()

static SCIP_BDCHGINFO* conflictFirstCand ( SCIP_CONFLICT conflict)
static

◆ conflictAddConflictset()

static SCIP_RETCODE conflictAddConflictset ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_TREE tree,
int  validdepth,
SCIP_Bool  diving,
SCIP_Bool  repropagate,
SCIP_Bool success,
int *  nliterals 
)
static

adds the current conflict set (extended by all remaining bound changes in the queue) to the pool of conflict sets

Parameters
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
statdynamic problem statistics
treebranch and bound tree
validdepthminimal depth level at which the conflict set is valid
divingare we in strong branching or diving mode?
repropagateshould the constraint trigger a repropagation?
successpointer to store whether the conflict set is valid
nliteralspointer to store the number of literals in the generated conflictset

Definition at line 4599 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 SCIP_RETCODE conflictResolveBound ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_BDCHGINFO bdchginfo,
SCIP_Real  relaxedbd,
int  validdepth,
SCIP_Bool resolved 
)
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
conflictconflict analysis data
setglobal SCIP settings
bdchginfobound change to resolve
relaxedbdthe relaxed bound
validdepthminimal depth level at which the conflict is valid
resolvedpointer to store whether the bound change was resolved

Definition at line 4698 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 SCIP_RETCODE conflictCreateReconvergenceConss ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_Bool  diving,
int  validdepth,
SCIP_BDCHGINFO firstuip,
int *  nreconvconss,
int *  nreconvliterals 
)
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
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
probproblem data
treebranch and bound tree
divingare we in strong branching or diving mode?
validdepthminimal depth level at which the initial conflict set is valid
firstuipfirst UIP of conflict graph
nreconvconsspointer to store the number of generated reconvergence constraints
nreconvliteralspointer to store the number of literals generated reconvergence constraints

Definition at line 4911 of file conflict.c.

References bdchginfoIsResolvable(), SCIP_ConflictSet::bdchginfos, SCIP_Conflict::bdchgqueue, conflictAddConflictBound(), conflictAddConflictset(), conflictClear(), conflictCreateTmpBdchginfo(), conflictFirstCand(), conflictQueueBound(), conflictRemoveCand(), conflictResolveBound(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::forcedbdchgqueue, MIN, SCIP_ConflictSet::nbdchginfos, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_ConflictSet::relaxedbds, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIP_REAL_MIN, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetPos(), SCIPbdchginfoGetRelaxedBound(), SCIPbdchginfoGetVar(), SCIPbdchginfoIsRedundant(), SCIPboundtypeOpposite(), SCIPconflictInit(), SCIPdebugCheckConflictFrontier, SCIPpqueueNElems(), SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPtreeGetCurrentDepth(), SCIPtreeGetFocusDepth(), SCIPvarGetName(), SCIPvarIsActive(), SCIPvarIsIntegral(), and SCIP_ConflictSet::usescutoffbound.

Referenced by conflictAnalyze().

◆ conflictAnalyze()

static SCIP_RETCODE conflictAnalyze ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_Bool  diving,
int  validdepth,
SCIP_Bool  mustresolve,
int *  nconss,
int *  nliterals,
int *  nreconvconss,
int *  nreconvliterals 
)
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
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
probproblem data
treebranch and bound tree
divingare we in strong branching or diving mode?
validdepthminimal depth level at which the initial conflict set is valid
mustresolveshould the conflict set only be used, if a resolution was applied?
nconsspointer to store the number of generated conflict constraints
nliteralspointer to store the number of literals in generated conflict constraints
nreconvconsspointer to store the number of generated reconvergence constraints
nreconvliteralspointer to store the number of literals generated reconvergence constraints

Definition at line 5148 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, MIN, SCIP_ConflictSet::nbdchginfos, SCIP_DomChgBound::nboundchgs, NULL, SCIP_Tree::path, SCIP_Tree::pathlen, SCIP_ConflictSet::relaxedbds, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbdchginfoGetBoundtype(), SCIPbdchginfoGetDepth(), SCIPbdchginfoGetNewbound(), SCIPbdchginfoGetPos(), SCIPbdchginfoGetRelaxedBound(), SCIPbdchginfoGetVar(), SCIPbdchginfoHasInferenceReason(), SCIPbdchginfoIsRedundant(), SCIPdebugCheckConflictFrontier, SCIPpqueueNElems(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPtreeGetCurrentDepth(), SCIPtreeGetFocusDepth(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), and TRUE.

Referenced by conflictAnalyzeRemainingBdchgs(), and SCIPconflictAnalyze().

◆ 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
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
probproblem data
treebranch and bound tree
validdepthminimal depth level at which the initial conflict set is valid
successpointer to store whether a conflict constraint was created, or NULL

Definition at line 5435 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
conflictconflict analysis data

Definition at line 5493 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
conflictconflict analysis data

Definition at line 5503 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
conflictconflict analysis data

Definition at line 5513 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
conflictconflict analysis data

Definition at line 5523 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
conflictconflict analysis data

Definition at line 5533 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
conflictconflict analysis data

Definition at line 5543 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
conflictconflict analysis data

Definition at line 5553 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
conflictconflict analysis data

Definition at line 5563 of file conflict.c.

References SCIP_Conflict::npropreconvliterals, and NULL.

Referenced by SCIPprintConflictStatistics().

◆ ensureSidechgsSize()

static SCIP_RETCODE ensureSidechgsSize ( SCIP_SET set,
int **  sidechginds,
SCIP_Real **  sidechgoldlhss,
SCIP_Real **  sidechgoldrhss,
SCIP_Real **  sidechgnewlhss,
SCIP_Real **  sidechgnewrhss,
int *  sidechgssize,
int  num 
)
static

ensures, that side change arrays can store at least num entries

Parameters
setglobal SCIP settings
sidechgindspointer to side change index array
sidechgoldlhsspointer to side change old left hand sides array
sidechgoldrhsspointer to side change old right hand sides array
sidechgnewlhsspointer to side change new left hand sides array
sidechgnewrhsspointer to side change new right hand sides array
sidechgssizepointer to size of side change arrays
numminimal number of entries to be able to store in side change arrays

Definition at line 5581 of file conflict.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIPsetReallocBufferArray.

Referenced by addSideRemoval().

◆ addSideRemoval()

static SCIP_RETCODE addSideRemoval ( SCIP_SET set,
SCIP_ROW row,
SCIP_Real  lpiinfinity,
int **  sidechginds,
SCIP_Real **  sidechgoldlhss,
SCIP_Real **  sidechgoldrhss,
SCIP_Real **  sidechgnewlhss,
SCIP_Real **  sidechgnewrhss,
int *  sidechgssize,
int *  nsidechgs 
)
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
setglobal SCIP settings
rowLP row to change the sides for
lpiinfinityvalue treated as infinity in LP solver
sidechgindspointer to side change index array
sidechgoldlhsspointer to side change old left hand sides array
sidechgoldrhsspointer to side change old right hand sides array
sidechgnewlhsspointer to side change new left hand sides array
sidechgnewrhsspointer to side change new right hand sides array
sidechgssizepointer to size of side change arrays
nsidechgspointer to number of used slots in side change arrays

Definition at line 5620 of file conflict.c.

References ensureSidechgsSize(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetRhs(), and SCIPsetIsInfinity().

Referenced by runBoundHeuristic().

◆ addBdchg()

static SCIP_RETCODE addBdchg ( SCIP_SET set,
SCIP_VAR var,
SCIP_Real  newlb,
SCIP_Real  newub,
SCIP_LPBDCHGS oldlpbdchgs,
SCIP_LPBDCHGS relaxedlpbdchgs,
SCIP_LPI lpi 
)
static

inserts variable's new bounds into bound change arrays

Parameters
setglobal SCIP settings
varvariable to change the LP bounds for
newlbnew lower bound
newubnew upper bound
oldlpbdchgsold LP bound changes used for reset the LP bound change
relaxedlpbdchgsrelaxed LP bound changes used for reset the LP bound change
lpipointer to LPi to access infinity of LP solver; necessary to set correct value

Definition at line 5689 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 SCIP_RETCODE ensureCandsSize ( SCIP_SET set,
SCIP_VAR ***  cands,
SCIP_Real **  candscores,
SCIP_Real **  newbounds,
SCIP_Real **  proofactdeltas,
int *  candssize,
int  num 
)
static

ensures, that candidate array can store at least num entries

Parameters
setglobal SCIP settings
candspointer to candidate array
candscorespointer to candidate score array
newboundspointer to candidate new bounds array
proofactdeltaspointer to candidate proof delta array
candssizepointer to size of array
numminimal number of candidates to store in array

Definition at line 5770 of file conflict.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIPsetReallocBufferArray.

Referenced by addCand().

◆ addCand()

static SCIP_RETCODE addCand ( SCIP_SET set,
int  currentdepth,
SCIP_VAR var,
int  lbchginfopos,
int  ubchginfopos,
SCIP_Real  proofcoef,
SCIP_Real  prooflhs,
SCIP_Real  proofact,
SCIP_VAR ***  cands,
SCIP_Real **  candscores,
SCIP_Real **  newbounds,
SCIP_Real **  proofactdeltas,
int *  candssize,
int *  ncands,
int  firstcand 
)
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
setglobal SCIP settings
currentdepthcurrent depth in the tree
varvariable to add to candidate array
lbchginfopospositions of currently active lower bound change information in variable's array
ubchginfopospositions of currently active upper bound change information in variable's array
proofcoefcoefficient of variable in infeasibility/bound proof
prooflhsleft hand side of infeasibility/bound proof
proofactactivity of infeasibility/bound proof row
candspointer to candidate array for undoing bound changes
candscorespointer to candidate score array for undoing bound changes
newboundspointer to candidate new bounds array for undoing bound changes
proofactdeltaspointer to proof activity increase array for undoing bound changes
candssizepointer to size of cands arrays
ncandspointer to count number of candidates in bound change list
firstcandposition of first unprocessed bound change candidate

Definition at line 5807 of file conflict.c.

References SCIP_BdChgInfo::bdchgidx, bdchginfoIsResolvable(), calcBdchgScore(), SCIP_BdChgIdx::depth, ensureCandsSize(), FALSE, SCIP_Var::lbchginfos, SCIP_BdChgInfo::newbound, SCIP_Var::nlbchginfos, SCIP_Var::nubchginfos, NULL, SCIP_BdChgInfo::oldbound, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPsetDebugMsg, SCIPsetIsGT(), SCIPsetIsZero(), SCIPvarGetLbLocal(), SCIPvarGetLbLP(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPvarGetUbLP(), SCIPvarIsBinary(), and SCIP_Var::ubchginfos.

Referenced by undoBdchgsProof().

◆ skipRedundantBdchginfos()

static void skipRedundantBdchginfos ( SCIP_VAR var,
int *  lbchginfopos,
int *  ubchginfopos 
)
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
varproblem variable
lbchginfopospointer to lower bound change information position
ubchginfopospointer to upper bound change information position

Definition at line 5942 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 SCIP_RETCODE undoBdchgsProof ( SCIP_SET set,
SCIP_PROB prob,
int  currentdepth,
SCIP_Real proofcoefs,
SCIP_Real  prooflhs,
SCIP_Real proofact,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
int *  lbchginfoposs,
int *  ubchginfoposs,
SCIP_LPBDCHGS oldlpbdchgs,
SCIP_LPBDCHGS relaxedlpbdchgs,
SCIP_Bool resolve,
SCIP_LPI lpi 
)
static

undoes bound changes on variables, still leaving the given infeasibility proof valid

Parameters
setglobal SCIP settings
probproblem data
currentdepthcurrent depth in the tree
proofcoefscoefficients in infeasibility proof
prooflhsleft hand side of proof
proofactcurrent activity of proof
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
lbchginfoposspositions of currently active lower bound change information in variables' arrays
ubchginfoposspositions of currently active upper bound change information in variables' arrays
oldlpbdchgsold LP bound changes used for reset the LP bound change, or NULL
relaxedlpbdchgsrelaxed LP bound changes used for reset the LP bound change, or NULL
resolvepointer to store whether the changed LP should be resolved again, or NULL
lpipointer to LPi to access infinity of LP solver; necessary to set correct values

Definition at line 5974 of file conflict.c.

References addBdchg(), addCand(), FALSE, NULL, SCIP_Prob::nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsEQ(), SCIPsetIsFeasGT(), SCIPsetIsGT(), SCIPsetIsLT(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvarIsInLP(), skipRedundantBdchginfos(), TRUE, and SCIP_Prob::vars.

Referenced by SCIPconflictAnalyzePseudo(), undoBdchgsDualfarkas(), and undoBdchgsDualsol().

◆ undoBdchgsDualfarkas()

static SCIP_RETCODE undoBdchgsDualfarkas ( SCIP_SET set,
SCIP_PROB prob,
SCIP_LP lp,
int  currentdepth,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
int *  lbchginfoposs,
int *  ubchginfoposs,
SCIP_LPBDCHGS oldlpbdchgs,
SCIP_LPBDCHGS relaxedlpbdchgs,
SCIP_Bool valid,
SCIP_Bool resolve,
SCIP_Real farkascoefs,
SCIP_Real  farkaslhs,
SCIP_Real farkasactivity 
)
static

analyzes an infeasible LP and undoes additional bound changes while staying infeasible

Parameters
setglobal SCIP settings
probproblem data
lpLP data
currentdepthcurrent depth in the tree
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
lbchginfoposspositions of currently active lower bound change information in variables' arrays
ubchginfoposspositions of currently active upper bound change information in variables' arrays
oldlpbdchgsold LP bound changes used for reset the LP bound change, or NULL
relaxedlpbdchgsrelaxed LP bound changes used for reset the LP bound change, or NULL
validpointer to store whether the unfixings are valid
resolvepointer to store whether the changed LP should be resolved again
farkascoefscoefficients in the proof constraint
farkaslhslhs of the proof constraint
farkasactivitymaximal activity of the proof constraint

Definition at line 6178 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 SCIP_RETCODE undoBdchgsDualsol ( SCIP_SET set,
SCIP_PROB prob,
SCIP_LP lp,
int  currentdepth,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
int *  lbchginfoposs,
int *  ubchginfoposs,
SCIP_LPBDCHGS oldlpbdchgs,
SCIP_LPBDCHGS relaxedlpbdchgs,
SCIP_Bool valid,
SCIP_Bool resolve,
SCIP_Real dualcoefs,
SCIP_Real  duallhs,
SCIP_Real dualactivity 
)
static

analyzes an LP exceeding the objective limit and undoes additional bound changes while staying beyond the objective limit

Parameters
setglobal SCIP settings
probproblem data
lpLP data
currentdepthcurrent depth in the tree
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
lbchginfoposspositions of currently active lower bound change information in variables' arrays
ubchginfoposspositions of currently active upper bound change information in variables' arrays
oldlpbdchgsold LP bound changes used for reset the LP bound change, or NULL
relaxedlpbdchgsrelaxed LP bound changes used for reset the LP bound change, or NULL
validpointer to store whether the unfixings are valid
resolvepointer to store whether the changed LP should be resolved again
dualcoefscoefficients in the proof constraint
duallhslhs of the proof constraint
dualactivitymaximal activity of the proof constraint

Definition at line 6236 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 SCIP_RETCODE conflictAnalyzeRemainingBdchgs ( SCIP_CONFLICT conflict,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_TREE tree,
SCIP_Bool  diving,
int *  lbchginfoposs,
int *  ubchginfoposs,
int *  nconss,
int *  nliterals,
int *  nreconvconss,
int *  nreconvliterals 
)
static

applies conflict analysis starting with given bound changes, that could not be undone during previous infeasibility analysis

Parameters
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
probproblem data
treebranch and bound tree
divingare we in strong branching or diving mode?
lbchginfoposspositions of currently active lower bound change information in variables' arrays
ubchginfoposspositions of currently active upper bound change information in variables' arrays
nconsspointer to store the number of generated conflict constraints
nliteralspointer to store the number of literals in generated conflict constraints
nreconvconsspointer to store the number of generated reconvergence constraints
nreconvliteralspointer to store the number of literals generated reconvergence constraints

Definition at line 6293 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().

◆ getFarkasProof()

static SCIP_RETCODE getFarkasProof ( SCIP_SET set,
SCIP_PROB prob,
SCIP_LP lp,
SCIP_LPI lpi,
SCIP_AGGRROW farkasrow,
SCIP_Real farkasact,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
SCIP_Bool valid 
)
static

calculates a Farkas proof from the current dual LP solution

Parameters
setglobal SCIP settings
probtransformed problem
lpLP data
lpiLPI data
farkasrowaggregated row representing the proof
farkasactmaximal activity of the proof constraint
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
validpointer store whether the proof constraint is valid

Definition at line 6432 of file conflict.c.

References aggrRowGetMinActivity(), BMSclearMemoryArray, SCIP_Row::cols, SCIP_Row::constant, FALSE, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::local, SCIP_Lp::lpirows, SCIP_Lp::nlpirows, NULL, NUMSTOP, r, REALABS, SCIP_Row::rhs, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowAddRow(), SCIPaggrRowGetRhs(), SCIPaggrRowRemoveZeros(), SCIPlpDivingObjChanged(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiGetDualfarkas(), SCIPlpiGetSides(), SCIPlpiHasDualRay(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsPrimalInfeasible(), SCIProwGetName(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasZero(), SCIPsetIsFeasLE(), SCIPsetIsInfinity(), SCIPsetIsRelEQ(), SCIPsetIsZero(), TRUE, and SCIP_Row::vals.

Referenced by conflictAnalyzeLP(), and runBoundHeuristic().

◆ getDualProof()

static SCIP_RETCODE getDualProof ( SCIP_SET set,
SCIP_PROB prob,
SCIP_LP lp,
SCIP_LPI lpi,
SCIP_AGGRROW farkasrow,
SCIP_Real farkasact,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
SCIP_Bool valid 
)
static

calculates a Farkas proof from the current dual LP solution

Parameters
setglobal SCIP settings
probtransformed problem
lpLP data
lpiLPI data
farkasrowaggregated row representing the proof
farkasactmaximal activity of the proof constraint
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
validpointer store whether the proof constraint is valid

Definition at line 6582 of file conflict.c.

References aggrRowGetMinActivity(), SCIP_Row::cols, SCIP_Row::constant, SCIP_Lp::cutoffbound, debugPrintViolationInfo, FALSE, SCIP_Lp::flushed, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::local, SCIP_Lp::lpirows, SCIP_Lp::nlpirows, NULL, r, REALABS, SCIP_Row::rhs, SCIP_CALL, SCIP_LPERROR, SCIP_OKAY, SCIP_Real, SCIPaggrRowAddObjectiveFunction(), SCIPaggrRowAddRow(), SCIPaggrRowClear(), SCIPaggrRowGetRhs(), SCIPaggrRowRemoveZeros(), SCIPcolGetVar(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiGetObjval(), SCIPlpiGetSol(), SCIProwGetName(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasZero(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIPsetSumepsilon(), SCIPvarGetProbindex(), SCIP_Lp::solved, TRUE, and SCIP_Row::vals.

Referenced by conflictAnalyzeLP(), and runBoundHeuristic().

◆ tightenCoefficients()

static void tightenCoefficients ( SCIP_SET set,
SCIP_PROOFSET proofset,
int *  nchgcoefs,
SCIP_Bool redundant 
)
static

apply coefficient tightening

Parameters
setglobal SCIP settings
proofsetproof set
nchgcoefspointer to store number of changed coefficients
redundantpointer to store whether the proof set is redundant

Definition at line 6785 of file conflict.c.

References FALSE, SCIP_ProofSet::inds, MAX, MIN, 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 SCIP_RETCODE separateAlternativeProofs ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB transprob,
SCIP_TREE tree,
BMS_BLKMEM blkmem,
SCIP_AGGRROW proofrow,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
SCIP_CONFTYPE  conflicttype 
)
static

try to generate alternative proofs by applying subadditive functions

Parameters
conflictconflict analysis data
setglobal SCIP settings
statdynamic SCIP statistics
transprobtransformed problem
treetree data
blkmemblock memory
proofrowproof rows data
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
conflicttypetype of the conflict

Definition at line 6827 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 SCIP_RETCODE tightenDualproof ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_STAT stat,
BMS_BLKMEM blkmem,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_AGGRROW proofrow,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
SCIP_Bool  initialproof 
)
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
conflictconflict analysis data
setglobal SCIP settings
statdynamic SCIP statistics
blkmemblock memory
transprobtransformed problem
treetree data
proofrowaggregated row representing the proof
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
initialproofdo we analyze the initial reason of infeasibility?

Definition at line 6952 of file conflict.c.

References aggrRowGetMinActivity(), conflictInsertProofset(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_ProofSet::conflicttype, debugPrintViolationInfo, eps, getMaxActivity(), SCIP_ProofSet::inds, MIN, 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(), SCIPsetIsZero(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), SCIPvarIsIntegral(), separateAlternativeProofs(), tightenCoefficients(), and SCIP_ProofSet::vals.

Referenced by conflictAnalyzeDualProof().

◆ conflictAnalyzeDualProof()

static SCIP_RETCODE conflictAnalyzeDualProof ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_STAT stat,
BMS_BLKMEM blkmem,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_AGGRROW proofrow,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
SCIP_Bool  initialproof,
SCIP_Bool globalinfeasible,
SCIP_Bool success 
)
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
conflictconflict analysis data
setglobal SCIP settings
statdynamic SCIP statistics
blkmemblock memory
origproboriginal problem
transprobtransformed problem
treetree data
reoptreoptimization data
lpLP data
proofrowaggregated row representing the proof
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
initialproofdo we analyze the initial reason of infeasibility?
globalinfeasiblepointer to store whether global infeasibility could be proven
successpointer to store success result

Definition at line 7129 of file conflict.c.

References aggrRowGetMinActivity(), FALSE, SCIP_Conflict::ndualrayinfsuccess, NULL, SCIP_Tree::path, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaggrRowGetNNz(), SCIPaggrRowGetRhs(), SCIPnodeCutoff(), SCIPsetDebugMsg, SCIPsetIsFeasLE(), SCIPtreeGetFocusDepth(), tightenDualproof(), and TRUE.

Referenced by conflictAnalyzeLP(), and runBoundHeuristic().

◆ runBoundHeuristic()

static SCIP_RETCODE runBoundHeuristic ( SCIP_CONFLICT conflict,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB origprob,
SCIP_PROB transprob,
SCIP_TREE tree,
SCIP_REOPT reopt,
SCIP_LP lp,
SCIP_LPI lpi,
BMS_BLKMEM blkmem,
SCIP_Real proofcoefs,
SCIP_Real prooflhs,
SCIP_Real proofactivity,
SCIP_Real curvarlbs,
SCIP_Real curvarubs,
int *  lbchginfoposs,
int *  ubchginfoposs,
int *  iterations,
SCIP_Bool  marklpunsolved,
SCIP_Bool dualraysuccess,
SCIP_Bool valid 
)
static

try to find a subset of changed bounds leading to an infeasible LP

  1. call undoBdchgsDualfarkas() or undoBdchgsDualsol() -> update lb/ubchginfoposs arrays -> store additional changes in bdchg and curvarlbs/ubs arrays -> apply additional changes to the LPI
  2. (optional) if additional bound changes were undone: -> resolve LP -> goto 1.
  3. redo all bound changes in the LPI to restore the LPI to its original state
  4. analyze conflict -> put remaining changed bounds (see lb/ubchginfoposs arrays) into starting conflict set
Parameters
conflictconflict data
setglobal SCIP settings
statproblem statistics
origproboriginal problem
transprobtransformed problem
treebranch and bound tree
reoptreoptimization data
lpLP data
lpiLPI data
blkmemblock memory
proofcoefscoefficients in the proof constraint
prooflhslhs of the proof constraint
proofactivitymaximal activity of the proof constraint
curvarlbscurrent lower bounds of active problem variables
curvarubscurrent upper bounds of active problem variables
lbchginfoposspositions of currently active lower bound change information in variables' arrays
ubchginfoposspositions of currently active upper bound change information in variables' arrays
iterationspointer to store the total number of LP iterations used
marklpunsolvedwhether LP should be marked unsolved after analysis (needed for strong branching)
dualraysuccesspointer to store success result of dualray analysis
validpointer to store whether the result is still a valid proof

Definition at line 7212 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_LONGINT_FORMAT, SCIP_LPERROR, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_OBJLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPaggrRowCreate(), SCIPaggrRowFree(), SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPclockStart(), SCIPclockStop(), SCIPlpDivingObjChanged(), SCIPlpGetNCols(), SCIPlpGetNRows(), SCIPlpGetRows(), SCIPlpiChgBounds(), SCIPlpiChgSides(), SCIPlpiGetIterations(), SCIPlpiGetObjval(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsPrimalInfeasible(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPprobAllColsInLP(), SCIPprobGetNVars(), SCIPprobGetVars(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetRhs(), SCIProwIsLocal(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPtreeGetCurrentDepth(), SCIPvarGetProbindex(), SCIP_Lp::solved, undoBdchgsDualfarkas(), and undoBdchgsDualsol().

Referenced by conflictAnalyzeLP().

◆ conflictAnalyzeLP()

static SCIP_RETCODE conflictAnalyzeLP ( 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  diving,
SCIP_Bool dualraysuccess,
int *  iterations,
int *  nconss,
int *  nliterals,
int *  nreconvconss,
int *  nreconvliterals,
SCIP_Bool  marklpunsolved 
)
static

actually performs analysis of infeasible LP

Parameters
conflictconflict analysis data
conflictstoreconflict store
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
transprobtransformed problem
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
divingare we in strong branching or diving mode?
dualraysuccesspointer to store success result of dualray analysis
iterationspointer to store the total number of LP iterations used
nconsspointer to store the number of generated conflict constraints
nliteralspointer to store the number of literals in generated conflict constraints
nreconvconsspointer to store the number of generated reconvergence constraints
nreconvliteralspointer to store the number of literals generated reconvergence constraints
marklpunsolvedwhether LP should be marked unsolved after analysis (needed for strong branching)

Definition at line 7584 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_LONGINT_FORMAT, SCIP_LPERROR, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_OBJLIM, SCIP_OKAY, SCIP_Real, SCIPaggrRowCreate(), SCIPaggrRowFree(), SCIPaggrRowGetInds(), SCIPaggrRowGetNNz(), SCIPaggrRowGetProbvarValue(), SCIPaggrRowGetRhs(), SCIPclockStart(), SCIPclockStop(), SCIPconflictFlushConss(), SCIPlpDivingObjChanged(), SCIPlpGetLPI(), SCIPlpiGetIterations(), SCIPlpiGetObjval(), SCIPlpiGetRealpar(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsObjlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsPrimalInfeasible(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPprobAllColsInLP(), SCIPprobGetNVars(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsEQ(), SCIPsetIsGT(), SCIPsetIsLT(), SCIPtreeGetCurrentDepth(), SCIPvarGetLbLocal(), SCIPvarGetLbLP(), SCIPvarGetProbindex(), SCIPvarGetUbLocal(), SCIPvarGetUbLP(), SCIP_Lp::solved, TRUE, and SCIP_Prob::vars.

Referenced by conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), and SCIPconflictAnalyzeStrongbranch().

◆ conflictAnalyzeInfeasibleLP()

static SCIP_RETCODE conflictAnalyzeInfeasibleLP ( 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 
)
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
conflictconflict analysis data
conflictstoreconflict store
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
transprobtransformed problem
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
successpointer to store whether a conflict constraint was created, or NULL

Definition at line 7895 of file conflict.c.

References conflictAnalyzeLP(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::inflpanalyzetime, SCIP_Conflict::ndualrayinfsuccess, SCIP_Conflict::ninflpcalls, SCIP_Conflict::ninflpconfconss, SCIP_Conflict::ninflpconfliterals, SCIP_Conflict::ninflpiterations, SCIP_Conflict::ninflpreconvconss, SCIP_Conflict::ninflpreconvliterals, SCIP_Conflict::ninflpsuccess, 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 SCIP_RETCODE conflictAnalyzeBoundexceedingLP ( 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 
)
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
conflictconflict analysis data
conflictstoreconflict store
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
transprobtransformed problem
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
successpointer to store whether a conflict constraint was created, or NULL

Definition at line 7971 of file conflict.c.

References SCIP_Conflict::boundlpanalyzetime, conflictAnalyzeLP(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, FALSE, SCIP_Conflict::nboundlpcalls, SCIP_Conflict::nboundlpconfconss, SCIP_Conflict::nboundlpconfliterals, SCIP_Conflict::nboundlpiterations, SCIP_Conflict::nboundlpreconvconss, SCIP_Conflict::nboundlpreconvliterals, SCIP_Conflict::nboundlpsuccess, SCIP_Conflict::ndualraybndsuccess, SCIP_Conflict::ndualrayinfsuccess, 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
conflictconflict analysis data
conflictstoreconflict store
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
transprobtransformed problem
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
successpointer to store whether a conflict constraint was created, or NULL

Definition at line 8050 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
conflictconflict analysis data

Definition at line 8197 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
conflictconflict analysis data

Definition at line 8207 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
conflictconflict analysis data

Definition at line 8217 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
conflictconflict analysis data

Definition at line 8227 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
conflictconflict analysis data

Definition at line 8237 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
conflictconflict analysis data

Definition at line 8247 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
conflictconflict analysis data

Definition at line 8257 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
conflictconflict analysis data

Definition at line 8267 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
conflictconflict analysis data

Definition at line 8277 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
conflictconflict analysis data

Definition at line 8287 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
conflictconflict analysis data

Definition at line 8297 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
conflictconflict analysis data

Definition at line 8307 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
conflictconflict analysis data

Definition at line 8317 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
conflictconflict analysis data

Definition at line 8327 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
conflictconflict analysis data

Definition at line 8337 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
conflictconflict analysis data

Definition at line 8347 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
conflictconflict analysis data
conflictstoreconflict store
blkmemblock memory buffers
setglobal SCIP settings
statdynamic problem statistics
transprobtransformed problem
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
colLP column with at least one infeasible strong branching subproblem
downconflictpointer to store whether a conflict constraint was created for an infeasible downwards branch, or NULL
upconflictpointer to store whether a conflict constraint was created for an infeasible upwards branch, or NULL

Definition at line 8364 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
conflictconflict analysis data

Definition at line 8601 of file conflict.c.

References NULL, SCIP_Conflict::sbanalyzetime, and SCIPclockGetTime().

Referenced by SCIPprintConflictStatistics().

◆ SCIPconflictGetNDualrayInfSuccess()

SCIP_Longint SCIPconflictGetNDualrayInfSuccess ( SCIP_CONFLICT conflict)

gets number of successful calls to infeasible dualray analysis

Parameters
conflictconflict analysis data

Definition at line 8611 of file conflict.c.

References SCIP_Conflict::ndualrayinfsuccess, and NULL.

Referenced by SCIPprintConflictStatistics().

◆ SCIPconflictGetNDualrayInfGlobal()

SCIP_Longint SCIPconflictGetNDualrayInfGlobal ( SCIP_CONFLICT conflict)

gets number of globally valid dualray constraints

Parameters
conflictconflict analysis data

Definition at line 8621 of file conflict.c.

References SCIP_Conflict::ndualrayinfglobal, and NULL.

Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().

◆ SCIPconflictGetNDualrayInfNonzeros()

SCIP_Longint SCIPconflictGetNDualrayInfNonzeros ( SCIP_CONFLICT conflict)

gets average length of infeasible dualrays

Parameters
conflictconflict analysis data

Definition at line 8631 of file conflict.c.

References SCIP_Conflict::dualrayinfnnonzeros, and NULL.

Referenced by SCIPprintConflictStatistics().

◆ SCIPconflictGetNDualrayBndSuccess()

SCIP_Longint SCIPconflictGetNDualrayBndSuccess ( SCIP_CONFLICT conflict)

gets number of successfully analyzed dual proofs of boundexceeding LPs

Parameters
conflictconflict analysis data

Definition at line 8641 of file conflict.c.

References SCIP_Conflict::ndualraybndsuccess, and NULL.

Referenced by SCIPprintConflictStatistics().

◆ SCIPconflictGetNDualrayBndGlobal()

SCIP_Longint SCIPconflictGetNDualrayBndGlobal ( SCIP_CONFLICT conflict)

gets number of globally applied dual proofs of boundexceeding LPs

Parameters
conflictconflict analysis data

Definition at line 8651 of file conflict.c.

References SCIP_Conflict::ndualraybndglobal, and NULL.

Referenced by SCIPgetNConflictConssFound(), and SCIPprintConflictStatistics().

◆ SCIPconflictGetNDualrayBndNonzeros()

SCIP_Longint SCIPconflictGetNDualrayBndNonzeros ( SCIP_CONFLICT conflict)

gets average length of dual proofs of boundexceeding LPs

Parameters
conflictconflict analysis data

Definition at line 8661 of file conflict.c.

References SCIP_Conflict::dualraybndnnonzeros, and NULL.

Referenced by SCIPprintConflictStatistics().

◆ SCIPconflictGetNStrongbranchCalls()

SCIP_Longint SCIPconflictGetNStrongbranchCalls ( SCIP_CONFLICT conflict)

gets number of calls to infeasible strong branching conflict analysis

Parameters
conflictconflict analysis data

Definition at line 8671 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
conflictconflict analysis data

Definition at line 8681 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
conflictconflict analysis data

Definition at line 8691 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
conflictconflict analysis data

Definition at line 8701 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
conflictconflict analysis data

Definition at line 8711 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
conflictconflict analysis data

Definition at line 8721 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
conflictconflict analysis data

Definition at line 8731 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
conflictconflict analysis data
blkmemblock memory of transformed problem
setglobal SCIP settings
statproblem statistics
transprobtransformed problem
origproboriginal problem
treebranch and bound tree
reoptreoptimization data structure
lpLP data
branchcandbranching candidate storage
eventqueueevent queue
cliquetableclique table data structure
successpointer to store whether a conflict constraint was created, or NULL

Definition at line 8753 of file conflict.c.

References conflictAnalyzeRemainingBdchgs(), SCIP_Conflict::conflictset, SCIP_ConflictSet::conflicttype, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::lpi, SCIP_Conflict::nconflictsets, SCIP_Var::nlbchginfos, SCIP_Conflict::npseudocalls, SCIP_Conflict::npseudoconfconss, SCIP_Conflict::npseudoconfliterals, SCIP_Conflict::npseudoreconvconss, SCIP_Conflict::npseudoreconvliterals, SCIP_Conflict::npseudosuccess, SCIP_Var::nubchginfos, NULL, SCIP_Prob::nvars, SCIP_Conflict::pseudoanalyzetime, SCIP_CALL, SCIP_CONFTYPE_BNDEXCEEDING, SCIP_OKAY, SCIP_Real, SCIPclockStart(), SCIPclockStop(), SCIPconflictFlushConss(), SCIPlpGetPseudoObjval(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsFeasEQ(), SCIPsetIsFeasGT(), SCIPsetIsInfinity(), SCIPsetSumepsilon(), SCIPtreeGetCurrentDepth(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetUbLocal(), TRUE, undoBdchgsProof(), SCIP_ConflictSet::usescutoffbound, and SCIP_Prob::vars.

Referenced by applyBounding().

◆ SCIPconflictGetPseudoTime()

SCIP_Real SCIPconflictGetPseudoTime ( SCIP_CONFLICT conflict)

gets time in seconds used for analyzing pseudo solution conflicts

Parameters
conflictconflict analysis data

Definition at line 8898 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
conflictconflict analysis data

Definition at line 8908 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
conflictconflict analysis data

Definition at line 8918 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
conflictconflict analysis data

Definition at line 8928 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
conflictconflict analysis data

Definition at line 8938 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
conflictconflict analysis data

Definition at line 8948 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
conflictconflict analysis data

Definition at line 8958 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
conflictthe conflict analysis data for which all clocks should be enabled or disabled
enableshould the clocks of the conflict analysis data be enabled?

Definition at line 8969 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().