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 "scip/cons_and.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/cons_pseudoboolean.h"
#include "scip/cons_setppc.h"
#include "scip/expr_product.h"
#include "scip/expr_var.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_expr.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_nlp.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 "scip/symmetry_graph.h"
#include "symmetry/struct_symmetry.h"
#include <string.h>
Go to the source code of this file.
Typedefs | |
typedef enum Proprule | PROPRULE |
Enumerations | |
enum | Proprule { 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 | addNlrow (SCIP *scip, SCIP_CONS *cons) |
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_RETCODE | addSymmetryInformation (SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyAnd) |
static | SCIP_DECL_CONSFREE (consFreeAnd) |
static | SCIP_DECL_CONSINITPRE (consInitpreAnd) |
static | SCIP_DECL_CONSINITSOL (consInitsolAnd) |
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_CONSACTIVE (consActiveAnd) |
static | SCIP_DECL_CONSDEACTIVE (consDeactiveAnd) |
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_CONSGETPERMSYMGRAPH (consGetPermsymGraphAnd) |
static | SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH (consGetSignedPermsymGraphAnd) |
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 85 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 86 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_SEPAPRIORITY
#define CONSHDLR_SEPAPRIORITY +850100 |
priority of the constraint handler for separation
Definition at line 87 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 88 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 89 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 90 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 91 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 92 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 95 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 96 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 97 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 98 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_PRESOLTIMING
#define CONSHDLR_PRESOLTIMING (SCIP_PRESOLTIMING_FAST | SCIP_PRESOLTIMING_EXHAUSTIVE) |
Definition at line 100 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ CONSHDLR_PROP_TIMING
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
Definition at line 101 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ EVENTHDLR_NAME
#define EVENTHDLR_NAME "and" |
Definition at line 103 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ EVENTHDLR_DESC
#define EVENTHDLR_DESC "bound change event handler for AND-constraints" |
Definition at line 104 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 106 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_LINEARIZE
#define DEFAULT_LINEARIZE FALSE |
should constraint get linearized and removed?
Definition at line 107 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_ENFORCECUTS
#define DEFAULT_ENFORCECUTS TRUE |
should cuts be separated during LP enforcing?
Definition at line 108 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_AGGRLINEARIZATION
#define DEFAULT_AGGRLINEARIZATION FALSE |
should an aggregated linearization be used?
Definition at line 109 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 110 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ DEFAULT_DUALPRESOLVING
#define DEFAULT_DUALPRESOLVING TRUE |
should dual presolving be performed?
Definition at line 111 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 113 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 114 of file cons_and.c.
Referenced by SCIPincludeConshdlrAnd().
◆ NMINCOMPARISONS
#define NMINCOMPARISONS 200000 |
number for minimal pairwise presolving comparisons
Definition at line 115 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 116 of file cons_and.c.
Referenced by SCIP_DECL_CONSPRESOL().
Typedef Documentation
◆ PROPRULE
Definition at line 180 of file cons_and.c.
Enumeration Type Documentation
◆ Proprule
enum Proprule |
Definition at line 172 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 189 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 203 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 217 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 237 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 250 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 274 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 297 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 323 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 349 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 409 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 433 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 516 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 547 of file cons_and.c.
References consdataDropEvents(), consdataFreeRows(), consdataPrint(), consdataSwitchWatchedvars(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPisTransformed(), SCIPreleaseNlRow(), 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 597 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 622 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 682 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 745 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 826 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 926 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 973 of file cons_and.c.
References addNlrow(), 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().
◆ addNlrow()
|
static |
adds constraint as row to the NLP, if not added yet
- Parameters
-
scip SCIP data structure cons and constraint
Definition at line 1033 of file cons_and.c.
References checkCons(), NULL, SCIP_CALL, SCIP_EXPRCURV_UNKNOWN, SCIP_OKAY, SCIP_Real, SCIPaddNlRow(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsLocal(), SCIPcreateExprProduct(), SCIPcreateExprVar(), SCIPcreateNlRow(), SCIPfreeBufferArray, SCIPisNLPConstructed(), SCIPnlrowIsInNLP(), and SCIPreleaseExpr().
Referenced by addRelaxation(), SCIP_DECL_CONSACTIVE(), and SCIP_DECL_CONSINITSOL().
◆ 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 1086 of file cons_and.c.
References FALSE, MAX3, NULL, r, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPgetSolVal(), SCIPincConsAge(), SCIPinfoMessage(), SCIPisFeasPositive(), SCIPprintCons(), SCIPresetConsAge(), SCIProwIsInLP(), SCIPupdateSolConsViolation(), SCIPvarGetName(), separateCons(), and TRUE.
Referenced by addNlrow(), 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 1198 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 1247 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 1279 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 1315 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 1354 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 1408 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 1519 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 1580 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 1737 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 1942 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 2028 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 2680 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 3328 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 3336 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 3382 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 3406 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 3526 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 3583 of file cons_and.c.
References addSymmetryInformation(), consdataSort(), FALSE, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, 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().
◆ addSymmetryInformation()
|
static |
adds symmetry information of constraint to a symmetry detection graph
- Parameters
-
scip SCIP pointer symtype type of symmetries that need to be added cons constraint graph symmetry detection graph success pointer to store whether symmetry information could be added
Definition at line 3787 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSHDLRCOPY(), SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPextendPermsymDetectionGraphLinear(), SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetSymActiveVariables(), SCIPgetVarsAnd(), and SCIPisTransformed().
Referenced by preprocessConstraintPairs(), SCIP_DECL_CONSGETPERMSYMGRAPH(), and SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH().
◆ SCIP_DECL_CONSHDLRCOPY()
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 3848 of file cons_and.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrAnd(), and TRUE.
Referenced by addSymmetryInformation().
◆ SCIP_DECL_CONSFREE()
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 3864 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 3882 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_CALL_FINALLY, SCIP_DECL_CONSEXITPRE, SCIP_DECL_CONSINITSOL(), 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_CONSINITSOL()
|
static |
solving process initialization method of constraint handler
Definition at line 4165 of file cons_and.c.
References addNlrow(), SCIP_CALL, SCIP_DECL_CONSEXITSOL(), SCIP_OKAY, and SCIPisNLPConstructed().
Referenced by SCIP_DECL_CONSINITPRE().
◆ SCIP_DECL_CONSEXITSOL()
|
static |
solving process deinitialization method of constraint handler (called before branch and bound process data is freed)
Definition at line 4182 of file cons_and.c.
References consdataFreeRows(), NULL, SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_OKAY, SCIPconsGetData(), and SCIPreleaseNlRow().
Referenced by SCIP_DECL_CONSINITSOL().
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 4207 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 4222 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 4252 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 4270 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 4297 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 4324 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 4333 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 4342 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 and
Definition at line 4364 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 4383 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 4418 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 4647 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 4657 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSACTIVE(), SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIPaddVarLocksType(), and SCIPconsGetData().
Referenced by SCIP_DECL_CONSRESPROP().
◆ SCIP_DECL_CONSACTIVE()
|
static |
constraint activation notification method of constraint handler
Definition at line 4681 of file cons_and.c.
References addNlrow(), SCIP_CALL, SCIP_DECL_CONSDEACTIVE(), SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPgetStage(), and SCIPisNLPConstructed().
Referenced by SCIP_DECL_CONSLOCK().
◆ SCIP_DECL_CONSDEACTIVE()
|
static |
constraint deactivation notification method of constraint handler
Definition at line 4693 of file cons_and.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPconsGetData(), SCIPdelNlRow(), and SCIPgetStage().
Referenced by SCIP_DECL_CONSACTIVE().
◆ SCIP_DECL_CONSPRINT()
|
static |
constraint display method of constraint handler
Definition at line 4715 of file cons_and.c.
References consdataPrint(), NULL, SCIP_CALL, SCIP_DECL_CONSCOPY(), SCIP_OKAY, and SCIPconsGetData().
Referenced by SCIP_DECL_CONSDEACTIVE().
◆ SCIP_DECL_CONSCOPY()
|
static |
constraint copying method of constraint handler
Definition at line 4728 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 4789 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 4898 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 4919 of file cons_and.c.
References NULL, SCIP_DECL_CONSGETPERMSYMGRAPH(), SCIP_OKAY, SCIPconsGetData(), and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().
◆ SCIP_DECL_CONSGETPERMSYMGRAPH()
|
static |
constraint handler method which returns the permutation symmetry detection graph of a constraint
Definition at line 4936 of file cons_and.c.
References addSymmetryInformation(), SCIP_CALL, SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(), SCIP_OKAY, and SYM_SYMTYPE_PERM.
Referenced by SCIP_DECL_CONSGETNVARS().
◆ SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH()
|
static |
constraint handler method which returns the signed permutation symmetry detection graph of a constraint
Definition at line 4945 of file cons_and.c.
References addSymmetryInformation(), SCIP_CALL, SCIP_DECL_EVENTEXEC(), SCIP_OKAY, and SYM_SYMTYPE_SIGNPERM.
Referenced by SCIP_DECL_CONSGETPERMSYMGRAPH().
◆ SCIP_DECL_EVENTEXEC()
|
static |
Definition at line 4957 of file cons_and.c.
References FALSE, NULL, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, SCIPeventGetType(), and SCIPincludeConshdlrAnd().
Referenced by SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH().