Constraint handler for AND-constraints, \(r = x_1 \wedge x_2 \wedge \dots \wedge x_n\).
This constraint handler deals with AND-constraints. These are constraint of the form:
\[ r = x_1 \wedge x_2 \wedge \dots \wedge x_n \]
where \(x_i\) is a binary variable for all \(i\). Hence, \(r\) is also of binary type. The variable \(r\) is called resultant and the \(x\)'s operators.
Definition in file cons_and.c.
#include <assert.h>
#include <string.h>
#include "scip/cons_and.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/cons_setppc.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_pseudoboolean.h"
#include "scip/pub_misc.h"
#include "scip/debug.h"
Go to the source code of this file.
Typedefs | |
typedef enum Proprule | PROPRULE |
Enumerations | |
enum | Proprule { PROPRULE_1, PROPRULE_2, PROPRULE_3, PROPRULE_4, PROPRULE_INVALID, PROPRULE_INVALID = 0, PROPRULE_1 = 1, PROPRULE_2 = 2, PROPRULE_3 = 3, PROPRULE_4 = 4, PROPRULE_1_CORETIMES = 1, PROPRULE_2_EDGEFINDING = 2, PROPRULE_3_TTEF = 3, PROPRULE_1_RHS = 1, PROPRULE_1_LHS = 2, PROPRULE_1_RANGEDROW = 3, PROPRULE_INVALID = 0, PROPRULE_1, PROPRULE_2, PROPRULE_3, PROPRULE_4, PROPRULE_INVALID, PROPRULE_1, PROPRULE_2, PROPRULE_3, PROPRULE_4, PROPRULE_0, PROPRULE_1, PROPRULE_INTLB, PROPRULE_INTUB, PROPRULE_INVALID } |
Functions | |
static SCIP_RETCODE | lockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var) |
static SCIP_RETCODE | unlockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var) |
static SCIP_RETCODE | conshdlrdataCreate (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr) |
static SCIP_RETCODE | conshdlrdataFree (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata) |
static SCIP_RETCODE | consdataCatchWatchedEvents (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, int pos, int *filterpos) |
static SCIP_RETCODE | consdataDropWatchedEvents (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, int pos, int filterpos) |
static SCIP_RETCODE | consdataCatchEvents (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr) |
static SCIP_RETCODE | consdataDropEvents (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr) |
static SCIP_RETCODE | consdataSwitchWatchedvars (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_EVENTHDLR *eventhdlr, int watchedvar1, int watchedvar2) |
static SCIP_RETCODE | consdataEnsureVarsSize (SCIP *scip, SCIP_CONSDATA *consdata, int num) |
static SCIP_RETCODE | consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, SCIP_EVENTHDLR *eventhdlr, int nvars, SCIP_VAR **vars, SCIP_VAR *resvar, SCIP_Bool checkwhenupgr, SCIP_Bool notremovablewhenupgr) |
static SCIP_RETCODE | consdataFreeRows (SCIP *scip, SCIP_CONSDATA *consdata) |
static SCIP_RETCODE | consdataFree (SCIP *scip, SCIP_CONSDATA **consdata, SCIP_EVENTHDLR *eventhdlr) |
static SCIP_RETCODE | consdataPrint (SCIP *scip, SCIP_CONSDATA *consdata, FILE *file) |
static SCIP_RETCODE | addCoef (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_VAR *var) |
static SCIP_RETCODE | delCoefPos (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos) |
static void | consdataSort (SCIP_CONSDATA *consdata) |
static SCIP_RETCODE | applyFixings (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int *nchgcoefs) |
static SCIP_RETCODE | createRelaxation (SCIP *scip, SCIP_CONS *cons) |
static SCIP_RETCODE | addRelaxation (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible) |
static SCIP_RETCODE | checkCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_Bool *violated) |
static SCIP_RETCODE | separateCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *separated, SCIP_Bool *cutoff) |
static SCIP_RETCODE | analyzeConflictOne (SCIP *scip, SCIP_CONS *cons, int falsepos) |
static SCIP_RETCODE | analyzeConflictZero (SCIP *scip, SCIP_CONS *cons) |
static SCIP_RETCODE | consdataFixResultantZero (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *resvar, int pos, SCIP_Bool *cutoff, int *nfixedvars) |
static SCIP_RETCODE | consdataFixOperandsOne (SCIP *scip, SCIP_CONS *cons, SCIP_VAR **vars, int nvars, SCIP_Bool *cutoff, int *nfixedvars) |
static SCIP_RETCODE | consdataLinearize (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nfixedvars, int *nupgdconss) |
static SCIP_RETCODE | analyzeZeroResultant (SCIP *scip, SCIP_CONS *cons, int watchedvar1, int watchedvar2, SCIP_Bool *cutoff, int *nfixedvars) |
static SCIP_RETCODE | mergeMultiples (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, unsigned char **entries, int *nentries, int *nfixedvars, int *nchgcoefs, int *ndelconss) |
static SCIP_RETCODE | propagateCons (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, int *nfixedvars, int *nupgdconss) |
static SCIP_RETCODE | resolvePropagation (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, PROPRULE proprule, SCIP_BDCHGIDX *bdchgidx, SCIP_RESULT *result) |
static SCIP_RETCODE | dualPresolve (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_EVENTHDLR *eventhdlr, unsigned char **entries, int *nentries, SCIP_Bool *cutoff, int *nfixedvars, int *naggrvars, int *nchgcoefs, int *ndelconss, int *nupgdconss, int *naddconss) |
static SCIP_RETCODE | cliquePresolve (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, int *nfixedvars, int *naggrvars, int *nchgcoefs, int *ndelconss, int *naddconss) |
static | SCIP_DECL_HASHGETKEY (hashGetKeyAndcons) |
static | SCIP_DECL_HASHKEYEQ (hashKeyEqAndcons) |
static | SCIP_DECL_HASHKEYVAL (hashKeyValAndcons) |
static SCIP_RETCODE | detectRedundantConstraints (SCIP *scip, BMS_BLKMEM *blkmem, SCIP_CONS **conss, int nconss, int *firstchange, SCIP_Bool *cutoff, int *naggrvars, int *ndelconss) |
static SCIP_RETCODE | enforceConstraint (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, SCIP_SOL *sol, SCIP_RESULT *result) |
static SCIP_RETCODE | preprocessConstraintPairs (SCIP *scip, SCIP_CONS **conss, int firstchange, int chkind, SCIP_Bool *cutoff, int *naggrvars, int *nbdchgs, int *ndelconss) |
static | SCIP_DECL_EXPRGRAPHNODEREFORM (exprgraphnodeReformAnd) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyAnd) |
static | SCIP_DECL_CONSFREE (consFreeAnd) |
static | SCIP_DECL_CONSINITPRE (consInitpreAnd) |
static | SCIP_DECL_CONSEXITSOL (consExitsolAnd) |
static | SCIP_DECL_CONSDELETE (consDeleteAnd) |
static | SCIP_DECL_CONSTRANS (consTransAnd) |
static | SCIP_DECL_CONSINITLP (consInitlpAnd) |
static | SCIP_DECL_CONSSEPALP (consSepalpAnd) |
static | SCIP_DECL_CONSSEPASOL (consSepasolAnd) |
static | SCIP_DECL_CONSENFOLP (consEnfolpAnd) |
static | SCIP_DECL_CONSENFORELAX (consEnforelaxAnd) |
static | SCIP_DECL_CONSENFOPS (consEnfopsAnd) |
static | SCIP_DECL_CONSCHECK (consCheckAnd) |
static | SCIP_DECL_CONSPROP (consPropAnd) |
static | SCIP_DECL_CONSPRESOL (consPresolAnd) |
static | SCIP_DECL_CONSRESPROP (consRespropAnd) |
static | SCIP_DECL_CONSLOCK (consLockAnd) |
static | SCIP_DECL_CONSPRINT (consPrintAnd) |
static | SCIP_DECL_CONSCOPY (consCopyAnd) |
static | SCIP_DECL_CONSPARSE (consParseAnd) |
static | SCIP_DECL_CONSGETVARS (consGetVarsAnd) |
static | SCIP_DECL_CONSGETNVARS (consGetNVarsAnd) |
static | SCIP_DECL_EVENTEXEC (eventExecAnd) |
SCIP_RETCODE | SCIPincludeConshdlrAnd (SCIP *scip) |
SCIP_RETCODE | SCIPcreateConsAnd (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars, 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 | SCIPcreateConsBasicAnd (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars) |
int | SCIPgetNVarsAnd (SCIP *scip, SCIP_CONS *cons) |
SCIP_VAR ** | SCIPgetVarsAnd (SCIP *scip, SCIP_CONS *cons) |
SCIP_VAR * | SCIPgetResultantAnd (SCIP *scip, SCIP_CONS *cons) |
SCIP_Bool | SCIPisAndConsSorted (SCIP *scip, SCIP_CONS *cons) |
SCIP_RETCODE | SCIPsortAndCons (SCIP *scip, SCIP_CONS *cons) |
SCIP_RETCODE | SCIPchgAndConsCheckFlagWhenUpgr (SCIP *scip, SCIP_CONS *cons, SCIP_Bool flag) |
SCIP_RETCODE | SCIPchgAndConsRemovableFlagWhenUpgr (SCIP *scip, SCIP_CONS *cons, SCIP_Bool flag) |
#define CONSHDLR_NAME "and" |
Definition at line 49 of file cons_and.c.
Referenced by SCIP_DECL_CONSHDLRCOPY(), SCIPchgAndConsCheckFlagWhenUpgr(), SCIPchgAndConsRemovableFlagWhenUpgr(), SCIPcreateConsAnd(), SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPincludeConshdlrAnd(), SCIPisAndConsSorted(), and SCIPsortAndCons().
#define CONSHDLR_DESC "constraint handler for AND-constraints: r = and(x1, ..., xn)" |
Definition at line 50 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_SEPAPRIORITY +850100 |
priority of the constraint handler for separation
Definition at line 51 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_ENFOPRIORITY -850100 |
priority of the constraint handler for constraint enforcing
Definition at line 52 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_CHECKPRIORITY -850100 |
priority of the constraint handler for checking feasibility
Definition at line 53 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_SEPAFREQ 1 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 54 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_PROPFREQ 1 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 55 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#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_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 59 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 60 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 61 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 62 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_PRESOLTIMING (SCIP_PRESOLTIMING_FAST | SCIP_PRESOLTIMING_EXHAUSTIVE) |
Definition at line 64 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
Definition at line 65 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define EVENTHDLR_NAME "and" |
Definition at line 67 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define EVENTHDLR_DESC "bound change event handler for AND-constraints" |
Definition at line 68 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define DEFAULT_PRESOLPAIRWISE TRUE |
should pairwise constraint comparison be performed in presolving?
Definition at line 70 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define DEFAULT_LINEARIZE FALSE |
should constraint get linearized and removed?
Definition at line 71 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define DEFAULT_ENFORCECUTS TRUE |
should cuts be separated during LP enforcing?
Definition at line 72 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define DEFAULT_AGGRLINEARIZATION FALSE |
should an aggregated linearization be used?
Definition at line 73 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define DEFAULT_UPGRRESULTANT TRUE |
should all binary resultant variables be upgraded to implicit binary variables
Definition at line 74 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define DEFAULT_DUALPRESOLVING TRUE |
should dual presolving be performed?
Definition at line 75 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define HASHSIZE_ANDCONS 500 |
minimal size of hash table in and constraint tables
Definition at line 77 of file cons_and.c.
Referenced by detectRedundantConstraints().
#define DEFAULT_PRESOLUSEHASHING TRUE |
should hash table be used for detecting redundant constraints in advance
Definition at line 78 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
#define NMINCOMPARISONS 200000 |
number for minimal pairwise presolving comparisons
Definition at line 79 of file cons_and.c.
Referenced by SCIP_DECL_CONSPRESOL().
#define MINGAINPERNMINCOMPARISONS 1e-06 |
minimal gain per minimal pairwise presolving comparisons to repeat pairwise comparison round
Definition at line 80 of file cons_and.c.
Referenced by SCIP_DECL_CONSPRESOL().
#define EXPRGRAPHREFORM_PRIORITY 100000 |
priority of expression graph node reformulation method
Definition at line 81 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
Definition at line 144 of file cons_and.c.
enum Proprule |
Definition at line 136 of file cons_and.c.
|
static |
installs rounding locks for the given variable in the given AND-constraint
scip | SCIP data structure |
cons | constraint data |
var | variable of constraint entry |
Definition at line 153 of file cons_and.c.
References SCIP_CALL, SCIP_OKAY, SCIPlockVarCons(), TRUE, and unlockRounding().
Referenced by addCoef().
|
static |
removes rounding locks for the given variable in the given AND-constraint
scip | SCIP data structure |
cons | constraint data |
var | variable of constraint entry |
Definition at line 167 of file cons_and.c.
References conshdlrdataCreate(), SCIP_CALL, SCIP_OKAY, SCIPunlockVarCons(), and TRUE.
Referenced by delCoefPos(), and lockRounding().
|
static |
creates constraint handler data
scip | SCIP data structure |
conshdlrdata | pointer to store the constraint handler data |
eventhdlr | event handler |
Definition at line 181 of file cons_and.c.
References conshdlrdataFree(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.
Referenced by SCIPincludeConshdlrAnd(), and unlockRounding().
|
static |
frees constraint handler data
scip | SCIP data structure |
conshdlrdata | pointer to the constraint handler data |
Definition at line 201 of file cons_and.c.
References consdataCatchWatchedEvents(), NULL, SCIP_OKAY, and SCIPfreeBlockMemory.
Referenced by conshdlrdataCreate(), and SCIP_DECL_CONSFREE().
|
static |
catches events for the watched variable at given position
scip | SCIP data structure |
consdata | AND-constraint data |
eventhdlr | event handler to call for the event processing |
pos | array position of variable to catch bound change events for |
filterpos | pointer to store position of event filter entry |
Definition at line 216 of file cons_and.c.
References consdataDropWatchedEvents(), NULL, SCIP_CALL, SCIP_EVENTTYPE_LBTIGHTENED, SCIP_EVENTTYPE_UBRELAXED, SCIP_OKAY, and SCIPcatchVarEvent().
Referenced by consdataSwitchWatchedvars(), and conshdlrdataFree().
|
static |
drops events for the watched variable at given position
scip | SCIP data structure |
consdata | AND-constraint data |
eventhdlr | event handler to call for the event processing |
pos | array position of watched variable to drop bound change events for |
filterpos | position of event filter entry |
Definition at line 240 of file cons_and.c.
References consdataCatchEvents(), NULL, SCIP_CALL, SCIP_EVENTTYPE_LBTIGHTENED, SCIP_EVENTTYPE_UBRELAXED, SCIP_OKAY, and SCIPdropVarEvent().
Referenced by consdataCatchWatchedEvents(), and consdataSwitchWatchedvars().
|
static |
catches needed events on all variables of constraint, except the special ones for watched variables
scip | SCIP data structure |
consdata | AND-constraint data |
eventhdlr | event handler to call for the event processing |
Definition at line 263 of file cons_and.c.
References consdataDropEvents(), NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_EVENTTYPE_LBRELAXED, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, and SCIPcatchVarEvent().
Referenced by consdataCreate(), and consdataDropWatchedEvents().
|
static |
drops events on all variables of constraint, except the special ones for watched variables
scip | SCIP data structure |
consdata | AND-constraint data |
eventhdlr | event handler to call for the event processing |
Definition at line 289 of file cons_and.c.
References consdataSwitchWatchedvars(), NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_EVENTTYPE_LBRELAXED, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, and SCIPdropVarEvent().
Referenced by consdataCatchEvents(), and consdataFree().
|
static |
stores the given variable numbers as watched variables, and updates the event processing
scip | SCIP data structure |
consdata | AND-constraint data |
eventhdlr | event handler to call for the event processing |
watchedvar1 | new first watched variable |
watchedvar2 | new second watched variable |
Definition at line 315 of file cons_and.c.
References consdataCatchWatchedEvents(), consdataDropWatchedEvents(), consdataEnsureVarsSize(), NULL, SCIP_CALL, and SCIP_OKAY.
Referenced by consdataDropEvents(), consdataFree(), delCoefPos(), and propagateCons().
|
static |
ensures, that the vars array can store at least num entries
scip | SCIP data structure |
consdata | linear constraint data |
num | minimum number of entries to store |
Definition at line 375 of file cons_and.c.
References consdataCreate(), NULL, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), and SCIPreallocBlockMemoryArray.
Referenced by addCoef(), and consdataSwitchWatchedvars().
|
static |
creates constraint data for AND-constraint
scip | SCIP data structure |
consdata | pointer to store the constraint data |
eventhdlr | event handler to call for the event processing |
nvars | number of variables in the AND-constraint |
vars | variables in AND-constraint |
resvar | resultant variable |
checkwhenupgr | should an upgraded constraint be checked despite the fact that this AND-constraint will not be checked |
notremovablewhenupgr | should an upgraded constraint be despite the fact that this AND-constraint will not be checked |
Definition at line 399 of file cons_and.c.
References consdataCatchEvents(), consdataFreeRows(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_EXITPRESOLVE, SCIPallocBlockMemory, SCIPcaptureVar(), SCIPduplicateBlockMemoryArray, SCIPgetStage(), SCIPgetTransformedVar(), SCIPgetTransformedVars(), SCIPisTransformed(), SCIPmarkDoNotMultaggrVar(), SCIPvarIsBinary(), and TRUE.
Referenced by consdataEnsureVarsSize(), SCIP_DECL_CONSTRANS(), and SCIPcreateConsAnd().
|
static |
releases LP rows of constraint data and frees rows array
scip | SCIP data structure |
consdata | constraint data |
Definition at line 482 of file cons_and.c.
References consdataFree(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemoryArray, and SCIPreleaseRow().
Referenced by consdataCreate(), consdataFree(), and SCIP_DECL_CONSEXITSOL().
|
static |
frees constraint data for AND-constraint
scip | SCIP data structure |
consdata | pointer to the constraint data |
eventhdlr | event handler to call for the event processing |
Definition at line 513 of file cons_and.c.
References consdataDropEvents(), consdataFreeRows(), consdataPrint(), consdataSwitchWatchedvars(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPisTransformed(), and SCIPreleaseVar().
Referenced by consdataFreeRows(), and SCIP_DECL_CONSDELETE().
|
static |
prints AND-constraint to file stream
scip | SCIP data structure |
consdata | AND-constraint data |
file | output file (or NULL for standard output) |
Definition at line 558 of file cons_and.c.
References addCoef(), NULL, SCIP_CALL, SCIP_OKAY, SCIPinfoMessage(), SCIPwriteVarName(), SCIPwriteVarsList(), and TRUE.
Referenced by applyFixings(), consdataFree(), and SCIP_DECL_CONSPRINT().
|
static |
adds coefficient to AND-constraint
scip | SCIP data structure |
cons | linear constraint |
eventhdlr | event handler to call for the event processing |
var | variable to add to the constraint |
Definition at line 583 of file cons_and.c.
References consdataEnsureVarsSize(), delCoefPos(), FALSE, lockRounding(), NULL, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_LBRELAXED, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_INVALIDCALL, SCIP_OKAY, SCIPcaptureVar(), SCIPcatchVarEvent(), SCIPconsGetData(), SCIPconsIsTransformed(), SCIPerrorMessage, SCIPgetTransformedVar(), SCIPvarIsTransformed(), and TRUE.
Referenced by applyFixings(), and consdataPrint().
|
static |
deletes coefficient at given position from AND-constraint data
scip | SCIP data structure |
cons | AND-constraint |
eventhdlr | event handler to call for the event processing |
pos | position of coefficient to delete |
Definition at line 643 of file cons_and.c.
References consdataSort(), consdataSwitchWatchedvars(), FALSE, NULL, SCIP_CALL, SCIP_EVENTTYPE_LBRELAXED, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsTransformed(), SCIPdropVarEvent(), SCIPreleaseVar(), SCIPvarIsTransformed(), TRUE, and unlockRounding().
Referenced by addCoef(), applyFixings(), cliquePresolve(), dualPresolve(), and mergeMultiples().
|
static |
sorts AND-constraint's variables by non-decreasing variable index
consdata | constraint data |
Definition at line 706 of file cons_and.c.
References applyFixings(), NULL, SCIP_Bool, SCIPsortedvecFindPtr(), SCIPsortPtr(), SCIPvarCompare(), and TRUE.
Referenced by delCoefPos(), detectRedundantConstraints(), preprocessConstraintPairs(), SCIP_DECL_HASHKEYEQ(), and SCIPsortAndCons().
|
static |
deletes all one-fixed variables
scip | SCIP data structure |
cons | AND-constraint |
eventhdlr | event handler to call for the event processing |
nchgcoefs | pointer to add up the number of changed coefficients |
Definition at line 787 of file cons_and.c.
References addCoef(), consdataPrint(), createRelaxation(), delCoefPos(), NULL, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_OKAY, SCIPcaptureVar(), SCIPcatchVarEvent(), SCIPconsGetData(), SCIPconsIsTransformed(), SCIPdebug, SCIPdebugMsg, SCIPdebugMsgPrint, SCIPdropVarEvent(), SCIPgetBinvarRepresentative(), SCIPisFeasEQ(), SCIPreleaseVar(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), SCIPvarIsBinary(), and TRUE.
Referenced by consdataSort(), dualPresolve(), and SCIP_DECL_CONSPRESOL().
|
static |
creates a linearization of the AND-constraint
scip | SCIP data structure |
cons | constraint to check |
Definition at line 887 of file cons_and.c.
References addRelaxation(), NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPaddVarsToRowSameCoef(), SCIPaddVarToRow(), SCIPallocBlockMemoryArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsRemovable(), SCIPcreateEmptyRowCons(), SCIPinfinity(), and SCIPsnprintf().
Referenced by addRelaxation(), applyFixings(), and separateCons().
|
static |
adds linear relaxation of AND-constraint to the LP
scip | SCIP data structure |
cons | constraint to check |
infeasible | pointer to store whether an infeasibility was detected |
Definition at line 934 of file cons_and.c.
References checkCons(), createRelaxation(), FALSE, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCut(), SCIPaddVarsToRowSameCoef(), SCIPaddVarToRow(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsRemovable(), SCIPcreateEmptyRowCons(), SCIPinfinity(), SCIProwIsInLP(), and SCIPsnprintf().
Referenced by createRelaxation(), and SCIP_DECL_CONSINITLP().
|
static |
checks AND-constraint for feasibility of given solution: returns TRUE iff constraint is feasible
scip | SCIP data structure |
cons | constraint to check |
sol | solution to check, NULL for current solution |
checklprows | Do constraints represented by rows in the current LP have to be checked? |
printreason | Should the reason for the violation be printed? |
violated | pointer to store whether the constraint is violated |
Definition at line 994 of file cons_and.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_REAL_FORMAT, SCIP_VARTYPE_IMPLINT, SCIPconsGetData(), SCIPgetSolVal(), SCIPincConsAge(), SCIPinfoMessage(), SCIPisFeasIntegral(), SCIPprintCons(), SCIPresetConsAge(), SCIProwIsInLP(), SCIPvarGetName(), SCIPvarGetType(), separateCons(), and TRUE.
Referenced by addRelaxation(), enforceConstraint(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSENFOPS().
|
static |
separates given primal solution
scip | SCIP data structure |
cons | constraint to check |
sol | primal CIP solution, NULL for current LP solution |
separated | pointer to store whether a cut was found |
cutoff | whether a cutoff has been detected |
Definition at line 1107 of file cons_and.c.
References analyzeConflictOne(), createRelaxation(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCut(), SCIPconsGetData(), SCIPgetRowSolFeasibility(), SCIPisFeasNegative(), SCIProwIsInLP(), and TRUE.
Referenced by checkCons(), enforceConstraint(), SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().
|
static |
analyzes conflicting TRUE assignment to resultant of given constraint, and adds conflict constraint to problem
scip | SCIP data structure |
cons | AND-constraint that detected the conflict |
falsepos | position of operand that is fixed to FALSE |
Definition at line 1156 of file cons_and.c.
References analyzeConflictZero(), FALSE, NULL, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPaddConflictBinvar(), SCIPanalyzeConflictCons(), SCIPconsGetData(), SCIPgetStage(), SCIPinitConflictAnalysis(), SCIPinProbing(), SCIPisConflictAnalysisApplicable(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().
Referenced by consdataFixOperandsOne(), consdataFixResultantZero(), and separateCons().
|
static |
analyzes conflicting FALSE assignment to resultant of given constraint, and adds conflict constraint to problem
scip | SCIP data structure |
cons | or constraint that detected the conflict |
Definition at line 1188 of file cons_and.c.
References consdataFixResultantZero(), FALSE, NULL, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPaddConflictBinvar(), SCIPanalyzeConflictCons(), SCIPconsGetData(), SCIPconsIsModifiable(), SCIPgetStage(), SCIPinitConflictAnalysis(), SCIPinProbing(), SCIPisConflictAnalysisApplicable(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().
Referenced by analyzeConflictOne(), analyzeZeroResultant(), and propagateCons().
|
static |
tries to fix the given resultant to zero
scip | SCIP data structure |
cons | AND-constraint to be processed |
resvar | resultant variable to fix to zero |
pos | position of operand that is fixed to FALSE |
cutoff | pointer to store TRUE, if the node can be cut off |
nfixedvars | pointer to add up the number of found domain reductions |
Definition at line 1224 of file cons_and.c.
References analyzeConflictOne(), consdataFixOperandsOne(), FALSE, PROPRULE_1, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetName(), SCIPdebugMsg, SCIPdelConsLocal(), SCIPinferBinvarCons(), SCIPresetConsAge(), SCIPvarGetName(), and TRUE.
Referenced by analyzeConflictZero(), and propagateCons().
|
static |
fix all operands to one
scip | SCIP data structure |
cons | AND-constraint to be processed |
vars | array of operands |
nvars | number of operands |
cutoff | pointer to store TRUE, if the node can be cut off |
nfixedvars | pointer to add up the number of found domain reductions |
Definition at line 1263 of file cons_and.c.
References analyzeConflictOne(), consdataLinearize(), PROPRULE_2, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetName(), SCIPdebugMsg, SCIPdelConsLocal(), SCIPinferBinvarCons(), SCIPresetConsAge(), SCIPvarGetName(), and TRUE.
Referenced by consdataFixResultantZero(), and propagateCons().
|
static |
linearize AND-constraint due to a globally to zero fixed resultant; that is, creates, adds, and releases a logicor constraint and remove the AND-constraint globally.
Since the resultant is fixed to zero the AND-constraint collapses to linear constraint of the form:
This can be transformed into a logicor constraint of the form
scip | SCIP data structure |
cons | AND-constraint to linearize |
cutoff | pointer to store TRUE, if the node can be cut off |
nfixedvars | pointer to add up the number of found domain reductions |
nupgdconss | pointer to add up the number of upgraded constraints |
Definition at line 1317 of file cons_and.c.
References analyzeZeroResultant(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLogicor(), SCIPcreateConsSetpack(), SCIPdebugPrintCons, SCIPdelCons(), SCIPfixVar(), SCIPfreeBufferArray, SCIPgetBinvarRepresentatives(), SCIPgetNegatedVar(), SCIPreleaseCons(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by consdataFixOperandsOne(), and propagateCons().
|
static |
the resultant is fixed to zero; in case all except one operator are fixed to TRUE the last operator has to fixed to FALSE
scip | SCIP data structure |
cons | AND-constraint to be processed |
watchedvar1 | maybe last unfixed variable position |
watchedvar2 | second watched position |
cutoff | pointer to store TRUE, if the node can be cut off |
nfixedvars | pointer to add up the number of found domain reductions |
Definition at line 1428 of file cons_and.c.
References analyzeConflictZero(), FALSE, mergeMultiples(), NULL, PROPRULE_4, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPdelConsLocal(), SCIPinferBinvarCons(), SCIPresetConsAge(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbLocal(), and TRUE.
Referenced by consdataLinearize(), and propagateCons().
|
static |
replaces multiple occurrences of variables
scip | SCIP data structure |
cons | AND-constraint |
eventhdlr | event handler to call for the event processing |
entries | array to store whether two positions in constraints represent the same variable |
nentries | pointer for array size, if array will be to small it's corrected |
nfixedvars | pointer to store number of fixed variables |
nchgcoefs | pointer to store number of changed coefficients |
ndelconss | pointer to store number of deleted constraints |
Definition at line 1489 of file cons_and.c.
References delCoefPos(), NULL, propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPdelCons(), SCIPfixVar(), SCIPgetNBinVars(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarIsActive(), SCIPvarIsBinary(), SCIPvarIsNegated(), and TRUE.
Referenced by analyzeZeroResultant(), dualPresolve(), and SCIP_DECL_CONSPRESOL().
|
static |
propagates constraint with the following rules: (1) v_i = FALSE => r = FALSE (2) r = TRUE => v_i = TRUE for all i (3) v_i = TRUE for all i => r = TRUE (4) r = FALSE, v_i = TRUE for all i except j => v_j = FALSE
additional if the resultant is fixed to zero during presolving or in the root node (globally), then the AND-constraint is collapsed to a linear (logicor) constraint of the form -> sum_{i=0}^{n-1} ~v_i >= 1
scip | SCIP data structure |
cons | AND-constraint to be processed |
eventhdlr | event handler to call for the event processing |
cutoff | pointer to store TRUE, if the node can be cut off |
nfixedvars | pointer to add up the number of found domain reductions |
nupgdconss | pointer to add up the number of upgraded constraints |
Definition at line 1646 of file cons_and.c.
References analyzeConflictZero(), analyzeZeroResultant(), consdataFixOperandsOne(), consdataFixResultantZero(), consdataLinearize(), consdataSwitchWatchedvars(), NULL, PROPRULE_3, resolvePropagation(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsModifiable(), SCIPcutoffNode(), SCIPdebugMsg, SCIPdelConsLocal(), SCIPgetDepth(), SCIPgetRootNode(), SCIPincConsAge(), SCIPinferBinvarCons(), SCIPinProbing(), SCIPinRepropagation(), SCIPisFeasEQ(), SCIPresetConsAge(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by dualPresolve(), mergeMultiples(), SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().
|
static |
resolves a conflict on the given variable by supplying the variables needed for applying the corresponding propagation rule (see propagateCons()): (1) v_i = FALSE => r = FALSE (2) r = TRUE => v_i = TRUE for all i (3) v_i = TRUE for all i => r = TRUE (4) r = FALSE, v_i = TRUE for all i except j => v_j = FALSE
scip | SCIP data structure |
cons | constraint that inferred the bound change |
infervar | variable that was deduced |
proprule | propagation rule that deduced the value |
bdchgidx | bound change index (time stamp of bound change), or NULL for current time |
result | pointer to store the result of the propagation conflict resolving call |
Definition at line 1851 of file cons_and.c.
References dualPresolve(), FALSE, NULL, PROPRULE_1, PROPRULE_2, PROPRULE_3, PROPRULE_4, PROPRULE_INVALID, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_SUCCESS, SCIPaddConflictBinvar(), SCIPconsGetData(), SCIPconsGetName(), SCIPerrorMessage, SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), and TRUE.
Referenced by propagateCons(), and SCIP_DECL_CONSRESPROP().
|
static |
perform dual presolving on AND-constraints
scip | SCIP data structure |
conss | AND-constraints to perform dual presolving on |
nconss | number of AND-constraints |
eventhdlr | event handler to call for the event processing |
entries | array to store whether two positions in constraints represent the same variable |
nentries | pointer for array size, if array will be to small it's corrected |
cutoff | pointer to store TRUE, if the node can be cut off |
nfixedvars | pointer to add up the number of found domain reductions |
naggrvars | pointer to add up the number of aggregated variables |
nchgcoefs | pointer to add up the number of changed coefficients |
ndelconss | pointer to add up the number of deleted constraints |
nupgdconss | pointer to add up the number of upgraded constraints |
naddconss | pointer to add up the number of added constraints |
Definition at line 1937 of file cons_and.c.
References applyFixings(), cliquePresolve(), delCoefPos(), FALSE, mergeMultiples(), NULL, propagateCons(), REALABS, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPaggregateVars(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdebugMsg, SCIPdelCons(), SCIPfixVar(), SCIPfreeBufferArray, SCIPgetNBinVars(), SCIPgetNImplVars(), SCIPinfinity(), SCIPisEQ(), SCIPisGE(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPisNegative(), SCIPisPositive(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetAggregatedObj(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by resolvePropagation(), and SCIP_DECL_CONSPRESOL().
|
static |
check if at least two operands or one operand and the resultant are in one clique, if so, we can fix the resultant to zero and in the former case we can also delete this constraint but we need to extract the clique information as constraint
x == AND(y, z) and clique(y,z) => x = 0, delete constraint and create y + z <= 1 x == AND(y, z) and clique(x,y) => x = 0
special handled cases are:
x == AND(~x, y) => x = 0 x == AND(x, y) => add x + ~y <= 1 and delete the constraint
check if one operand is in a clique with the negation of all other operands, this means we can aggregate this operand to the resultant
r == AND(x,y,z) and clique(x,~y) and clique(x,~z) => r == x
check if the resultant and the negations of all operands are in a clique
r == AND(x,y) and clique(r, ~x,~y) => upgrade the constraint to a set-partitioning constraint r + ~x + ~y = 1
scip | SCIP data structure |
cons | constraint to process |
eventhdlr | event handler to call for the event processing |
cutoff | pointer to store TRUE, if the node can be cut off |
nfixedvars | pointer to add up the number of found domain reductions |
naggrvars | pointer to add up the number of aggregated variables |
nchgcoefs | pointer to add up the number of changed coefficients |
ndelconss | pointer to add up the number of deleted constraints |
naddconss | pointer to add up the number of added constraints |
Definition at line 2572 of file cons_and.c.
References BMSclearMemoryArray, delCoefPos(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_HASHGETKEY(), SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_VARSTATUS_FIXED, SCIPaddCons(), SCIPaggregateVars(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsSetpack(), SCIPcreateConsSetpart(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPfixVar(), SCIPfreeBufferArray, SCIPgetNegatedVar(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNegatedVar(), SCIPvarGetProbvarBinary(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarsHaveCommonClique(), and TRUE.
Referenced by dualPresolve(), and SCIP_DECL_CONSPRESOL().
|
static |
gets the key of the given element
Definition at line 3221 of file cons_and.c.
References SCIP_DECL_HASHKEYEQ().
Referenced by cliquePresolve().
|
static |
returns TRUE iff both keys are equal; two constraints are equal if they have the same variables
Definition at line 3229 of file cons_and.c.
References consdataSort(), FALSE, NULL, SCIP_Bool, SCIP_DECL_HASHKEYVAL(), SCIPconsGetData(), SCIPvarCompare(), and TRUE.
Referenced by SCIP_DECL_HASHGETKEY().
|
static |
returns the hash value of the key
Definition at line 3275 of file cons_and.c.
References detectRedundantConstraints(), NULL, SCIPcombineTwoInt, SCIPconsGetData(), SCIPhashTwo, and SCIPvarGetIndex().
Referenced by SCIP_DECL_HASHKEYEQ().
|
static |
compares each constraint with all other constraints for possible redundancy and removes or changes constraint accordingly; in contrast to removeRedundantConstraints(), it uses a hash table
scip | SCIP data structure |
blkmem | block memory |
conss | constraint set |
nconss | number of constraints in constraint set |
firstchange | pointer to store first changed constraint |
cutoff | pointer to store TRUE, if a cutoff was found |
naggrvars | pointer to count number of aggregated variables |
ndelconss | pointer to count number of deleted constraints |
Definition at line 3300 of file cons_and.c.
References consdataSort(), enforceConstraint(), FALSE, HASHSIZE_ANDCONS, MAX, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaggregateVars(), SCIPconsGetData(), SCIPconsGetPos(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPdelCons(), SCIPdoNotAggr(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPhashtableInsert(), SCIPhashtableRetrieve(), SCIPupdateConsFlags(), SCIPvarCompare(), and TRUE.
Referenced by SCIP_DECL_CONSPRESOL(), and SCIP_DECL_HASHKEYVAL().
|
static |
helper function to enforce constraints
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints to process |
nconss | number of constraints |
sol | solution to enforce (NULL for the LP solution) |
result | pointer to store the result of the enforcing call |
Definition at line 3419 of file cons_and.c.
References checkCons(), FALSE, NULL, preprocessConstraintPairs(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_SEPARATED, SCIPconshdlrGetData(), and separateCons().
Referenced by detectRedundantConstraints(), SCIP_DECL_CONSENFOLP(), and SCIP_DECL_CONSENFORELAX().
|
static |
compares constraint with all prior constraints for possible redundancy or aggregation, and removes or changes constraint accordingly
scip | SCIP data structure |
conss | constraint set |
firstchange | first constraint that changed since last pair preprocessing round |
chkind | index of constraint to check against all prior indices upto startind |
cutoff | pointer to store TRUE, if a cutoff was found |
naggrvars | pointer to count number of aggregated variables |
nbdchgs | pointer to count the number of performed bound changes, or NULL |
ndelconss | pointer to count number of deleted constraints |
Definition at line 3490 of file cons_and.c.
References consdataSort(), FALSE, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_DECL_EXPRGRAPHNODEREFORM(), SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPaddVarImplication(), SCIPaggregateVars(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPdelCons(), SCIPdoNotAggr(), SCIPerrorMessage, SCIPisStopped(), SCIPupdateConsFlags(), SCIPvarCompare(), SCIPvarGetName(), and TRUE.
Referenced by enforceConstraint(), and SCIP_DECL_CONSPRESOL().
|
static |
tries to reformulate an expression graph node that is a product of binary variables via introducing an AND-constraint
Definition at line 3694 of file cons_and.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSHDLRCOPY(), SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_VARIDX, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPaddCons(), SCIPaddVar(), SCIPallocBufferArray, SCIPblkmem(), SCIPcreateConsAnd(), SCIPcreateVar(), SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugMsg, SCIPdebugPrintCons, SCIPexprGetMonomialCoef(), SCIPexprGetMonomialNFactors(), SCIPexprgraphAddNode(), SCIPexprgraphAddVars(), SCIPexprgraphCreateNodeLinear(), SCIPexprgraphGetNodeChildren(), SCIPexprgraphGetNodeNChildren(), SCIPexprgraphGetNodeOperator(), SCIPexprgraphGetNodePolynomialConstant(), SCIPexprgraphGetNodePolynomialMonomials(), SCIPexprgraphGetNodePolynomialNMonomials(), SCIPexprgraphGetNodeVar(), SCIPfreeBufferArray, SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), SCIPvarIsBinary(), and TRUE.
Referenced by preprocessConstraintPairs().
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 3819 of file cons_and.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrAnd(), and TRUE.
Referenced by SCIP_DECL_EXPRGRAPHNODEREFORM().
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 3835 of file cons_and.c.
References conshdlrdataFree(), NULL, SCIP_CALL, SCIP_DECL_CONSINITPRE(), SCIP_OKAY, SCIPconshdlrGetData(), and SCIPconshdlrSetData().
Referenced by SCIP_DECL_CONSHDLRCOPY().
|
static |
presolving initialization method of constraint handler (called when presolving is about to begin)
Definition at line 3853 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSEXITPRE, SCIP_DECL_CONSEXITSOL(), SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_WRITEERROR, SCIPABORT, SCIPaddCons(), SCIPallocBufferArray, SCIPblkmem(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsAdded(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdelCons(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetVarsData(), SCIPgmlWriteArc(), SCIPgmlWriteClosing(), SCIPgmlWriteNode(), SCIPgmlWriteOpening(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPinfinity(), SCIPreallocBufferArray, SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetProbvar(), SCIPvarsGetProbvar(), and TRUE.
Referenced by SCIP_DECL_CONSFREE().
|
static |
solving process deinitialization method of constraint handler (called before branch and bound process data is freed)
Definition at line 4133 of file cons_and.c.
References consdataFreeRows(), NULL, SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_OKAY, and SCIPconsGetData().
Referenced by SCIP_DECL_CONSINITPRE().
|
static |
frees specific constraint data
Definition at line 4153 of file cons_and.c.
References consdataFree(), NULL, SCIP_CALL, SCIP_DECL_CONSTRANS(), SCIP_OKAY, and SCIPconshdlrGetData().
Referenced by SCIP_DECL_CONSEXITSOL().
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 4168 of file cons_and.c.
References consdataCreate(), NULL, SCIP_CALL, SCIP_DECL_CONSINITLP(), SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), and SCIPcreateCons().
Referenced by SCIP_DECL_CONSDELETE().
|
static |
LP initialization method of constraint handler (called before the initial LP relaxation at a node is solved)
Definition at line 4198 of file cons_and.c.
References addRelaxation(), FALSE, SCIP_CALL, SCIP_DECL_CONSSEPALP(), SCIP_OKAY, and SCIPconsIsInitial().
Referenced by SCIP_DECL_CONSTRANS().
|
static |
separation method of constraint handler for LP solutions
Definition at line 4216 of file cons_and.c.
References NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSSEPASOL(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SEPARATED, and separateCons().
Referenced by SCIP_DECL_CONSINITLP().
|
static |
separation method of constraint handler for arbitrary primal solutions
Definition at line 4243 of file cons_and.c.
References SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSENFOLP(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SEPARATED, and separateCons().
Referenced by SCIP_DECL_CONSSEPALP().
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 4270 of file cons_and.c.
References enforceConstraint(), NULL, SCIP_CALL, SCIP_DECL_CONSENFORELAX(), and SCIP_OKAY.
Referenced by SCIP_DECL_CONSSEPASOL().
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 4279 of file cons_and.c.
References enforceConstraint(), SCIP_CALL, SCIP_DECL_CONSENFOPS(), and SCIP_OKAY.
Referenced by SCIP_DECL_CONSENFOLP().
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 4288 of file cons_and.c.
References checkCons(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSCHECK(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, and TRUE.
Referenced by SCIP_DECL_CONSENFORELAX().
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 4311 of file cons_and.c.
References checkCons(), SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPROP(), SCIP_FEASIBLE, SCIP_INFEASIBLE, and SCIP_OKAY.
Referenced by SCIP_DECL_CONSENFOPS().
|
static |
domain propagation method of constraint handler
Definition at line 4332 of file cons_and.c.
References FALSE, NULL, propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSPRESOL(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_REDUCEDDOM, and SCIPconshdlrGetData().
Referenced by SCIP_DECL_CONSCHECK().
|
static |
presolving method of constraint handler
Definition at line 4367 of file cons_and.c.
References applyFixings(), cliquePresolve(), detectRedundantConstraints(), dualPresolve(), FALSE, mergeMultiples(), MINGAINPERNMINCOMPARISONS, NMINCOMPARISONS, NULL, preprocessConstraintPairs(), propagateCons(), SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSRESPROP(), SCIP_DIDNOTFIND, SCIP_Longint, SCIP_OKAY, SCIP_PRESOLTIMING_EXHAUSTIVE, SCIP_Real, SCIP_SUCCESS, SCIPaddVarImplication(), SCIPaggregateVars(), SCIPallocBufferArray, SCIPallowDualReds(), SCIPblkmem(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPdelCons(), SCIPdoNotAggr(), SCIPfreeBufferArray, SCIPgetNContVars(), SCIPgetNVars(), SCIPisFeasEQ(), SCIPisStopped(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by SCIP_DECL_CONSPROP().
|
static |
propagation conflict resolving method of constraint handler
Definition at line 4578 of file cons_and.c.
References resolvePropagation(), SCIP_CALL, SCIP_DECL_CONSLOCK(), and SCIP_OKAY.
Referenced by SCIP_DECL_CONSPRESOL().
|
static |
variable rounding lock method of constraint handler
Definition at line 4588 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_OKAY, SCIPaddVarLocks(), and SCIPconsGetData().
Referenced by SCIP_DECL_CONSRESPROP().
|
static |
constraint display method of constraint handler
Definition at line 4611 of file cons_and.c.
References consdataPrint(), NULL, SCIP_CALL, SCIP_DECL_CONSCOPY(), SCIP_OKAY, and SCIPconsGetData().
Referenced by SCIP_DECL_CONSLOCK().
|
static |
constraint copying method of constraint handler
Definition at line 4625 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSPARSE(), SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetName(), SCIPcreateConsAnd(), SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarCopy(), SCIPgetVarsAnd(), and TRUE.
Referenced by SCIP_DECL_CONSPRINT().
|
static |
constraint parsing method of constraint handler
Definition at line 4683 of file cons_and.c.
References FALSE, NULL, SCIP_CALL, SCIP_DECL_CONSGETVARS(), SCIP_OKAY, SCIPallocBufferArray, SCIPcreateConsAnd(), SCIPdebugMsg, SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfreeBufferArray, SCIPparseVarName(), SCIPparseVarsList(), SCIPreallocBufferArray, and TRUE.
Referenced by SCIP_DECL_CONSCOPY().
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 4791 of file cons_and.c.
References BMScopyMemoryArray, FALSE, NULL, SCIP_DECL_CONSGETNVARS(), SCIP_OKAY, SCIPconsGetData(), and TRUE.
Referenced by SCIP_DECL_CONSPARSE().
|
static |
constraint method of constraint handler which returns the number of variable (if possible)
Definition at line 4812 of file cons_and.c.
References NULL, SCIP_DECL_EVENTEXEC(), SCIP_OKAY, SCIPconsGetData(), and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().
|
static |
Definition at line 4833 of file cons_and.c.
References FALSE, NULL, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, SCIPeventGetType(), and SCIPincludeConshdlrAnd().
Referenced by SCIP_DECL_CONSGETNVARS().