Scippy

SCIP

Solving Constraint Integer Programs

cons_pseudoboolean.c File Reference

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 <assert.h>
#include <string.h>
#include "scip/cons_pseudoboolean.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_setppc.h"
#include "scip/cons_xor.h"
#include "scip/pub_var.h"
#include "scip/debug.h"

Go to the source code of this file.

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 HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS   131101
 
#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_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_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)
 
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

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

Definition at line 53 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define CONSHDLR_ENFOPRIORITY   -1000000

priority of the constraint handler for constraint enforcing

Definition at line 54 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define CONSHDLR_CHECKPRIORITY   -5000000

priority of the constraint handler for checking feasibility

Definition at line 55 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

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

Referenced by SCIPincludeConshdlrPseudoboolean().

#define CONSHDLR_MAXPREROUNDS   -1

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

Definition at line 59 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define CONSHDLR_NEEDSCONS   TRUE

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

Definition at line 60 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define CONSHDLR_PRESOLTIMING   SCIP_PRESOLTIMING_MEDIUM

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

Definition at line 62 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define DEFAULT_DECOMPOSENORMALPBCONS   FALSE

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

Definition at line 64 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define DEFAULT_DECOMPOSEINDICATORPBCONS   TRUE

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

Definition at line 65 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define DEFAULT_SEPARATENONLINEAR   TRUE

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

Definition at line 67 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define DEFAULT_PROPAGATENONLINEAR   TRUE

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

Definition at line 68 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define DEFAULT_REMOVABLENONLINEAR   TRUE

if decomposed, should the nonlinear constraints be removable

Definition at line 69 of file cons_pseudoboolean.c.

Referenced by SCIPincludeConshdlrPseudoboolean().

#define USEINDICATOR   TRUE

Definition at line 70 of file cons_pseudoboolean.c.

#define HASHSIZE_PSEUDOBOOLEANNONLINEARTERMS   131101

minimal size of hash table in and constraint tables

Definition at line 75 of file cons_pseudoboolean.c.

Referenced by inithashmapandtable().

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

Definition at line 5455 of file cons_pseudoboolean.c.

Referenced by checkSolution(), and tryUpgradingXor().

Typedef Documentation

typedef struct ConsAndData CONSANDDATA

Definition at line 142 of file cons_pseudoboolean.c.

Function Documentation

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

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

static SCIP_DECL_HASHGETKEY ( hashGetKeyAndConsDatas  )
static

gets the key of the given element

Definition at line 276 of file cons_pseudoboolean.c.

References SCIP_DECL_HASHKEYEQ().

Referenced by SCIP_DECL_SORTPTRCOMP().

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 284 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().

static SCIP_DECL_HASHKEYVAL ( hashKeyValAndConsDatas  )
static

returns the hash value of the key

Definition at line 345 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_HASHKEYEQ().

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

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

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

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

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

Referenced by inithashmapandtable(), and SCIPincludeConshdlrPseudoboolean().

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

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

Referenced by conshdlrdataCreate(), and SCIP_DECL_CONSFREE().

static SCIP_RETCODE getLinearConsSides ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_LINEARCONSTYPE const  constype,
SCIP_Real *const  lhs,
SCIP_Real *const  rhs 
)
static
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
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 749 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().

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 1018 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().

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 1147 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().

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

References lockRoundingAndCons(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_FREETRANS, SCIPgetStage(), SCIPremoveVarFromGlobalStructures(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), and SCIPvarIsActive().

Referenced by consdataFree(), SCIP_DECL_CONSLOCK(), and unlockRoundingAndCons().

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

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

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

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

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

Referenced by correctLocksAndCaptures(), lockRoundingAndCons(), and removeOldLocks().

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 1959 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().

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 2299 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().

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 2330 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().

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

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

Referenced by chgRhs(), and SCIPcreateConsPseudoboolean().

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 2775 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(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPfeasFloor(), SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetNegatedVar(), SCIPinfinity(), SCIPisEQ(), SCIPisFeasIntegral(), SCIPisInfinity(), SCIPisIntegral(), SCIPisPositive(), SCIPisZero(), SCIPreleaseCons(), SCIPsnprintf(), SCIPwarningMessage(), and TRUE.

Referenced by createAndAddAnds(), and SCIPcreateConsPseudoboolean().

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

References checkAndConss(), FALSE, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsOriginal(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetSolVal(), SCIPgetVarsAnd(), SCIPhashmapExists(), SCIPinfoMessage(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisLE(), SCIPprintCons(), SCIPsortPtrReal(), SCIPvarGetNegationVar(), SCIPvarIsNegated(), TRUE, and ConsAndData::vars.

Referenced by createAndAddLinearCons(), and SCIP_DECL_CONSCHECK().

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

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

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

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

References computeConsAndDataChanges(), ConsAndData::cons, CONSHDLR_NAME, FALSE, 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, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsPseudobooleanWithConss(), SCIPdebugMessage, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArrayNull, SCIPgetConsCopy(), SCIPgetVarCopy(), SCIPreleaseCons(), SCIPverbMessage(), and TRUE.

Referenced by checkAndConss(), and SCIP_DECL_CONSCOPY().

static SCIP_RETCODE computeConsAndDataChanges ( SCIP *const  scip,
SCIP_CONSHDLRDATA *const  conshdlrdata 
)
static
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 4073 of file cons_pseudoboolean.c.

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

Referenced by computeConsAndDataChanges(), correctLocksAndCaptures(), and updateConsanddataUses().

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

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

Referenced by correctLocksAndCaptures(), and removeOldLocks().

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 4129 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().

static SCIP_RETCODE addCliques ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_Bool *const  cutoff,
int *const  naggrvars,
int *const  nchgbds 
)
static
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 4899 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().

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 4938 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().

static SCIP_RETCODE updateConsanddataUses ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONSHDLRDATA *const  conshdlrdata,
int *const  ndelconss 
)
static
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 5461 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().

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 5635 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(), SCIPdebugMessage, 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().

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 5926 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(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPdelCons(), SCIPduplicateBufferArray, SCIPfixVar(), SCIPfreeBufferArray, SCIPinfinity(), SCIPisEQ(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetIndex(), TRUE, tryUpgradingSetppc(), and ConsAndData::vars.

Referenced by tryUpgrading(), and tryUpgradingXor().

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 6438 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(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPdelCons(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfixVar(), SCIPfreeBufferArray, SCIPgetResultantAnd(), SCIPgetTypeSetppc(), SCIPinfinity(), SCIPisLE(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetIndex(), TRUE, tryUpgrading(), and ConsAndData::vars.

Referenced by tryUpgrading(), and tryUpgradingLogicor().

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 6914 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().

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
static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyPseudoboolean  )
static

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

Definition at line 7465 of file cons_pseudoboolean.c.

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

Referenced by findAggregation().

static SCIP_DECL_CONSFREE ( consFreePseudoboolean  )
static

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

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

static SCIP_DECL_CONSINIT ( consInitPseudoboolean  )
static
static SCIP_DECL_CONSDELETE ( consDeletePseudoboolean  )
static
static SCIP_DECL_CONSENFOLP ( consEnfolpPseudoboolean  )
static

constraint enforcing method of constraint handler for LP solutions

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

static SCIP_DECL_CONSENFOPS ( consEnfopsPseudoboolean  )
static

constraint enforcing method of constraint handler for pseudo solutions

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

static SCIP_DECL_CONSCHECK ( consCheckPseudoboolean  )
static
static SCIP_DECL_CONSPRINT ( consPrintPseudoboolean  )
static

constraint display method of constraint handler

Definition at line 8384 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSLOCK().

static SCIP_DECL_CONSCOPY ( consCopyPseudoboolean  )
static

constraint copying method of constraint handler

Definition at line 8398 of file cons_pseudoboolean.c.

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

Referenced by SCIP_DECL_CONSPRINT().

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 
)

creates and captures a pseudoboolean constraint, with given linear and and-constraints

Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
linconsassociated linear constraint
linconstypelinear constraint type of associated linear constraint
andconssassociated and-constraints
andcoefsassociated coefficients of and-constraints
nandconssnumber of associated 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 funktion
lhsleft hand side of constraint
rhsright hand side of 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.

Definition at line 8771 of file cons_pseudoboolean.c.

References BMScopyMemoryArray, ConsAndData::cons, consdataCreate(), CONSHDLR_NAME, FALSE, inithashmapandtable(), ConsAndData::isoriginal, ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, ConsAndData::noriguses, NULL, ConsAndData::nuses, ConsAndData::nvars, ConsAndData::origcons, SCIP_Bool, SCIP_CALL, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPallocBlockMemory, SCIPcalcMemGrowSize(), SCIPcaptureCons(), SCIPcaptureVar(), SCIPconsAddUpgradeLocks(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPcreateCons(), SCIPcreateConsPseudoboolean(), SCIPduplicateBlockMemoryArray, SCIPensureBlockMemoryArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPhashmapExists(), SCIPhashmapInsert(), SCIPhashtableInsert(), SCIPhashtableRetrieve(), SCIPinfinity(), SCIPisInfinity(), SCIPsortPtr(), SCIPwarningMessage(), ConsAndData::snewvars, ConsAndData::svars, TRUE, and ConsAndData::vars.

Referenced by copyConsPseudoboolean(), and SCIPincludeConshdlrPseudoboolean().

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 
)

creates and captures a pseudoboolean constraint

Note
linear and nonlinear terms can be added using SCIPaddCoefPseudoboolean() and SCIPaddTermPseudoboolean(), respectively
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
linvarsvariables of the linear part, or NULL
nlinvarsnumber of variables of the linear part
linvalscoefficients of linear part, or NULL
termsnonlinear terms of variables, or NULL
ntermsnumber of terms of variables of nonlinear term
ntermvarsnumber of variables in nonlinear terms, or NULL
termvalscoefficients of nonlinear parts, or NULL
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 constraint
rhsright hand side of 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 separated 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.

Definition at line 9040 of file cons_pseudoboolean.c.

References consdataCreate(), CONSHDLR_NAME, createAndAddAnds(), createAndAddLinearCons(), FALSE, inithashmapandtable(), NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIPallocBufferArray, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPcreateConsBasicPseudoboolean(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetResultantAnd(), SCIPinfinity(), and SCIPisInfinity().

Referenced by readConstraints(), SCIPcreateConsBasicPseudoboolean(), SCIPcreateConsPseudobooleanWithConss(), and setObjective().

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 
)

creates and captures a pseudoboolean constraint in its most basic variant, i. e., with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
linvarsvariables of the linear part, or NULL
nlinvarsnumber of variables of the linear part
linvalscoefficients of linear part, or NULL
termsnonlinear terms of variables, or NULL
ntermsnumber of terms of variables of nonlinear term
ntermvarsnumber of variables in nonlinear terms, or NULL
termvalscoefficients of nonlinear parts, or NULL
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 constraint
rhsright hand side of constraint

Definition at line 9187 of file cons_pseudoboolean.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIPaddCoefPseudoboolean(), SCIPcreateConsPseudoboolean(), and TRUE.

Referenced by SCIPcreateConsPseudoboolean().

SCIP_RETCODE SCIPaddCoefPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_VAR *const  var,
SCIP_Real const  val 
)

adds a variable to the pseudo boolean constraint (if it is not zero)

Note
you can only add a coefficient if the special type of linear constraint won't changed
Parameters
scipSCIP data structure
consconstraint data
varvariable of constraint entry
valcoefficient of constraint entry

Definition at line 9222 of file cons_pseudoboolean.c.

References CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_Longint, SCIP_OKAY, SCIPABORT, SCIPaddCoefKnapsack(), SCIPaddCoefLinear(), SCIPaddCoefLogicor(), SCIPaddCoefSetppc(), SCIPaddTermPseudoboolean(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPisEQ(), SCIPisIntegral(), SCIPisPositive(), and SCIPisZero().

Referenced by SCIPcreateConsBasicPseudoboolean().

SCIP_RETCODE SCIPaddTermPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_VAR **const  vars,
int const  nvars,
SCIP_Real const  val 
)

adds nonlinear term to pseudo boolean constraint (if it is not zero)

Note
you can only add a coefficient if the special type of linear constraint won't changed
Parameters
scipSCIP data structure
conspseudoboolean constraint
varsvariables of the nonlinear term
nvarsnumber of variables of the nonlinear term
valcoefficient of constraint entry

Definition at line 9299 of file cons_pseudoboolean.c.

References addCoefTerm(), CONSHDLR_NAME, NULL, ConsAndData::nvars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetIndVarPseudoboolean().

Referenced by SCIPaddCoefPseudoboolean().

SCIP_VAR* SCIPgetIndVarPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons 
)

gets indicator variable of pseudoboolean constraint, or NULL if there is no

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9324 of file cons_pseudoboolean.c.

References CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetLinearConsPseudoboolean().

Referenced by SCIPaddTermPseudoboolean(), and writeOpbConstraints().

SCIP_CONS* SCIPgetLinearConsPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons 
)

gets linear constraint of pseudoboolean constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9348 of file cons_pseudoboolean.c.

References CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetLinearConsTypePseudoboolean().

Referenced by SCIPgetIndVarPseudoboolean(), and writeOpbConstraints().

SCIP_LINEARCONSTYPE SCIPgetLinearConsTypePseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons 
)

gets type of linear constraint of pseudoboolean constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9372 of file cons_pseudoboolean.c.

References CONSHDLR_NAME, NULL, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetNLinVarsWithoutAndPseudoboolean().

Referenced by SCIPgetLinearConsPseudoboolean().

int SCIPgetNLinVarsWithoutAndPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons 
)

gets number of linear variables without artificial terms variables of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint

Definition at line 9396 of file cons_pseudoboolean.c.

References checkConsConsistency, CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetLinDatasWithoutAndPseudoboolean().

Referenced by SCIPgetLinearConsTypePseudoboolean(), and writeOpbConstraints().

SCIP_RETCODE SCIPgetLinDatasWithoutAndPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_VAR **const  linvars,
SCIP_Real *const  lincoefs,
int *const  nlinvars 
)

gets linear constraint of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint
linvarsarray to store and-constraints
lincoefsarray to store and-coefficients
nlinvarspointer to store the required array size for and-constraints, have to be initialized with size of given array

Definition at line 9422 of file cons_pseudoboolean.c.

References checkConsConsistency, CONSHDLR_NAME, getLinearConsNVars(), getLinearConsVarsData(), getLinVarsAndAndRess(), NULL, ConsAndData::nvars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetAndDatasPseudoboolean(), and ConsAndData::vars.

Referenced by SCIPgetNLinVarsWithoutAndPseudoboolean(), and writeOpbConstraints().

SCIP_RETCODE SCIPgetAndDatasPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_CONS **const  andconss,
SCIP_Real *const  andcoefs,
int *const  nandconss 
)

gets and-constraints of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint
andconssarray to store and-constraints
andcoefsarray to store and-coefficients
nandconsspointer to store the required array size for and-constraints, have to be initialized with size of given array

Definition at line 9482 of file cons_pseudoboolean.c.

References checkConsConsistency, CONSHDLR_NAME, NULL, SCIP_Bool, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPerrorMessage, SCIPgetNAndsPseudoboolean(), and TRUE.

Referenced by SCIPgetLinDatasWithoutAndPseudoboolean(), and writeOpbConstraints().

int SCIPgetNAndsPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons 
)

gets number of and constraints of pseudoboolean constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9542 of file cons_pseudoboolean.c.

References checkConsConsistency, CONSHDLR_NAME, NULL, SCIPABORT, SCIPchgLhsPseudoboolean(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPgetAndDatasPseudoboolean(), and writeOpbConstraints().

SCIP_RETCODE SCIPchgLhsPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_Real const  lhs 
)

changes left hand side of pseudoboolean constraint

Note
you can only change the left hand side if the special type of linear constraint won't changed
Parameters
scipSCIP data structure
consconstraint data
lhsnew left hand side

Definition at line 9574 of file cons_pseudoboolean.c.

References checkConsConsistency, chgLhs(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIPchgRhsPseudoboolean(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPgetNAndsPseudoboolean().

SCIP_RETCODE SCIPchgRhsPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons,
SCIP_Real const  rhs 
)

changes right hand side of pseudoboolean constraint

Note
you can only change the right hand side if the special type of linear constraint won't changed
Parameters
scipSCIP data structure
consconstraint data
rhsnew right hand side

Definition at line 9625 of file cons_pseudoboolean.c.

References checkConsConsistency, chgRhs(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetLhsPseudoboolean().

Referenced by SCIPchgLhsPseudoboolean().

SCIP_Real SCIPgetLhsPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons 
)

get left hand side of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint

Definition at line 9667 of file cons_pseudoboolean.c.

References checkConsConsistency, CONSHDLR_NAME, NULL, SCIP_INVALID, SCIP_Real, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetRhsPseudoboolean().

Referenced by SCIPchgRhsPseudoboolean(), and writeOpbConstraints().

SCIP_Real SCIPgetRhsPseudoboolean ( SCIP *const  scip,
SCIP_CONS *const  cons 
)

get right hand side of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint

Definition at line 9690 of file cons_pseudoboolean.c.

References checkConsConsistency, CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPgetLhsPseudoboolean(), and writeOpbConstraints().