Detailed Description
constraint handler for orbisack constraints
The type of constraints of this constraint handler is described in cons_orbisack.h.
The details of the method implemented here are described in the following papers:
Describing Orbitopes by Linear Inequalities and Projection Based Tools
Andreas Loos,
PhD thesis, Otto-von-Guericke-Universitaet Magdeburg (2010).
This thesis provides a complete linear description of orbisacks and a separation routine for its inequalities.
Polytopes Associated with Symmetry Handling
Christopher Hojny and Marc E. Pfetsch,
(2017), preprint available at http://www.optimization-online.org/DB_HTML/2017/01/5835.html
This paper describes a linear time separation routine for so-called cover inequalities of orbisacks.
Definition in file cons_orbisack.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.h"
#include "scip/scip_branch.h"
#include "scip/scip_conflict.h"
#include "scip/scip_cons.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_sol.h"
#include "scip/scip_var.h"
#include "scip/symmetry.h"
Go to the source code of this file.
Macros | |
#define | CONSHDLR_NAME "orbisack" |
#define | CONSHDLR_DESC "symmetry breaking constraint handler for orbisacks" |
#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_EXHAUSTIVE |
#define | DEFAULT_ORBISEPARATION FALSE |
#define | DEFAULT_COVERSEPARATION TRUE |
#define | DEFAULT_COEFFBOUND 1000000.0 |
#define | DEFAULT_PPORBISACK TRUE |
#define | DEFAULT_FORCECONSCOPY FALSE |
#define | FIXED0 1 /* When a variable is fixed to 0. */ |
#define | FIXED1 2 /* When a variable is fixed to 1. */ |
#define | UNFIXED 3 /* When a variable is neither fixed to 0 or to 1. */ |
Functions | |
static SCIP_RETCODE | consdataFree (SCIP *scip, SCIP_CONSDATA **consdata) |
static SCIP_RETCODE | consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, int nrows, SCIP_Bool ismodelcons) |
static SCIP_RETCODE | packingUpgrade (SCIP *scip, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, int nrows, SCIP_Bool *success, SCIP_Bool *isparttype) |
static SCIP_RETCODE | initLP (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible) |
static SCIP_RETCODE | addOrbisackCover (SCIP *scip, SCIP_CONS *cons, int nrows, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, SCIP_Real *coeffs1, SCIP_Real *coeffs2, SCIP_Real rhs, SCIP_Bool *infeasible) |
static SCIP_RETCODE | separateOrbisackCovers (SCIP *scip, SCIP_CONS *cons, int nrows, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, SCIP_Real *vals1, SCIP_Real *vals2, int *ngen, SCIP_Bool *infeasible) |
static SCIP_RETCODE | addOrbisackInequality (SCIP *scip, SCIP_CONS *cons, int nrows, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, SCIP_Real *coeffs1, SCIP_Real *coeffs2, SCIP_Real rhs, SCIP_Bool *infeasible) |
static SCIP_RETCODE | separateOrbisack (SCIP *scip, SCIP_CONS *cons, int nrows, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, SCIP_Real *vals1, SCIP_Real *vals2, SCIP_Bool coverseparation, SCIP_Real coeffbound, int *ngen, SCIP_Bool *infeasible) |
static SCIP_RETCODE | checkFeasible (SCIP *scip, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, int start, SCIP_Bool *infeasible, int *infeasiblerow) |
static SCIP_RETCODE | propVariables (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible, SCIP_Bool *found, int *ngen) |
static SCIP_RETCODE | separateInequalities (SCIP *scip, SCIP_RESULT *result, SCIP_CONS *cons, int nrows, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, SCIP_Real *vals1, SCIP_Real *vals2) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyOrbisack) |
static | SCIP_DECL_CONSDELETE (consDeleteOrbisack) |
static | SCIP_DECL_CONSFREE (consFreeOrbisack) |
static | SCIP_DECL_CONSTRANS (consTransOrbisack) |
static | SCIP_DECL_CONSINITLP (consInitlpOrbisack) |
static | SCIP_DECL_CONSINITSOL (consInitsolOrbisack) |
static | SCIP_DECL_CONSSEPALP (consSepalpOrbisack) |
static | SCIP_DECL_CONSSEPASOL (consSepasolOrbisack) |
static | SCIP_DECL_CONSENFOLP (consEnfolpOrbisack) |
static | SCIP_DECL_CONSENFOPS (consEnfopsOrbisack) |
static | SCIP_DECL_CONSENFORELAX (consEnforelaxOrbisack) |
static | SCIP_DECL_CONSCHECK (consCheckOrbisack) |
static | SCIP_DECL_CONSPROP (consPropOrbisack) |
static | SCIP_DECL_CONSPRESOL (consPresolOrbisack) |
static | SCIP_DECL_CONSRESPROP (consRespropOrbisack) |
static | SCIP_DECL_CONSLOCK (consLockOrbisack) |
static | SCIP_DECL_CONSCOPY (consCopyOrbisack) |
static | SCIP_DECL_CONSPARSE (consParseOrbisack) |
static | SCIP_DECL_CONSPRINT (consPrintOrbisack) |
SCIP_RETCODE | SCIPcheckSolutionOrbisack (SCIP *scip, SCIP_SOL *sol, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, SCIP_Bool printreason, SCIP_Bool *feasible) |
static | SCIP_DECL_CONSGETVARS (consGetVarsOrbisack) |
static | SCIP_DECL_CONSGETNVARS (consGetNVarsOrbisack) |
SCIP_RETCODE | SCIPincludeConshdlrOrbisack (SCIP *scip) |
SCIP_RETCODE | SCIPcreateConsOrbisack (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, int nrows, SCIP_Bool ispporbisack, SCIP_Bool isparttype, SCIP_Bool ismodelcons, 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 | SCIPcreateConsBasicOrbisack (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, SCIP_Bool ispporbisack, SCIP_Bool isparttype, SCIP_Bool ismodelcons) |
Macro Definition Documentation
◆ CONSHDLR_NAME
#define CONSHDLR_NAME "orbisack" |
Definition at line 77 of file cons_orbisack.c.
Referenced by SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSDELETE(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSENFORELAX(), SCIP_DECL_CONSFREE(), SCIP_DECL_CONSHDLRCOPY(), SCIP_DECL_CONSINITLP(), SCIP_DECL_CONSINITSOL(), SCIP_DECL_CONSLOCK(), SCIP_DECL_CONSPRESOL(), SCIP_DECL_CONSPRINT(), SCIP_DECL_CONSPROP(), SCIP_DECL_CONSRESPROP(), SCIP_DECL_CONSSEPALP(), SCIP_DECL_CONSSEPASOL(), SCIP_DECL_CONSTRANS(), SCIPcreateConsOrbisack(), and SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_DESC
#define CONSHDLR_DESC "symmetry breaking constraint handler for orbisacks" |
Definition at line 78 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_SEPAPRIORITY
#define CONSHDLR_SEPAPRIORITY +40100 |
priority of the constraint handler for separation
Definition at line 79 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_ENFOPRIORITY
#define CONSHDLR_ENFOPRIORITY -1005200 |
priority of the constraint handler for constraint enforcing
Definition at line 80 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_CHECKPRIORITY
#define CONSHDLR_CHECKPRIORITY -1005200 |
priority of the constraint handler for checking feasibility
Definition at line 81 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_SEPAFREQ
#define CONSHDLR_SEPAFREQ 5 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 82 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_PROPFREQ
#define CONSHDLR_PROPFREQ 5 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 83 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ 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 84 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_MAXPREROUNDS
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 87 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_DELAYSEPA
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 88 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_DELAYPROP
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 89 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_NEEDSCONS
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 90 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_PROP_TIMING
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
Definition at line 92 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_PRESOLTIMING
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_EXHAUSTIVE |
Definition at line 93 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ DEFAULT_ORBISEPARATION
#define DEFAULT_ORBISEPARATION FALSE |
whether orbisack inequalities should be separated
Definition at line 96 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ DEFAULT_COVERSEPARATION
#define DEFAULT_COVERSEPARATION TRUE |
whether cover inequalities should be separated
Definition at line 97 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ DEFAULT_COEFFBOUND
#define DEFAULT_COEFFBOUND 1000000.0 |
maximum size of coefficients in orbisack inequalities
Definition at line 100 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ DEFAULT_PPORBISACK
#define DEFAULT_PPORBISACK TRUE |
whether we allow upgrading to packing/partitioning orbisacks
Definition at line 101 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ DEFAULT_FORCECONSCOPY
#define DEFAULT_FORCECONSCOPY FALSE |
whether orbisack constraints should be forced to be copied to sub SCIPs
Definition at line 102 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ FIXED0
#define FIXED0 1 /* When a variable is fixed to 0. */ |
Definition at line 105 of file cons_orbisack.c.
Referenced by checkFeasible(), and propVariables().
◆ FIXED1
#define FIXED1 2 /* When a variable is fixed to 1. */ |
Definition at line 106 of file cons_orbisack.c.
Referenced by checkFeasible(), and propVariables().
◆ UNFIXED
#define UNFIXED 3 /* When a variable is neither fixed to 0 or to 1. */ |
Definition at line 107 of file cons_orbisack.c.
Referenced by checkFeasible(), and propVariables().
Function Documentation
◆ consdataFree()
|
static |
frees orbisack constraint data
- Parameters
-
scip SCIP data structure consdata pointer to orbisack constraint data
Definition at line 141 of file cons_orbisack.c.
References consdataCreate(), NULL, SCIP_OKAY, SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArrayNull.
Referenced by SCIP_DECL_CONSDELETE().
◆ consdataCreate()
|
static |
creates orbisack constraint data
- Parameters
-
scip SCIP data structure consdata pointer to store constraint data vars1 first column of variable matrix vars2 second column of variable matrix nrows number of rows in variable matrix ismodelcons whether the orbisack is a model constraint
Definition at line 163 of file cons_orbisack.c.
References NULL, packingUpgrade(), SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPduplicateBlockMemoryArray, SCIPgetTransformedVar(), SCIPisTransformed(), SCIPmarkDoNotMultaggrVar(), and SCIPvarIsBinary().
Referenced by consdataFree(), SCIP_DECL_CONSTRANS(), and SCIPcreateConsOrbisack().
◆ packingUpgrade()
|
static |
check wether an orbisack is even a packing/partitioning orbisack
- Parameters
-
scip SCIP pointer vars1 first column of matrix of variables on which the symmetry acts vars2 variables of second column nrows number of rows of orbisack success memory address to store whether constraint can be upgraded isparttype memory address to store whether upgraded orbisack is partitioning orbisack
Definition at line 215 of file cons_orbisack.c.
References FALSE, initLP(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisPackingPartitioningOrbitope(), and TRUE.
Referenced by consdataCreate(), and SCIPcreateConsOrbisack().
◆ initLP()
|
static |
generate initial LP cut
We generate the inequality of the orbisack on the elements of the first row, i.e., the inequality \(-x_{1,1} + x_{1,2} \leq 0\).
- Parameters
-
scip SCIP pointer cons constraint infeasible pointer to store whether we detected infeasibility
Definition at line 271 of file cons_orbisack.c.
References addOrbisackCover(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPconsGetData(), SCIPcreateEmptyRowCons(), SCIPinfinity(), SCIPprintRow(), SCIPreleaseRow(), and TRUE.
Referenced by packingUpgrade(), and SCIP_DECL_CONSINITLP().
◆ addOrbisackCover()
|
static |
add orbisack cover inequality
- Parameters
-
scip SCIP pointer cons constraint nrows number of rows of orbisack vars1 first column of matrix of variables on which the symmetry acts vars2 variables of second column coeffs1 coefficients of the variables of the first column of the inequality to be added coeffs2 coefficients of the variables of the second column of the inequality to be added rhs right-hand side of inequality to be added infeasible pointer to store whether we detected infeasibility
Definition at line 317 of file cons_orbisack.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPcreateEmptyRowCons(), SCIPflushRowExtensions(), SCIPinfinity(), SCIPprintRow(), SCIPreleaseRow(), separateOrbisackCovers(), and TRUE.
Referenced by initLP(), and separateOrbisackCovers().
◆ separateOrbisackCovers()
|
static |
Separate lifted orbisack cover inequalities
We currently do NOT enter cuts into the pool.
We iterate over the nrows-many cover inequalities which are potentially maximal w.r.t. their violation.
- Parameters
-
scip SCIP pointer cons constraint nrows number of rows of orbisack vars1 first column of matrix of variables on which the symmetry acts vars2 variables of second column vals1 LP-solution for those variables in first column vals2 LP-solution for those variables in second column ngen number of separated covers infeasible pointer to store whether we detected infeasibility
Definition at line 369 of file cons_orbisack.c.
References addOrbisackCover(), addOrbisackInequality(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, and SCIPisEfficacious().
Referenced by addOrbisackCover(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFORELAX(), separateInequalities(), and separateOrbisack().
◆ addOrbisackInequality()
|
static |
add orbisack inequality
- Parameters
-
scip SCIP pointer cons constraint nrows number of rows of orbisack vars1 first column of matrix of variables on which the symmetry acts vars2 variables of second column coeffs1 first column of coefficient matrix of inequality to be added coeffs2 second column of coefficient matrix of inequality to be added rhs right-hand side of inequality to be added infeasible pointer to store whether we detected infeasibility
Definition at line 469 of file cons_orbisack.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPcreateEmptyRowCons(), SCIPflushRowExtensions(), SCIPinfinity(), SCIPprintRow(), SCIPreleaseRow(), separateOrbisack(), and TRUE.
Referenced by separateOrbisack(), and separateOrbisackCovers().
◆ separateOrbisack()
|
static |
separate orbisack inequalities
We currently do NOT enter cuts into the pool.
We stop if we checked for each possible basement row, whether a cut could be added. If the coefficients grow too large, we start separating cover inequalities.
We implement the separation algorithm for orbisacks described in
A. Loos. Describing Orbitopes by Linear Inequalities and Projection Based Tools. PhD thesis, Otto-von-Guericke-Universitaet Magdeburg, 2010.
- Parameters
-
scip SCIP pointer cons constraint nrows number of rows of orbisack vars1 first column of matrix of variables on which the symmetry acts vars2 variables of second column vals1 LP-solution for those variables in first column vals2 LP-solution for those variables in second column coverseparation whether we separate cover inequalities coeffbound maximum size of coefficients in orbisack inequalities ngen pointer to store the number of generated cuts infeasible pointer to store whether we detected infeasibility
Definition at line 526 of file cons_orbisack.c.
References addOrbisackInequality(), checkFeasible(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisEfficacious(), and separateOrbisackCovers().
Referenced by addOrbisackInequality(), and separateInequalities().
◆ checkFeasible()
|
static |
Determines if a vector with additional fixings could exist that is lexicographically larger than another vector.
Given two vectors of variables with local lower and upper bounds, and a set of additional (virtual) fixings. Assuming that the entries of both vectors are equal until entry "start", this function determines if there exists a vector where the left vector is lexicographically larger or equal to the right vector. If a vector exsits, infeasible is set to FALSE, otherwise TRUE.
- Parameters
-
scip SCIP pointer vars1 array of variables in first vector vars2 array of variables in second vector nrows number of rows start at which row to start (assuming previous rows are equal) infeasible pointer to store whether infeasibility is detected in these fixings infeasiblerow pointer to store at which row a (0, 1) pattern is found
Definition at line 680 of file cons_orbisack.c.
References FALSE, FIXED0, FIXED1, NULL, propVariables(), SCIP_OKAY, SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), TRUE, and UNFIXED.
Referenced by propVariables(), and separateOrbisack().
◆ propVariables()
|
static |
propagation
- Parameters
-
scip SCIP pointer cons constraint to be propagated infeasible pointer to store whether it was detected that the node is infeasible found pointer to store whether a new propagation could be found ngen pointer to store the number of generated bound strengthenings
Definition at line 754 of file cons_orbisack.c.
References checkFeasible(), FALSE, FIXED0, FIXED1, NULL, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIPaddConflictBinvar(), SCIPanalyzeConflictCons(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPinferVarLbCons(), SCIPinferVarUbCons(), SCIPinitConflictAnalysis(), SCIPisConflictAnalysisApplicable(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), separateInequalities(), TRUE, and UNFIXED.
Referenced by checkFeasible(), SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().
◆ separateInequalities()
|
static |
separate orbisack and cover inequalities
- Parameters
-
scip pointer to scip result pointer to store the result of separation cons constraint nrows number of rows of orbisack vars1 first column of matrix of variables on which the symmetry acts vars2 variables of second column vals1 LP-solution for those variables in first column vals2 LP-solution for those variables in second column
Definition at line 954 of file cons_orbisack.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSHDLRCOPY(), SCIP_OKAY, SCIP_SEPARATED, SCIPconsGetHdlr(), SCIPconshdlrGetData(), separateOrbisack(), and separateOrbisackCovers().
Referenced by propVariables(), 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 1010 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrOrbisack(), and TRUE.
Referenced by separateInequalities().
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 1026 of file cons_orbisack.c.
References consdataFree(), CONSHDLR_NAME, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, and SCIPconshdlrGetName().
Referenced by SCIP_DECL_CONSHDLRCOPY().
◆ SCIP_DECL_CONSFREE()
|
static |
frees constraint handler
Definition at line 1041 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_DECL_CONSTRANS(), SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPfreeBlockMemory.
Referenced by SCIP_DECL_CONSDELETE().
◆ SCIP_DECL_CONSTRANS()
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 1060 of file cons_orbisack.c.
References consdataCreate(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSINITLP(), SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateCons(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSFREE().
◆ SCIP_DECL_CONSINITLP()
|
static |
LP initialization method of constraint handler (called before the initial LP relaxation at a node is solved)
Definition at line 1094 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, initLP(), NULL, SCIP_CALL, SCIP_DECL_CONSINITSOL(), SCIP_OKAY, SCIPconsGetName(), SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSTRANS().
◆ SCIP_DECL_CONSINITSOL()
|
static |
solving process initialization method of constraint handler (called when branch and bound process is about to begin)
Definition at line 1125 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_DECL_CONSSEPALP(), SCIP_OKAY, SCIPconsGetData(), SCIPconshdlrGetData(), and SCIPconshdlrGetName().
Referenced by SCIP_DECL_CONSINITLP().
◆ SCIP_DECL_CONSSEPALP()
|
static |
separation method of constraint handler for LP solution
Definition at line 1161 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSSEPASOL(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNLPBranchCands(), SCIPgetSolVals(), and separateInequalities().
Referenced by SCIP_DECL_CONSINITSOL().
◆ SCIP_DECL_CONSSEPASOL()
|
static |
separation method of constraint handler for arbitrary primal solution
Definition at line 1223 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSENFOLP(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetSolVals(), and separateInequalities().
Referenced by SCIP_DECL_CONSSEPALP().
◆ SCIP_DECL_CONSENFOLP()
|
static |
constraint enforcing method of constraint handler for LP solutions
- Precondition
- It is assumed that the solution is integral (this can be ensured by appropriate priorities).
Definition at line 1285 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSENFOPS(), SCIP_FEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNLPBranchCands(), SCIPgetSolVals(), and separateOrbisackCovers().
Referenced by SCIP_DECL_CONSSEPASOL().
◆ SCIP_DECL_CONSENFOPS()
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 1366 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSENFORELAX(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPcheckSolutionOrbisack(), SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, and TRUE.
Referenced by SCIP_DECL_CONSENFOLP().
◆ SCIP_DECL_CONSENFORELAX()
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 1414 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSCHECK(), SCIP_FEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNLPBranchCands(), SCIPgetSolVals(), and separateOrbisackCovers().
Referenced by SCIP_DECL_CONSENFOPS().
◆ SCIP_DECL_CONSCHECK()
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 1495 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPROP(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPcheckSolutionOrbisack(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPdebugMsg, and TRUE.
Referenced by SCIP_DECL_CONSENFORELAX().
◆ SCIP_DECL_CONSPROP()
|
static |
domain propagation method of constraint handler
Definition at line 1544 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, propVariables(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSPRESOL(), SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSCHECK().
◆ SCIP_DECL_CONSPRESOL()
|
static |
presolving method of constraint handler
Definition at line 1584 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, propVariables(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSRESPROP(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSPROP().
◆ SCIP_DECL_CONSRESPROP()
|
static |
Propagation resolution for conflict analysis
Definition at line 1629 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_DECL_CONSLOCK(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPvarGetLbAtIndex(), SCIPvarGetUbAtIndex(), and TRUE.
Referenced by SCIP_DECL_CONSPRESOL().
◆ SCIP_DECL_CONSLOCK()
|
static |
Lock variables
We assume we have only one global (void) constraint and lock all variables.
- Orbisack constraints may get violated if the variables of the first column are rounded down, we therefor call SCIPaddVarLocksType(..., nlockspos, nlocksneg).
- Orbisack constraints may get violated if the variables of the second column are rounded up , we therefor call SCIPaddVarLocksType(..., nlocksneg, nlockspo ).
Definition at line 1748 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSCOPY(), SCIP_OKAY, SCIPaddVarLocksType(), SCIPconsGetData(), SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSRESPROP().
◆ SCIP_DECL_CONSCOPY()
|
static |
constraint copying method of constraint handler
Definition at line 1786 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_DECL_CONSPARSE(), SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPcreateConsOrbisack(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetVarCopy(), and TRUE.
Referenced by SCIP_DECL_CONSLOCK().
◆ SCIP_DECL_CONSPARSE()
|
static |
constraint parsing method of constraint handler
Definition at line 1875 of file cons_orbisack.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_OKAY, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPcreateConsBasicOrbisack(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPparseVarName(), SCIPreallocBufferArray, SCIPskipSpace(), and TRUE.
Referenced by SCIP_DECL_CONSCOPY().
◆ SCIP_DECL_CONSPRINT()
|
static |
constraint display method of constraint handler
The constraint handler should output a representation of the constraint into the given text file.
Definition at line 1990 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckSolutionOrbisack(), SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPinfoMessage(), SCIPwriteVarName(), and TRUE.
Referenced by SCIP_DECL_CONSPARSE().
◆ SCIP_DECL_CONSGETVARS()
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 2089 of file cons_orbisack.c.
References FALSE, NULL, SCIP_DECL_CONSGETNVARS(), SCIP_OKAY, SCIPconsGetData(), and TRUE.
Referenced by SCIPcheckSolutionOrbisack().
◆ SCIP_DECL_CONSGETNVARS()
|
static |
constraint method of constraint handler which returns the number of variables (if possible)
Definition at line 2121 of file cons_orbisack.c.
References NULL, SCIP_OKAY, SCIPconsGetData(), SCIPincludeConshdlrOrbisack(), and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().