Detailed Description
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 "blockmemshell/memory.h"
#include "scip/cons_orbisack.h"
#include "scip/cons_orbitope.h"
#include "scip/cons_setppc.h"
#include "scip/pub_cons.h"
#include "scip/pub_message.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_conflict.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_cut.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_probing.h"
#include "scip/scip_sol.h"
#include "scip/scip_var.h"
#include <ctype.h>
#include <string.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) |
Macro Definition Documentation
◆ CONSHDLR_NAME
#define CONSHDLR_NAME "orbitope" |
Definition at line 89 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().
◆ CONSHDLR_DESC
#define CONSHDLR_DESC "symmetry breaking constraint handler relying on (partitioning/packing) orbitopes" |
Definition at line 90 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_SEPAPRIORITY
#define CONSHDLR_SEPAPRIORITY +40100 |
priority of the constraint handler for separation
Definition at line 91 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_ENFOPRIORITY
#define CONSHDLR_ENFOPRIORITY -1005200 |
priority of the constraint handler for constraint enforcing
Definition at line 92 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_CHECKPRIORITY
#define CONSHDLR_CHECKPRIORITY -1005200 |
priority of the constraint handler for checking feasibility
Definition at line 93 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_SEPAFREQ
#define CONSHDLR_SEPAFREQ 5 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 94 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_PROPFREQ
#define CONSHDLR_PROPFREQ 5 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 95 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_EAGERFREQ
#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 96 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_MAXPREROUNDS
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 99 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_DELAYSEPA
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 100 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_DELAYPROP
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 101 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_NEEDSCONS
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 102 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_PROP_TIMING
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
propagation timing mask of the constraint handler
Definition at line 104 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ CONSHDLR_PRESOLTIMING
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_MEDIUM |
presolving timing of the constraint handler (fast, medium, or exhaustive)
Definition at line 105 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ DEFAULT_PPORBITOPE
#define DEFAULT_PPORBITOPE TRUE |
whether we check if full orbitopes can be strengthened to packing/partitioning orbitopes
Definition at line 107 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ DEFAULT_SEPAFULLORBITOPE
#define DEFAULT_SEPAFULLORBITOPE FALSE |
whether we separate inequalities for full orbitopes
Definition at line 108 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
◆ DEFAULT_CHECKALWAYSFEAS
#define DEFAULT_CHECKALWAYSFEAS TRUE |
whether check routine returns always SCIP_FEASIBLE
Definition at line 109 of file cons_orbitope.c.
Referenced by SCIPincludeConshdlrOrbitope().
Function Documentation
◆ consdataFree()
|
static |
frees an orbitope constraint data
- Parameters
-
scip SCIP data structure consdata pointer to orbitope constraint data
Definition at line 147 of file cons_orbitope.c.
References consdataCreate(), NULL, SCIP_OKAY, SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArrayNull.
Referenced by SCIP_DECL_CONSDELETE().
◆ consdataCreate()
|
static |
creates orbitope constraint data
- Parameters
-
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 185 of file cons_orbitope.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPduplicateBlockMemoryArray, SCIPgetTransformedVar(), SCIPisTransformed(), SCIPmarkDoNotMultaggrVar(), and strenghtenOrbitopeConstraint().
Referenced by consdataFree(), SCIP_DECL_CONSTRANS(), and SCIPcreateConsOrbitope().
◆ strenghtenOrbitopeConstraint()
|
static |
strenghten full orbitopes to packing/partitioning orbitopes if possible
- Parameters
-
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 248 of file cons_orbitope.c.
References copyValues(), FALSE, NULL, r, 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().
◆ copyValues()
|
static |
copies the variables values from the solution to the constraint data structure
- Parameters
-
scip the SCIP data structure consdata the constraint data sol a primal solution or NULL for the current LP optimum
Definition at line 616 of file cons_orbitope.c.
References computeSCTable(), NULL, and SCIPgetSolVal().
Referenced by checkPackingPartitioningOrbitopeSolution(), enfopsPackingPartitioningOrbitopeSolution(), separateConstraints(), and strenghtenOrbitopeConstraint().
◆ computeSCTable()
|
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.
- Parameters
-
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 652 of file cons_orbitope.c.
References fixTriangle(), NULL, SCIP_Real, and SCIPisLT().
Referenced by checkPackingPartitioningOrbitopeSolution(), copyValues(), enfopsPackingPartitioningOrbitopeSolution(), resolvePropagation(), and separateSCIs().
◆ fixTriangle()
|
static |
fix upper right triangle if necessary
- Parameters
-
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 747 of file cons_orbitope.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPfixVar(), SCIPvarGetUbGlobal(), separateSCIs(), and TRUE.
Referenced by computeSCTable(), enfopsPackingPartitioningOrbitopeSolution(), propagatePackingPartitioningCons(), and separateSCIs().
◆ separateSCIs()
|
static |
separates shifted column inequalities according to the solution stored in consdata->vals
- Parameters
-
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 830 of file cons_orbitope.c.
References computeSCTable(), FALSE, fixTriangle(), NULL, propagatePackingPartitioningCons(), SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddRow(), SCIPaddVarsToRow(), SCIPcreateEmptyRowCons(), SCIPinfinity(), SCIPisEfficacious(), SCIPisSumEQ(), SCIPreleaseRow(), SCIPsnprintf(), and TRUE.
Referenced by fixTriangle(), and separateConstraints().
◆ propagatePackingPartitioningCons()
|
static |
propagation method for a single packing or partitioning orbitope constraint
- Parameters
-
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 990 of file cons_orbitope.c.
References FALSE, fixTriangle(), NULL, 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().
◆ propagateFullOrbitope()
|
static |
propagation of full orbitopes (called recursively)
- Parameters
-
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 1346 of file cons_orbitope.c.
References FALSE, NULL, propagateFullOrbitopeCons(), SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIPaddConflictBinvar(), SCIPanalyzeConflictCons(), SCIPinferBinvarCons(), SCIPinitConflictAnalysis(), SCIPisConflictAnalysisApplicable(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by propagateFullOrbitopeCons(), and propagatePackingPartitioningCons().
◆ propagateFullOrbitopeCons()
|
static |
propagation method for a single packing or partitioning orbitope constraint
- Parameters
-
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 1495 of file cons_orbitope.c.
References FALSE, NULL, propagateCons(), propagateFullOrbitope(), SCIP_CALL, SCIP_OKAY, SCIP_ORBITOPETYPE_FULL, SCIPallowDualReds(), and SCIPconsGetData().
Referenced by propagateCons(), and propagateFullOrbitope().
◆ propagateCons()
|
static |
propagation method for a single orbitope constraint
- Parameters
-
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 1531 of file cons_orbitope.c.
References NULL, 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().
◆ resolvePropagation()
|
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:
- If a shifted column is fixed to 0 and the corresponding bar does not necessarily has value 1 then we fix these entries to 0 and inferinfo is i * nblocks + j, where (i,j) is the leader of the bar. The SCI depends on whether i is in Gamma or not (see Lemma 1 in the paper and the comments above).
- If a bar has value 1 and the shifted column has one entry that is not fixed, it can be fixed to 1 and inferinfo is (nspcons*nblocks) + i * nblocks + j, where (i,j) is the leader of the bar; see Proposition 1 (2c).
- Parameters
-
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 1585 of file cons_orbitope.c.
References computeSCTable(), FALSE, MIN, NULL, 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().
◆ resolvePropagationFullOrbitopes()
|
static |
Propagation conflict resolving method of propagator for full orbitope constraints
- Parameters
-
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 1862 of file cons_orbitope.c.
References enfopsPackingPartitioningOrbitopeSolution(), FALSE, NULL, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPconsGetData(), SCIPdebugMsg, SCIPvarGetIndex(), SCIPvarGetLbAtIndex(), SCIPvarGetUbAtIndex(), and TRUE.
Referenced by resolvePropagation(), and SCIP_DECL_CONSRESPROP().
◆ enfopsPackingPartitioningOrbitopeSolution()
|
static |
check packing/partitioning orbitope solution for feasibility
- Parameters
-
scip SCIP data structure cons pointer to orbitope constraint result pointer to store the result of the enforcing call
Definition at line 1949 of file cons_orbitope.c.
References checkPackingPartitioningOrbitopeSolution(), computeSCTable(), copyValues(), FALSE, fixTriangle(), NULL, 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().
◆ checkPackingPartitioningOrbitopeSolution()
|
static |
check packing/partitioning orbitope solution for feasibility
- Parameters
-
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 2043 of file cons_orbitope.c.
References checkFullOrbitopeSolution(), computeSCTable(), copyValues(), NULL, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPinfoMessage(), SCIPisFeasIntegral(), SCIPisFeasZero(), SCIPisGT(), and SCIPvarGetName().
Referenced by enfopsPackingPartitioningOrbitopeSolution(), and SCIP_DECL_CONSCHECK().
◆ checkFullOrbitopeSolution()
|
static |
check full orbitope solution for feasibility
- Parameters
-
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 2189 of file cons_orbitope.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcheckSolutionOrbisack(), SCIPconsGetData(), SCIPfreeBufferArray, separateConstraints(), and TRUE.
Referenced by checkPackingPartitioningOrbitopeSolution(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSENFOPS().
◆ separateConstraints()
|
static |
separate or enforce constraints
- Parameters
-
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 2247 of file cons_orbitope.c.
References CONSHDLR_NAME, copyValues(), FALSE, NULL, 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().
◆ SCIP_DECL_CONSHDLRCOPY()
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 2362 of file cons_orbitope.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrOrbitope(), and TRUE.
Referenced by separateConstraints().
◆ SCIP_DECL_CONSFREE()
|
static |
frees constraint handler
Definition at line 2378 of file cons_orbitope.c.
References CONSHDLR_NAME, NULL, SCIP_DECL_CONSDELETE(), SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPfreeBlockMemory.
Referenced by SCIP_DECL_CONSHDLRCOPY().
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 2396 of file cons_orbitope.c.
References consdataFree(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSTRANS(), SCIP_OKAY, and SCIPconshdlrGetName().
Referenced by SCIP_DECL_CONSFREE().
◆ SCIP_DECL_CONSTRANS()
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 2408 of file cons_orbitope.c.
References consdataCreate(), CONSHDLR_NAME, NULL, 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().
◆ SCIP_DECL_CONSSEPALP()
|
static |
separation method of constraint handler for LP solutions
Definition at line 2438 of file cons_orbitope.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSSEPASOL(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPconshdlrGetName(), SCIPdebugMsg, SCIPgetNLPBranchCands(), and separateConstraints().
Referenced by SCIP_DECL_CONSTRANS().
◆ SCIP_DECL_CONSSEPASOL()
|
static |
separation method of constraint handler for arbitrary primal solutions
Definition at line 2461 of file cons_orbitope.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSENFOLP(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIPconshdlrGetName(), SCIPdebugMsg, and separateConstraints().
Referenced by SCIP_DECL_CONSSEPALP().
◆ SCIP_DECL_CONSENFOLP()
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 2479 of file cons_orbitope.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSENFORELAX(), SCIP_FEASIBLE, SCIP_OKAY, SCIPconshdlrGetName(), SCIPdebugMsg, SCIPgetNLPBranchCands(), and separateConstraints().
Referenced by SCIP_DECL_CONSSEPASOL().
◆ SCIP_DECL_CONSENFORELAX()
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 2500 of file cons_orbitope.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSENFOPS(), SCIP_FEASIBLE, SCIP_OKAY, SCIPconshdlrGetName(), SCIPdebugMsg, and separateConstraints().
Referenced by SCIP_DECL_CONSENFOLP().
◆ SCIP_DECL_CONSENFOPS()
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 2518 of file cons_orbitope.c.
References checkFullOrbitopeSolution(), CONSHDLR_NAME, enfopsPackingPartitioningOrbitopeSolution(), FALSE, NULL, 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().
◆ SCIP_DECL_CONSCHECK()
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 2570 of file cons_orbitope.c.
References checkFullOrbitopeSolution(), checkPackingPartitioningOrbitopeSolution(), CONSHDLR_NAME, NULL, 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().
◆ SCIP_DECL_CONSPROP()
|
static |
domain propagation method of constraint handler
Definition at line 2621 of file cons_orbitope.c.
References CONSHDLR_NAME, FALSE, NULL, 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().
◆ SCIP_DECL_CONSPRESOL()
|
static |
presolving method of constraint handler
Definition at line 2667 of file cons_orbitope.c.
References CONSHDLR_NAME, FALSE, NULL, 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().
◆ SCIP_DECL_CONSRESPROP()
|
static |
propagation conflict resolving method of constraint handler
Definition at line 2715 of file cons_orbitope.c.
References NULL, resolvePropagation(), resolvePropagationFullOrbitopes(), SCIP_CALL, SCIP_DECL_CONSLOCK(), SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, and SCIPconsGetData().
Referenced by SCIP_DECL_CONSPRESOL().
◆ SCIP_DECL_CONSLOCK()
|
static |
variable rounding lock method of constraint handler
Definition at line 2747 of file cons_orbitope.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIPaddVarLocksType(), SCIPconsGetData(), SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSRESPROP().
◆ SCIP_DECL_CONSPRINT()
|
static |
constraint display method of constraint handler
Definition at line 2787 of file cons_orbitope.c.
References CONSHDLR_NAME, NULL, 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().
◆ SCIP_DECL_CONSCOPY()
|
static |
constraint copying method of constraint handler
Definition at line 2849 of file cons_orbitope.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSPARSE(), SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPcreateConsOrbitope(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetVarCopy(), and TRUE.
Referenced by SCIP_DECL_CONSPRINT().
◆ SCIP_DECL_CONSPARSE()
|
static |
constraint parsing method of constraint handler
Definition at line 2919 of file cons_orbitope.c.
References FALSE, NULL, 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().
◆ SCIP_DECL_CONSGETVARS()
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 3047 of file cons_orbitope.c.
References 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 variables (if possible)
Definition at line 3080 of file cons_orbitope.c.
References NULL, SCIP_OKAY, SCIPconsGetData(), SCIPincludeConshdlrOrbitope(), and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().