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_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 <string.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_CHECKALWAYSFEAS TRUE |
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) |
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 | 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_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_CONSPRINT (consPrintOrbisack) |
SCIP_RETCODE | SCIPcheckSolutionOrbisack (SCIP *scip, SCIP_SOL *sol, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, SCIP_Bool printreason, SCIP_Bool *feasible) |
SCIP_RETCODE | SCIPseparateCoversOrbisack (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, SCIP_Bool *infeasible, int *ngen) |
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 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) |
Macro Definition Documentation
◆ CONSHDLR_NAME
#define CONSHDLR_NAME "orbisack" |
Definition at line 64 of file cons_orbisack.c.
Referenced by SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSDELETE(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSENFORELAX(), SCIP_DECL_CONSFREE(), 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 65 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_SEPAPRIORITY
#define CONSHDLR_SEPAPRIORITY +40100 |
priority of the constraint handler for separation
Definition at line 66 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 67 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 68 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 69 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 70 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 71 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 74 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 75 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 76 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 77 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_PROP_TIMING
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
Definition at line 79 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ CONSHDLR_PRESOLTIMING
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_EXHAUSTIVE |
Definition at line 80 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ DEFAULT_ORBISEPARATION
#define DEFAULT_ORBISEPARATION FALSE |
whether orbisack inequalities should be separated
Definition at line 83 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ DEFAULT_COVERSEPARATION
#define DEFAULT_COVERSEPARATION TRUE |
whether cover inequalities should be separated
Definition at line 84 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 87 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 89 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
◆ DEFAULT_CHECKALWAYSFEAS
#define DEFAULT_CHECKALWAYSFEAS TRUE |
whether check routine returns always SCIP_FEASIBLE
Definition at line 90 of file cons_orbisack.c.
Referenced by SCIPincludeConshdlrOrbisack().
Function Documentation
◆ consdataFree()
|
static |
frees orbisack constraint data
- Parameters
-
scip SCIP data structure consdata pointer to orbisack constraint data
Definition at line 123 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
Definition at line 145 of file cons_orbisack.c.
References NULL, packingUpgrade(), SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPduplicateBlockMemoryArray, SCIPgetTransformedVar(), SCIPisTransformed(), SCIPmarkDoNotMultaggrVar(), and SCIPvarIsBinary().
Referenced by consdataFree(), 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 195 of file cons_orbisack.c.
References FALSE, initLP(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_SETPPCTYPE_COVERING, SCIP_SETPPCTYPE_PACKING, SCIP_SETPPCTYPE_PARTITIONING, SCIPallocClearBufferArray, SCIPconshdlrGetConss(), SCIPconshdlrGetNConss(), SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetNVarsSetppc(), SCIPgetTypeSetppc(), SCIPgetVarsSetppc(), SCIPvarGetProbindex(), SCIPvarIsNegated(), SCIPwarningMessage(), 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 373 of file cons_orbisack.c.
References addOrbisackCover(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPconsGetData(), SCIPconsGetHdlr(), 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 419 of file cons_orbisack.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPconsGetHdlr(), 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 471 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 571 of file cons_orbisack.c.
References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPconsGetHdlr(), 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 628 of file cons_orbisack.c.
References addOrbisackInequality(), FALSE, NULL, propVariables(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisEfficacious(), and separateOrbisackCovers().
Referenced by addOrbisackInequality(), and separateInequalities().
◆ 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 776 of file cons_orbisack.c.
References FALSE, NULL, r, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_Real, SCIPaddConflictBinvar(), SCIPallocBufferArray, SCIPanalyzeConflictCons(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPinferVarUbCons(), SCIPinitConflictAnalysis(), SCIPisConflictAnalysisApplicable(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), SCIPvarIsBinary(), separateInequalities(), and TRUE.
Referenced by SCIP_DECL_CONSPRESOL(), SCIP_DECL_CONSPROP(), and separateOrbisack().
◆ 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 962 of file cons_orbisack.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSDELETE(), SCIP_OKAY, SCIP_SEPARATED, SCIPconsGetHdlr(), SCIPconshdlrGetData(), separateOrbisack(), and separateOrbisackCovers().
Referenced by propVariables(), SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 1018 of file cons_orbisack.c.
References consdataFree(), CONSHDLR_NAME, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, and SCIPconshdlrGetName().
Referenced by separateInequalities().
◆ SCIP_DECL_CONSFREE()
|
static |
frees constraint handler
Definition at line 1033 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 1052 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSINITLP(), SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateCons(), SCIPdebugMsg, and SCIPgetTransformedVars().
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 1100 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 1131 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 1167 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 1229 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 1291 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 1367 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 1411 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 1487 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(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, and TRUE.
Referenced by SCIP_DECL_CONSENFORELAX().
◆ SCIP_DECL_CONSPROP()
|
static |
domain propagation method of constraint handler
Definition at line 1539 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 1579 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 1624 of file cons_orbisack.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_DECL_CONSLOCK(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, 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 1688 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_OKAY, SCIPaddVarLocksType(), SCIPconsGetData(), SCIPconshdlrGetName(), and SCIPdebugMsg.
Referenced by SCIP_DECL_CONSRESPROP().
◆ 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 1729 of file cons_orbisack.c.
References CONSHDLR_NAME, NULL, SCIP_OKAY, SCIPcheckSolutionOrbisack(), SCIPconsGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPinfoMessage(), and SCIPvarGetName().
Referenced by SCIP_DECL_CONSLOCK().
◆ SCIP_DECL_CONSGETVARS()
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 1930 of file cons_orbisack.c.
References FALSE, NULL, SCIP_DECL_CONSGETNVARS(), SCIP_OKAY, SCIPconsGetData(), and TRUE.
Referenced by SCIPseparateCoversOrbisack().
◆ SCIP_DECL_CONSGETNVARS()
|
static |
constraint method of constraint handler which returns the number of variables (if possible)
Definition at line 1962 of file cons_orbisack.c.
References NULL, SCIP_OKAY, SCIPconsGetData(), SCIPincludeConshdlrOrbisack(), and TRUE.
Referenced by SCIP_DECL_CONSGETVARS().