Detailed Description
constraint handler for pseudo Boolean constraints
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 <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_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) |
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_VAR * | SCIPgetIndVarPseudoboolean (SCIP *const scip, SCIP_CONS *const cons) |
SCIP_CONS * | SCIPgetLinearConsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons) |
SCIP_LINEARCONSTYPE | SCIPgetLinearConsTypePseudoboolean (SCIP *const scip, SCIP_CONS *const cons) |
int | SCIPgetNLinVarsWithoutAndPseudoboolean (SCIP *const scip, SCIP_CONS *const cons) |
SCIP_RETCODE | SCIPgetLinDatasWithoutAndPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const linvars, SCIP_Real *const lincoefs, int *const nlinvars) |
SCIP_RETCODE | SCIPgetAndDatasPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONS **const andconss, SCIP_Real *const andcoefs, int *const nandconss) |
int | SCIPgetNAndsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons) |
SCIP_RETCODE | SCIPchgLhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_Real const lhs) |
SCIP_RETCODE | SCIPchgRhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_Real const rhs) |
SCIP_Real | SCIPgetLhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons) |
SCIP_Real | SCIPgetRhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons) |
Macro Definition Documentation
◆ CONSHDLR_NAME
#define CONSHDLR_NAME "pseudoboolean" |
Definition at line 76 of file cons_pseudoboolean.c.
Referenced by copyConsPseudoboolean(), createAndAddAndCons(), SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSDELETE(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSENFORELAX(), SCIP_DECL_CONSFREE(), SCIP_DECL_CONSHDLRCOPY(), SCIP_DECL_CONSINIT(), SCIP_DECL_CONSINITPRE(), SCIP_DECL_CONSLOCK(), SCIP_DECL_CONSPRESOL(), SCIP_DECL_CONSPRINT(), SCIP_DECL_CONSTRANS(), SCIPaddCoefPseudoboolean(), SCIPaddTermPseudoboolean(), SCIPchgLhsPseudoboolean(), SCIPchgRhsPseudoboolean(), SCIPcreateConsPseudoboolean(), SCIPcreateConsPseudobooleanWithConss(), SCIPgetAndDatasPseudoboolean(), SCIPgetIndVarPseudoboolean(), SCIPgetLhsPseudoboolean(), SCIPgetLinDatasWithoutAndPseudoboolean(), SCIPgetLinearConsPseudoboolean(), SCIPgetLinearConsTypePseudoboolean(), SCIPgetNAndsPseudoboolean(), SCIPgetNLinVarsWithoutAndPseudoboolean(), SCIPgetRhsPseudoboolean(), and SCIPincludeConshdlrPseudoboolean().
◆ CONSHDLR_DESC
#define CONSHDLR_DESC "constraint handler dealing with pseudo Boolean constraints" |
Definition at line 77 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 78 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 79 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 80 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 83 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 84 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 86 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 88 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 89 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 91 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 92 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 93 of file cons_pseudoboolean.c.
Referenced by SCIPincludeConshdlrPseudoboolean().
◆ USEINDICATOR
#define USEINDICATOR TRUE |
Definition at line 94 of file cons_pseudoboolean.c.
◆ NONLINCONSUPGD_PRIORITY
#define NONLINCONSUPGD_PRIORITY 60000 |
priority of upgrading nonlinear constraints
Definition at line 95 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 103 of file cons_pseudoboolean.c.
Referenced by inithashmapandtable().
◆ checkConsConsistency
#define checkConsConsistency | ( | scip, | |
cons | |||
) |
Definition at line 1038 of file cons_pseudoboolean.c.
Referenced by addCliques(), getLinVarsAndAndRess(), SCIPchgLhsPseudoboolean(), SCIPchgRhsPseudoboolean(), SCIPgetAndDatasPseudoboolean(), SCIPgetLhsPseudoboolean(), SCIPgetLinDatasWithoutAndPseudoboolean(), SCIPgetNAndsPseudoboolean(), SCIPgetNLinVarsWithoutAndPseudoboolean(), SCIPgetRhsPseudoboolean(), and tryUpgradingXor().
◆ MAXNVARS
#define MAXNVARS 10 /* note that this cannot be bigger than 31 */ |
Definition at line 5580 of file cons_pseudoboolean.c.
Referenced by checkSolution(), and tryUpgradingXor().
Typedef Documentation
◆ CONSANDDATA
typedef struct ConsAndData CONSANDDATA |
Definition at line 170 of file cons_pseudoboolean.c.
Function Documentation
◆ SCIP_DECL_SORTPTRCOMP()
|
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 242 of file cons_pseudoboolean.c.
References ConsAndData::cons, ConsAndData::istransformed, NULL, SCIP_DECL_HASHGETKEY(), SCIPconsIsDeleted(), SCIPgetResultantAnd(), and SCIPvarGetIndex().
◆ SCIP_DECL_HASHGETKEY()
|
static |
gets the key of the given element
Definition at line 304 of file cons_pseudoboolean.c.
References SCIP_DECL_HASHKEYEQ().
Referenced by SCIP_DECL_SORTPTRCOMP().
◆ SCIP_DECL_HASHKEYEQ()
|
static |
returns TRUE iff both keys are equal; two non-linear terms are equal if they have the same variables
Definition at line 312 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 |
returns the hash value of the key
Definition at line 373 of file cons_pseudoboolean.c.
References inithashmapandtable(), NULL, ConsAndData::nvars, SCIPhashFour, SCIPvarGetIndex(), and ConsAndData::vars.
Referenced by SCIP_DECL_HASHKEYEQ().
◆ inithashmapandtable()
|
static |
initializes the hashmap and -table used in this constraint handler data for artificial variables and specific and-constraint data objects
- Parameters
-
scip SCIP data structure conshdlrdata pointer to store the constraint handler data
Definition at line 406 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 |
creates constraint handler data for pseudo boolean constraint handler
- Parameters
-
scip SCIP data structure conshdlrdata pointer to store the constraint handler data
Definition at line 438 of file cons_pseudoboolean.c.
References conshdlrdataFree(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, and SCIPallocBlockMemoryArray.
Referenced by inithashmapandtable(), and SCIPincludeConshdlrPseudoboolean().
◆ conshdlrdataFree()
|
static |
frees constraint handler data for pseudo boolean constraint handler
- Parameters
-
scip SCIP data structure conshdlrdata pointer to the constraint handler data
Definition at line 473 of file cons_pseudoboolean.c.
References FALSE, getLinearConsNVars(), NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPhashmapFree(), and SCIPhashtableFree().
Referenced by conshdlrdataCreate(), and SCIP_DECL_CONSFREE().
◆ getLinearConsNVars()
|
static |
gets number of variables in linear constraint
- Parameters
-
scip SCIP data structure cons linear constraint constype linear constraint type nvars pointer to store number variables of linear constraint
Definition at line 512 of file cons_pseudoboolean.c.
References getLinearConsSides(), NULL, ConsAndData::nvars, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIPerrorMessage, SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsLogicor(), and SCIPgetNVarsSetppc().
Referenced by addCliques(), checkOrigPbCons(), chgLhs(), chgRhs(), consdataCreate(), consdataPrint(), conshdlrdataFree(), copyConsPseudoboolean(), correctLocksAndCaptures(), findAggregation(), getLinVarsAndAndRess(), SCIP_DECL_CONSGETNVARS(), SCIP_DECL_CONSGETVARS(), SCIP_DECL_CONSINITPRE(), SCIP_DECL_CONSPRESOL(), SCIPgetLinDatasWithoutAndPseudoboolean(), tryUpgrading(), tryUpgradingLogicor(), and tryUpgradingXor().
◆ getLinearConsSides()
|
static |
gets sides of linear constraint
- Parameters
-
scip SCIP data structure cons linear constraint constype linear constraint type lhs pointer to store left hand side of linear constraint rhs pointer to store right hand side of linear constraint
Definition at line 555 of file cons_pseudoboolean.c.
References getLinearConsVarsData(), SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIP_SETPPCTYPE_COVERING, SCIP_SETPPCTYPE_PACKING, SCIP_SETPPCTYPE_PARTITIONING, SCIPerrorMessage, SCIPgetCapacityKnapsack(), SCIPgetLhsLinear(), SCIPgetRhsLinear(), SCIPgetTypeSetppc(), and SCIPinfinity().
Referenced by checkOrigPbCons(), chgLhs(), chgRhs(), consdataPrint(), copyConsPseudoboolean(), getLinearConsNVars(), getLinVarsAndAndRess(), SCIP_DECL_CONSINITPRE(), and SCIP_DECL_CONSPRESOL().
◆ getLinearConsVarsData()
|
static |
gets variables and coefficients of linear constraint
- Parameters
-
scip SCIP data structure cons linear constraint constype linear constraint type vars array to store sorted (after indices) variables of linear constraint coefs array to store coefficient of linear constraint, or NULL nvars pointer to store number variables of linear constraint
Definition at line 618 of file cons_pseudoboolean.c.
References getLinVarsAndAndRess(), NULL, ConsAndData::nvars, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetValsLinear(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsLogicor(), SCIPgetVarsSetppc(), SCIPgetWeightsKnapsack(), SCIPsortPtr(), and SCIPsortPtrReal().
Referenced by addCliques(), checkOrigPbCons(), chgLhs(), chgRhs(), consdataPrint(), copyConsPseudoboolean(), findAggregation(), getLinearConsSides(), getLinVarsAndAndRess(), SCIP_DECL_CONSGETNVARS(), SCIP_DECL_CONSGETVARS(), SCIP_DECL_CONSINITPRE(), SCIP_DECL_CONSPRESOL(), SCIPgetLinDatasWithoutAndPseudoboolean(), tryUpgradingLogicor(), and tryUpgradingXor().
◆ getLinVarsAndAndRess()
|
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
-
scip SCIP data structure cons pseudoboolean constraint vars all variables of linear constraint coefs all coefficients of linear constraint, or NULL nvars number of all variables of linear constraint linvars array to store not and-resultant variables of linear constraint, or NULL lincoefs array to store coefficients of not and-resultant variables of linear constraint, or NULL nlinvars pointer to store number of not and-resultant variables, or NULL andress array to store and-resultant variables of linear constraint, or NULL andcoefs array to store coefficients of and-resultant variables of linear constraint, or NULL andnegs array to store negation status of and-resultant variables of linear constraint, or NULL nandress pointer to store number of and-resultant variables, or NULL
Definition at line 781 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 |
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
-
scip SCIP data structure consanddata consanddata object conshdlrdata constraint handler data
Definition at line 1046 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 |
creates a pseudo boolean constraint data
- Parameters
-
scip SCIP data structure conshdlr pseudoboolean constraint handler consdata pointer to linear constraint data lincons linear constraint with artificial and-resultants representing this pseudoboolean constraint linconstype type of linear constraint andconss array of and-constraints which occur in this pseudoboolean constraint andcoefs coefficients of and-constraints andnegs negation status of and-constraints (or NULL, if no negated resultants) nandconss number of and-constraints indvar indicator variable if it's a soft constraint, or NULL weight weight of the soft constraint, if it is one issoftcons is this a soft constraint intvar a 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 lhs left hand side of row rhs right hand side of row check is the new constraint a check constraint? transforming are we called by CONSTRANS
Definition at line 1177 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()
|
static |
free a pseudo boolean constraint data
- Parameters
-
scip SCIP data structure consdata pointer to linear constraint data isorig are we freeing an original constraint? conshdlrdata constraint handler data
Definition at line 1415 of file cons_pseudoboolean.c.
References checkLocksAndRes(), ConsAndData::isoriginal, ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, ConsAndData::noriguses, NULL, ConsAndData::nuses, ConsAndData::nvars, ConsAndData::origcons, SCIP_CALL, SCIP_OKAY, SCIPconsIsOriginal(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapRemove(), SCIPhashtableExists(), SCIPhashtableRemove(), SCIPhashtableRetrieve(), SCIPreleaseCons(), SCIPvarIsOriginal(), ConsAndData::snewvars, ConsAndData::svars, transformToOrig(), TRUE, and ConsAndData::vars.
Referenced by consdataCreate(), and SCIP_DECL_CONSDELETE().
◆ checkLocksAndRes()
|
static |
check the locks of an AND resultant and removes it from all global structures if the resultant is not locked anymore
- Parameters
-
scip SCIP data structure res resultant of AND constraint
Definition at line 1644 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 |
installs rounding locks for the given and-constraint associated with given coefficient
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint consanddata CONSANDDATA object for which we want to add the locks coef coefficient which led to old locks lhs left hand side rhs right hand side
Definition at line 1664 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 |
removes rounding locks for the given and-constraint associated with given coefficient
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint consanddata CONSANDDATA object for which we want to delete the locks coef coefficient which led to old locks lhs left hand side which led to old locks rhs right hand side which led to old locks
Definition at line 1733 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()
|
static |
prints pseudoboolean constraint in CIP format to file stream
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint file output file (or NULL for standard output)
Definition at line 1802 of file cons_pseudoboolean.c.
References ConsAndData::cons, createAndAddAndCons(), FALSE, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), getLinVarsAndAndRess(), NULL, ConsAndData::nvars, ConsAndData::origcons, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_AGGREGATED, SCIP_VARTYPE_BINARY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconsIsDeleted(), SCIPconsIsOriginal(), SCIPfreeBufferArray, SCIPgetBinvarRepresentative(), SCIPgetNVarsAnd(), SCIPgetVarsAnd(), SCIPhashmapGetImage(), SCIPinfoMessage(), SCIPisEQ(), SCIPisInfinity(), SCIPisLE(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPwriteVarsLinearsum(), SCIPwriteVarsList(), TRUE, and ConsAndData::vars.
Referenced by SCIP_DECL_CONSPRINT(), and unlockRoundingAndCons().
◆ createAndAddAndCons()
|
static |
creates and/or adds the resultant for a given term
- Parameters
-
scip SCIP data structure conshdlr pseudoboolean constraint handler vars array of variables to get and-constraints for nvars number of variables to get and-constraints for initial should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'. enforce should the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints. check should the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints. local is constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. modifiable is constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint. dynamic is constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints. stickingatnode should 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. andcons pointer to store and-constraint
Definition at line 1991 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()
|
static |
adds a term to the given pseudoboolean constraint
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint vars variables of the nonlinear term nvars number of variables of the nonlinear term val coefficient of constraint entry
Definition at line 2228 of file cons_pseudoboolean.c.
References chgLhsLinearCons(), createAndAddAndCons(), FALSE, lockRoundingAndCons(), NULL, ConsAndData::nvars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_Longint, SCIP_OKAY, SCIPaddCoefKnapsack(), SCIPaddCoefLinear(), SCIPaddCoefLogicor(), SCIPaddCoefSetppc(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsStickingAtNode(), SCIPensureBlockMemoryArray, SCIPerrorMessage, SCIPgetResultantAnd(), SCIPhashmapGetImage(), SCIPisEQ(), SCIPisIntegral(), SCIPisPositive(), SCIPisZero(), and TRUE.
Referenced by createAndAddAndCons(), and SCIPaddTermPseudoboolean().
◆ chgLhsLinearCons()
|
static |
changes left hand side of linear constraint
- Parameters
-
scip SCIP data structure cons linear constraint constype linear constraint type lhs new left hand side of linear constraint
Definition at line 2331 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 |
changes right hand side of linear constraint
- Parameters
-
scip SCIP data structure cons linear constraint constype linear constraint type rhs new right hand side of linear constraint
Definition at line 2362 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()
|
static |
sets left hand side of linear constraint
- Parameters
-
scip SCIP data structure cons linear constraint lhs new left hand side
Definition at line 2393 of file cons_pseudoboolean.c.
References chgLhsLinearCons(), chgRhs(), ConsAndData::cons, FALSE, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), getLinVarsAndAndRess(), NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_LOCKTYPE_CONFLICT, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsIsLocked(), SCIPconsIsLockedType(), SCIPconsIsTransformed(), SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetVarsAnd(), SCIPinfinity(), SCIPisEQ(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPisPositive(), SCIPlockVarCons(), SCIPunlockVarCons(), TRUE, and ConsAndData::vars.
Referenced by chgRhsLinearCons(), and SCIPchgLhsPseudoboolean().
◆ chgRhs()
|
static |
sets right hand side of pseudoboolean constraint
- Parameters
-
scip SCIP data structure cons linear constraint rhs new right hand side
Definition at line 2567 of file cons_pseudoboolean.c.
References chgRhsLinearCons(), ConsAndData::cons, createAndAddAnds(), FALSE, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), getLinVarsAndAndRess(), NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_LOCKTYPE_CONFLICT, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsIsLocked(), SCIPconsIsLockedType(), SCIPconsIsTransformed(), SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetVarsAnd(), SCIPinfinity(), SCIPisEQ(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisPositive(), SCIPlockVarCons(), SCIPunlockVarCons(), TRUE, and ConsAndData::vars.
Referenced by chgLhs(), and SCIPchgRhsPseudoboolean().
◆ createAndAddAnds()
|
static |
create and-constraints and get all and-resultants
- Parameters
-
scip SCIP data structure conshdlr pseudoboolean constraint handler terms array of term variables to get and-constraints for termcoefs array of coefficients for and-constraints nterms number of terms to get and-constraints for ntermvars array of number of variable in each term initial should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'. enforce should the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints. check should the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints. local is constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. modifiable is constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint. dynamic is constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints. stickingatnode should 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. andconss array to store all created and-constraints for given terms andvals array to store all coefficients of and-constraints andnegs array to store negation status of and-constraints nandconss number of created and constraints
Definition at line 2741 of file cons_pseudoboolean.c.
References createAndAddAndCons(), createAndAddLinearCons(), FALSE, nterms, NULL, SCIP_CALL, SCIP_OKAY, and SCIPisZero().
Referenced by chgRhs(), and SCIPcreateConsPseudoboolean().
◆ createAndAddLinearCons()
|
static |
created linear constraint of pseudo boolean constraint
- Parameters
-
scip SCIP data structure conshdlr pseudoboolean constraint handler linvars linear variables nlinvars number of linear variables linvals linear coefficients andress and-resultant variables nandress number of and-resultant variables andvals and-resultant coefficients andnegs and-resultant negation status lhs pointer to left hand side of linear constraint rhs pointer to right hand side of linear constraint initial should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'. separate should the constraint be separated during LP processing? Usually set to TRUE. enforce should the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints. check should the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints. propagate should the constraint be propagated during node processing? Usually set to TRUE. local is constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. modifiable is constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint. dynamic is constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints. removable should 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'. stickingatnode should 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. lincons pointer to store created linear constraint linconstype pointer to store the type of the linear constraint
Definition at line 2809 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 |
checks one original pseudoboolean constraint for feasibility of given solution
- Parameters
-
scip SCIP data structure cons pseudo boolean constraint sol solution to be checked, or NULL for current solution violated pointer to store whether the constraint is violated printreason should violation of constraint be printed
Definition at line 3435 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(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetSolVal(), SCIPgetVarsAnd(), SCIPhashmapExists(), SCIPinfoMessage(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisLE(), SCIPprintCons(), SCIPrelDiff(), SCIPsortPtrReal(), SCIPupdateSolConsViolation(), SCIPvarGetNegationVar(), SCIPvarIsNegated(), TRUE, and ConsAndData::vars.
Referenced by createAndAddLinearCons(), and SCIP_DECL_CONSCHECK().
◆ checkAndConss()
|
static |
checks all and-constraints inside the pseudoboolean constraint handler for feasibility of given solution or current solution
- Parameters
-
scip SCIP data structure conshdlr pseudo boolean constraint handler sol solution to be checked, or NULL for current solution violated pointer to store whether the constraint is violated
Definition at line 3686 of file cons_pseudoboolean.c.
References copyConsPseudoboolean(), FALSE, 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 |
creates by copying and captures a linear constraint
- Parameters
-
targetscip target SCIP data structure targetcons pointer to store the created target constraint sourcescip source SCIP data structure sourcecons source constraint which will be copied name name of constraint varmap a SCIP_HASHMAP mapping variables of the source SCIP to corresponding variables of the target SCIP consmap a hashmap to store the mapping of source constraints to the corresponding target constraints initial should the LP relaxation of constraint be in the initial LP? separate should the constraint be separated during LP processing? enforce should the constraint be enforced during node processing? check should the constraint be checked for feasibility? propagate should the constraint be propagated during node processing? local is constraint only valid locally? modifiable is constraint modifiable (subject to column generation)? dynamic is constraint subject to aging? removable should the relaxation be removed from the LP due to aging or cleanup? stickingatnode should the constraint always be kept at the node where it was added, even if it may be moved to a more global node? global create a global or a local copy? valid pointer to store if the copying was valid
Definition at line 3772 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(), SCIPdebugMsg, 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 |
compute all changes in consanddatas array
- Parameters
-
scip SCIP data structure conshdlrdata pseudoboolean constraint handler data
Definition at line 4075 of file cons_pseudoboolean.c.
References BMScopyMemoryArray, ConsAndData::cons, FALSE, ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, NULL, ConsAndData::nuses, ConsAndData::nvars, removeOldLocks(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPcaptureVar(), SCIPconsIsDeleted(), SCIPensureBlockMemoryArray, SCIPgetNVarsAnd(), SCIPgetVarsAnd(), SCIPisAndConsSorted(), SCIPsortAndCons(), SCIPvarGetIndex(), ConsAndData::snewvars, TRUE, and ConsAndData::vars.
Referenced by copyConsPseudoboolean(), and SCIP_DECL_CONSPRESOL().
◆ removeOldLocks()
|
static |
remove old locks
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint consanddata CONSANDDATA object for which we want to delete the locks and the capture of the corresponding and-constraint coef coefficient which led to old locks lhs left hand side which led to old locks rhs right hand side which led to old locks
Definition at line 4199 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 |
add new locks
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint consanddata CONSANDDATA object for which we want to delete the locks and the capture of the corresponding and-constraint coef coefficient which lead to new locks lhs left hand side which lead to new locks rhs right hand side which lead to new locks
Definition at line 4227 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 |
update all locks inside this constraint and all captures on all and-constraints
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint conshdlrdata pseudoboolean constraint handler data newlhs new left hand side of pseudoboolean constraint newrhs new right hand side of pseudoboolean constraint andress current and-resultants in pseudoboolean constraint andcoefs current and-resultants-coeffcients in pseudoboolean constraint andnegs current negation status of and-resultants in pseudoboolean constraint nandress number of current and-resultants in pseudoboolean constraint
Definition at line 4255 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 |
adds cliques of the pseudoboolean constraint to the global clique table
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint cutoff pointer to store whether the node can be cut off naggrvars pointer to count the number of aggregated variables nchgbds pointer to count the number of performed bound changes
Definition at line 4622 of file cons_pseudoboolean.c.
References checkConsConsistency, ConsAndData::cons, FALSE, getLinearConsNVars(), getLinearConsVarsData(), getLinVarsAndAndRess(), ConsAndData::newvars, ConsAndData::nnewvars, NULL, ConsAndData::nvars, propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_VARSTATUS_NEGATED, SCIPaddClique(), SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsSetpack(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfreeBufferArray, SCIPgetResultantAnd(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarGetNegationVar(), SCIPvarGetStatus(), SCIPvarIsActive(), SCIPvarIsNegated(), SCIPvarsHaveCommonClique(), TRUE, and ConsAndData::vars.
Referenced by correctLocksAndCaptures(), and SCIP_DECL_CONSPRESOL().
◆ propagateCons()
|
static |
propagation method for pseudoboolean constraints
- Parameters
-
scip SCIP data structure cons knapsack constraint cutoff pointer to store whether the node can be cut off ndelconss pointer to count number of deleted constraints
Definition at line 5026 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 |
update and-constraint flags due to pseudoboolean constraint flags
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint
Definition at line 5065 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()
|
static |
delete unused information in constraint handler data
- Parameters
-
scip SCIP data structure conshdlrdata pseudoboolean constraint handler data ndelconss pointer to count number of deleted constraints
Definition at line 5109 of file cons_pseudoboolean.c.
References ConsAndData::cons, FALSE, ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, ConsAndData::noriguses, NULL, ConsAndData::nuses, ConsAndData::nvars, ConsAndData::origcons, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPallocBufferArray, SCIPconsIsDeleted(), SCIPdelCons(), SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetFixedVars(), SCIPgetNFixedVars(), SCIPgetNVars(), SCIPgetProbvarLinearSum(), SCIPgetResultantAnd(), SCIPhashmapExists(), SCIPhashmapRemove(), SCIPhashtableExists(), SCIPhashtableRemove(), SCIPreallocBufferArray, SCIPreleaseCons(), SCIPreleaseVar(), SCIPsetConsChecked(), SCIPsetConsInitial(), SCIPsetConsSeparated(), SCIPsortedvecFindPtr(), SCIPsortPtr(), SCIPvarGetStatus(), SCIPvarsGetProbvar(), ConsAndData::snewvars, ConsAndData::svars, transformToOrig(), TRUE, updateConsanddataUses(), ConsAndData::vars, and w.
Referenced by SCIP_DECL_CONSPRESOL(), and updateAndConss().
◆ updateConsanddataUses()
|
static |
update the uses counter of consandata objects which are used in pseudoboolean constraint, that were deleted and probably delete and-constraints
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint conshdlrdata pseudoboolean constraint handler data ndelconss pointer to store number of deleted constraints
Definition at line 5398 of file cons_pseudoboolean.c.
References ARTIFICIALVARNAMEPREFIX, ConsAndData::cons, FALSE, ConsAndData::istransformed, NULL, ConsAndData::nuses, ConsAndData::origcons, removeOldLocks(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPconsGetData(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPdelCons(), SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetFixedVars(), SCIPgetNFixedVars(), SCIPgetResultantAnd(), SCIPhashmapExists(), SCIPhashmapRemove(), SCIPhashtableExists(), SCIPhashtableRemove(), SCIPreleaseCons(), SCIPsetConsChecked(), SCIPsetConsInitial(), SCIPsetConsSeparated(), SCIPsortedvecFindPtr(), SCIPsortPtr(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarsGetProbvar(), transformToOrig(), TRUE, and w.
Referenced by correctConshdlrdata(), findAggregation(), and tryUpgrading().
◆ checkSolution()
|
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
-
scip SCIP data structure vars all variables which occur nvars number of all variables which appear in the pseudoboolean constraint values values of all variables which appear in the pseudoboolean constraint linvars linear variables lincoefs linear coefficients nlinvars number of linear variables constant offset to the linear part side side of pseudoboolean constraint consanddatas all consanddata objects in a constraint consanddatacoefs nonlinear coefficients consanddatanegs negation status of and resultants in pseudo-boolean constraint nconsanddatas number of all consanddata objects cnt number of variables set to 1 xortype pointer to save the possible xor type if a solution was valid and does not violate the old xortype
Definition at line 5586 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 |
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
-
scip SCIP data structure cons pseudoboolean constraint conshdlrdata pseudoboolean constraint handler data ndelconss pointer to store number of deleted constraints naddconss pointer to count number of added constraints nfixedvars pointer to store number of fixed variables nchgcoefs pointer to store number of changed coefficients constraints nchgsides pointer to store number of changed sides constraints cutoff pointer to store if a cutoff happened
Definition at line 5760 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, SCIP_VARTYPE_IMPLINT, 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(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), SCIPvarIsNegated(), TRUE, tryUpgradingLogicor(), and ConsAndData::vars.
Referenced by checkSolution(), and tryUpgrading().
◆ tryUpgradingLogicor()
|
static |
try upgrading pseudoboolean logicor constraint to a linear constraint and/or remove possible and-constraints
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint conshdlrdata pseudoboolean constraint handler data ndelconss pointer to store number of deleted constraints naddconss pointer to count number of added constraints nfixedvars pointer to store number of fixed variables nchgcoefs pointer to store number of changed coefficients constraints nchgsides pointer to store number of changed sides constraints cutoff pointer to store if a cutoff happened
Definition at line 6059 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 |
try upgrading pseudoboolean setppc constraint to a linear constraint and/or remove possible and-constraints
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint conshdlrdata pseudoboolean constraint handler data ndelconss pointer to store number of deleted constraints naddconss pointer to count number of added constraints nfixedvars pointer to store number of fixed variables nchgcoefs pointer to store number of changed coefficients constraints nchgsides pointer to store number of changed sides constraints cutoff pointer to store if a cutoff happened
Definition at line 6571 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 |
try upgrading pseudoboolean constraint to a linear constraint and/or remove possible and-constraints
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint conshdlrdata pseudoboolean constraint handler data ndelconss pointer to store number of upgraded constraints naddconss pointer to count number of added constraints nfixedvars pointer to store number of fixed variables nchgcoefs pointer to store number of changed coefficients constraints nchgsides pointer to store number of changed sides constraints cutoff pointer to store if a cutoff happened
Definition at line 7047 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 |
check if we can aggregated some variables
- Parameters
-
scip SCIP data structure cons pseudoboolean constraint conshdlrdata pseudoboolean constraint handler data ndelconss pointer to store number of upgraded constraints naggrvars pointer to store number of aggregated variables cutoff pointer to store if a cutoff happened
Definition at line 7145 of file cons_pseudoboolean.c.
References BMSclearMemoryArray, FALSE, getLinearConsNVars(), getLinearConsVarsData(), getLinVarsAndAndRess(), ConsAndData::newvars, ConsAndData::nnewvars, nterms, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSHDLRCOPY(), SCIP_DECL_NONLINCONSUPGD, SCIP_LINEARCONSTYPE_SETPPC, SCIP_LOCKTYPE_MODEL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_SETPPCTYPE_PARTITIONING, SCIPaddCons(), SCIPaggregateVars(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsAnd(), SCIPcreateConsPseudoboolean(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetBinvarRepresentatives(), SCIPgetLhsNonlinear(), SCIPgetRhsNonlinear(), SCIPgetTypeSetppc(), SCIPisEQ(), SCIPisInfinity(), SCIPreleaseCons(), SCIPsnprintf(), SCIPsortedvecFindPtr(), SCIPsortPtrBool(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarGetNegationVar(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), SCIPvarIsBinary(), SCIPvarIsNegated(), SCIPwarningMessage(), TRUE, updateConsanddataUses(), and ConsAndData::vars.
Referenced by SCIP_DECL_CONSPRESOL(), and tryUpgrading().
◆ SCIP_DECL_CONSHDLRCOPY()
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 7804 of file cons_pseudoboolean.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrPseudoboolean(), and TRUE.
Referenced by findAggregation().
◆ SCIP_DECL_CONSFREE()
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 7820 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 |
initialization method of constraint handler (called after problem was transformed)
Definition at line 7842 of file cons_pseudoboolean.c.
References CONSHDLR_NAME, NULL, ConsAndData::nvars, SCIP_CALL, SCIP_DECL_CONSINITPRE(), SCIP_OKAY, SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPconsIsTransformed(), SCIPdebugMsg, SCIPgetResultantAnd(), SCIPhashmapExists(), SCIPhashmapInsert(), SCIPvarGetIndex(), SCIPvarGetName(), SCIPvarIsTransformed(), and ConsAndData::vars.
Referenced by SCIP_DECL_CONSFREE().
◆ SCIP_DECL_CONSINITPRE()
|
static |
presolving initialization method of constraint handler (called when presolving is about to begin)
Definition at line 7900 of file cons_pseudoboolean.c.
References ConsAndData::cons, CONSHDLR_NAME, FALSE, getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCoefLinear(), SCIPaddCons(), SCIPallocBufferArray, SCIPconsAddUpgradeLocks(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPconsIsAdded(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsIndicator(), SCIPcreateConsLinear(), SCIPdebugPrintCons, SCIPdelCons(), SCIPfreeBufferArray, SCIPgetNegatedVar(), SCIPinfinity(), SCIPisInfinity(), SCIPisLE(), SCIPreleaseCons(), SCIPsnprintf(), SCIPwarningMessage(), TRUE, updateAndConss(), and ConsAndData::vars.
Referenced by SCIP_DECL_CONSINIT().
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 8187 of file cons_pseudoboolean.c.
References consdataFree(), CONSHDLR_NAME, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSTRANS(), SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPconsIsOriginal().
Referenced by SCIP_DECL_CONSINITPRE().
◆ SCIP_DECL_CONSTRANS()
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 8230 of file cons_pseudoboolean.c.
References consdataCreate(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSENFOLP(), SCIP_OKAY, SCIP_STAGE_TRANSFORMING, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsOriginal(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateCons(), SCIPfreeBufferArray, SCIPgetStage(), and TRUE.
Referenced by SCIP_DECL_CONSDELETE().
◆ SCIP_DECL_CONSENFOLP()
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 8282 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 |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 8307 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 |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 8332 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 |
feasibility check method of constraint handler for integral solutions
Definition at line 8357 of file cons_pseudoboolean.c.
References checkAndConss(), checkOrigPbCons(), CONSHDLR_NAME, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPRESOL(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconsGetData(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPgetSolVal(), and SCIPisEQ().
Referenced by SCIP_DECL_CONSENFOPS().
◆ SCIP_DECL_CONSPRESOL()
|
static |
presolving method of constraint handler
Definition at line 8409 of file cons_pseudoboolean.c.
References addCliques(), computeConsAndDataChanges(), ConsAndData::cons, CONSHDLR_NAME, correctConshdlrdata(), correctLocksAndCaptures(), FALSE, findAggregation(), getLinearConsNVars(), getLinearConsSides(), getLinearConsVarsData(), getLinVarsAndAndRess(), NULL, ConsAndData::nvars, propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSLOCK(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPfreeBufferArray, SCIPisInfinity(), SCIPisLE(), SCIPisStopped(), TRUE, tryUpgrading(), updateAndConss(), and ConsAndData::vars.
Referenced by SCIP_DECL_CONSCHECK().
◆ SCIP_DECL_CONSLOCK()
|
static |
variable rounding lock method of constraint handler
Definition at line 8604 of file cons_pseudoboolean.c.
References checkLocksAndRes(), ConsAndData::cons, CONSHDLR_NAME, FALSE, ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, NULL, ConsAndData::nvars, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIP_Real, SCIPaddVarLocksType(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBlockMemoryArrayNull, SCIPgetResultantAnd(), SCIPisInfinity(), SCIPisLE(), SCIPisPositive(), ConsAndData::snewvars, ConsAndData::svars, and ConsAndData::vars.
Referenced by SCIP_DECL_CONSPRESOL().
◆ SCIP_DECL_CONSPRINT()
|
static |
constraint display method of constraint handler
Definition at line 8749 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 |
constraint copying method of constraint handler
Definition at line 8763 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()
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 8786 of file cons_pseudoboolean.c.
References BMScopyMemoryArray, ConsAndData::cons, FALSE, getLinearConsNVars(), getLinearConsVarsData(), getLinVarsAndAndRess(), ConsAndData::istransformed, NULL, ConsAndData::nvars, ConsAndData::origcons, r, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSGETNVARS(), SCIP_INVALIDDATA, SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconsIsDeleted(), SCIPconsIsTransformed(), SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetVarsAnd(), SCIPhashmapGetImage(), and TRUE.
Referenced by SCIP_DECL_CONSCOPY().
◆ SCIP_DECL_CONSGETNVARS()
|
static |
constraint method of constraint handler which returns the number of variables (if possible)
Definition at line 8955 of file cons_pseudoboolean.c.
References ConsAndData::cons, getLinearConsNVars(), getLinearConsVarsData(), getLinVarsAndAndRess(), ConsAndData::istransformed, NULL, ConsAndData::nvars, ConsAndData::origcons, r, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconsIsDeleted(), SCIPconsIsTransformed(), SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPhashmapGetImage(), SCIPincludeConshdlrPseudoboolean(), and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().