Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

constraint handler for pseudo Boolean constraints

Author
Gerald Gamrath
Stefan Heinz
Michael Winkler

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 "symmetry/struct_symmetry.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 USEINDICATOR   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 (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 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_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

◆ CONSHDLR_DESC

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

Definition at line 79 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ CONSHDLR_ENFOPRIORITY

#define CONSHDLR_ENFOPRIORITY   -1000000

priority of the constraint handler for constraint enforcing

Definition at line 80 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ CONSHDLR_CHECKPRIORITY

#define CONSHDLR_CHECKPRIORITY   -5000000

priority of the constraint handler for checking feasibility

Definition at line 81 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ 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.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ CONSHDLR_MAXPREROUNDS

#define CONSHDLR_MAXPREROUNDS   -1

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

Definition at line 85 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ CONSHDLR_NEEDSCONS

#define CONSHDLR_NEEDSCONS   TRUE

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

Definition at line 86 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ CONSHDLR_PRESOLTIMING

#define CONSHDLR_PRESOLTIMING   SCIP_PRESOLTIMING_MEDIUM

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

Definition at line 88 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ DEFAULT_DECOMPOSENORMALPBCONS

#define DEFAULT_DECOMPOSENORMALPBCONS   FALSE

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

Definition at line 90 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ DEFAULT_DECOMPOSEINDICATORPBCONS

#define DEFAULT_DECOMPOSEINDICATORPBCONS   TRUE

decompose all indicator pseudo boolean constraint into a "linear" constraint and "and" constraints

Definition at line 91 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ DEFAULT_SEPARATENONLINEAR

#define DEFAULT_SEPARATENONLINEAR   TRUE

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

Definition at line 93 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ DEFAULT_PROPAGATENONLINEAR

#define DEFAULT_PROPAGATENONLINEAR   TRUE

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

Definition at line 94 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ DEFAULT_REMOVABLENONLINEAR

#define DEFAULT_REMOVABLENONLINEAR   TRUE

if decomposed, should the nonlinear constraints be removable

Definition at line 95 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ USEINDICATOR

#define USEINDICATOR   TRUE

Definition at line 96 of file cons_pseudoboolean.c.

◆ NONLINCONSUPGD_PRIORITY

#define NONLINCONSUPGD_PRIORITY   60000

priority of upgrading nonlinear constraints

Definition at line 97 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

◆ HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS

#define HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS   500

minimal size of hash table in and constraint tables

Definition at line 105 of file cons_pseudoboolean.c.

Referenced by inithashmapandtable().

◆ checkConsConsistency

◆ MAXNVARS

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

Definition at line 5576 of file cons_pseudoboolean.c.

Referenced by checkSolution(), and tryUpgradingXor().

Typedef Documentation

◆ CONSANDDATA

typedef struct ConsAndData CONSANDDATA

Definition at line 172 of file cons_pseudoboolean.c.

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP()

static SCIP_DECL_SORTPTRCOMP ( resvarCompWithInactive  )
static

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

Definition at line 244 of file cons_pseudoboolean.c.

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

◆ SCIP_DECL_HASHGETKEY()

static SCIP_DECL_HASHGETKEY ( hashGetKeyAndConsDatas  )
static

gets the key of the given element

Definition at line 306 of file cons_pseudoboolean.c.

References SCIP_DECL_HASHKEYEQ().

Referenced by SCIP_DECL_SORTPTRCOMP().

◆ 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 314 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_HASHGETKEY().

◆ SCIP_DECL_HASHKEYVAL()

static SCIP_DECL_HASHKEYVAL ( hashKeyValAndConsDatas  )
static

returns the hash value of the key

Definition at line 375 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_HASHKEYEQ().

◆ 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 408 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_HASHKEYVAL(), 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 440 of file cons_pseudoboolean.c.

References conshdlrdataFree(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, and SCIPallocBlockMemoryArray.

Referenced by inithashmapandtable(), and 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 475 of file cons_pseudoboolean.c.

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

Referenced by conshdlrdataCreate(), and 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

◆ 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

calculate all not artificial linear variables and all artificial and-resultants which will be ordered like the 'consanddatas' such that the and-resultant of the and-constraint is the and-resultant in the 'andress' array afterwards

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 783 of file cons_pseudoboolean.c.

References checkConsConsistency, ConsAndData::cons, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), ConsAndData::istransformed, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL_ABORT, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_OKAY, SCIP_Real, SCIP_STAGE_FREETRANS, SCIPallocBufferArray, SCIPallocClearBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconsIsDeleted(), SCIPconsIsOriginal(), SCIPfreeBufferArray, SCIPgetResultantAnd(), SCIPgetStage(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPisEQ(), SCIPisInfinity(), SCIPisLE(), SCIPsortPtr(), SCIPsortPtrRealBool(), SCIPvarGetIndex(), SCIPvarGetNegationVar(), SCIPvarIsActive(), SCIPvarIsNegated(), TRUE, and ConsAndData::vars.

Referenced by addCliques(), chgLhs(), chgRhs(), consdataPrint(), findAggregation(), getLinearConsVarsData(), 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 1048 of file cons_pseudoboolean.c.

References consdataCreate(), 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 1179 of file cons_pseudoboolean.c.

References consdataFree(), FALSE, getLinearConsNVars(), NULL, ConsAndData::nvars, 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(), TRUE, and ConsAndData::vars.

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

◆ consdataFree()

◆ 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 1646 of file cons_pseudoboolean.c.

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

Referenced by consdataFree(), 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 1666 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, unlockRoundingAndCons(), and ConsAndData::vars.

Referenced by addCoefTerm(), addNewLocks(), and checkLocksAndRes().

◆ 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 1735 of file cons_pseudoboolean.c.

References checkLocksAndRes(), ConsAndData::cons, consdataPrint(), 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(), lockRoundingAndCons(), and removeOldLocks().

◆ consdataPrint()

◆ 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 1993 of file cons_pseudoboolean.c.

References addCoefTerm(), 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(), consdataPrint(), 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 2333 of file cons_pseudoboolean.c.

References chgRhsLinearCons(), 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 addCoefTerm(), and 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 2364 of file cons_pseudoboolean.c.

References chgLhs(), 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 chgLhsLinearCons(), and 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 2743 of file cons_pseudoboolean.c.

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

Referenced by chgRhs(), and 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  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
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 2811 of file cons_pseudoboolean.c.

References checkOrigPbCons(), ConsAndData::cons, FALSE, NULL, ConsAndData::nvars, 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 createAndAddAnds(), and 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

◆ 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 3688 of file cons_pseudoboolean.c.

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

Referenced by checkOrigPbCons(), 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 3774 of file cons_pseudoboolean.c.

References computeConsAndDataChanges(), ConsAndData::cons, CONSHDLR_NAME, FALSE, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), NULL, 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(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsPseudobooleanWithConss(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetConsCopy(), SCIPgetResultantAnd(), SCIPgetVarCopy(), SCIPhashmapGetImage(), SCIPhashtableCreate(), SCIPhashtableExists(), SCIPhashtableFree(), SCIPhashtableInsert(), SCIPisConsCompressionEnabled(), SCIPreleaseCons(), SCIPverbMessage(), and TRUE.

Referenced by checkAndConss(), and 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 4195 of file cons_pseudoboolean.c.

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

Referenced by computeConsAndDataChanges(), 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 4223 of file cons_pseudoboolean.c.

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

Referenced by correctLocksAndCaptures(), and removeOldLocks().

◆ 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
andresscurrent and-resultants in pseudoboolean constraint
andcoefscurrent and-resultants-coeffcients in pseudoboolean constraint
andnegscurrent negation status of and-resultants in pseudoboolean constraint
nandressnumber of current and-resultants in pseudoboolean constraint

Definition at line 4251 of file cons_pseudoboolean.c.

References addCliques(), addNewLocks(), ConsAndData::cons, FALSE, getLinearConsNVars(), ConsAndData::istransformed, ConsAndData::nnewvars, 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(), TRUE, and unlockRoundingAndCons().

Referenced by addNewLocks(), and 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 5022 of file cons_pseudoboolean.c.

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

Referenced by addCliques(), and 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 5061 of file cons_pseudoboolean.c.

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

Referenced by propagateCons(), 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

◆ 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 5582 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, tryUpgradingXor(), 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 5756 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, tryUpgradingLogicor(), and ConsAndData::vars.

Referenced by checkSolution(), and 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 6047 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, tryUpgradingSetppc(), and ConsAndData::vars.

Referenced by tryUpgrading(), and tryUpgradingXor().

◆ 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 6559 of file cons_pseudoboolean.c.

References ConsAndData::cons, ConsAndData::istransformed, 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, tryUpgrading(), and ConsAndData::vars.

Referenced by tryUpgrading(), and tryUpgradingLogicor().

◆ 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 7035 of file cons_pseudoboolean.c.

References findAggregation(), getLinearConsNVars(), NULL, ConsAndData::nvars, 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(), and tryUpgradingSetppc().

◆ 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()

static SCIP_RETCODE addSymmetryInformation ( SCIP scip,
SYM_SYMTYPE  symtype,
SCIP_CONS cons,
SYM_GRAPH graph,
SCIP_Bool success 
)
static

adds symmetry information of constraint to a symmetry detection graph

Parameters
scipSCIP pointer
symtypetype of symmetries that need to be added
consconstraint
graphsymmetry detection graph
successpointer to store whether symmetry information could be added

Definition at line 7578 of file cons_pseudoboolean.c.

References FALSE, nterms, NULL, ConsAndData::nvars, SCIP_CALL, SCIP_DECL_CONSHDLRCOPY(), SCIP_DECL_NONLINCONSUPGD, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIP_Real, SCIPaddSymgraphConsnode(), SCIPaddSymgraphEdge(), SCIPaddSymgraphOpnode(), SCIPaddSymgraphVarAggregation(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsPseudoboolean(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetIndVarPseudoboolean(), SCIPgetLhsNonlinear(), SCIPgetLhsPseudoboolean(), SCIPgetLinearConsPseudoboolean(), SCIPgetLinearConsTypePseudoboolean(), SCIPgetNVars(), SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetRhsNonlinear(), SCIPgetRhsPseudoboolean(), SCIPgetSymActiveVariables(), SCIPgetValsLinear(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsLogicor(), SCIPgetVarsSetppc(), SCIPgetWeightsKnapsack(), SCIPisInfinity(), SCIPisTransformed(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPwarningMessage(), SYM_CONSOPTYPE_PB_AND, SYM_CONSOPTYPE_PB_LINEAR, SYM_CONSOPTYPE_PB_OBJ, SYM_CONSOPTYPE_PB_SOFT, TRUE, and ConsAndData::vars.

Referenced by findAggregation(), SCIP_DECL_CONSGETPERMSYMGRAPH(), and SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH().

◆ SCIP_DECL_CONSHDLRCOPY()

static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyPseudoboolean  )
static

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

Definition at line 7948 of file cons_pseudoboolean.c.

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

Referenced by addSymmetryInformation().

◆ 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 7964 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSHDLRCOPY().

◆ 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 8426 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSTRANS().

◆ SCIP_DECL_CONSENFORELAX()

static SCIP_DECL_CONSENFORELAX ( consEnforelaxPseudoboolean  )
static

constraint enforcing method of constraint handler for relaxation solutions

Definition at line 8451 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSENFOLP().

◆ SCIP_DECL_CONSENFOPS()

static SCIP_DECL_CONSENFOPS ( consEnfopsPseudoboolean  )
static

constraint enforcing method of constraint handler for pseudo solutions

Definition at line 8476 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSENFORELAX().

◆ SCIP_DECL_CONSCHECK()

static SCIP_DECL_CONSCHECK ( consCheckPseudoboolean  )
static

◆ SCIP_DECL_CONSPRESOL()

◆ SCIP_DECL_CONSLOCK()

◆ SCIP_DECL_CONSPRINT()

static SCIP_DECL_CONSPRINT ( consPrintPseudoboolean  )
static

constraint display method of constraint handler

Definition at line 8893 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSLOCK().

◆ SCIP_DECL_CONSCOPY()

static SCIP_DECL_CONSCOPY ( consCopyPseudoboolean  )
static

constraint copying method of constraint handler

Definition at line 8907 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSPRINT().

◆ SCIP_DECL_CONSGETVARS()

◆ SCIP_DECL_CONSGETNVARS()

◆ 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 9224 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSGETNVARS().

◆ 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 9233 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSGETPERMSYMGRAPH().