Constraint handler for logic or constraints \(1^T x \ge 1\) (equivalent to set covering, but algorithms are suited for depth first search).
Definition in file cons_logicor.c.
#include <assert.h>
#include <string.h>
#include <limits.h>
#include "scip/cons_logicor.h"
#include "scip/cons_linear.h"
#include "scip/cons_setppc.h"
#include "scip/pub_misc.h"
Go to the source code of this file.
Functions | |
static SCIP_RETCODE | lockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var) |
static SCIP_RETCODE | unlockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var) |
static SCIP_RETCODE | conshdlrdataCreate (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr) |
static SCIP_RETCODE | conshdlrdataFree (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata) |
static SCIP_RETCODE | consdataEnsureVarsSize (SCIP *scip, SCIP_CONSDATA *consdata, int num) |
static SCIP_RETCODE | consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, int nvars, SCIP_VAR **vars) |
static SCIP_RETCODE | consdataFree (SCIP *scip, SCIP_CONSDATA **consdata) |
static SCIP_RETCODE | consdataPrint (SCIP *scip, SCIP_CONSDATA *consdata, FILE *file, SCIP_Bool endline) |
static SCIP_RETCODE | switchWatchedvars (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int watchedvar1, int watchedvar2) |
static SCIP_RETCODE | addCoef (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var) |
static SCIP_RETCODE | delCoefPos (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos) |
static SCIP_RETCODE | dualPresolving (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int *nfixedvars, int *ndelconss, int *nchgcoefs, SCIP_RESULT *result) |
static SCIP_RETCODE | applyFixings (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *redundant, int *nchgcoefs, int *naddconss, int *ndelconss) |
static SCIP_RETCODE | analyzeConflict (SCIP *scip, SCIP_CONS *cons) |
static SCIP_RETCODE | disableCons (SCIP *scip, SCIP_CONS *cons) |
static SCIP_RETCODE | mergeMultiples (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, unsigned char **entries, int *nentries, SCIP_Bool *redundant, int *nchgcoefs) |
static SCIP_RETCODE | processWatchedVars (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, SCIP_Bool *reduceddom, SCIP_Bool *addcut, SCIP_Bool *mustcheck) |
static SCIP_RETCODE | checkCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *violated) |
static SCIP_RETCODE | createRow (SCIP *scip, SCIP_CONS *cons) |
static SCIP_RETCODE | addCut (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff) |
static SCIP_RETCODE | separateCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, SCIP_Bool *separated, SCIP_Bool *reduceddom) |
static SCIP_RETCODE | enforcePseudo (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, SCIP_Bool *infeasible, SCIP_Bool *reduceddom, SCIP_Bool *solvelp) |
static void | consdataSort (SCIP_CONSDATA *consdata) |
static | SCIP_DECL_HASHGETKEY (hashGetKeyLogicorcons) |
static | SCIP_DECL_HASHKEYEQ (hashKeyEqLogicorcons) |
static | SCIP_DECL_HASHKEYVAL (hashKeyValLogicorcons) |
static SCIP_RETCODE | detectRedundantConstraints (SCIP *scip, BMS_BLKMEM *blkmem, SCIP_CONS **conss, int nconss, int *firstchange, int *ndelconss) |
static SCIP_RETCODE | removeRedundantCons (SCIP *scip, SCIP_CONS *cons0, SCIP_CONS *cons1, int *ndelconss) |
static unsigned int | calcSignature (SCIP_VAR **vars, int nvars) |
static void | consdataCalcSignature (SCIP_CONSDATA *consdata) |
static void | removeConsFromOccurList (SCIP_CONS *cons, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength) |
static void | findShortestOccurlist (SCIP_VAR **vars, int nvars, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength, int *nentries, SCIP_CONS ***shortestlist) |
static SCIP_RETCODE | removeRedundantConss (SCIP *scip, SCIP_CONS *cons, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength, int *ndelconss) |
static | SCIP_DECL_SORTPTRCOMP (conssLogicorComp) |
static SCIP_RETCODE | addConsToOccurList (SCIP *scip, SCIP_CONS *cons, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int *occurlistsizes, int *occurlistlength, int occurlistsize) |
static SCIP_RETCODE | removeRedundantNonZeros (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *artvar, int artpos, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength, SCIP_EVENTHDLR *eventhdlr, int *nchgcoefs, SCIP_Bool *deleted) |
static SCIP_RETCODE | strengthenConss (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_HASHMAP *varstopos, SCIP_CONS ***occurlist, int *noccurlistentries, int occurlistlength, SCIP_EVENTHDLR *eventhdlr, int *ndelconss, int *nchgcoefs) |
static SCIP_RETCODE | prepareCons (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, unsigned char **entries, int *nentries, SCIP_Bool *redundant, int *nfixedvars, int *nchgcoefs, int *ndelconss, SCIP_Bool *cutoff) |
static SCIP_RETCODE | removeRedundantConssAndNonzeros (SCIP *scip, SCIP_CONS **conss, int nconss, unsigned char **entries, int *nentries, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool usestrengthening, int *firstchange, int *nfixedvars, int *ndelconss, int *nchgcoefs, SCIP_Bool *cutoff) |
static SCIP_RETCODE | shortenConss (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_EVENTHDLR *eventhdlr, SCIP_CONS **conss, int nconss, unsigned char **entries, int *nentries, int *nfixedvars, int *ndelconss, int *nchgcoefs, SCIP_Bool *cutoff) |
static SCIP_RETCODE | removeConstraintsDueToNegCliques (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLR *conshdlrsetppc, SCIP_EVENTHDLR *eventhdlr, SCIP_CONS **conss, int nconss, unsigned char **entries, int *nentries, int *nfixedvars, int *ndelconss, int *nupgdconss, int *nchgcoefs, SCIP_Bool *cutoff) |
static SCIP_RETCODE | fixDeleteOrUpgradeCons (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_CONSHDLR *conshdlrlinear, SCIP_CONSHDLR *conshdlrsetppc, int *nfixedvars, int *nchgbds, int *nchgcoefs, int *ndelconss, int *naddconss, int *nupgdconss, SCIP_Bool *cutoff) |
static SCIP_RETCODE | createNormalizedLogicor (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, int mult, 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) |
static | SCIP_DECL_LINCONSUPGD (linconsUpgdLogicor) |
static SCIP_RETCODE | enforceConstraint (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_RESULT *result) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyLogicor) |
static | SCIP_DECL_CONSFREE (consFreeLogicor) |
static | SCIP_DECL_CONSINITPRE (consInitpreLogicor) |
static | SCIP_DECL_CONSEXITPRE (consExitpreLogicor) |
static | SCIP_DECL_CONSEXITSOL (consExitsolLogicor) |
static | SCIP_DECL_CONSDELETE (consDeleteLogicor) |
static | SCIP_DECL_CONSTRANS (consTransLogicor) |
static | SCIP_DECL_CONSINITLP (consInitlpLogicor) |
static | SCIP_DECL_CONSSEPALP (consSepalpLogicor) |
static | SCIP_DECL_CONSSEPASOL (consSepasolLogicor) |
static | SCIP_DECL_CONSENFOLP (consEnfolpLogicor) |
static | SCIP_DECL_CONSENFORELAX (consEnforelaxLogicor) |
static | SCIP_DECL_CONSENFOPS (consEnfopsLogicor) |
static | SCIP_DECL_CONSCHECK (consCheckLogicor) |
static | SCIP_DECL_CONSPROP (consPropLogicor) |
static | SCIP_DECL_CONSPRESOL (consPresolLogicor) |
static | SCIP_DECL_CONSRESPROP (consRespropLogicor) |
static | SCIP_DECL_CONSLOCK (consLockLogicor) |
static | SCIP_DECL_CONSACTIVE (consActiveLogicor) |
static | SCIP_DECL_CONSDEACTIVE (consDeactiveLogicor) |
static | SCIP_DECL_CONSPRINT (consPrintLogicor) |
static | SCIP_DECL_CONSCOPY (consCopyLogicor) |
static | SCIP_DECL_CONSPARSE (consParseLogicor) |
static | SCIP_DECL_CONSGETVARS (consGetVarsLogicor) |
static | SCIP_DECL_CONSGETNVARS (consGetNVarsLogicor) |
static | SCIP_DECL_EVENTEXEC (eventExecLogicor) |
static | SCIP_DECL_CONFLICTEXEC (conflictExecLogicor) |
SCIP_RETCODE | SCIPincludeConshdlrLogicor (SCIP *scip) |
SCIP_RETCODE | SCIPcreateConsLogicor (SCIP *scip, SCIP_CONS **cons, const char *name, 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 | SCIPcreateConsBasicLogicor (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars) |
SCIP_RETCODE | SCIPaddCoefLogicor (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var) |
int | SCIPgetNVarsLogicor (SCIP *scip, SCIP_CONS *cons) |
SCIP_VAR ** | SCIPgetVarsLogicor (SCIP *scip, SCIP_CONS *cons) |
SCIP_Real | SCIPgetDualsolLogicor (SCIP *scip, SCIP_CONS *cons) |
SCIP_Real | SCIPgetDualfarkasLogicor (SCIP *scip, SCIP_CONS *cons) |
SCIP_ROW * | SCIPgetRowLogicor (SCIP *scip, SCIP_CONS *cons) |
#define CONSHDLR_NAME "logicor" |
Definition at line 35 of file cons_logicor.c.
Referenced by addCoef(), enforceConstraint(), enforcePseudo(), processWatchedVars(), SCIPaddCoefLogicor(), SCIPcreateConsLogicor(), SCIPgetDualfarkasLogicor(), SCIPgetDualsolLogicor(), SCIPgetNVarsLogicor(), SCIPgetRowLogicor(), SCIPgetVarsLogicor(), SCIPincludeConshdlrLogicor(), and separateCons().
#define CONSHDLR_DESC "logic or constraints" |
Definition at line 36 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_SEPAPRIORITY +10000 |
priority of the constraint handler for separation
Definition at line 37 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_ENFOPRIORITY -2000000 |
priority of the constraint handler for constraint enforcing
Definition at line 38 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_CHECKPRIORITY -2000000 |
priority of the constraint handler for checking feasibility
Definition at line 39 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_SEPAFREQ 0 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 40 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_PROPFREQ 1 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 41 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#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 42 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 45 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 46 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 47 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 48 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_ALWAYS |
Definition at line 50 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
Definition at line 51 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define LINCONSUPGD_PRIORITY +800000 |
priority of the constraint handler for upgrading of linear constraints
Definition at line 53 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define EVENTHDLR_NAME "logicor" |
Definition at line 55 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define EVENTHDLR_DESC "event handler for logic or constraints" |
Definition at line 56 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONFLICTHDLR_NAME "logicor" |
Definition at line 58 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONFLICTHDLR_DESC "conflict handler creating logic or constraints" |
Definition at line 59 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define CONFLICTHDLR_PRIORITY LINCONSUPGD_PRIORITY |
Definition at line 60 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define DEFAULT_PRESOLPAIRWISE TRUE |
should pairwise constraint comparison be performed in presolving?
Definition at line 62 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define DEFAULT_STRENGTHEN TRUE |
should pairwise constraint comparison try to strengthen constraints by removing superflous non-zeros?
Definition at line 63 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define HASHSIZE_LOGICORCONS 500 |
minimal size of hash table in logicor constraint tables
Definition at line 65 of file cons_logicor.c.
Referenced by detectRedundantConstraints().
#define DEFAULT_PRESOLUSEHASHING TRUE |
should hash table be used for detecting redundant constraints in advance
Definition at line 66 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define DEFAULT_DUALPRESOLVING TRUE |
should dual presolving steps be performed?
Definition at line 67 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define DEFAULT_NEGATEDCLIQUE TRUE |
should negated clique information be used in presolving
Definition at line 68 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define DEFAULT_IMPLICATIONS TRUE |
should we try to shrink the variables and derive global boundchanges by using cliques and implications
Definition at line 69 of file cons_logicor.c.
Referenced by SCIPincludeConshdlrLogicor().
#define AGEINCREASE | ( | n | ) | (1.0 + 0.2 * (n)) |
Definition at line 75 of file cons_logicor.c.
Referenced by processWatchedVars().
#define MAX_CONSLENGTH 200 |
Definition at line 3075 of file cons_logicor.c.
Referenced by shortenConss().
#define MAXCOMPARISONS 1000000 |
Definition at line 3271 of file cons_logicor.c.
Referenced by removeConstraintsDueToNegCliques().
|
static |
installs rounding locks for the given variable in the given logic or constraint
scip | SCIP data structure |
cons | logic or constraint |
var | variable of constraint entry |
Definition at line 144 of file cons_logicor.c.
References FALSE, SCIP_CALL, SCIP_OKAY, SCIPlockVarCons(), TRUE, and unlockRounding().
Referenced by addCoef().
|
static |
removes rounding locks for the given variable in the given logic or constraint
scip | SCIP data structure |
cons | logic or constraint |
var | variable of constraint entry |
Definition at line 158 of file cons_logicor.c.
References conshdlrdataCreate(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPunlockVarCons(), and TRUE.
Referenced by delCoefPos(), and lockRounding().
|
static |
creates constraint handler data for logic or constraint handler
scip | SCIP data structure |
conshdlrdata | pointer to store the constraint handler data |
eventhdlr | event handler |
Definition at line 172 of file cons_logicor.c.
References conshdlrdataFree(), SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.
Referenced by SCIPincludeConshdlrLogicor(), and unlockRounding().
|
static |
frees constraint handler data for logic or constraint handler
scip | SCIP data structure |
conshdlrdata | pointer to the constraint handler data |
Definition at line 197 of file cons_logicor.c.
References consdataEnsureVarsSize(), SCIP_OKAY, and SCIPfreeBlockMemory.
Referenced by conshdlrdataCreate().
|
static |
ensures, that the vars array can store at least num entries
scip | SCIP data structure |
consdata | logicor constraint data |
num | minimum number of entries to store |
Definition at line 212 of file cons_logicor.c.
References consdataCreate(), SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), and SCIPreallocBlockMemoryArray.
Referenced by addCoef(), and conshdlrdataFree().
|
static |
creates a logic or constraint data object
scip | SCIP data structure |
consdata | pointer to store the logic or constraint data |
nvars | number of variables in the constraint |
vars | variables of the constraint |
Definition at line 236 of file cons_logicor.c.
References consdataFree(), FALSE, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_MULTAGGR, SCIPallocBlockMemory, SCIPcaptureVar(), SCIPduplicateBlockMemoryArray, SCIPgetTransformedVars(), SCIPisTransformed(), SCIPvarGetProbvar(), SCIPvarGetStatus(), and TRUE.
Referenced by consdataEnsureVarsSize(), and SCIPcreateConsLogicor().
|
static |
frees a logic or constraint data
scip | SCIP data structure |
consdata | pointer to the logic or constraint |
Definition at line 304 of file cons_logicor.c.
References consdataPrint(), SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, SCIPreleaseRow(), and SCIPreleaseVar().
Referenced by consdataCreate().
|
static |
prints logic or constraint to file stream
scip | SCIP data structure |
consdata | logic or constraint data |
file | output file (or NULL for standard output) |
endline | should an endline be set? |
Definition at line 335 of file cons_logicor.c.
References SCIP_CALL, SCIP_OKAY, SCIPinfoMessage(), SCIPwriteVarsList(), switchWatchedvars(), and TRUE.
Referenced by applyFixings(), and consdataFree().
|
static |
stores the given variable numbers as watched variables, and updates the event processing
scip | SCIP data structure |
cons | logic or constraint |
eventhdlr | event handler to call for the event processing |
watchedvar1 | new first watched variable |
watchedvar2 | new second watched variable |
Definition at line 361 of file cons_logicor.c.
References addCoef(), SCIP_CALL, SCIP_EVENTTYPE_LBRELAXED, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, SCIPcatchVarEvent(), SCIPconsGetData(), and SCIPdropVarEvent().
Referenced by consdataPrint(), delCoefPos(), and processWatchedVars().
|
static |
adds coefficient in logicor constraint
scip | SCIP data structure |
cons | logicor constraint |
var | variable to add to the constraint |
Definition at line 432 of file cons_logicor.c.
References consdataEnsureVarsSize(), CONSHDLR_NAME, delCoefPos(), FALSE, lockRounding(), SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIP_STAGE_INITPRESOLVE, SCIP_STAGE_PRESOLVING, SCIP_VARSTATUS_MULTAGGR, SCIPaddVarToRow(), SCIPcaptureVar(), SCIPcatchVarEvent(), SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPfindConshdlr(), SCIPgetStage(), SCIPgetTransformedVar(), SCIPvarGetProbvar(), SCIPvarGetStatus(), SCIPvarIsTransformed(), and TRUE.
Referenced by applyFixings(), SCIPaddCoefLogicor(), and switchWatchedvars().
|
static |
deletes coefficient at given position from logic or constraint data
scip | SCIP data structure |
cons | logic or constraint |
eventhdlr | event handler to call for the event processing |
pos | position of coefficient to delete |
Definition at line 502 of file cons_logicor.c.
References dualPresolving(), FALSE, SCIP_CALL, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIP_STAGE_INITPRESOLVE, SCIP_STAGE_PRESOLVING, SCIPconsGetData(), SCIPconsIsTransformed(), SCIPdropVarEvent(), SCIPenableConsPropagation(), SCIPgetStage(), SCIPreleaseVar(), SCIPvarIsTransformed(), switchWatchedvars(), TRUE, and unlockRounding().
Referenced by addCoef(), applyFixings(), dualPresolving(), mergeMultiples(), removeConstraintsDueToNegCliques(), removeRedundantNonZeros(), and shortenConss().
|
static |
in case a part (more than one variable) in the logic or constraint is independent of every else, we can perform dual reductions;
also added the special case were exactly one variable is locked by this constraint and another variable without any uplocks has a better objective value than this single variable
Note: the following dual reduction for logic or constraints is already performed by the presolver "dualfix"
scip | SCIP data structure |
cons | setppc constraint |
eventhdlr | event handler to call for the event processing |
nfixedvars | pointer to count number of fixings |
ndelconss | pointer to count number of deleted constraints |
nchgcoefs | pointer to count number of changed/deleted coefficients |
result | pointer to store the result SCIP_SUCCESS, if presolving was performed |
Definition at line 584 of file cons_logicor.c.
References applyFixings(), delCoefPos(), FALSE, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPconsGetData(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPdelCons(), SCIPfixVar(), SCIPinfinity(), SCIPisGE(), SCIPisLT(), SCIPisNegative(), SCIPvarGetAggregatedObj(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetObj(), SCIPvarGetProbvarBinary(), SCIPvarGetUbGlobal(), and SCIPvarIsActive().
Referenced by delCoefPos().
|
static |
deletes all zero-fixed variables, checks for variables fixed to one, replace all variables which are not active or not a negation of an active variable by there active or negation of an active counterpart
scip | SCIP data structure |
cons | logic or constraint |
eventhdlr | event handler to call for the event processing |
redundant | returns whether a variable fixed to one exists in the constraint |
nchgcoefs | pointer to count number of changed/deleted coefficients |
naddconss | pointer to count number of added constraints, or NULL indicating we can not resolve multi-aggregations |
ndelconss | pointer to count number of deleted constraints, or NULL indicating we can not resolve multi-aggregations |
Definition at line 835 of file cons_logicor.c.
References addCoef(), analyzeConflict(), consdataPrint(), delCoefPos(), FALSE, MAX, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIP_VARSTATUS_NEGATED, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsAdded(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdebug, SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetBinvarRepresentatives(), SCIPgetProbvarLinearSum(), SCIPinfinity(), SCIPisEQ(), SCIPisFeasEQ(), SCIPisZero(), SCIPreallocBufferArray, SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetLbGlobal(), SCIPvarGetNegatedVar(), SCIPvarGetNegationVar(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), SCIPvarIsBinary(), SCIPwarningMessage(), and TRUE.
Referenced by dualPresolving(), fixDeleteOrUpgradeCons(), and prepareCons().
|
static |
analyzes conflicting assignment on given constraint, and adds conflict constraint to problem
scip | SCIP data structure |
cons | logic or constraint that detected the conflict |
Definition at line 1088 of file cons_logicor.c.
References disableCons(), FALSE, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPaddConflictBinvar(), SCIPanalyzeConflictCons(), SCIPconsGetData(), SCIPgetStage(), SCIPinitConflictAnalysis(), SCIPinProbing(), and SCIPisConflictAnalysisApplicable().
Referenced by applyFixings(), and processWatchedVars().
|
static |
disables or deletes the given constraint, depending on the current depth
scip | SCIP data structure |
cons | bound disjunction constraint to be disabled |
Definition at line 1119 of file cons_logicor.c.
References mergeMultiples(), SCIP_CALL, SCIP_OKAY, SCIPconsGetName(), SCIPconsGetValidDepth(), SCIPdebugMsg, SCIPdelCons(), SCIPdisableCons(), and SCIPgetDepth().
Referenced by analyzeConflict(), and processWatchedVars().
|
static |
find pairs of negated variables in constraint: constraint is redundant find sets of equal variables in constraint: multiple entries of variable can be replaced by single entry
scip | SCIP data structure |
cons | logic or 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 |
redundant | returns whether a variable fixed to one exists in the constraint |
nchgcoefs | pointer to count number of changed/deleted coefficients |
Definition at line 1143 of file cons_logicor.c.
References delCoefPos(), FALSE, processWatchedVars(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_NEGATED, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNBinVars(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarIsActive(), SCIPvarIsBinary(), SCIPvarIsNegated(), and TRUE.
Referenced by disableCons(), and prepareCons().
|
static |
checks constraint for violation only looking at the watched variables, applies fixings if possible
scip | SCIP data structure |
cons | logic or 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 |
reduceddom | pointer to store TRUE, if a domain reduction was found |
addcut | pointer to store whether this constraint must be added as a cut |
mustcheck | pointer to store whether this constraint must be checked for feasibility |
Definition at line 1292 of file cons_logicor.c.
References AGEINCREASE, analyzeConflict(), checkCons(), CONSHDLR_NAME, disableCons(), FALSE, SCIP_Bool, SCIP_BRANCHDIR_DOWNWARDS, SCIP_CALL, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_OKAY, SCIPaddConsAge(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPdisableConsPropagation(), SCIPgetDepth(), SCIPinferBinvarCons(), SCIPisFeasEQ(), SCIPresetConsAge(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetNBranchingsCurrentRun(), SCIPvarGetUbLocal(), switchWatchedvars(), and TRUE.
Referenced by enforcePseudo(), mergeMultiples(), and separateCons().
|
static |
checks constraint for violation, returns TRUE iff constraint is feasible
scip | SCIP data structure |
cons | logic or constraint to be checked |
sol | primal CIP solution |
violated | pointer to store whether the given solution violates the constraint |
Definition at line 1510 of file cons_logicor.c.
References createRow(), FALSE, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPgetSolVal(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPrelDiff(), SCIPupdateSolLPConsViolation(), and SCIPvarIsBinary().
Referenced by enforcePseudo(), processWatchedVars(), and separateCons().
|
static |
creates an LP row in a logic or constraint data object
scip | SCIP data structure |
cons | logic or constraint |
Definition at line 1559 of file cons_logicor.c.
References addCut(), SCIP_CALL, SCIP_OKAY, SCIPaddVarsToRowSameCoef(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsRemovable(), SCIPcreateEmptyRowCons(), and SCIPinfinity().
Referenced by addCut(), and checkCons().
|
static |
adds logic or constraint as cut to the LP
scip | SCIP data structure |
cons | logic or constraint |
cutoff | whether a cutoff has been detected |
Definition at line 1580 of file cons_logicor.c.
References createRow(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIProwIsInLP(), and separateCons().
Referenced by createRow(), SCIP_DECL_CONSINITLP(), and separateCons().
|
static |
checks constraint for violation, and adds it as a cut if possible
scip | SCIP data structure |
cons | logic or constraint to be separated |
sol | primal CIP solution, NULL for current LP solution |
eventhdlr | event handler to call for the event processing |
cutoff | pointer to store TRUE, if the node can be cut off |
separated | pointer to store TRUE, if a cut was found |
reduceddom | pointer to store TRUE, if a domain reduction was found |
Definition at line 1613 of file cons_logicor.c.
References addCut(), checkCons(), CONSHDLR_NAME, enforcePseudo(), FALSE, processWatchedVars(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsPropagationEnabled(), SCIPdebugMsg, SCIPgetRowLPFeasibility(), SCIPisFeasNegative(), SCIPresetConsAge(), SCIProwIsInLP(), and TRUE.
Referenced by addCut(), and enforceConstraint().
|
static |
enforces the pseudo solution on the given constraint
scip | SCIP data structure |
cons | logic or constraint to be separated |
eventhdlr | event handler to call for the event processing |
cutoff | pointer to store TRUE, if the node can be cut off |
infeasible | pointer to store TRUE, if the constraint was infeasible |
reduceddom | pointer to store TRUE, if a domain reduction was found |
solvelp | pointer to store TRUE, if the LP has to be solved |
Definition at line 1690 of file cons_logicor.c.
References checkCons(), consdataSort(), CONSHDLR_NAME, FALSE, processWatchedVars(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsPropagationEnabled(), SCIPhasCurrentNodeLP(), SCIPresetConsAge(), and TRUE.
Referenced by separateCons().
|
static |
sorts logicor constraint's variables by non-decreasing variable index
consdata | linear constraint data |
Definition at line 1749 of file cons_logicor.c.
References SCIP_Bool, SCIP_DECL_HASHGETKEY(), SCIPsortedvecFindPtr(), SCIPsortPtr(), SCIPvarCompare(), and TRUE.
Referenced by detectRedundantConstraints(), enforcePseudo(), removeRedundantConssAndNonzeros(), and removeRedundantNonZeros().
|
static |
gets the key of the given element
Definition at line 1830 of file cons_logicor.c.
Referenced by consdataSort().
|
static |
returns TRUE iff both keys are equal; two constraints are equal if they have the same variables
Definition at line 1838 of file cons_logicor.c.
|
static |
returns the hash value of the key
Definition at line 1884 of file cons_logicor.c.
|
static |
compares each constraint with all other constraints for a possible duplication and removes duplicates using a hash table; also
scip | SCIP data structure |
blkmem | block memory |
conss | constraint set |
nconss | number of constraints in constraint set |
firstchange | pointer to store first changed constraint |
ndelconss | pointer to count number of deleted constraints |
Definition at line 1909 of file cons_logicor.c.
References consdataSort(), HASHSIZE_LOGICORCONS, MAX, removeRedundantCons(), SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetPos(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPdelCons(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPhashtableInsert(), SCIPhashtableRetrieve(), and SCIPupdateConsFlags().
|
static |
removes the redundant second constraint and updates the flags of the first one
scip | SCIP data structure |
cons0 | constraint that should stay |
cons1 | constraint that should be deleted |
ndelconss | pointer to count number of deleted constraints |
Definition at line 1997 of file cons_logicor.c.
References calcSignature(), SCIP_CALL, SCIP_OKAY, SCIPconsGetName(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), and SCIPupdateConsFlags().
Referenced by detectRedundantConstraints(), and removeRedundantConss().
|
static |
compute and return a signature for given variables
vars | variables to calculate the signature for |
nvars | number of variables to calculate the signature for |
Definition at line 2024 of file cons_logicor.c.
References consdataCalcSignature(), and SCIPvarGetIndex().
Referenced by consdataCalcSignature(), removeRedundantCons(), and removeRedundantNonZeros().
|
static |
compute the constraint signature which is used to detect constraints, that contain potentially the same set of variables
consdata | logicor constraint data |
Definition at line 2047 of file cons_logicor.c.
References calcSignature(), removeConsFromOccurList(), and TRUE.
Referenced by calcSignature(), removeRedundantConssAndNonzeros(), and removeRedundantNonZeros().
|
static |
remove a constraint from the column representation
cons | logicor constraint |
varstopos | map for mapping variables to positions in the occurlist |
occurlist | column representation of logicor constraints |
noccurlistentries | arrray with number of constraints for each variable in the occurlist |
occurlistlength | number of columns in the occurlist |
Definition at line 2060 of file cons_logicor.c.
References findShortestOccurlist(), SCIPconsGetData(), SCIPconsIsActive(), SCIPhashmapExists(), and SCIPhashmapGetImage().
Referenced by consdataCalcSignature(), removeRedundantConss(), and removeRedundantNonZeros().
|
static |
determine shortest constraint list in column representation
vars | variables to find the shortestlist for |
nvars | number of variables |
varstopos | map for mapping variables to positions in the occurlist |
occurlist | column representation of logicor constraints |
noccurlistentries | arrray with number of constraints for each variable in the occurlist |
occurlistlength | number of columns in the occurlist |
nentries | pointer to store the number of entries in the shortest list |
shortestlist | pointer to store smallest array with constraints |
Definition at line 2120 of file cons_logicor.c.
References removeRedundantConss(), SCIPhashmapExists(), and SCIPhashmapGetImage().
Referenced by removeConsFromOccurList(), removeRedundantConss(), and removeRedundantNonZeros().
|
static |
run a pairwise comparison for detecting subset-constraints of other constraint while using a signature
scip | SCIP data structure |
cons | logicor constraint to check if it covers another |
varstopos | map for mapping variables to positions in the occurlist |
occurlist | column representation of logicor constraints |
noccurlistentries | arrray with number of constraints for each variable in the occurlist |
occurlistlength | number of columns in the occurlist |
ndelconss | pointer to store the number of deleted constraints |
Definition at line 2175 of file cons_logicor.c.
References findShortestOccurlist(), removeConsFromOccurList(), removeRedundantCons(), SCIP_CALL, SCIP_DECL_SORTPTRCOMP(), SCIP_OKAY, SCIPconsGetData(), SCIPconsIsActive(), SCIPconsIsModifiable(), and SCIPvarCompare().
Referenced by findShortestOccurlist(), and removeRedundantConssAndNonzeros().
|
static |
compararer for sorting constraints after their number of variables
Definition at line 2293 of file cons_logicor.c.
Referenced by removeRedundantConss().
|
static |
add a constraint to the column representation
scip | SCIP data structure |
cons | logicor constraint |
varstopos | map for mapping variables to positions in the occurlist |
occurlist | column representation of logicor constraints |
noccurlistentries | arrray with number of constraints for each variable in the occurlist |
occurlistsizes | array of sizes for each variable in the occurlist |
occurlistlength | number of columns in the occurlist |
occurlistsize | size of occurlist |
Definition at line 2312 of file cons_logicor.c.
References removeRedundantNonZeros(), SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPconsGetData(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPreallocBufferArray, SCIPvarGetNegatedVar(), SCIPvarGetNLocksDown(), and SCIPvarIsActive().
Referenced by removeRedundantConssAndNonzeros().
|
static |
run a pairwise comparison for the given variables against all constraits to detect redundant non-zeros in these constraints
scip | SCIP data structure |
cons | logicor constraint to check if it covers another |
artvar | artificial negated variable of constraint |
artpos | position to replace constraint variable with artvar |
varstopos | map for mapping variables to positions in the occurlist |
occurlist | column representation of logicor constraints |
noccurlistentries | number of constraints for each variable in the occurlist |
occurlistlength | number of columns in the occurlist |
eventhdlr | event handler |
nchgcoefs | pointer to store the number of deleted non-zeros |
deleted | pointer to store if cons will be deleted |
Definition at line 2411 of file cons_logicor.c.
References calcSignature(), consdataCalcSignature(), consdataSort(), delCoefPos(), FALSE, findShortestOccurlist(), removeConsFromOccurList(), SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPupdateConsFlags(), SCIPvarCompare(), SCIPvarGetName(), SCIPvarGetNegatedVar(), strengthenConss(), and TRUE.
Referenced by addConsToOccurList(), and strengthenConss().
|
static |
find and remove redundant non-zero entries
scip | SCIP data structure |
conss | sorted array of logicor constraint |
nconss | number of sorted constraints |
varstopos | map for mapping variables to positions in the occurlist |
occurlist | column representation of logicor constraints |
noccurlistentries | number of constraints for each variable in the occurlist |
occurlistlength | number of columns in the occurlist |
eventhdlr | event handler to call for the event processing |
ndelconss | pointer to store the number of deleted constraints |
nchgcoefs | pointer to store the number of remove coefficients |
Definition at line 2656 of file cons_logicor.c.
References prepareCons(), removeRedundantNonZeros(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsModifiable(), SCIPhashmapExists(), and SCIPvarGetNegatedVar().
Referenced by removeRedundantConssAndNonzeros(), and removeRedundantNonZeros().
|
static |
prepares a constraint by removing fixings and merge it
scip | SCIP data structure |
cons | logic or 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 |
redundant | returns whether a variable fixed to one exists in the constraint |
nfixedvars | pointer to count number of fixings |
nchgcoefs | pointer to count number of changed/deleted coefficients |
ndelconss | pointer to count number of deleted constraints |
cutoff | pointer to store, if cut off appeared |
Definition at line 2747 of file cons_logicor.c.
References applyFixings(), FALSE, mergeMultiples(), removeRedundantConssAndNonzeros(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsDeleted(), SCIPdebugMsg, SCIPdelCons(), SCIPfixVar(), and TRUE.
Referenced by removeConstraintsDueToNegCliques(), removeRedundantConssAndNonzeros(), shortenConss(), and strengthenConss().
|
static |
find covered/subsumed constraints and redundant non-zero entries
covered: e.g.: c1: x1 + x2 + x3 >= 1 c2: x1 + x2 + x3 + x4 >= 1
strengthen: e.g.: c1: x1 + x2 + x3 >= 1 c2: x1 + x2 + ~x3 + x4 >= 1
=> c2: x1 + x2 + x4 >= 1
scip | SCIP data structure |
conss | array of logicor constraints |
nconss | number of logicor constraints |
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 |
eventhdlr | event handler to call for the event processing |
usestrengthening | should we try to strengthen constraints by removing superflous non-zeros? |
firstchange | pointer to store first changed constraint |
nfixedvars | pointer to count number of fixings |
ndelconss | pointer to store the number of deleted constraints |
nchgcoefs | pointer to store the number of deleted coefficients |
cutoff | pointer to store, if cut off appeared |
Definition at line 2843 of file cons_logicor.c.
References addConsToOccurList(), BMSclearMemoryArray, consdataCalcSignature(), consdataSort(), FALSE, prepareCons(), removeRedundantConss(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPblkmem(), SCIPconsGetData(), SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetNContVars(), SCIPgetNVars(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPsortPtr(), strengthenConss(), and TRUE.
Referenced by prepareCons().
|
static |
try to tighten constraints by reducing the number of variables in the constraints using implications and cliques, also derive fixations through them,
scip | SCIP data structure |
conshdlrdata | logic or constraint handler data |
eventhdlr | event handler to call for the event processing |
conss | all constraints |
nconss | number of constraints |
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 count number of fixings |
ndelconss | pointer to count number of deleted constraints |
nchgcoefs | pointer to count number of changed/deleted coefficients |
cutoff | pointer to store, if cut off appeared |
Definition at line 3081 of file cons_logicor.c.
References BMSclearMemoryArray, delCoefPos(), FALSE, MAX_CONSLENGTH, prepareCons(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_NEGATED, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPcleanupCliques(), SCIPconsGetData(), SCIPconsIsDeleted(), SCIPdebugMsg, SCIPdelCons(), SCIPfixVar(), SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetNCliques(), SCIPgetNContVars(), SCIPgetNImplications(), SCIPgetNVars(), SCIPshrinkDisjunctiveVarSet(), SCIPvarGetNegationVar(), SCIPvarGetStatus(), SCIPvarIsActive(), and TRUE.
|
static |
try to find a negated clique in a constraint which makes this constraint redundant but we need to keep the negated clique information alive, so we create a corresponding set-packing constraint
scip | SCIP data structure |
conshdlr | logicor constraint handler |
conshdlrsetppc | setppc constraint handler, or NULL |
eventhdlr | event handler to call for the event processing |
conss | all constraints |
nconss | number of constraints |
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 count number of fixings |
ndelconss | pointer to count number of deleted constraints |
nupgdconss | pointer to count number of upgraded constraints |
nchgcoefs | pointer to count number of changed/deleted coefficients |
cutoff | pointer to store, if cut off appeared |
Definition at line 3277 of file cons_logicor.c.
References BMScopyMemoryArray, delCoefPos(), FALSE, fixDeleteOrUpgradeCons(), MAXCOMPARISONS, prepareCons(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_NEGATED, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsSetpack(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPfreeBufferArray, SCIPgetNCliques(), SCIPgetNContVars(), SCIPgetNImplications(), SCIPgetNVars(), SCIPisStopped(), SCIPreleaseCons(), SCIPvarGetName(), SCIPvarGetNCliques(), SCIPvarGetNegatedVar(), SCIPvarGetNegationVar(), SCIPvarGetNImpls(), SCIPvarGetStatus(), SCIPvarIsActive(), SCIPvarIsNegated(), SCIPvarsHaveCommonClique(), and TRUE.
|
static |
handle all cases with less than three variables in a logicor constraint
in case a constraint has zero variables left, we detected infeasibility in case a constraint has one variables left, we will fix it to one in case a constraint has two variables left, we will add the implication and upgrade it to a set-packing constraint
scip | SCIP data structure |
cons | logic or constraint |
eventhdlr | event handler to call for the event processing |
conshdlrlinear | linear constraint handler, or NULL |
conshdlrsetppc | setppc constraint handler, or NULL |
nfixedvars | pointer to count number of fixings |
nchgbds | pointer to count number of tightened bounds |
nchgcoefs | pointer to count number of changed/deleted coefficients |
ndelconss | pointer to count number of deleted constraints |
naddconss | pointer to count number of added constraints |
nupgdconss | pointer to count number of upgraded constraints |
cutoff | pointer to store TRUE, if the node can be cut off |
Definition at line 3551 of file cons_logicor.c.
References applyFixings(), createNormalizedLogicor(), FALSE, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIPaddClique(), SCIPaddCons(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPcreateConsSetpack(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPfixVar(), SCIPgetNegatedVar(), SCIPreleaseCons(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetStatus(), and TRUE.
Referenced by removeConstraintsDueToNegCliques().
|
static |
creates and captures a normalized (with all coefficients +1) logic or constraint
scip | SCIP data structure |
cons | pointer to hold the created constraint |
name | name of constraint |
nvars | number of variables in the constraint |
vars | array with variables of constraint entries |
vals | array with coefficients (+1.0 or -1.0) |
mult | multiplier on the coefficients(+1 or -1) |
initial | should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'. |
separate | should the constraint be separated during LP processing? Usually set to TRUE. |
enforce | should the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints. |
check | should the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints. |
propagate | should the constraint be propagated during node processing? Usually set to TRUE. |
local | is constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. |
modifiable | is constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint. |
dynamic | is constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints. |
removable | should the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. |
stickingatnode | should the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data. |
Definition at line 3737 of file cons_logicor.c.
References SCIP_CALL, SCIP_DECL_LINCONSUPGD(), SCIP_OKAY, SCIPallocBufferArray, SCIPcreateConsLogicor(), SCIPfreeBufferArray, and SCIPgetNegatedVar().
Referenced by fixDeleteOrUpgradeCons().
|
static |
Definition at line 3803 of file cons_logicor.c.
Referenced by createNormalizedLogicor().
|
static |
helper function to enforce constraints
scip | SCIP data structure |
conshdlr | constraint handler |
conss | constraints to process |
nconss | number of constraints |
nusefulconss | number of useful (non-obsolete) constraints to process |
sol | solution to enforce (NULL for the LP solution) |
result | pointer to store the result of the enforcing call |
Definition at line 3843 of file cons_logicor.c.
References CONSHDLR_NAME, FALSE, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSHDLRCOPY(), SCIP_FEASIBLE, SCIP_OKAY, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, and separateCons().
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 3905 of file cons_logicor.c.
Referenced by enforceConstraint().
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 3921 of file cons_logicor.c.
|
static |
presolving initialization method of constraint handler (called when presolving is about to begin)
Definition at line 3943 of file cons_logicor.c.
|
static |
presolving deinitialization method of constraint handler (called after presolving has been finished)
Definition at line 3976 of file cons_logicor.c.
|
static |
solving process deinitialization method of constraint handler (called before branch and bound process data is freed)
Definition at line 4014 of file cons_logicor.c.
References SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_OKAY, SCIPconsGetData(), and SCIPreleaseRow().
|
static |
frees specific constraint data
Definition at line 4037 of file cons_logicor.c.
Referenced by SCIP_DECL_CONSEXITSOL().
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 4068 of file cons_logicor.c.
|
static |
LP initialization method of constraint handler (called before the initial LP relaxation at a node is solved)
Definition at line 4101 of file cons_logicor.c.
References addCut(), SCIP_CALL, SCIP_DECL_CONSSEPALP(), SCIP_OKAY, and SCIPconsIsInitial().
|
static |
separation method of constraint handler for LP solutions
Definition at line 4119 of file cons_logicor.c.
Referenced by SCIP_DECL_CONSINITLP().
|
static |
separation method of constraint handler for arbitrary primal solutions
Definition at line 4166 of file cons_logicor.c.
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 4213 of file cons_logicor.c.
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 4223 of file cons_logicor.c.
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 4233 of file cons_logicor.c.
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 4280 of file cons_logicor.c.
|
static |
domain propagation method of constraint handler
Definition at line 4334 of file cons_logicor.c.
|
static |
presolving method of constraint handler
Definition at line 4379 of file cons_logicor.c.
|
static |
propagation conflict resolving method of constraint handler
Definition at line 4591 of file cons_logicor.c.
|
static |
variable rounding lock method of constraint handler
Definition at line 4644 of file cons_logicor.c.
|
static |
constraint activation notification method of constraint handler
Definition at line 4664 of file cons_logicor.c.
|
static |
constraint deactivation notification method of constraint handler
Definition at line 4703 of file cons_logicor.c.
|
static |
constraint display method of constraint handler
Definition at line 4744 of file cons_logicor.c.
|
static |
constraint copying method of constraint handler
Definition at line 4758 of file cons_logicor.c.
|
static |
constraint parsing method of constraint handler
Definition at line 4784 of file cons_logicor.c.
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 4879 of file cons_logicor.c.
|
static |
constraint method of constraint handler which returns the number of variables (if possible)
Definition at line 4901 of file cons_logicor.c.
|
static |
Definition at line 4919 of file cons_logicor.c.
|
static |
Definition at line 4981 of file cons_logicor.c.