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.
◆ CONSHDLR_DESC
#define CONSHDLR_DESC "symmetry breaking constraint handler for orbisacks" |
Definition at line 78 of file cons_orbisack.c.
◆ CONSHDLR_SEPAPRIORITY
#define CONSHDLR_SEPAPRIORITY +40100 |
priority of the constraint handler for separation
Definition at line 79 of file cons_orbisack.c.
◆ CONSHDLR_ENFOPRIORITY
#define CONSHDLR_ENFOPRIORITY -1005200 |
priority of the constraint handler for constraint enforcing
Definition at line 80 of file cons_orbisack.c.
◆ CONSHDLR_CHECKPRIORITY
#define CONSHDLR_CHECKPRIORITY -1005200 |
priority of the constraint handler for checking feasibility
Definition at line 81 of file cons_orbisack.c.
◆ 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.
◆ CONSHDLR_PROPFREQ
#define CONSHDLR_PROPFREQ 5 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 83 of file cons_orbisack.c.
◆ 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 85 of file cons_orbisack.c.
◆ CONSHDLR_MAXPREROUNDS
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 86 of file cons_orbisack.c.
◆ CONSHDLR_DELAYSEPA
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 87 of file cons_orbisack.c.
◆ CONSHDLR_DELAYPROP
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 88 of file cons_orbisack.c.
◆ CONSHDLR_NEEDSCONS
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 89 of file cons_orbisack.c.
◆ CONSHDLR_PROP_TIMING
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
Definition at line 91 of file cons_orbisack.c.
◆ CONSHDLR_PRESOLTIMING
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_EXHAUSTIVE |
Definition at line 92 of file cons_orbisack.c.
◆ DEFAULT_ORBISEPARATION
#define DEFAULT_ORBISEPARATION FALSE |
whether orbisack inequalities should be separated
Definition at line 95 of file cons_orbisack.c.
◆ DEFAULT_COVERSEPARATION
#define DEFAULT_COVERSEPARATION TRUE |
whether cover inequalities should be separated
Definition at line 96 of file cons_orbisack.c.
◆ DEFAULT_COEFFBOUND
#define DEFAULT_COEFFBOUND 1000000.0 |
maximum size of coefficients in orbisack inequalities
Definition at line 99 of file cons_orbisack.c.
◆ DEFAULT_PPORBISACK
#define DEFAULT_PPORBISACK TRUE |
whether we allow upgrading to packing/partitioning orbisacks
Definition at line 100 of file cons_orbisack.c.
◆ DEFAULT_FORCECONSCOPY
#define DEFAULT_FORCECONSCOPY FALSE |
whether orbisack constraints should be forced to be copied to sub SCIPs
Definition at line 101 of file cons_orbisack.c.
◆ FIXED0
#define FIXED0 1 /* When a variable is fixed to 0. */ |
Definition at line 104 of file cons_orbisack.c.
◆ FIXED1
#define FIXED1 2 /* When a variable is fixed to 1. */ |
Definition at line 105 of file cons_orbisack.c.
◆ UNFIXED
#define UNFIXED 3 /* When a variable is neither fixed to 0 or to 1. */ |
Definition at line 106 of file cons_orbisack.c.
Function Documentation
◆ consdataFree()
|
static |
frees orbisack constraint data
- Parameters
-
scip SCIP data structure consdata pointer to orbisack constraint data
Definition at line 140 of file cons_orbisack.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, and SCIPreleaseVar().
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 174 of file cons_orbisack.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPcaptureVar(), SCIPduplicateBlockMemoryArray, SCIPgetTransformedVar(), SCIPisTransformed(), SCIPmarkDoNotMultaggrVar(), and SCIPvarIsBinary().
Referenced by 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 233 of file cons_orbisack.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisPackingPartitioningOrbitope(), and TRUE.
Referenced by 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 289 of file cons_orbisack.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPconsGetData(), SCIPcreateEmptyRowCons(), SCIPinfinity(), SCIPprintRow(), SCIPreleaseRow(), and TRUE.
Referenced by 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 335 of file cons_orbisack.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPcreateEmptyRowCons(), SCIPflushRowExtensions(), SCIPinfinity(), SCIPprintRow(), SCIPreleaseRow(), and TRUE.
Referenced by 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 387 of file cons_orbisack.c.
References addOrbisackCover(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, and SCIPisEfficacious().
Referenced by 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 487 of file cons_orbisack.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPcreateEmptyRowCons(), SCIPflushRowExtensions(), SCIPinfinity(), SCIPprintRow(), SCIPreleaseRow(), and TRUE.
Referenced by separateOrbisack().
◆ 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 544 of file cons_orbisack.c.
References addOrbisackInequality(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisEfficacious(), and separateOrbisackCovers().
Referenced by 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 698 of file cons_orbisack.c.
References FALSE, FIXED0, FIXED1, NULL, SCIP_OKAY, SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), TRUE, and UNFIXED.
Referenced by propVariables().
◆ 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 772 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(), TRUE, and UNFIXED.
Referenced by 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 972 of file cons_orbisack.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_OKAY, SCIP_SEPARATED, SCIPconsGetHdlr(), SCIPconshdlrGetData(), separateOrbisack(), and separateOrbisackCovers().
Referenced by 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 1028 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrOrbisack(), and TRUE.
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 1044 of file cons_orbisack.c.
References consdataFree(), CONSHDLR_NAME, SCIP_CALL, SCIP_OKAY, and SCIPconshdlrGetName().
◆ SCIP_DECL_CONSFREE()
|
static |
frees constraint handler
Definition at line 1059 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPfreeBlockMemory.
◆ SCIP_DECL_CONSTRANS()
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 1078 of file cons_orbisack.c.
References consdataCreate(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateCons(), and SCIPdebugMsg.
◆ SCIP_DECL_CONSINITLP()
|
static |
LP initialization method of constraint handler (called before the initial LP relaxation at a node is solved)
Definition at line 1112 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, initLP(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetName(), SCIPconshdlrGetName(), and SCIPdebugMsg.
◆ SCIP_DECL_CONSINITSOL()
|
static |
solving process initialization method of constraint handler (called when branch and bound process is about to begin)
Definition at line 1143 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_OKAY, SCIPconsGetData(), SCIPconshdlrGetData(), and SCIPconshdlrGetName().
◆ SCIP_DECL_CONSSEPALP()
|
static |
separation method of constraint handler for LP solution
Definition at line 1179 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNLPBranchCands(), SCIPgetSolVals(), and separateInequalities().
◆ SCIP_DECL_CONSSEPASOL()
|
static |
separation method of constraint handler for arbitrary primal solution
Definition at line 1241 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetSolVals(), and separateInequalities().
◆ 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 1303 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNLPBranchCands(), SCIPgetSolVals(), and separateOrbisackCovers().
◆ SCIP_DECL_CONSENFOPS()
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 1384 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPcheckSolutionOrbisack(), SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, and TRUE.
◆ SCIP_DECL_CONSENFORELAX()
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 1432 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNLPBranchCands(), SCIPgetSolVals(), and separateOrbisackCovers().
◆ SCIP_DECL_CONSCHECK()
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 1513 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_Bool, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPcheckSolutionOrbisack(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPdebugMsg, and TRUE.
◆ SCIP_DECL_CONSPROP()
|
static |
domain propagation method of constraint handler
Definition at line 1562 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, propVariables(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPconshdlrGetName(), and SCIPdebugMsg.
◆ SCIP_DECL_CONSPRESOL()
|
static |
presolving method of constraint handler
Definition at line 1602 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, propVariables(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPconshdlrGetName(), and SCIPdebugMsg.
◆ SCIP_DECL_CONSRESPROP()
|
static |
Propagation resolution for conflict analysis
Definition at line 1647 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPvarGetLbAtIndex(), SCIPvarGetUbAtIndex(), and TRUE.
◆ 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 1766 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddVarLocksType(), SCIPconsGetData(), SCIPconshdlrGetName(), and SCIPdebugMsg.
◆ SCIP_DECL_CONSCOPY()
|
static |
constraint copying method of constraint handler
Definition at line 1804 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPcreateConsOrbisack(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetVarCopy(), and TRUE.
◆ SCIP_DECL_CONSPARSE()
|
static |
constraint parsing method of constraint handler
Definition at line 1893 of file cons_orbisack.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPcreateConsBasicOrbisack(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPparseVarName(), SCIPreallocBufferArray, SCIPskipSpace(), and TRUE.
◆ 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 2008 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPinfoMessage(), SCIPwriteVarName(), and TRUE.
◆ SCIP_DECL_CONSGETVARS()
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 2107 of file cons_orbisack.c.
References FALSE, NULL, SCIP_OKAY, SCIPconsGetData(), and TRUE.
◆ SCIP_DECL_CONSGETNVARS()
|
static |
constraint method of constraint handler which returns the number of variables (if possible)
Definition at line 2139 of file cons_orbisack.c.
References NULL, SCIP_OKAY, SCIPconsGetData(), and TRUE.