constraint handler for (partitioning/packing/full) orbitope constraints w.r.t. the full symmetric group
The type of constraints of this constraint handler is described in cons_orbitope.h.
The details of the method implemented here are described in the following papers.
Packing and Partitioning Orbitopes
Volker Kaibel and Marc E. Pfetsch,
Math. Program. 114, No. 1, 1-36 (2008)
Among other things, this paper describes so-called shifted column inequalities of the following form \(x(S) \leq x(B)\), where \(S\) is a so-called shifted column and \(B\) is a so-called bar. These inequalities can be used to handle symmetry and they are separated in this constraint handler. We use the linear time separation algorithm of the paper.
Orbitopal Fixing
Volker Kaibel, Matthias Peinhardt, and Marc E. Pfetsch,
Discrete Optimization 8, No. 4, 595-610 (2011) (A preliminary version appears in Proc. IPCO 2007.)
In this paper a linear time propagation algorithm is described, a variant of which is implemented here. The implemented variant does not run in linear time, but is very fast in practice.
here | paper |
nspcons | p |
nblocks | q |
vars | x |
vals | A^\star |
weights | \omega |
cases | \tau |
fixtriangle | – |
resolveprop | – |
firstnonzeros | \mu |
lastones | \alpha |
frontiersteps | \Gamma |
Definition in file cons_orbitope.c.
#include <assert.h>
#include <string.h>
#include <ctype.h>
#include "scip/cons_orbisack.h"
#include "scip/cons_orbitope.h"
#include "scip/cons_setppc.h"
Go to the source code of this file.
Macros | |
#define | CONSHDLR_NAME "orbitope" |
#define | CONSHDLR_DESC "symmetry breaking constraint handler relying on (partitioning/packing) orbitopes" |
#define | CONSHDLR_SEPAPRIORITY +40100 |
#define | CONSHDLR_ENFOPRIORITY -1005200 |
#define | CONSHDLR_CHECKPRIORITY -1005200 |
#define | CONSHDLR_SEPAFREQ 5 |
#define | CONSHDLR_PROPFREQ 5 |
#define | CONSHDLR_EAGERFREQ -1 |
#define | CONSHDLR_MAXPREROUNDS -1 |
#define | CONSHDLR_DELAYSEPA FALSE |
#define | CONSHDLR_DELAYPROP FALSE |
#define | CONSHDLR_NEEDSCONS TRUE |
#define | CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
#define | CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_MEDIUM |
#define | DEFAULT_PPORBITOPE TRUE |
#define | DEFAULT_SEPAFULLORBITOPE FALSE |
#define | DEFAULT_CHECKALWAYSFEAS TRUE |
Functions | |
static SCIP_RETCODE | consdataFree (SCIP *scip, SCIP_CONSDATA **consdata) |
static SCIP_RETCODE | consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, SCIP_VAR ***vars, int nspcons, int nblocks, SCIP_ORBITOPETYPE orbitopetype, SCIP_Bool resolveprop) |
static SCIP_RETCODE | strenghtenOrbitopeConstraint (SCIP *scip, SCIP_VAR ***vars, int *nrows, int ncols, SCIP_ORBITOPETYPE *type) |
static void | copyValues (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol) |
static void | computeSCTable (SCIP *scip, int nspcons, int nblocks, SCIP_Real **weights, int **cases, SCIP_Real **vals) |
static SCIP_RETCODE | fixTriangle (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars) |
static SCIP_RETCODE | separateSCIs (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons, SCIP_CONSDATA *consdata, SCIP_Bool *infeasible, int *nfixedvars, int *ncuts) |
static SCIP_RETCODE | propagatePackingPartitioningCons (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars) |
static SCIP_RETCODE | propagateFullOrbitope (SCIP *scip, SCIP_CONS *cons, SCIP_VAR ***vars, int firstcol, int lastcol, int currow, int nrows, int ncols, int *nfixedvars, SCIP_Bool *infeasible) |
static SCIP_RETCODE | propagateFullOrbitopeCons (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars) |
static SCIP_RETCODE | propagateCons (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, int *nfixedvars) |
static SCIP_RETCODE | resolvePropagation (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_RESULT *result) |
static SCIP_RETCODE | resolvePropagationFullOrbitopes (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_RESULT *result) |
static SCIP_RETCODE | enfopsPackingPartitioningOrbitopeSolution (SCIP *scip, SCIP_CONS *cons, SCIP_RESULT *result) |
static SCIP_RETCODE | checkPackingPartitioningOrbitopeSolution (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_RESULT *result, SCIP_Bool printreason) |
static SCIP_RETCODE | checkFullOrbitopeSolution (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool *feasible) |
static SCIP_RETCODE | separateConstraints (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_RESULT *result) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyOrbitope) |
static | SCIP_DECL_CONSFREE (consFreeOrbitope) |
static | SCIP_DECL_CONSDELETE (consDeleteOrbitope) |
static | SCIP_DECL_CONSTRANS (consTransOrbitope) |
static | SCIP_DECL_CONSSEPALP (consSepalpOrbitope) |
static | SCIP_DECL_CONSSEPASOL (consSepasolOrbitope) |
static | SCIP_DECL_CONSENFOLP (consEnfolpOrbitope) |
static | SCIP_DECL_CONSENFORELAX (consEnforelaxOrbitope) |
static | SCIP_DECL_CONSENFOPS (consEnfopsOrbitope) |
static | SCIP_DECL_CONSCHECK (consCheckOrbitope) |
static | SCIP_DECL_CONSPROP (consPropOrbitope) |
static | SCIP_DECL_CONSPRESOL (consPresolOrbitope) |
static | SCIP_DECL_CONSRESPROP (consRespropOrbitope) |
static | SCIP_DECL_CONSLOCK (consLockOrbitope) |
static | SCIP_DECL_CONSPRINT (consPrintOrbitope) |
static | SCIP_DECL_CONSCOPY (consCopyOrbitope) |
static | SCIP_DECL_CONSPARSE (consParseOrbitope) |
static | SCIP_DECL_CONSGETVARS (consGetVarsOrbitope) |
static | SCIP_DECL_CONSGETNVARS (consGetNVarsOrbitope) |
SCIP_RETCODE | SCIPincludeConshdlrOrbitope (SCIP *scip) |
SCIP_RETCODE | SCIPcreateConsOrbitope (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR ***vars, SCIP_ORBITOPETYPE orbitopetype, int nspcons, int nblocks, SCIP_Bool resolveprop, 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 | SCIPcreateConsBasicOrbitope (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR ***vars, SCIP_ORBITOPETYPE orbitopetype, int nspcons, int nblocks, SCIP_Bool resolveprop) |
#define CONSHDLR_NAME "orbitope" |
Definition at line 72 of file cons_orbitope.c.
Referenced by SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSDELETE(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSFREE(), SCIP_DECL_CONSHDLRCOPY(), SCIP_DECL_CONSLOCK(), SCIP_DECL_CONSPRESOL(), SCIP_DECL_CONSPRINT(), SCIP_DECL_CONSPROP(), SCIP_DECL_CONSTRANS(), SCIPcreateConsOrbitope(), SCIPincludeConshdlrOrbitope(), and separateConstraints().
#define CONSHDLR_DESC "symmetry breaking constraint handler relying on (partitioning/packing) orbitopes" |
Definition at line 73 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_SEPAPRIORITY +40100 |
priority of the constraint handler for separation
Definition at line 74 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_ENFOPRIORITY -1005200 |
priority of the constraint handler for constraint enforcing
Definition at line 75 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_CHECKPRIORITY -1005200 |
priority of the constraint handler for checking feasibility
Definition at line 76 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_SEPAFREQ 5 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 77 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_PROPFREQ 5 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 78 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_EAGERFREQ -1 |
frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only
Definition at line 79 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 82 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 83 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 84 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 85 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
propagation timing mask of the constraint handler
Definition at line 87 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_MEDIUM |
presolving timing of the constraint handler (fast, medium, or exhaustive)
Definition at line 88 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define DEFAULT_PPORBITOPE TRUE |
whether we check if full orbitopes can be strengthened to packing/partitioning orbitopes
Definition at line 90 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define DEFAULT_SEPAFULLORBITOPE FALSE |
whether we separate inequalities for full orbitopes
Definition at line 91 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
#define DEFAULT_CHECKALWAYSFEAS TRUE |
whether check routine returns always SCIP_FEASIBLE
Definition at line 92 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
|
static |
frees an orbitope constraint data
scip | SCIP data structure |
consdata | pointer to orbitope constraint data |
Definition at line 130 of file cons_orbitope.c.
References consdataCreate(), SCIP_OKAY, SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArrayNull.
Referenced by SCIP_DECL_CONSDELETE().
|
static |
creates orbitope constraint data
scip | SCIP data structure |
consdata | pointer to store constraint data |
vars | variables array, must have size nspcons x nblocks |
nspcons | number of set partitioning (packing) constraints <=> p |
nblocks | number of symmetric variable blocks <=> q |
orbitopetype | type of orbitope constraint |
resolveprop | should propagation be resolved? |
Definition at line 168 of file cons_orbitope.c.
References FALSE, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPduplicateBlockMemoryArray, SCIPgetTransformedVar(), SCIPisTransformed(), SCIPmarkDoNotMultaggrVar(), and strenghtenOrbitopeConstraint().
Referenced by consdataFree(), SCIP_DECL_CONSTRANS(), and SCIPcreateConsOrbitope().
|
static |
strenghten full orbitopes to packing/partitioning orbitopes if possible
scip | SCIP data structure |
vars | variable matrix of orbitope constraint |
nrows | pointer to number of rows of variable matrix |
ncols | number of columns of variable matrix |
type | pointer to store type of orbitope constraint after strengthening |
Definition at line 231 of file cons_orbitope.c.
References copyValues(), FALSE, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_ORBITOPETYPE_FULL, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIP_SETPPCTYPE_COVERING, SCIP_SETPPCTYPE_PACKING, SCIP_SETPPCTYPE_PARTITIONING, SCIPABORT, SCIPallocBufferArray, SCIPallocClearBufferArray, SCIPconshdlrGetConss(), SCIPconshdlrGetNConss(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetNVarsSetppc(), SCIPgetTypeSetppc(), SCIPgetVarsSetppc(), SCIPinfoMessage(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetUbLocal(), SCIPvarIsNegated(), and TRUE.
Referenced by consdataCreate(), and SCIPcreateConsOrbitope().
|
static |
copies the variables values from the solution to the constraint data structure
scip | the SCIP data structure |
consdata | the constraint data |
sol | a primal solution or NULL for the current LP optimum |
Definition at line 599 of file cons_orbitope.c.
References computeSCTable(), and SCIPgetSolVal().
Referenced by checkPackingPartitioningOrbitopeSolution(), enfopsPackingPartitioningOrbitopeSolution(), separateConstraints(), and strenghtenOrbitopeConstraint().
|
static |
compute the dynamic programming table for SC
Build up dynamic programming table in order to find SCs with minimum weight.
The values of the minimal SCIs are stored in weights. The array cases[i][j] stores which of the cases were applied to get weights[i][j]. Here, 3 means that we have reached the upper limit.
We assume that the upper right triangle is fixed to 0. Hence we can perform the computation a bit more efficient.
scip | SCIP pointer |
nspcons | number of set partitioning (packing) constraints <=> p |
nblocks | number of symmetric variable blocks <=> q |
weights | SC weight table |
cases | indicator of the SC cases |
vals | current solution |
Definition at line 635 of file cons_orbitope.c.
References fixTriangle(), SCIP_Real, and SCIPisLT().
Referenced by checkPackingPartitioningOrbitopeSolution(), copyValues(), enfopsPackingPartitioningOrbitopeSolution(), resolvePropagation(), and separateSCIs().
|
static |
fix upper right triangle if necessary
scip | SCIP data structure |
cons | constraint to be processed |
infeasible | 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 730 of file cons_orbitope.c.
References FALSE, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPfixVar(), SCIPvarGetUbGlobal(), separateSCIs(), and TRUE.
Referenced by computeSCTable(), enfopsPackingPartitioningOrbitopeSolution(), propagatePackingPartitioningCons(), and separateSCIs().
|
static |
separates shifted column inequalities according to the solution stored in consdata->vals
scip | the SCIP data structure |
conshdlr | constraint handler |
cons | constraint |
consdata | the constraint data |
infeasible | whether we detected infeasibility |
nfixedvars | pointer to store the number of variables fixed |
ncuts | pointer to store number of separated SCIs |
Definition at line 813 of file cons_orbitope.c.
References computeSCTable(), FALSE, fixTriangle(), propagatePackingPartitioningCons(), SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddRow(), SCIPaddVarsToRow(), SCIPcreateEmptyRowCons(), SCIPinfinity(), SCIPisEfficacious(), SCIPisSumEQ(), SCIPreleaseRow(), SCIPsnprintf(), and TRUE.
Referenced by fixTriangle(), and separateConstraints().
|
static |
propagation method for a single packing or partitioning orbitope constraint
scip | SCIP data structure |
cons | constraint to be processed |
infeasible | 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 973 of file cons_orbitope.c.
References FALSE, fixTriangle(), propagateFullOrbitope(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIP_STAGE_SOLVING, SCIPaddConflictBinvar(), SCIPallocBufferArray, SCIPallowDualReds(), SCIPanalyzeConflictCons(), SCIPconsGetData(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetStage(), SCIPinferBinvarCons(), SCIPinitConflictAnalysis(), SCIPinProbing(), SCIPisConflictAnalysisApplicable(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by propagateCons(), and separateSCIs().
|
static |
propagation of full orbitopes (called recursively)
scip | the SCIP data structure |
cons | constraint to be processed |
vars | variable matrix |
firstcol | first column to consider |
lastcol | last column to consider + 1 |
currow | current row |
nrows | number of rows |
ncols | number of columns |
nfixedvars | pointer to store the number of variables fixed during propagation |
infeasible | pointer to store whether infeasibility was detected |
Definition at line 1329 of file cons_orbitope.c.
References FALSE, propagateFullOrbitopeCons(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIPaddConflictBinvar(), SCIPanalyzeConflictCons(), SCIPinferBinvarCons(), SCIPinitConflictAnalysis(), SCIPisConflictAnalysisApplicable(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by propagateFullOrbitopeCons(), and propagatePackingPartitioningCons().
|
static |
propagation method for a single packing or partitioning orbitope constraint
scip | SCIP data structure |
cons | constraint to be processed |
infeasible | 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 1475 of file cons_orbitope.c.
References FALSE, propagateCons(), propagateFullOrbitope(), SCIP_CALL, SCIP_OKAY, SCIP_ORBITOPETYPE_FULL, SCIPallowDualReds(), and SCIPconsGetData().
Referenced by propagateCons(), and propagateFullOrbitope().
|
static |
propagation method for a single orbitope constraint
scip | SCIP data structure |
cons | constraint to be processed |
infeasible | 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 1511 of file cons_orbitope.c.
References propagateFullOrbitopeCons(), propagatePackingPartitioningCons(), resolvePropagation(), SCIP_CALL, SCIP_OKAY, SCIP_ORBITOPETYPE_FULL, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, and SCIPconsGetData().
Referenced by propagateFullOrbitopeCons(), SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().
|
static |
Propagation conflict resolving method of propagator
In this function we use that the propagation method above implicitly propagates SCIs, i.e., every fixing can also be gotten via an SCI-fixing.
Since the storage of an integer is not enough to store the complete information about the fixing nor a complete shifted column, we have to use the linear time algorithm for SCIs.
The inferinfo integer is set as follows:
scip | SCIP data structure |
cons | constraint that inferred the bound change |
infervar | variable that was deduced |
inferinfo | inference information |
boundtype | the type of the changed bound (lower or upper bound) |
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 1565 of file cons_orbitope.c.
References computeSCTable(), FALSE, resolvePropagationFullOrbitopes(), SCIP_CALL, SCIP_DIDNOTFIND, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_ORBITOPETYPE_PARTITIONING, SCIP_Real, SCIP_SUCCESS, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPconsGetData(), SCIPdebugMsg, SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), and SCIPsnprintf().
Referenced by propagateCons(), and SCIP_DECL_CONSRESPROP().
|
static |
Propagation conflict resolving method of propagator for full orbitope constraints
scip | SCIP data structure |
cons | constraint that inferred the bound change |
infervar | variable that was deduced |
inferinfo | inference information |
boundtype | the type of the changed bound (lower or upper bound) |
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 1842 of file cons_orbitope.c.
References enfopsPackingPartitioningOrbitopeSolution(), FALSE, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPconsGetData(), SCIPdebugMsg, SCIPvarGetIndex(), SCIPvarGetLbAtIndex(), SCIPvarGetUbAtIndex(), and TRUE.
Referenced by resolvePropagation(), and SCIP_DECL_CONSRESPROP().
|
static |
check packing/partitioning orbitope solution for feasibility
scip | SCIP data structure |
cons | pointer to orbitope constraint |
result | pointer to store the result of the enforcing call |
Definition at line 1936 of file cons_orbitope.c.
References checkPackingPartitioningOrbitopeSolution(), computeSCTable(), copyValues(), FALSE, fixTriangle(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPisGT(), and SCIPisIntegral().
Referenced by resolvePropagationFullOrbitopes(), and SCIP_DECL_CONSENFOPS().
|
static |
check packing/partitioning orbitope solution for feasibility
scip | SCIP data structure |
cons | pointer to orbitope constraint |
sol | solution to be checked |
result | pointer to store the result of the enforcing call |
printreason | whether reason for infeasibility should be printed |
Definition at line 2030 of file cons_orbitope.c.
References checkFullOrbitopeSolution(), computeSCTable(), copyValues(), SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPinfoMessage(), SCIPisFeasIntegral(), SCIPisFeasZero(), SCIPisGT(), and SCIPvarGetName().
Referenced by enfopsPackingPartitioningOrbitopeSolution(), and SCIP_DECL_CONSCHECK().
|
static |
check full orbitope solution for feasibility
scip | SCIP data structure |
cons | constraint to process |
sol | solution to be checked |
printreason | whether reason for infeasibility should be printed |
feasible | memory address to store whether solution is feasible |
Definition at line 2176 of file cons_orbitope.c.
References SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcheckSolutionOrbisack(), SCIPconsGetData(), SCIPfreeBufferArray, separateConstraints(), and TRUE.
Referenced by checkPackingPartitioningOrbitopeSolution(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSENFOPS().
|
static |
separate or 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 separate (NULL for the LP solution) |
result | pointer to store the result (should be initialized) |
Definition at line 2234 of file cons_orbitope.c.
References CONSHDLR_NAME, copyValues(), FALSE, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSHDLRCOPY(), SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIPallocBufferArray, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPseparateCoversOrbisack(), and separateSCIs().
Referenced by checkFullOrbitopeSolution(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFORELAX(), SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 2349 of file cons_orbitope.c.
References CONSHDLR_NAME, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrOrbitope(), and TRUE.
Referenced by separateConstraints().
|
static |
frees constraint handler
Definition at line 2365 of file cons_orbitope.c.
References CONSHDLR_NAME, SCIP_DECL_CONSDELETE(), SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPfreeBlockMemory.
Referenced by SCIP_DECL_CONSHDLRCOPY().
|
static |
frees specific constraint data
Definition at line 2383 of file cons_orbitope.c.
References consdataFree(), CONSHDLR_NAME, SCIP_CALL, SCIP_DECL_CONSTRANS(), SCIP_OKAY, and SCIPconshdlrGetName().
Referenced by SCIP_DECL_CONSFREE().
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 2395 of file cons_orbitope.c.
References consdataCreate(), CONSHDLR_NAME, SCIP_CALL, SCIP_DECL_CONSSEPALP(), SCIP_OKAY, SCIP_STAGE_TRANSFORMING, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateCons(), and SCIPgetStage().
Referenced by SCIP_DECL_CONSDELETE().
|
static |
separation method of constraint handler for LP solutions
Definition at line 2425 of file cons_orbitope.c.
References SCIP_CALL, SCIP_DECL_CONSSEPASOL(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPconshdlrGetName(), SCIPdebugMsg, SCIPgetNLPBranchCands(), and separateConstraints().
Referenced by SCIP_DECL_CONSTRANS().
|
static |
separation method of constraint handler for arbitrary primal solutions
Definition at line 2448 of file cons_orbitope.c.
References SCIP_CALL, SCIP_DECL_CONSENFOLP(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIPconshdlrGetName(), SCIPdebugMsg, and separateConstraints().
Referenced by SCIP_DECL_CONSSEPALP().
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 2466 of file cons_orbitope.c.
References SCIP_CALL, SCIP_DECL_CONSENFORELAX(), SCIP_FEASIBLE, SCIP_OKAY, SCIPconshdlrGetName(), SCIPdebugMsg, SCIPgetNLPBranchCands(), and separateConstraints().
Referenced by SCIP_DECL_CONSSEPASOL().
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 2487 of file cons_orbitope.c.
References SCIP_CALL, SCIP_DECL_CONSENFOPS(), SCIP_FEASIBLE, SCIP_OKAY, SCIPconshdlrGetName(), SCIPdebugMsg, and separateConstraints().
Referenced by SCIP_DECL_CONSENFOLP().
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 2505 of file cons_orbitope.c.
References checkFullOrbitopeSolution(), CONSHDLR_NAME, enfopsPackingPartitioningOrbitopeSolution(), FALSE, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSCHECK(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIPconsGetData(), and SCIPconshdlrGetName().
Referenced by SCIP_DECL_CONSENFORELAX().
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 2557 of file cons_orbitope.c.
References checkFullOrbitopeSolution(), checkPackingPartitioningOrbitopeSolution(), CONSHDLR_NAME, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPROP(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSENFOPS().
|
static |
domain propagation method of constraint handler
Definition at line 2608 of file cons_orbitope.c.
References CONSHDLR_NAME, FALSE, propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSPRESOL(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPconsGetName(), SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSCHECK().
|
static |
presolving method of constraint handler
Definition at line 2654 of file cons_orbitope.c.
References CONSHDLR_NAME, FALSE, propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSRESPROP(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_SUCCESS, SCIPconsGetName(), SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSPROP().
|
static |
propagation conflict resolving method of constraint handler
Definition at line 2702 of file cons_orbitope.c.
References resolvePropagation(), resolvePropagationFullOrbitopes(), SCIP_CALL, SCIP_DECL_CONSLOCK(), SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, and SCIPconsGetData().
Referenced by SCIP_DECL_CONSPRESOL().
|
static |
variable rounding lock method of constraint handler
Definition at line 2734 of file cons_orbitope.c.
References CONSHDLR_NAME, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_OKAY, SCIPaddVarLocks(), SCIPconsGetData(), SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSRESPROP().
|
static |
constraint display method of constraint handler
Definition at line 2773 of file cons_orbitope.c.
References CONSHDLR_NAME, SCIP_DECL_CONSCOPY(), SCIP_OKAY, SCIP_ORBITOPETYPE_FULL, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIPABORT, SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPinfoMessage(), and SCIPvarGetName().
Referenced by SCIP_DECL_CONSLOCK().
|
static |
constraint copying method of constraint handler
Definition at line 2835 of file cons_orbitope.c.
References CONSHDLR_NAME, SCIP_CALL, SCIP_DECL_CONSPARSE(), SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPcreateConsOrbitope(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetVarCopy(), and TRUE.
Referenced by SCIP_DECL_CONSPRINT().
|
static |
constraint parsing method of constraint handler
Definition at line 2905 of file cons_orbitope.c.
References FALSE, SCIP_CALL, SCIP_DECL_CONSGETVARS(), SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_ORBITOPETYPE_FULL, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIP_VERBLEVEL_MINIMAL, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPcreateConsOrbitope(), SCIPfindVar(), SCIPfreeBufferArray, SCIPreallocBufferArray, SCIPverbMessage(), and TRUE.
Referenced by SCIP_DECL_CONSCOPY().
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 3033 of file cons_orbitope.c.
References FALSE, SCIP_DECL_CONSGETNVARS(), SCIP_OKAY, SCIPconsGetData(), and TRUE.
Referenced by SCIP_DECL_CONSPARSE().
|
static |
constraint method of constraint handler which returns the number of variables (if possible)
Definition at line 3066 of file cons_orbitope.c.
References SCIP_OKAY, SCIPconsGetData(), SCIPincludeConshdlrOrbitope(), and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().