Detailed Description
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 "blockmemshell/memory.h"
#include "nlpi/pub_expr.h"
#include "scip/cons_and.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_pseudoboolean.h"
#include "scip/cons_setppc.h"
#include "scip/debug.h"
#include "scip/pub_cons.h"
#include "scip/pub_event.h"
#include "scip/pub_lp.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_conflict.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_cut.h"
#include "scip/scip_event.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.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_probing.h"
#include "scip/scip_sol.h"
#include "scip/scip_tree.h"
#include "scip/scip_var.h"
#include <string.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_0_INVALID = 0, 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 = 0, PROPRULE_2 = 1, PROPRULE_3 = 2, PROPRULE_4 = 3, PROPRULE_INVALID = 4, 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 void | 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) |
Macro Definition Documentation
◆ CONSHDLR_NAME
#define CONSHDLR_NAME "and" |
Definition at line 72 of file cons_and.c.
Referenced by SCIP_DECL_CONSHDLRCOPY(), SCIPchgAndConsCheckFlagWhenUpgr(), SCIPchgAndConsRemovableFlagWhenUpgr(), SCIPcreateConsAnd(), SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPincludeConshdlrAnd(), SCIPisAndConsSorted(), and SCIPsortAndCons().
◆ CONSHDLR_DESC
#define CONSHDLR_DESC "constraint handler for AND-constraints: r = and(x1, ..., xn)" |
Definition at line 73 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_SEPAPRIORITY
#define CONSHDLR_SEPAPRIORITY +850100 |
priority of the constraint handler for separation
Definition at line 74 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_ENFOPRIORITY
#define CONSHDLR_ENFOPRIORITY -850100 |
priority of the constraint handler for constraint enforcing
Definition at line 75 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_CHECKPRIORITY
#define CONSHDLR_CHECKPRIORITY -850100 |
priority of the constraint handler for checking feasibility
Definition at line 76 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_SEPAFREQ
#define CONSHDLR_SEPAFREQ 1 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 77 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_PROPFREQ
#define CONSHDLR_PROPFREQ 1 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 78 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ 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 79 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_MAXPREROUNDS
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 82 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_DELAYSEPA
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 83 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_DELAYPROP
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 84 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_NEEDSCONS
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 85 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_PRESOLTIMING
#define CONSHDLR_PRESOLTIMING (SCIP_PRESOLTIMING_FAST | SCIP_PRESOLTIMING_EXHAUSTIVE) |
Definition at line 87 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_PROP_TIMING
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
Definition at line 88 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ EVENTHDLR_NAME
#define EVENTHDLR_NAME "and" |
Definition at line 90 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ EVENTHDLR_DESC
#define EVENTHDLR_DESC "bound change event handler for AND-constraints" |
Definition at line 91 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_PRESOLPAIRWISE
#define DEFAULT_PRESOLPAIRWISE TRUE |
should pairwise constraint comparison be performed in presolving?
Definition at line 93 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_LINEARIZE
#define DEFAULT_LINEARIZE FALSE |
should constraint get linearized and removed?
Definition at line 94 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_ENFORCECUTS
#define DEFAULT_ENFORCECUTS TRUE |
should cuts be separated during LP enforcing?
Definition at line 95 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_AGGRLINEARIZATION
#define DEFAULT_AGGRLINEARIZATION FALSE |
should an aggregated linearization be used?
Definition at line 96 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_UPGRRESULTANT
#define DEFAULT_UPGRRESULTANT TRUE |
should all binary resultant variables be upgraded to implicit binary variables
Definition at line 97 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_DUALPRESOLVING
#define DEFAULT_DUALPRESOLVING TRUE |
should dual presolving be performed?
Definition at line 98 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ HASHSIZE_ANDCONS
#define HASHSIZE_ANDCONS 500 |
minimal size of hash table in and constraint tables
Definition at line 100 of file cons_and.c.
Referenced by detectRedundantConstraints().
◆ DEFAULT_PRESOLUSEHASHING
#define DEFAULT_PRESOLUSEHASHING TRUE |
should hash table be used for detecting redundant constraints in advance
Definition at line 101 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ NMINCOMPARISONS
#define NMINCOMPARISONS 200000 |
number for minimal pairwise presolving comparisons
Definition at line 102 of file cons_and.c.
Referenced by SCIP_DECL_CONSPRESOL().
◆ MINGAINPERNMINCOMPARISONS
#define MINGAINPERNMINCOMPARISONS 1e-06 |
minimal gain per minimal pairwise presolving comparisons to repeat pairwise comparison round
Definition at line 103 of file cons_and.c.
Referenced by SCIP_DECL_CONSPRESOL().
◆ EXPRGRAPHREFORM_PRIORITY
#define EXPRGRAPHREFORM_PRIORITY 100000 |
priority of expression graph node reformulation method
Definition at line 104 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
Typedef Documentation
◆ PROPRULE
Definition at line 167 of file cons_and.c.
Enumeration Type Documentation
◆ Proprule
enum Proprule |
Definition at line 159 of file cons_and.c.
Function Documentation
◆ lockRounding()
|
static |
installs rounding locks for the given variable in the given AND-constraint
- Parameters
-
scip SCIP data structure cons constraint data var variable of constraint entry
Definition at line 176 of file cons_and.c.
References SCIP_CALL, SCIP_OKAY, SCIPlockVarCons(), TRUE, and unlockRounding().
Referenced by addCoef().
◆ unlockRounding()
|
static |
removes rounding locks for the given variable in the given AND-constraint
- Parameters
-
scip SCIP data structure cons constraint data var variable of constraint entry
Definition at line 190 of file cons_and.c.
References conshdlrdataCreate(), SCIP_CALL, SCIP_OKAY, SCIPunlockVarCons(), and TRUE.
Referenced by delCoefPos(), and lockRounding().
◆ conshdlrdataCreate()
|
static |
creates constraint handler data
- Parameters
-
scip SCIP data structure conshdlrdata pointer to store the constraint handler data eventhdlr event handler
Definition at line 204 of file cons_and.c.
References conshdlrdataFree(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.
Referenced by SCIPincludeConshdlrAnd(), and unlockRounding().
◆ conshdlrdataFree()
|
static |
frees constraint handler data
- Parameters
-
scip SCIP data structure conshdlrdata pointer to the constraint handler data
Definition at line 224 of file cons_and.c.
References consdataCatchWatchedEvents(), NULL, and SCIPfreeBlockMemory.
Referenced by conshdlrdataCreate(), and SCIP_DECL_CONSFREE().
◆ consdataCatchWatchedEvents()
|
static |
catches events for the watched variable at given position
- Parameters
-
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 237 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().
◆ consdataDropWatchedEvents()
|
static |
drops events for the watched variable at given position
- Parameters
-
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 261 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().
◆ consdataCatchEvents()
|
static |
catches needed events on all variables of constraint, except the special ones for watched variables
- Parameters
-
scip SCIP data structure consdata AND-constraint data eventhdlr event handler to call for the event processing
Definition at line 284 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().
◆ consdataDropEvents()
|
static |
drops events on all variables of constraint, except the special ones for watched variables
- Parameters
-
scip SCIP data structure consdata AND-constraint data eventhdlr event handler to call for the event processing
Definition at line 310 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().
◆ consdataSwitchWatchedvars()
|
static |
stores the given variable numbers as watched variables, and updates the event processing
- Parameters
-
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 336 of file cons_and.c.
References consdataCatchWatchedEvents(), consdataDropWatchedEvents(), consdataEnsureVarsSize(), NULL, SCIP_CALL, and SCIP_OKAY.
Referenced by consdataDropEvents(), consdataFree(), delCoefPos(), and propagateCons().
◆ consdataEnsureVarsSize()
|
static |
ensures, that the vars array can store at least num entries
- Parameters
-
scip SCIP data structure consdata linear constraint data num minimum number of entries to store
Definition at line 396 of file cons_and.c.
References consdataCreate(), NULL, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), and SCIPreallocBlockMemoryArray.
Referenced by addCoef(), and consdataSwitchWatchedvars().
◆ consdataCreate()
|
static |
creates constraint data for AND-constraint
- Parameters
-
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 420 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().
◆ consdataFreeRows()
|
static |
releases LP rows of constraint data and frees rows array
- Parameters
-
scip SCIP data structure consdata constraint data
Definition at line 502 of file cons_and.c.
References consdataFree(), NULL, r, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemoryArray, and SCIPreleaseRow().
Referenced by consdataCreate(), consdataFree(), and SCIP_DECL_CONSEXITSOL().
◆ consdataFree()
|
static |
frees constraint data for AND-constraint
- Parameters
-
scip SCIP data structure consdata pointer to the constraint data eventhdlr event handler to call for the event processing
Definition at line 533 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().
◆ consdataPrint()
|
static |
prints AND-constraint to file stream
- Parameters
-
scip SCIP data structure consdata AND-constraint data file output file (or NULL for standard output)
Definition at line 577 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().
◆ addCoef()
|
static |
adds coefficient to AND-constraint
- Parameters
-
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 602 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().
◆ delCoefPos()
|
static |
deletes coefficient at given position from AND-constraint data
- Parameters
-
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 662 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().
◆ consdataSort()
|
static |
sorts AND-constraint's variables by non-decreasing variable index
- Parameters
-
consdata constraint data
Definition at line 725 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().
◆ applyFixings()
|
static |
deletes all one-fixed variables
- Parameters
-
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 806 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().
◆ createRelaxation()
|
static |
creates a linearization of the AND-constraint
- Parameters
-
scip SCIP data structure cons constraint to check
Definition at line 906 of file cons_and.c.
References addRelaxation(), NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPaddVarsToRowSameCoef(), SCIPaddVarToRow(), SCIPallocBlockMemoryArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsRemovable(), SCIPcreateEmptyRowCons(), SCIPinfinity(), and SCIPsnprintf().
Referenced by addRelaxation(), applyFixings(), and separateCons().
◆ addRelaxation()
|
static |
adds linear relaxation of AND-constraint to the LP
- Parameters
-
scip SCIP data structure cons constraint to check infeasible pointer to store whether an infeasibility was detected
Definition at line 953 of file cons_and.c.
References checkCons(), createRelaxation(), FALSE, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddRow(), SCIPaddVarsToRowSameCoef(), SCIPaddVarToRow(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsRemovable(), SCIPcreateEmptyRowCons(), SCIPinfinity(), SCIProwIsInLP(), and SCIPsnprintf().
Referenced by createRelaxation(), and SCIP_DECL_CONSINITLP().
◆ checkCons()
|
static |
checks AND-constraint for feasibility of given solution: returns TRUE iff constraint is feasible
- Parameters
-
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 1013 of file cons_and.c.
References FALSE, NULL, r, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_REAL_FORMAT, SCIP_VARTYPE_IMPLINT, SCIPconsGetData(), SCIPgetSolVal(), SCIPincConsAge(), SCIPinfoMessage(), SCIPisFeasIntegral(), SCIPprintCons(), SCIPrelDiff(), SCIPresetConsAge(), SCIProwIsInLP(), SCIPupdateSolConsViolation(), SCIPvarGetName(), SCIPvarGetType(), separateCons(), and TRUE.
Referenced by addRelaxation(), enforceConstraint(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSENFOPS().
◆ separateCons()
|
static |
separates given primal solution
- Parameters
-
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 1143 of file cons_and.c.
References analyzeConflictOne(), createRelaxation(), FALSE, NULL, r, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddRow(), SCIPconsGetData(), SCIPgetRowSolFeasibility(), SCIPisFeasNegative(), SCIProwIsInLP(), and TRUE.
Referenced by checkCons(), enforceConstraint(), SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().
◆ analyzeConflictOne()
|
static |
analyzes conflicting TRUE assignment to resultant of given constraint, and adds conflict constraint to problem
- Parameters
-
scip SCIP data structure cons AND-constraint that detected the conflict falsepos position of operand that is fixed to FALSE
Definition at line 1192 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().
◆ analyzeConflictZero()
|
static |
analyzes conflicting FALSE assignment to resultant of given constraint, and adds conflict constraint to problem
- Parameters
-
scip SCIP data structure cons or constraint that detected the conflict
Definition at line 1224 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().
◆ consdataFixResultantZero()
|
static |
tries to fix the given resultant to zero
- Parameters
-
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 1260 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().
◆ consdataFixOperandsOne()
|
static |
fix all operands to one
- Parameters
-
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 1299 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().
◆ consdataLinearize()
|
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:
- \(\sum_{i=0}^{n-1} v_i \leq n-1\)
This can be transformed into a logicor constraint of the form
- \(\sum_{i=0}^{n-1} ~v_i \geq 1\)
- Parameters
-
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 1353 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().
◆ analyzeZeroResultant()
|
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
- Note
- consdata->watchedvars might not be the same to the watchedvar parameters, because the update was not yet done
- Parameters
-
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 1464 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().
◆ mergeMultiples()
|
static |
replaces multiple occurrences of variables
- Parameters
-
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 1525 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().
◆ propagateCons()
|
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
- Parameters
-
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 1682 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().
◆ resolvePropagation()
|
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
- Parameters
-
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 1887 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().
◆ dualPresolve()
|
static |
perform dual presolving on AND-constraints
- Parameters
-
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 1973 of file cons_and.c.
References applyFixings(), cliquePresolve(), delCoefPos(), FALSE, mergeMultiples(), NULL, propagateCons(), REALABS, SCIP_Bool, SCIP_CALL, SCIP_LOCKTYPE_MODEL, 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(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by resolvePropagation(), and SCIP_DECL_CONSPRESOL().
◆ cliquePresolve()
|
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:
- if the resultant is a negation of an operand, in that case we fix the resultant to 0
- if the resultant is equal to an operand, we will linearize this constraint by adding all necessary set-packing constraints like resultant + ~operand <= 1 and delete the old constraint
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
- Note
- We removed also fixed variables and propagate them, and if only one operand is remaining due to removal, we will aggregate the resultant with this operand
- Parameters
-
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 2625 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().
◆ SCIP_DECL_HASHGETKEY()
|
static |
gets the key of the given element
Definition at line 3273 of file cons_and.c.
References SCIP_DECL_HASHKEYEQ().
Referenced by cliquePresolve().
◆ SCIP_DECL_HASHKEYEQ()
|
static |
returns TRUE iff both keys are equal; two constraints are equal if they have the same variables
Definition at line 3281 of file cons_and.c.
References consdataSort(), FALSE, NULL, SCIP_Bool, SCIP_DECL_HASHKEYVAL(), SCIPconsGetData(), SCIPvarCompare(), and TRUE.
Referenced by SCIP_DECL_HASHGETKEY().
◆ SCIP_DECL_HASHKEYVAL()
|
static |
returns the hash value of the key
Definition at line 3327 of file cons_and.c.
References detectRedundantConstraints(), NULL, SCIPconsGetData(), SCIPhashFour, and SCIPvarGetIndex().
Referenced by SCIP_DECL_HASHKEYEQ().
◆ detectRedundantConstraints()
|
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
- Parameters
-
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 3351 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().
◆ enforceConstraint()
|
static |
helper function to enforce constraints
- Parameters
-
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 3471 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().
◆ preprocessConstraintPairs()
|
static |
compares constraint with all prior constraints for possible redundancy or aggregation, and removes or changes constraint accordingly
- Parameters
-
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 3542 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().
◆ SCIP_DECL_EXPRGRAPHNODEREFORM()
|
static |
tries to reformulate an expression graph node that is a product of binary variables via introducing an AND-constraint
Definition at line 3746 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().
◆ SCIP_DECL_CONSHDLRCOPY()
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 3871 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().
◆ SCIP_DECL_CONSFREE()
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 3887 of file cons_and.c.
References conshdlrdataFree(), NULL, SCIP_DECL_CONSINITPRE(), SCIP_OKAY, SCIPconshdlrGetData(), and SCIPconshdlrSetData().
Referenced by SCIP_DECL_CONSHDLRCOPY().
◆ SCIP_DECL_CONSINITPRE()
|
static |
presolving initialization method of constraint handler (called when presolving is about to begin)
Definition at line 3905 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_CALL_FINALLY, 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(), SCIPhashmapGetImageInt(), SCIPhashmapInsertInt(), SCIPinfinity(), SCIPreallocBufferArray, SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetProbvar(), SCIPvarsGetProbvar(), and TRUE.
Referenced by SCIP_DECL_CONSFREE().
◆ SCIP_DECL_CONSEXITSOL()
|
static |
solving process deinitialization method of constraint handler (called before branch and bound process data is freed)
Definition at line 4188 of file cons_and.c.
References consdataFreeRows(), NULL, SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_OKAY, and SCIPconsGetData().
Referenced by SCIP_DECL_CONSINITPRE().
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 4208 of file cons_and.c.
References consdataFree(), NULL, SCIP_CALL, SCIP_DECL_CONSTRANS(), SCIP_OKAY, and SCIPconshdlrGetData().
Referenced by SCIP_DECL_CONSEXITSOL().
◆ SCIP_DECL_CONSTRANS()
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 4223 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().
◆ SCIP_DECL_CONSINITLP()
|
static |
LP initialization method of constraint handler (called before the initial LP relaxation at a node is solved)
Definition at line 4253 of file cons_and.c.
References addRelaxation(), FALSE, SCIP_CALL, SCIP_DECL_CONSSEPALP(), SCIP_OKAY, and SCIPconsIsInitial().
Referenced by SCIP_DECL_CONSTRANS().
◆ SCIP_DECL_CONSSEPALP()
|
static |
separation method of constraint handler for LP solutions
Definition at line 4271 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().
◆ SCIP_DECL_CONSSEPASOL()
|
static |
separation method of constraint handler for arbitrary primal solutions
Definition at line 4298 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().
◆ SCIP_DECL_CONSENFOLP()
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 4325 of file cons_and.c.
References enforceConstraint(), NULL, SCIP_CALL, SCIP_DECL_CONSENFORELAX(), and SCIP_OKAY.
Referenced by SCIP_DECL_CONSSEPASOL().
◆ SCIP_DECL_CONSENFORELAX()
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 4334 of file cons_and.c.
References enforceConstraint(), SCIP_CALL, SCIP_DECL_CONSENFOPS(), and SCIP_OKAY.
Referenced by SCIP_DECL_CONSENFOLP().
◆ SCIP_DECL_CONSENFOPS()
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 4343 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().
◆ SCIP_DECL_CONSCHECK()
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 4366 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().
◆ SCIP_DECL_CONSPROP()
|
static |
domain propagation method of constraint handler
Definition at line 4387 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().
◆ SCIP_DECL_CONSPRESOL()
|
static |
presolving method of constraint handler
Definition at line 4422 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, SCIPallowStrongDualReds(), SCIPblkmem(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPdelCons(), SCIPdoNotAggr(), SCIPfreeBufferArray, SCIPgetNContVars(), SCIPgetNVars(), SCIPisFeasEQ(), SCIPisStopped(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by SCIP_DECL_CONSPROP().
◆ SCIP_DECL_CONSRESPROP()
|
static |
propagation conflict resolving method of constraint handler
Definition at line 4633 of file cons_and.c.
References resolvePropagation(), SCIP_CALL, SCIP_DECL_CONSLOCK(), and SCIP_OKAY.
Referenced by SCIP_DECL_CONSPRESOL().
◆ SCIP_DECL_CONSLOCK()
|
static |
variable rounding lock method of constraint handler
Definition at line 4643 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIPaddVarLocksType(), and SCIPconsGetData().
Referenced by SCIP_DECL_CONSRESPROP().
◆ SCIP_DECL_CONSPRINT()
|
static |
constraint display method of constraint handler
Definition at line 4668 of file cons_and.c.
References consdataPrint(), NULL, SCIP_CALL, SCIP_DECL_CONSCOPY(), SCIP_OKAY, and SCIPconsGetData().
Referenced by SCIP_DECL_CONSLOCK().
◆ SCIP_DECL_CONSCOPY()
|
static |
constraint copying method of constraint handler
Definition at line 4681 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSPARSE(), SCIP_INVALIDCALL, SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetName(), SCIPcreateConsAnd(), SCIPfreeBufferArray, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarCopy(), SCIPgetVarsAnd(), and TRUE.
Referenced by SCIP_DECL_CONSPRINT().
◆ SCIP_DECL_CONSPARSE()
|
static |
constraint parsing method of constraint handler
Definition at line 4742 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().
◆ SCIP_DECL_CONSGETVARS()
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 4850 of file cons_and.c.
References BMScopyMemoryArray, FALSE, NULL, SCIP_DECL_CONSGETNVARS(), SCIP_OKAY, SCIPconsGetData(), and TRUE.
Referenced by SCIP_DECL_CONSPARSE().
◆ SCIP_DECL_CONSGETNVARS()
|
static |
constraint method of constraint handler which returns the number of variable (if possible)
Definition at line 4871 of file cons_and.c.
References NULL, SCIP_DECL_EVENTEXEC(), SCIP_OKAY, SCIPconsGetData(), and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().
◆ SCIP_DECL_EVENTEXEC()
|
static |
Definition at line 4892 of file cons_and.c.
References FALSE, NULL, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, SCIPeventGetType(), and SCIPincludeConshdlrAnd().
Referenced by SCIP_DECL_CONSGETNVARS().