Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

constraint handler for pseudo Boolean constraints

Author
Gerald Gamrath
Stefan Heinz
Michael Winkler
Dominik Kamp

The constraint handler deals with pseudo Boolean constraints. These are constraints of the form

\[ \mbox{lhs} \leq \sum_{k=0}^m c_k \cdot x_k + \sum_{i=0}^n c_i \cdot \prod_{j \in I_i} x_j \leq \mbox{rhs} \]

where all x are binary and all c are integer

Definition in file cons_pseudoboolean.c.

#include "blockmemshell/memory.h"
#include "scip/cons_and.h"
#include "scip/cons_indicator.h"
#include "scip/cons_knapsack.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/cons_pseudoboolean.h"
#include "scip/cons_setppc.h"
#include "scip/cons_xor.h"
#include "scip/debug.h"
#include "scip/pub_cons.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_var.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_general.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_sol.h"
#include "scip/scip_var.h"
#include "scip/symmetry_graph.h"
#include <string.h>

Go to the source code of this file.

Data Structures

struct  ConsAndData
 

Macros

#define CONSHDLR_NAME   "pseudoboolean"
 
#define CONSHDLR_DESC   "constraint handler dealing with pseudo Boolean constraints"
 
#define CONSHDLR_ENFOPRIORITY   -1000000
 
#define CONSHDLR_CHECKPRIORITY   -5000000
 
#define CONSHDLR_EAGERFREQ   100
 
#define CONSHDLR_MAXPREROUNDS   -1
 
#define CONSHDLR_NEEDSCONS   TRUE
 
#define CONSHDLR_PRESOLTIMING   SCIP_PRESOLTIMING_MEDIUM
 
#define DEFAULT_DECOMPOSENORMALPBCONS   FALSE
 
#define DEFAULT_DECOMPOSEINDICATORPBCONS   TRUE
 
#define DEFAULT_SEPARATENONLINEAR   TRUE
 
#define DEFAULT_PROPAGATENONLINEAR   TRUE
 
#define DEFAULT_REMOVABLENONLINEAR   TRUE
 
#define NONLINCONSUPGD_PRIORITY   60000
 
#define HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS   500
 
#define checkConsConsistency(scip, cons)
 
#define MAXNVARS   10 /* note that this cannot be bigger than 31 */
 

Typedefs

typedef struct ConsAndData CONSANDDATA
 

Functions

static SCIP_DECL_SORTPTRCOMP (resvarComp)
 
static SCIP_DECL_SORTPTRCOMP (resvarCompWithInactive)
 
static SCIP_DECL_HASHGETKEY (hashGetKeyAndConsDatas)
 
static SCIP_DECL_HASHKEYEQ (hashKeyEqAndConsDatas)
 
static SCIP_DECL_HASHKEYVAL (hashKeyValAndConsDatas)
 
static SCIP_RETCODE inithashmapandtable (SCIP *const scip, SCIP_CONSHDLRDATA **conshdlrdata)
 
static SCIP_RETCODE conshdlrdataCreate (SCIP *const scip, SCIP_CONSHDLRDATA **conshdlrdata)
 
static SCIP_RETCODE conshdlrdataFree (SCIP *const scip, SCIP_CONSHDLRDATA **conshdlrdata)
 
static SCIP_RETCODE getLinearConsNVars (SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, int *const nvars)
 
static SCIP_RETCODE getLinearConsSides (SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, SCIP_Real *const lhs, SCIP_Real *const rhs)
 
static SCIP_RETCODE getLinearConsVarsData (SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, SCIP_VAR **const vars, SCIP_Real *const coefs, int *const nvars)
 
static SCIP_RETCODE getLinVarsAndAndRess (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const vars, SCIP_Real *const coefs, int const nvars, SCIP_VAR **const linvars, SCIP_Real *const lincoefs, int *const nlinvars, SCIP_VAR **const andress, SCIP_Real *const andcoefs, SCIP_Bool *const andnegs, int *const nandress)
 
static SCIP_RETCODE transformToOrig (SCIP *const scip, CONSANDDATA *consanddata, SCIP_CONSHDLRDATA *conshdlrdata)
 
static SCIP_RETCODE consdataCreate (SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_CONSDATA **consdata, SCIP_CONS *const lincons, SCIP_LINEARCONSTYPE const linconstype, SCIP_CONS **const andconss, SCIP_Real *const andcoefs, SCIP_Bool *const andnegs, int const nandconss, SCIP_VAR *const indvar, SCIP_Real const weight, SCIP_Bool const issoftcons, SCIP_VAR *const intvar, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool check, SCIP_Bool transforming)
 
static SCIP_RETCODE consdataFree (SCIP *const scip, SCIP_CONSDATA **consdata, SCIP_Bool isorig, SCIP_CONSHDLRDATA *conshdlrdata)
 
static SCIP_RETCODE checkLocksAndRes (SCIP *const scip, SCIP_VAR *res)
 
static SCIP_RETCODE lockRoundingAndCons (SCIP *const scip, SCIP_CONS *const cons, CONSANDDATA *const consanddata, SCIP_Real const coef, SCIP_Real const lhs, SCIP_Real const rhs)
 
static SCIP_RETCODE unlockRoundingAndCons (SCIP *const scip, SCIP_CONS *const cons, CONSANDDATA *const consanddata, SCIP_Real const coef, SCIP_Real const lhs, SCIP_Real const rhs)
 
static SCIP_RETCODE consdataPrint (SCIP *const scip, SCIP_CONS *const cons, FILE *const file)
 
static SCIP_RETCODE createAndAddAndCons (SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_VAR **const vars, int const nvars, SCIP_Bool const initial, SCIP_Bool const enforce, SCIP_Bool const check, SCIP_Bool const local, SCIP_Bool const modifiable, SCIP_Bool const dynamic, SCIP_Bool const stickingatnode, SCIP_CONS **const andcons)
 
static SCIP_RETCODE addCoefTerm (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const vars, int const nvars, SCIP_Real const val)
 
static SCIP_RETCODE chgLhsLinearCons (SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, SCIP_Real const lhs)
 
static SCIP_RETCODE chgRhsLinearCons (SCIP *const scip, SCIP_CONS *const cons, SCIP_LINEARCONSTYPE const constype, SCIP_Real const rhs)
 
static SCIP_RETCODE chgLhs (SCIP *const scip, SCIP_CONS *const cons, SCIP_Real lhs)
 
static SCIP_RETCODE chgRhs (SCIP *const scip, SCIP_CONS *const cons, SCIP_Real rhs)
 
static SCIP_RETCODE createAndAddAnds (SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_VAR **const *const terms, SCIP_Real *const termcoefs, int const nterms, int const *const ntermvars, SCIP_Bool const initial, SCIP_Bool const enforce, SCIP_Bool const check, SCIP_Bool const local, SCIP_Bool const modifiable, SCIP_Bool const dynamic, SCIP_Bool const stickingatnode, SCIP_CONS **const andconss, SCIP_Real *const andvals, SCIP_Bool *const andnegs, int *const nandconss)
 
static SCIP_RETCODE createAndAddLinearCons (SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_VAR **const linvars, int const nlinvars, SCIP_Real *const linvals, SCIP_VAR **const andress, int const nandress, SCIP_Real const *const andvals, SCIP_Bool *const andnegs, SCIP_Real *const lhs, SCIP_Real *const rhs, SCIP_Bool const issoftcons, SCIP_Bool const initial, SCIP_Bool const separate, SCIP_Bool const enforce, SCIP_Bool const check, SCIP_Bool const propagate, SCIP_Bool const local, SCIP_Bool const modifiable, SCIP_Bool const dynamic, SCIP_Bool const removable, SCIP_Bool const stickingatnode, SCIP_CONS **const lincons, SCIP_LINEARCONSTYPE *const linconstype)
 
static SCIP_RETCODE checkOrigPbCons (SCIP *const scip, SCIP_CONS *const cons, SCIP_SOL *const sol, SCIP_Bool *const violated, SCIP_Bool const printreason)
 
static SCIP_RETCODE checkAndConss (SCIP *const scip, SCIP_CONSHDLR *const conshdlr, SCIP_SOL *const sol, SCIP_Bool *const violated)
 
static SCIP_RETCODE copyConsPseudoboolean (SCIP *const targetscip, SCIP_CONS **targetcons, SCIP *const sourcescip, SCIP_CONS *const sourcecons, const char *name, SCIP_HASHMAP *const varmap, SCIP_HASHMAP *const consmap, SCIP_Bool const initial, SCIP_Bool const separate, SCIP_Bool const enforce, SCIP_Bool const check, SCIP_Bool const propagate, SCIP_Bool const local, SCIP_Bool const modifiable, SCIP_Bool const dynamic, SCIP_Bool const removable, SCIP_Bool const stickingatnode, SCIP_Bool const global, SCIP_Bool *const valid)
 
static SCIP_RETCODE computeConsAndDataChanges (SCIP *const scip, SCIP_CONSHDLRDATA *const conshdlrdata)
 
static SCIP_RETCODE removeOldLocks (SCIP *const scip, SCIP_CONS *const cons, CONSANDDATA *const consanddata, SCIP_Real const coef, SCIP_Real const lhs, SCIP_Real const rhs)
 
static SCIP_RETCODE addNewLocks (SCIP *const scip, SCIP_CONS *const cons, CONSANDDATA *const consanddata, SCIP_Real const coef, SCIP_Real const lhs, SCIP_Real const rhs)
 
static SCIP_RETCODE correctLocksAndCaptures (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, SCIP_Real const newlhs, SCIP_Real const newrhs, SCIP_VAR **const andress, SCIP_Real *const andcoefs, SCIP_Bool *const andnegs, int const nandress)
 
static SCIP_RETCODE addCliques (SCIP *const scip, SCIP_CONS *const cons, SCIP_Bool *const cutoff, int *const naggrvars, int *const nchgbds)
 
static SCIP_RETCODE propagateCons (SCIP *const scip, SCIP_CONS *const cons, SCIP_Bool *const cutoff, int *const ndelconss)
 
static SCIP_RETCODE updateAndConss (SCIP *const scip, SCIP_CONS *const cons)
 
static SCIP_RETCODE correctConshdlrdata (SCIP *const scip, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss)
 
static SCIP_RETCODE updateConsanddataUses (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss)
 
static SCIP_RETCODE checkSolution (SCIP *const scip, SCIP_VAR **const vars, int const nvars, SCIP_Bool *const values, SCIP_VAR **const linvars, SCIP_Real *const lincoefs, int const nlinvars, SCIP_Real const constant, SCIP_Real const side, CONSANDDATA **const consanddatas, SCIP_Real *const consanddatacoefs, SCIP_Bool *const consanddatanegs, int const nconsanddatas, int const cnt, int *const xortype)
 
static SCIP_RETCODE tryUpgradingXor (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naddconss, int *const nfixedvars, int *const nchgcoefs, int *const nchgsides, SCIP_Bool *const cutoff)
 
static SCIP_RETCODE tryUpgradingLogicor (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naddconss, int *const nfixedvars, int *const nchgcoefs, int *const nchgsides, SCIP_Bool *const cutoff)
 
static SCIP_RETCODE tryUpgradingSetppc (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naddconss, int *const nfixedvars, int *const nchgcoefs, int *const nchgsides, SCIP_Bool *const cutoff)
 
static SCIP_RETCODE tryUpgrading (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naddconss, int *const nfixedvars, int *const nchgcoefs, int *const nchgsides, SCIP_Bool *const cutoff)
 
static SCIP_RETCODE findAggregation (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONSHDLRDATA *const conshdlrdata, int *const ndelconss, int *const naggrvars, SCIP_Bool *const cutoff)
 
static SCIP_RETCODE addSymmetryInformation (SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
 
static SCIP_DECL_CONSHDLRCOPY (conshdlrCopyPseudoboolean)
 
static SCIP_DECL_CONSFREE (consFreePseudoboolean)
 
static SCIP_DECL_CONSINIT (consInitPseudoboolean)
 
static SCIP_DECL_CONSINITPRE (consInitprePseudoboolean)
 
static SCIP_DECL_CONSDELETE (consDeletePseudoboolean)
 
static SCIP_DECL_CONSTRANS (consTransPseudoboolean)
 
static SCIP_DECL_CONSENFOLP (consEnfolpPseudoboolean)
 
static SCIP_DECL_CONSENFORELAX (consEnforelaxPseudoboolean)
 
static SCIP_DECL_CONSENFOPS (consEnfopsPseudoboolean)
 
static SCIP_DECL_CONSCHECK (consCheckPseudoboolean)
 
static SCIP_DECL_CONSPRESOL (consPresolPseudoboolean)
 
static SCIP_DECL_CONSLOCK (consLockPseudoboolean)
 
static SCIP_DECL_CONSPRINT (consPrintPseudoboolean)
 
static SCIP_DECL_CONSCOPY (consCopyPseudoboolean)
 
static SCIP_DECL_CONSPARSE (consParsePseudoboolean)
 
static SCIP_DECL_CONSGETVARS (consGetVarsPseudoboolean)
 
static SCIP_DECL_CONSGETNVARS (consGetNVarsPseudoboolean)
 
static SCIP_DECL_CONSGETPERMSYMGRAPH (consGetPermsymGraphPseudoboolean)
 
static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH (consGetSignedPermsymGraphPseudoboolean)
 
SCIP_RETCODE SCIPincludeConshdlrPseudoboolean (SCIP *scip)
 
SCIP_RETCODE SCIPcreateConsPseudobooleanWithConss (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_CONS *lincons, SCIP_LINEARCONSTYPE linconstype, SCIP_CONS **andconss, SCIP_Real *andcoefs, int nandconss, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
 
SCIP_RETCODE SCIPcreateConsPseudoboolean (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR **linvars, int nlinvars, SCIP_Real *linvals, SCIP_VAR ***terms, int nterms, int *ntermvars, SCIP_Real *termvals, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
 
SCIP_RETCODE SCIPcreateConsBasicPseudoboolean (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR **linvars, int nlinvars, SCIP_Real *linvals, SCIP_VAR ***terms, int nterms, int *ntermvars, SCIP_Real *termvals, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, SCIP_Real lhs, SCIP_Real rhs)
 
SCIP_RETCODE SCIPaddCoefPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR *const var, SCIP_Real const val)
 
SCIP_RETCODE SCIPaddTermPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const vars, int const nvars, SCIP_Real const val)
 
SCIP_VARSCIPgetIndVarPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_CONSSCIPgetLinearConsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_LINEARCONSTYPE SCIPgetLinearConsTypePseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
int SCIPgetNLinVarsWithoutAndPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_RETCODE SCIPgetLinDatasWithoutAndPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const linvars, SCIP_Real *const lincoefs, int *const nlinvars)
 
SCIP_RETCODE SCIPgetAndDatasPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONS **const andconss, SCIP_Real *const andcoefs, int *const nandconss)
 
int SCIPgetNAndsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_RETCODE SCIPchgLhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_Real const lhs)
 
SCIP_RETCODE SCIPchgRhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_Real const rhs)
 
SCIP_Real SCIPgetLhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_Real SCIPgetRhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 

Macro Definition Documentation

◆ CONSHDLR_NAME

#define CONSHDLR_NAME   "pseudoboolean"

Definition at line 77 of file cons_pseudoboolean.c.

◆ CONSHDLR_DESC

#define CONSHDLR_DESC   "constraint handler dealing with pseudo Boolean constraints"

Definition at line 78 of file cons_pseudoboolean.c.

◆ CONSHDLR_ENFOPRIORITY

#define CONSHDLR_ENFOPRIORITY   -1000000

priority of the constraint handler for constraint enforcing

Definition at line 79 of file cons_pseudoboolean.c.

◆ CONSHDLR_CHECKPRIORITY

#define CONSHDLR_CHECKPRIORITY   -5000000

priority of the constraint handler for checking feasibility

Definition at line 80 of file cons_pseudoboolean.c.

◆ CONSHDLR_EAGERFREQ

#define CONSHDLR_EAGERFREQ   100

frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only

Definition at line 82 of file cons_pseudoboolean.c.

◆ CONSHDLR_MAXPREROUNDS

#define CONSHDLR_MAXPREROUNDS   -1

maximal number of presolving rounds the constraint handler participates in (-1: no limit)

Definition at line 83 of file cons_pseudoboolean.c.

◆ CONSHDLR_NEEDSCONS

#define CONSHDLR_NEEDSCONS   TRUE

should the constraint handler be skipped, if no constraints are available?

Definition at line 84 of file cons_pseudoboolean.c.

◆ CONSHDLR_PRESOLTIMING

#define CONSHDLR_PRESOLTIMING   SCIP_PRESOLTIMING_MEDIUM

presolving timing of the constraint handler (fast, medium, or exhaustive)

Definition at line 86 of file cons_pseudoboolean.c.

◆ DEFAULT_DECOMPOSENORMALPBCONS

#define DEFAULT_DECOMPOSENORMALPBCONS   FALSE

decompose every normal pseudo boolean constraint into a "linear" constraint and "and" constraints

Definition at line 88 of file cons_pseudoboolean.c.

◆ DEFAULT_DECOMPOSEINDICATORPBCONS

#define DEFAULT_DECOMPOSEINDICATORPBCONS   TRUE

decompose every soft pseudo boolean constraint into "indicator" constraints and "and" constraints

Definition at line 89 of file cons_pseudoboolean.c.

◆ DEFAULT_SEPARATENONLINEAR

#define DEFAULT_SEPARATENONLINEAR   TRUE

if decomposed, should the nonlinear constraints be separated during LP processing

Definition at line 91 of file cons_pseudoboolean.c.

◆ DEFAULT_PROPAGATENONLINEAR

#define DEFAULT_PROPAGATENONLINEAR   TRUE

if decomposed, should the nonlinear constraints be propagated during node processing

Definition at line 92 of file cons_pseudoboolean.c.

◆ DEFAULT_REMOVABLENONLINEAR

#define DEFAULT_REMOVABLENONLINEAR   TRUE

if decomposed, should the nonlinear constraints be removable

Definition at line 93 of file cons_pseudoboolean.c.

◆ NONLINCONSUPGD_PRIORITY

#define NONLINCONSUPGD_PRIORITY   60000

priority of upgrading nonlinear constraints

Definition at line 94 of file cons_pseudoboolean.c.

◆ HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS

#define HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS   500

minimal size of hash table in and constraint tables

Definition at line 102 of file cons_pseudoboolean.c.

◆ checkConsConsistency

#define checkConsConsistency (   scip,
  cons 
)

Definition at line 1023 of file cons_pseudoboolean.c.

◆ MAXNVARS

#define MAXNVARS   10 /* note that this cannot be bigger than 31 */

Definition at line 5365 of file cons_pseudoboolean.c.

Typedef Documentation

◆ CONSANDDATA

typedef struct ConsAndData CONSANDDATA

Definition at line 169 of file cons_pseudoboolean.c.

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP() [1/2]

static SCIP_DECL_SORTPTRCOMP ( resvarComp  )
static

comparison method for sorting and-resultants according to their problem index, which is used instead of the original index because the implicit resultants are shuffled when creating the constraints that otherwise results in shuffled problem copies, if an and-resultant is fixed, it will be put in front with respect to its original index if an and-resultant is negated, it will be put in front of its negation counterpart

Definition at line 243 of file cons_pseudoboolean.c.

References SCIP_Bool, SCIPvarGetIndex(), SCIPvarGetNegatedVar(), SCIPvarGetProbindex(), and SCIPvarIsNegated().

◆ SCIP_DECL_SORTPTRCOMP() [2/2]

static SCIP_DECL_SORTPTRCOMP ( resvarCompWithInactive  )
static

comparison method for sorting consanddatas according to the problem index of their corresponding and-resultants, if a consanddata object is deleted, it is handled like it has an inactive resultant, so this will be put in front while sorting

Definition at line 284 of file cons_pseudoboolean.c.

References ConsAndData::cons, ConsAndData::istransformed, NULL, ConsAndData::origcons, SCIPconsIsDeleted(), and SCIPgetResultantAnd().

◆ SCIP_DECL_HASHGETKEY()

static SCIP_DECL_HASHGETKEY ( hashGetKeyAndConsDatas  )
static

gets the key of the given element

Definition at line 327 of file cons_pseudoboolean.c.

◆ SCIP_DECL_HASHKEYEQ()

static SCIP_DECL_HASHKEYEQ ( hashKeyEqAndConsDatas  )
static

returns TRUE iff both keys are equal; two non-linear terms are equal if they have the same variables

Definition at line 335 of file cons_pseudoboolean.c.

References ConsAndData::cons, FALSE, NULL, ConsAndData::nvars, SCIPvarCompare(), SCIPvarGetIndex(), TRUE, and ConsAndData::vars.

◆ SCIP_DECL_HASHKEYVAL()

static SCIP_DECL_HASHKEYVAL ( hashKeyValAndConsDatas  )
static

returns the hash value of the key

Definition at line 396 of file cons_pseudoboolean.c.

References NULL, ConsAndData::nvars, SCIPhashFour, SCIPvarGetIndex(), and ConsAndData::vars.

◆ inithashmapandtable()

static SCIP_RETCODE inithashmapandtable ( SCIP *const  scip,
SCIP_CONSHDLRDATA **  conshdlrdata 
)
static

initializes the hashmap and -table used in this constraint handler data for artificial variables and specific and-constraint data objects

Parameters
scipSCIP data structure
conshdlrdatapointer to store the constraint handler data

Definition at line 429 of file cons_pseudoboolean.c.

References HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS, NULL, SCIP_CALL, SCIP_OKAY, SCIPblkmem(), SCIPhashmapCreate(), SCIPhashtableCreate(), and TRUE.

Referenced by SCIPcreateConsPseudoboolean(), and SCIPcreateConsPseudobooleanWithConss().

◆ conshdlrdataCreate()

static SCIP_RETCODE conshdlrdataCreate ( SCIP *const  scip,
SCIP_CONSHDLRDATA **  conshdlrdata 
)
static

creates constraint handler data for pseudo boolean constraint handler

Parameters
scipSCIP data structure
conshdlrdatapointer to store the constraint handler data

Definition at line 461 of file cons_pseudoboolean.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, and SCIPallocBlockMemoryArray.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ conshdlrdataFree()

static SCIP_RETCODE conshdlrdataFree ( SCIP *const  scip,
SCIP_CONSHDLRDATA **  conshdlrdata 
)
static

frees constraint handler data for pseudo boolean constraint handler

Parameters
scipSCIP data structure
conshdlrdatapointer to the constraint handler data

Definition at line 496 of file cons_pseudoboolean.c.

References FALSE, NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPhashmapFree(), and SCIPhashtableFree().

Referenced by SCIP_DECL_CONSFREE().

◆ getLinearConsNVars()

◆ getLinearConsSides()

static SCIP_RETCODE getLinearConsSides ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_LINEARCONSTYPE const  constype,
SCIP_Real *const  lhs,
SCIP_Real *const  rhs 
)
static

gets sides of linear constraint

Parameters
scipSCIP data structure
conslinear constraint
constypelinear constraint type
lhspointer to store left hand side of linear constraint
rhspointer to store right hand side of linear constraint

Definition at line 578 of file cons_pseudoboolean.c.

References SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIP_SETPPCTYPE_COVERING, SCIP_SETPPCTYPE_PACKING, SCIP_SETPPCTYPE_PARTITIONING, SCIPerrorMessage, SCIPgetCapacityKnapsack(), SCIPgetLhsLinear(), SCIPgetRhsLinear(), SCIPgetTypeSetppc(), and SCIPinfinity().

Referenced by checkOrigPbCons(), chgLhs(), chgRhs(), consdataPrint(), copyConsPseudoboolean(), SCIP_DECL_CONSINITPRE(), and SCIP_DECL_CONSPRESOL().

◆ getLinearConsVarsData()

static SCIP_RETCODE getLinearConsVarsData ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_LINEARCONSTYPE const  constype,
SCIP_VAR **const  vars,
SCIP_Real *const  coefs,
int *const  nvars 
)
static

◆ getLinVarsAndAndRess()

static SCIP_RETCODE getLinVarsAndAndRess ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_VAR **const  vars,
SCIP_Real *const  coefs,
int const  nvars,
SCIP_VAR **const  linvars,
SCIP_Real *const  lincoefs,
int *const  nlinvars,
SCIP_VAR **const  andress,
SCIP_Real *const  andcoefs,
SCIP_Bool *const  andnegs,
int *const  nandress 
)
static

splits up into original linear variables and artificial and-resultants

Parameters
scipSCIP data structure
conspseudoboolean constraint
varsall variables of linear constraint
coefsall coefficients of linear constraint, or NULL
nvarsnumber of all variables of linear constraint
linvarsarray to store not and-resultant variables of linear constraint, or NULL
lincoefsarray to store coefficients of not and-resultant variables of linear constraint, or NULL
nlinvarspointer to store number of not and-resultant variables, or NULL
andressarray to store and-resultant variables of linear constraint, or NULL
andcoefsarray to store coefficients of and-resultant variables of linear constraint, or NULL
andnegsarray to store negation status of and-resultant variables of linear constraint, or NULL
nandresspointer to store number of and-resultant variables, or NULL

Definition at line 791 of file cons_pseudoboolean.c.

References ConsAndData::cons, ConsAndData::istransformed, NULL, SCIP_Bool, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconsIsDeleted(), SCIPconsIsOriginal(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPvarGetNegationVar(), and SCIPvarIsNegated().

Referenced by addCliques(), chgLhs(), chgRhs(), findAggregation(), SCIP_DECL_CONSGETNVARS(), SCIP_DECL_CONSGETVARS(), SCIP_DECL_CONSPRESOL(), SCIPgetLinDatasWithoutAndPseudoboolean(), tryUpgradingLogicor(), and tryUpgradingXor().

◆ transformToOrig()

static SCIP_RETCODE transformToOrig ( SCIP *const  scip,
CONSANDDATA consanddata,
SCIP_CONSHDLRDATA conshdlrdata 
)
static

transforming transformed consanddata object back to original space, if an corresponding original constraint exists, also clearing all transformed data, i.e. releasing transformed variables

Parameters
scipSCIP data structure
consanddataconsanddata object
conshdlrdataconstraint handler data

Definition at line 1031 of file cons_pseudoboolean.c.

References FALSE, ConsAndData::isoriginal, ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, ConsAndData::noriguses, NULL, ConsAndData::nuses, ConsAndData::nvars, ConsAndData::origcons, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPduplicateBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashtableExists(), SCIPhashtableRetrieve(), SCIPreleaseVar(), SCIPsortPtr(), SCIPvarIsTransformed(), ConsAndData::snewvars, ConsAndData::svars, TRUE, and ConsAndData::vars.

Referenced by consdataFree(), correctConshdlrdata(), and updateConsanddataUses().

◆ consdataCreate()

static SCIP_RETCODE consdataCreate ( SCIP *const  scip,
SCIP_CONSHDLR *const  conshdlr,
SCIP_CONSDATA **  consdata,
SCIP_CONS *const  lincons,
SCIP_LINEARCONSTYPE const  linconstype,
SCIP_CONS **const  andconss,
SCIP_Real *const  andcoefs,
SCIP_Bool *const  andnegs,
int const  nandconss,
SCIP_VAR *const  indvar,
SCIP_Real const  weight,
SCIP_Bool const  issoftcons,
SCIP_VAR *const  intvar,
SCIP_Real  lhs,
SCIP_Real  rhs,
SCIP_Bool  check,
SCIP_Bool  transforming 
)
static

creates a pseudo boolean constraint data

Parameters
scipSCIP data structure
conshdlrpseudoboolean constraint handler
consdatapointer to linear constraint data
linconslinear constraint with artificial and-resultants representing this pseudoboolean constraint
linconstypetype of linear constraint
andconssarray of and-constraints which occur in this pseudoboolean constraint
andcoefscoefficients of and-constraints
andnegsnegation status of and-constraints (or NULL, if no negated resultants)
nandconssnumber of and-constraints
indvarindicator variable if it's a soft constraint, or NULL
weightweight of the soft constraint, if it is one
issoftconsis this a soft constraint
intvara artificial variable which was added only for the objective function, if this variable is not NULL this constraint (without this integer variable) describes the objective function
lhsleft hand side of row
rhsright hand side of row
checkis the new constraint a check constraint?
transformingare we called by CONSTRANS

Definition at line 1162 of file cons_pseudoboolean.c.

References FALSE, getLinearConsNVars(), NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPallocClearBlockMemoryArray, SCIPcaptureVar(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPduplicateBlockMemoryArray, SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetResultantAnd(), SCIPgetStage(), SCIPgetTransformedVar(), SCIPgetTransformedVars(), SCIPhashmapGetImage(), SCIPinfinity(), SCIPisGT(), SCIPisInfinity(), SCIPisTransformed(), SCIPisZero(), SCIPsetConsChecked(), SCIPsortPtr(), SCIPsortPtrPtrRealBool(), SCIPtransformCons(), and TRUE.

Referenced by SCIP_DECL_CONSTRANS(), SCIPcreateConsPseudoboolean(), and SCIPcreateConsPseudobooleanWithConss().

◆ consdataFree()

static SCIP_RETCODE consdataFree ( SCIP *const  scip,
SCIP_CONSDATA **  consdata,
SCIP_Bool  isorig,
SCIP_CONSHDLRDATA conshdlrdata 
)
static

◆ checkLocksAndRes()

static SCIP_RETCODE checkLocksAndRes ( SCIP *const  scip,
SCIP_VAR res 
)
static

check the locks of an AND resultant and removes it from all global structures if the resultant is not locked anymore

Parameters
scipSCIP data structure
resresultant of AND constraint

Definition at line 1629 of file cons_pseudoboolean.c.

References NULL, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIP_STAGE_FREETRANS, SCIPgetStage(), SCIPremoveVarFromGlobalStructures(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), and SCIPvarIsActive().

Referenced by SCIP_DECL_CONSLOCK(), and unlockRoundingAndCons().

◆ lockRoundingAndCons()

static SCIP_RETCODE lockRoundingAndCons ( SCIP *const  scip,
SCIP_CONS *const  cons,
CONSANDDATA *const  consanddata,
SCIP_Real const  coef,
SCIP_Real const  lhs,
SCIP_Real const  rhs 
)
static

installs rounding locks for the given and-constraint associated with given coefficient

Parameters
scipSCIP data structure
conspseudoboolean constraint
consanddataCONSANDDATA object for which we want to add the locks
coefcoefficient which led to old locks
lhsleft hand side
rhsright hand side

Definition at line 1649 of file cons_pseudoboolean.c.

References ConsAndData::cons, ConsAndData::newvars, ConsAndData::nnewvars, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_LOCKTYPE_CONFLICT, SCIP_OKAY, SCIPconsIsLocked(), SCIPconsIsLockedType(), SCIPgetResultantAnd(), SCIPisInfinity(), SCIPisLE(), SCIPisPositive(), SCIPlockVarCons(), TRUE, and ConsAndData::vars.

Referenced by addCoefTerm(), and addNewLocks().

◆ unlockRoundingAndCons()

static SCIP_RETCODE unlockRoundingAndCons ( SCIP *const  scip,
SCIP_CONS *const  cons,
CONSANDDATA *const  consanddata,
SCIP_Real const  coef,
SCIP_Real const  lhs,
SCIP_Real const  rhs 
)
static

removes rounding locks for the given and-constraint associated with given coefficient

Parameters
scipSCIP data structure
conspseudoboolean constraint
consanddataCONSANDDATA object for which we want to delete the locks
coefcoefficient which led to old locks
lhsleft hand side which led to old locks
rhsright hand side which led to old locks

Definition at line 1718 of file cons_pseudoboolean.c.

References checkLocksAndRes(), ConsAndData::cons, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_LOCKTYPE_CONFLICT, SCIP_OKAY, SCIPconsIsLocked(), SCIPconsIsLockedType(), SCIPgetResultantAnd(), SCIPisInfinity(), SCIPisLE(), SCIPisPositive(), SCIPunlockVarCons(), TRUE, and ConsAndData::vars.

Referenced by correctLocksAndCaptures(), and removeOldLocks().

◆ consdataPrint()

static SCIP_RETCODE consdataPrint ( SCIP *const  scip,
SCIP_CONS *const  cons,
FILE *const  file 
)
static

◆ createAndAddAndCons()

static SCIP_RETCODE createAndAddAndCons ( SCIP *const  scip,
SCIP_CONSHDLR *const  conshdlr,
SCIP_VAR **const  vars,
int const  nvars,
SCIP_Bool const  initial,
SCIP_Bool const  enforce,
SCIP_Bool const  check,
SCIP_Bool const  local,
SCIP_Bool const  modifiable,
SCIP_Bool const  dynamic,
SCIP_Bool const  stickingatnode,
SCIP_CONS **const  andcons 
)
static

creates and/or adds the resultant for a given term

Parameters
scipSCIP data structure
conshdlrpseudoboolean constraint handler
varsarray of variables to get and-constraints for
nvarsnumber of variables to get and-constraints for
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.
andconspointer to store and-constraint

Definition at line 1956 of file cons_pseudoboolean.c.

References ARTIFICIALVARNAMEPREFIX, ConsAndData::cons, CONSHDLR_NAME, FALSE, ConsAndData::isoriginal, ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, ConsAndData::noriguses, NULL, ConsAndData::nuses, ConsAndData::nvars, ConsAndData::origcons, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPABORT, SCIPaddCons(), SCIPaddVar(), SCIPallocBlockMemory, SCIPcalcMemGrowSize(), SCIPcaptureCons(), SCIPcaptureVar(), SCIPchgAndConsCheckFlagWhenUpgr(), SCIPchgAndConsRemovableFlagWhenUpgr(), SCIPchgVarBranchPriority(), SCIPconshdlrGetData(), SCIPcreateConsAnd(), SCIPcreateVar(), SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugPrintCons, SCIPduplicateBlockMemoryArray, SCIPensureBlockMemoryArray, SCIPerrorMessage, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPgetBoolParam(), SCIPgetResultantAnd(), SCIPhashmapExists(), SCIPhashmapInsert(), SCIPhashtableInsert(), SCIPhashtableRetrieve(), SCIPisFeasEQ(), SCIPisFeasZero(), SCIPisTransformed(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), SCIPsortPtr(), SCIPvarGetName(), SCIPvarIsOriginal(), SCIPvarIsTransformedOrigvar(), ConsAndData::snewvars, ConsAndData::svars, TRUE, and ConsAndData::vars.

Referenced by addCoefTerm(), and createAndAddAnds().

◆ addCoefTerm()

◆ chgLhsLinearCons()

static SCIP_RETCODE chgLhsLinearCons ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_LINEARCONSTYPE const  constype,
SCIP_Real const  lhs 
)
static

changes left hand side of linear constraint

Parameters
scipSCIP data structure
conslinear constraint
constypelinear constraint type
lhsnew left hand side of linear constraint

Definition at line 2295 of file cons_pseudoboolean.c.

References SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIPchgLhsLinear(), and SCIPerrorMessage.

Referenced by chgLhs().

◆ chgRhsLinearCons()

static SCIP_RETCODE chgRhsLinearCons ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_LINEARCONSTYPE const  constype,
SCIP_Real const  rhs 
)
static

changes right hand side of linear constraint

Parameters
scipSCIP data structure
conslinear constraint
constypelinear constraint type
rhsnew right hand side of linear constraint

Definition at line 2326 of file cons_pseudoboolean.c.

References SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIPchgRhsLinear(), and SCIPerrorMessage.

Referenced by chgRhs().

◆ chgLhs()

◆ chgRhs()

◆ createAndAddAnds()

static SCIP_RETCODE createAndAddAnds ( SCIP *const  scip,
SCIP_CONSHDLR *const  conshdlr,
SCIP_VAR **const *const  terms,
SCIP_Real *const  termcoefs,
int const  nterms,
int const *const  ntermvars,
SCIP_Bool const  initial,
SCIP_Bool const  enforce,
SCIP_Bool const  check,
SCIP_Bool const  local,
SCIP_Bool const  modifiable,
SCIP_Bool const  dynamic,
SCIP_Bool const  stickingatnode,
SCIP_CONS **const  andconss,
SCIP_Real *const  andvals,
SCIP_Bool *const  andnegs,
int *const  nandconss 
)
static

create and-constraints and get all and-resultants

Parameters
scipSCIP data structure
conshdlrpseudoboolean constraint handler
termsarray of term variables to get and-constraints for
termcoefsarray of coefficients for and-constraints
ntermsnumber of terms to get and-constraints for
ntermvarsarray of number of variable in each term
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.
andconssarray to store all created and-constraints for given terms
andvalsarray to store all coefficients of and-constraints
andnegsarray to store negation status of and-constraints
nandconssnumber of created and constraints

Definition at line 2699 of file cons_pseudoboolean.c.

References createAndAddAndCons(), FALSE, nterms, NULL, SCIP_CALL, SCIP_OKAY, and SCIPisZero().

Referenced by SCIPcreateConsPseudoboolean().

◆ createAndAddLinearCons()

static SCIP_RETCODE createAndAddLinearCons ( SCIP *const  scip,
SCIP_CONSHDLR *const  conshdlr,
SCIP_VAR **const  linvars,
int const  nlinvars,
SCIP_Real *const  linvals,
SCIP_VAR **const  andress,
int const  nandress,
SCIP_Real const *const  andvals,
SCIP_Bool *const  andnegs,
SCIP_Real *const  lhs,
SCIP_Real *const  rhs,
SCIP_Bool const  issoftcons,
SCIP_Bool const  initial,
SCIP_Bool const  separate,
SCIP_Bool const  enforce,
SCIP_Bool const  check,
SCIP_Bool const  propagate,
SCIP_Bool const  local,
SCIP_Bool const  modifiable,
SCIP_Bool const  dynamic,
SCIP_Bool const  removable,
SCIP_Bool const  stickingatnode,
SCIP_CONS **const  lincons,
SCIP_LINEARCONSTYPE *const  linconstype 
)
static

created linear constraint of pseudo boolean constraint

Parameters
scipSCIP data structure
conshdlrpseudoboolean constraint handler
linvarslinear variables
nlinvarsnumber of linear variables
linvalslinear coefficients
andressand-resultant variables
nandressnumber of and-resultant variables
andvalsand-resultant coefficients
andnegsand-resultant negation status
lhspointer to left hand side of linear constraint
rhspointer to right hand side of linear constraint
issoftconsis this a soft constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.
linconspointer to store created linear constraint
linconstypepointer to store the type of the linear constraint

Definition at line 2767 of file cons_pseudoboolean.c.

References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_Longint, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPaddCons(), SCIPallocBufferArray, SCIPcaptureCons(), SCIPconsAddUpgradeLocks(), SCIPconshdlrGetData(), SCIPcreateConsKnapsack(), SCIPcreateConsLinear(), SCIPcreateConsLogicor(), SCIPcreateConsSetcover(), SCIPcreateConsSetpack(), SCIPcreateConsSetpart(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfeasFloor(), SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetNegatedVar(), SCIPinfinity(), SCIPisEQ(), SCIPisFeasIntegral(), SCIPisInfinity(), SCIPisIntegral(), SCIPisPositive(), SCIPisZero(), SCIPreleaseCons(), SCIPsnprintf(), SCIPwarningMessage(), and TRUE.

Referenced by SCIPcreateConsPseudoboolean().

◆ checkOrigPbCons()

static SCIP_RETCODE checkOrigPbCons ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_SOL *const  sol,
SCIP_Bool *const  violated,
SCIP_Bool const  printreason 
)
static

checks one original pseudoboolean constraint for feasibility of given solution

Parameters
scipSCIP data structure
conspseudo boolean constraint
solsolution to be checked, or NULL for current solution
violatedpointer to store whether the constraint is violated
printreasonshould violation of constraint be printed

Definition at line 3397 of file cons_pseudoboolean.c.

References ConsAndData::cons, FALSE, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), NULL, ConsAndData::origcons, SCIP_CALL, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsOriginal(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetSolVal(), SCIPgetVarsAnd(), SCIPhashmapGetImage(), SCIPinfoMessage(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisInfinity(), SCIPisLE(), SCIPprintCons(), SCIPrelDiff(), SCIPupdateSolConsViolation(), SCIPvarGetNegatedVar(), and TRUE.

Referenced by SCIP_DECL_CONSCHECK().

◆ checkAndConss()

static SCIP_RETCODE checkAndConss ( SCIP *const  scip,
SCIP_CONSHDLR *const  conshdlr,
SCIP_SOL *const  sol,
SCIP_Bool *const  violated 
)
static

checks all and-constraints inside the pseudoboolean constraint handler for feasibility of given solution or current solution

Parameters
scipSCIP data structure
conshdlrpseudo boolean constraint handler
solsolution to be checked, or NULL for current solution
violatedpointer to store whether the constraint is violated

Definition at line 3584 of file cons_pseudoboolean.c.

References FALSE, MAX3, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconshdlrGetData(), SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetSolVal(), SCIPgetVarsAnd(), SCIPincConsAge(), SCIPisFeasPositive(), SCIPresetConsAge(), and TRUE.

Referenced by SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), and SCIP_DECL_CONSENFORELAX().

◆ copyConsPseudoboolean()

static SCIP_RETCODE copyConsPseudoboolean ( SCIP *const  targetscip,
SCIP_CONS **  targetcons,
SCIP *const  sourcescip,
SCIP_CONS *const  sourcecons,
const char *  name,
SCIP_HASHMAP *const  varmap,
SCIP_HASHMAP *const  consmap,
SCIP_Bool const  initial,
SCIP_Bool const  separate,
SCIP_Bool const  enforce,
SCIP_Bool const  check,
SCIP_Bool const  propagate,
SCIP_Bool const  local,
SCIP_Bool const  modifiable,
SCIP_Bool const  dynamic,
SCIP_Bool const  removable,
SCIP_Bool const  stickingatnode,
SCIP_Bool const  global,
SCIP_Bool *const  valid 
)
static

creates by copying and captures a linear constraint

Parameters
targetsciptarget SCIP data structure
targetconspointer to store the created target constraint
sourcescipsource SCIP data structure
sourceconssource constraint which will be copied
namename of constraint
varmapa SCIP_HASHMAP mapping variables of the source SCIP to corresponding variables of the target SCIP
consmapa hashmap to store the mapping of source constraints to the corresponding target constraints
initialshould the LP relaxation of constraint be in the initial LP?
separateshould the constraint be separated during LP processing?
enforceshould the constraint be enforced during node processing?
checkshould the constraint be checked for feasibility?
propagateshould the constraint be propagated during node processing?
localis constraint only valid locally?
modifiableis constraint modifiable (subject to column generation)?
dynamicis constraint subject to aging?
removableshould the relaxation be removed from the LP due to aging or cleanup?
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node?
globalcreate a global or a local copy?
validpointer to store if the copying was valid

Definition at line 3670 of file cons_pseudoboolean.c.

References ConsAndData::cons, CONSHDLR_NAME, FALSE, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), NULL, ConsAndData::origcons, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_MINIMAL, SCIPallocBufferArray, SCIPblkmem(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsOriginal(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsPseudobooleanWithConss(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetConsCopy(), SCIPgetResultantAnd(), SCIPgetVarCopy(), SCIPhashmapGetImage(), SCIPhashtableCreate(), SCIPhashtableExists(), SCIPhashtableFree(), SCIPhashtableInsert(), SCIPisConsCompressionEnabled(), SCIPreleaseCons(), SCIPverbMessage(), and TRUE.

Referenced by SCIP_DECL_CONSCOPY().

◆ computeConsAndDataChanges()

static SCIP_RETCODE computeConsAndDataChanges ( SCIP *const  scip,
SCIP_CONSHDLRDATA *const  conshdlrdata 
)
static

◆ removeOldLocks()

static SCIP_RETCODE removeOldLocks ( SCIP *const  scip,
SCIP_CONS *const  cons,
CONSANDDATA *const  consanddata,
SCIP_Real const  coef,
SCIP_Real const  lhs,
SCIP_Real const  rhs 
)
static

remove old locks

Parameters
scipSCIP data structure
conspseudoboolean constraint
consanddataCONSANDDATA object for which we want to delete the locks and the capture of the corresponding and-constraint
coefcoefficient which led to old locks
lhsleft hand side which led to old locks
rhsright hand side which led to old locks

Definition at line 4088 of file cons_pseudoboolean.c.

References ConsAndData::cons, NULL, SCIP_CALL, SCIP_OKAY, SCIPisInfinity(), SCIPisLE(), and unlockRoundingAndCons().

Referenced by correctLocksAndCaptures(), and updateConsanddataUses().

◆ addNewLocks()

static SCIP_RETCODE addNewLocks ( SCIP *const  scip,
SCIP_CONS *const  cons,
CONSANDDATA *const  consanddata,
SCIP_Real const  coef,
SCIP_Real const  lhs,
SCIP_Real const  rhs 
)
static

add new locks

Parameters
scipSCIP data structure
conspseudoboolean constraint
consanddataCONSANDDATA object for which we want to delete the locks and the capture of the corresponding and-constraint
coefcoefficient which lead to new locks
lhsleft hand side which lead to new locks
rhsright hand side which lead to new locks

Definition at line 4116 of file cons_pseudoboolean.c.

References ConsAndData::cons, lockRoundingAndCons(), NULL, SCIP_CALL, SCIP_OKAY, SCIPisInfinity(), and SCIPisLE().

Referenced by correctLocksAndCaptures().

◆ correctLocksAndCaptures()

static SCIP_RETCODE correctLocksAndCaptures ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONSHDLRDATA *const  conshdlrdata,
SCIP_Real const  newlhs,
SCIP_Real const  newrhs,
SCIP_VAR **const  andress,
SCIP_Real *const  andcoefs,
SCIP_Bool *const  andnegs,
int const  nandress 
)
static

update all locks inside this constraint and all captures on all and-constraints

Parameters
scipSCIP data structure
conspseudoboolean constraint
conshdlrdatapseudoboolean constraint handler data
newlhsnew left hand side of pseudoboolean constraint
newrhsnew right hand side of pseudoboolean constraint
andressnew and-resultants in pseudoboolean constraint
andcoefsnew and-resultants-coeffcients in pseudoboolean constraint
andnegsnew negation status of and-resultants in pseudoboolean constraint
nandressnumber of current and-resultants in pseudoboolean constraint

Definition at line 4144 of file cons_pseudoboolean.c.

References addNewLocks(), ConsAndData::cons, FALSE, getLinearConsNVars(), NULL, ConsAndData::nuses, removeOldLocks(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBlockMemoryArray, SCIPconsGetData(), SCIPconsIsDeleted(), SCIPfreeBlockMemoryArray, SCIPgetResultantAnd(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPisEQ(), SCIPisInfinity(), SCIPisLE(), SCIPisZero(), SCIPsortPtrRealBool(), SCIPvarGetIndex(), SCIPvarGetNegatedVar(), SCIPvarGetProbindex(), SCIPvarIsNegated(), TRUE, and unlockRoundingAndCons().

Referenced by SCIP_DECL_CONSPRESOL().

◆ addCliques()

static SCIP_RETCODE addCliques ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_Bool *const  cutoff,
int *const  naggrvars,
int *const  nchgbds 
)
static

◆ propagateCons()

static SCIP_RETCODE propagateCons ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_Bool *const  cutoff,
int *const  ndelconss 
)
static

propagation method for pseudoboolean constraints

Parameters
scipSCIP data structure
consknapsack constraint
cutoffpointer to store whether the node can be cut off
ndelconsspointer to count number of deleted constraints

Definition at line 4905 of file cons_pseudoboolean.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsDeleted(), SCIPdelConsLocal(), and TRUE.

Referenced by SCIP_DECL_CONSPRESOL().

◆ updateAndConss()

static SCIP_RETCODE updateAndConss ( SCIP *const  scip,
SCIP_CONS *const  cons 
)
static

update and-constraint flags due to pseudoboolean constraint flags

Parameters
scipSCIP data structure
conspseudoboolean constraint

Definition at line 4944 of file cons_pseudoboolean.c.

References ConsAndData::cons, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsActive(), SCIPconsIsChecked(), and SCIPsetConsChecked().

Referenced by SCIP_DECL_CONSINITPRE(), and SCIP_DECL_CONSPRESOL().

◆ correctConshdlrdata()

◆ updateConsanddataUses()

static SCIP_RETCODE updateConsanddataUses ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONSHDLRDATA *const  conshdlrdata,
int *const  ndelconss 
)
static

update the uses counter of consandata objects which are used in pseudoboolean constraint, that were deleted and probably delete and-constraints

Parameters
scipSCIP data structure
conspseudoboolean constraint
conshdlrdatapseudoboolean constraint handler data
ndelconsspointer to store number of deleted constraints

Definition at line 5245 of file cons_pseudoboolean.c.

References ConsAndData::cons, FALSE, ConsAndData::istransformed, NULL, ConsAndData::nuses, ConsAndData::origcons, removeOldLocks(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPconsGetData(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPdelCons(), SCIPgetResultantAnd(), SCIPhashmapExists(), SCIPhashmapRemove(), SCIPhashtableExists(), SCIPhashtableRemove(), SCIPreleaseCons(), SCIPsetConsChecked(), SCIPsetConsInitial(), SCIPvarGetStatus(), transformToOrig(), and TRUE.

Referenced by findAggregation(), and tryUpgrading().

◆ checkSolution()

static SCIP_RETCODE checkSolution ( SCIP *const  scip,
SCIP_VAR **const  vars,
int const  nvars,
SCIP_Bool *const  values,
SCIP_VAR **const  linvars,
SCIP_Real *const  lincoefs,
int const  nlinvars,
SCIP_Real const  constant,
SCIP_Real const  side,
CONSANDDATA **const  consanddatas,
SCIP_Real *const  consanddatacoefs,
SCIP_Bool *const  consanddatanegs,
int const  nconsanddatas,
int const  cnt,
int *const  xortype 
)
static

calculate result for a given pseudoboolean constraint with given values, this is used to decide whether a pseudoboolean constraint can be upgrade to an XOR constraint

Parameters
scipSCIP data structure
varsall variables which occur
nvarsnumber of all variables which appear in the pseudoboolean constraint
valuesvalues of all variables which appear in the pseudoboolean constraint
linvarslinear variables
lincoefslinear coefficients
nlinvarsnumber of linear variables
constantoffset to the linear part
sideside of pseudoboolean constraint
consanddatasall consanddata objects in a constraint
consanddatacoefsnonlinear coefficients
consanddatanegsnegation status of and resultants in pseudo-boolean constraint
nconsanddatasnumber of all consanddata objects
cntnumber of variables set to 1
xortypepointer to save the possible xor type if a solution was valid and does not violate the old xortype

Definition at line 5371 of file cons_pseudoboolean.c.

References BMSclearMemoryArray, FALSE, ConsAndData::istransformed, MAXNVARS, ConsAndData::newvars, ConsAndData::nnewvars, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetBinvarRepresentatives(), SCIPisEQ(), SCIPisZero(), SCIPsortedvecFindPtr(), SCIPsortPtr(), SCIPsortPtrBool(), SCIPvarGetNegatedVar(), SCIPvarGetNegationVar(), SCIPvarIsNegated(), TRUE, and ConsAndData::vars.

Referenced by tryUpgradingXor().

◆ tryUpgradingXor()

static SCIP_RETCODE tryUpgradingXor ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONSHDLRDATA *const  conshdlrdata,
int *const  ndelconss,
int *const  naddconss,
int *const  nfixedvars,
int *const  nchgcoefs,
int *const  nchgsides,
SCIP_Bool *const  cutoff 
)
static

try upgrading pseudoboolean linear constraint to an XOR constraint and/or remove possible and-constraints

Note
An XOR(x_1,..,x_n) = 1 <=> XOR(x1,..,~x_j,..,x_n) = 0, for j in {1,..,n}, which is not yet checked while trying to upgrade
Parameters
scipSCIP data structure
conspseudoboolean constraint
conshdlrdatapseudoboolean constraint handler data
ndelconsspointer to store number of deleted constraints
naddconsspointer to count number of added constraints
nfixedvarspointer to store number of fixed variables
nchgcoefspointer to store number of changed coefficients constraints
nchgsidespointer to store number of changed sides constraints
cutoffpointer to store if a cutoff happened

Definition at line 5545 of file cons_pseudoboolean.c.

References BMSclearMemoryArray, checkConsConsistency, checkSolution(), FALSE, getLinearConsNVars(), getLinearConsVarsData(), getLinVarsAndAndRess(), ConsAndData::istransformed, MAXNVARS, ConsAndData::newvars, ConsAndData::nnewvars, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsXor(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetBinvarRepresentatives(), SCIPgetProbvarLinearSum(), SCIPisEQ(), SCIPisZero(), SCIPreleaseCons(), SCIPsnprintf(), SCIPsortPtr(), SCIPvarGetIndex(), SCIPvarGetLbGlobal(), SCIPvarGetNegationVar(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), SCIPvarIsNegated(), TRUE, and ConsAndData::vars.

Referenced by tryUpgrading().

◆ tryUpgradingLogicor()

static SCIP_RETCODE tryUpgradingLogicor ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONSHDLRDATA *const  conshdlrdata,
int *const  ndelconss,
int *const  naddconss,
int *const  nfixedvars,
int *const  nchgcoefs,
int *const  nchgsides,
SCIP_Bool *const  cutoff 
)
static

try upgrading pseudoboolean logicor constraint to a linear constraint and/or remove possible and-constraints

Parameters
scipSCIP data structure
conspseudoboolean constraint
conshdlrdatapseudoboolean constraint handler data
ndelconsspointer to store number of deleted constraints
naddconsspointer to count number of added constraints
nfixedvarspointer to store number of fixed variables
nchgcoefspointer to store number of changed coefficients constraints
nchgsidespointer to store number of changed sides constraints
cutoffpointer to store if a cutoff happened

Definition at line 5836 of file cons_pseudoboolean.c.

References getLinearConsNVars(), getLinearConsVarsData(), getLinVarsAndAndRess(), ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPaddCons(), SCIPallocBufferArray, SCIPchgLhsLinear(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPduplicateBufferArray, SCIPfixVar(), SCIPfreeBufferArray, SCIPinfinity(), SCIPisEQ(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetIndex(), TRUE, and ConsAndData::vars.

Referenced by tryUpgrading().

◆ tryUpgradingSetppc()

static SCIP_RETCODE tryUpgradingSetppc ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONSHDLRDATA *const  conshdlrdata,
int *const  ndelconss,
int *const  naddconss,
int *const  nfixedvars,
int *const  nchgcoefs,
int *const  nchgsides,
SCIP_Bool *const  cutoff 
)
static

try upgrading pseudoboolean setppc constraint to a linear constraint and/or remove possible and-constraints

Parameters
scipSCIP data structure
conspseudoboolean constraint
conshdlrdatapseudoboolean constraint handler data
ndelconsspointer to store number of deleted constraints
naddconsspointer to count number of added constraints
nfixedvarspointer to store number of fixed variables
nchgcoefspointer to store number of changed coefficients constraints
nchgsidespointer to store number of changed sides constraints
cutoffpointer to store if a cutoff happened

Definition at line 6348 of file cons_pseudoboolean.c.

References ConsAndData::cons, ConsAndData::newvars, ConsAndData::nnewvars, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_SETPPC, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_SETPPCTYPE_COVERING, SCIP_SETPPCTYPE_PACKING, SCIP_SETPPCTYPE_PARTITIONING, SCIPaddCoefLinear(), SCIPaddCons(), SCIPchgRhsLinear(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfixVar(), SCIPfreeBufferArray, SCIPgetResultantAnd(), SCIPgetTypeSetppc(), SCIPinfinity(), SCIPisLE(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetIndex(), TRUE, and ConsAndData::vars.

Referenced by tryUpgrading().

◆ tryUpgrading()

static SCIP_RETCODE tryUpgrading ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONSHDLRDATA *const  conshdlrdata,
int *const  ndelconss,
int *const  naddconss,
int *const  nfixedvars,
int *const  nchgcoefs,
int *const  nchgsides,
SCIP_Bool *const  cutoff 
)
static

try upgrading pseudoboolean constraint to a linear constraint and/or remove possible and-constraints

Parameters
scipSCIP data structure
conspseudoboolean constraint
conshdlrdatapseudoboolean constraint handler data
ndelconsspointer to store number of upgraded constraints
naddconsspointer to count number of added constraints
nfixedvarspointer to store number of fixed variables
nchgcoefspointer to store number of changed coefficients constraints
nchgsidespointer to store number of changed sides constraints
cutoffpointer to store if a cutoff happened

Definition at line 6824 of file cons_pseudoboolean.c.

References getLinearConsNVars(), NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIPconsAddUpgradeLocks(), SCIPconsGetData(), SCIPconsGetNUpgradeLocks(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPdelCons(), SCIPerrorMessage, TRUE, tryUpgradingLogicor(), tryUpgradingSetppc(), tryUpgradingXor(), and updateConsanddataUses().

Referenced by SCIP_DECL_CONSPRESOL().

◆ findAggregation()

static SCIP_RETCODE findAggregation ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONSHDLRDATA *const  conshdlrdata,
int *const  ndelconss,
int *const  naggrvars,
SCIP_Bool *const  cutoff 
)
static

◆ addSymmetryInformation()

◆ SCIP_DECL_CONSHDLRCOPY()

static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyPseudoboolean  )
static

copy method for constraint handler plugins (called when SCIP copies plugins)

Definition at line 7716 of file cons_pseudoboolean.c.

References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrPseudoboolean(), and TRUE.

◆ SCIP_DECL_CONSFREE()

static SCIP_DECL_CONSFREE ( consFreePseudoboolean  )
static

destructor of constraint handler to free constraint handler data (called when SCIP is exiting)

Definition at line 7732 of file cons_pseudoboolean.c.

References CONSHDLR_NAME, conshdlrdataFree(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPconshdlrSetData().

◆ SCIP_DECL_CONSINIT()

static SCIP_DECL_CONSINIT ( consInitPseudoboolean  )
static

◆ SCIP_DECL_CONSINITPRE()

◆ SCIP_DECL_CONSDELETE()

static SCIP_DECL_CONSDELETE ( consDeletePseudoboolean  )
static

◆ SCIP_DECL_CONSTRANS()

◆ SCIP_DECL_CONSENFOLP()

static SCIP_DECL_CONSENFOLP ( consEnfolpPseudoboolean  )
static

constraint enforcing method of constraint handler for LP solutions

Definition at line 8194 of file cons_pseudoboolean.c.

References checkAndConss(), CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, and SCIPconshdlrGetName().

◆ SCIP_DECL_CONSENFORELAX()

static SCIP_DECL_CONSENFORELAX ( consEnforelaxPseudoboolean  )
static

constraint enforcing method of constraint handler for relaxation solutions

Definition at line 8219 of file cons_pseudoboolean.c.

References checkAndConss(), CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, and SCIPconshdlrGetName().

◆ SCIP_DECL_CONSENFOPS()

static SCIP_DECL_CONSENFOPS ( consEnfopsPseudoboolean  )
static

constraint enforcing method of constraint handler for pseudo solutions

Definition at line 8244 of file cons_pseudoboolean.c.

References checkAndConss(), CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, and SCIPconshdlrGetName().

◆ SCIP_DECL_CONSCHECK()

static SCIP_DECL_CONSCHECK ( consCheckPseudoboolean  )
static

feasibility check method of constraint handler for integral solutions

Definition at line 8269 of file cons_pseudoboolean.c.

References checkAndConss(), checkOrigPbCons(), CONSHDLR_NAME, NULL, SCIP_Bool, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconsGetData(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPgetSolVal(), and SCIPisEQ().

◆ SCIP_DECL_CONSPRESOL()

◆ SCIP_DECL_CONSLOCK()

◆ SCIP_DECL_CONSPRINT()

static SCIP_DECL_CONSPRINT ( consPrintPseudoboolean  )
static

constraint display method of constraint handler

Warning
The linear-and-reformulation is part of the model and is separately printed by other constraint handlers

Definition at line 8662 of file cons_pseudoboolean.c.

References consdataPrint(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, and SCIPconshdlrGetName().

◆ SCIP_DECL_CONSCOPY()

static SCIP_DECL_CONSCOPY ( consCopyPseudoboolean  )
static

constraint copying method of constraint handler

Definition at line 8676 of file cons_pseudoboolean.c.

References copyConsPseudoboolean(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, and SCIPconsGetName().

◆ SCIP_DECL_CONSPARSE()

static SCIP_DECL_CONSPARSE ( consParsePseudoboolean  )
static

◆ SCIP_DECL_CONSGETVARS()

◆ SCIP_DECL_CONSGETNVARS()

static SCIP_DECL_CONSGETNVARS ( consGetNVarsPseudoboolean  )
static

◆ SCIP_DECL_CONSGETPERMSYMGRAPH()

static SCIP_DECL_CONSGETPERMSYMGRAPH ( consGetPermsymGraphPseudoboolean  )
static

constraint handler method which returns the permutation symmetry detection graph of a constraint

Definition at line 9340 of file cons_pseudoboolean.c.

References addSymmetryInformation(), SCIP_CALL, SCIP_OKAY, and SYM_SYMTYPE_PERM.

◆ SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH()

static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH ( consGetSignedPermsymGraphPseudoboolean  )
static

constraint handler method which returns the signed permutation symmetry detection graph of a constraint

Definition at line 9349 of file cons_pseudoboolean.c.

References addSymmetryInformation(), SCIP_CALL, SCIP_OKAY, and SYM_SYMTYPE_SIGNPERM.