Detailed Description
constraint handler for indicator constraints over arbitrary constraint types
Definition in file cons_superindicator.c.
#include "blockmemshell/memory.h"
#include "scip/cons_indicator.h"
#include "scip/cons_linear.h"
#include "scip/cons_superindicator.h"
#include "scip/dialog_default.h"
#include "scip/pub_cons.h"
#include "scip/pub_dialog.h"
#include "scip/pub_heur.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_sol.h"
#include "scip/pub_var.h"
#include "scip/scip_conflict.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_dialog.h"
#include "scip/scip_general.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_sol.h"
#include "scip/scip_var.h"
#include <string.h>
Go to the source code of this file.
Macros | |
#define | CONSHDLR_NAME "superindicator" |
#define | CONSHDLR_DESC "constraint handler for indicator constraints over arbitrary constraint types" |
#define | CONSHDLR_SEPAPRIORITY 0 |
#define | CONSHDLR_ENFOPRIORITY -5000000 |
#define | CONSHDLR_CHECKPRIORITY -5000000 |
#define | CONSHDLR_SEPAFREQ -1 |
#define | CONSHDLR_PROPFREQ 1 |
#define | CONSHDLR_EAGERFREQ 100 |
#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_CHECKSLACKTYPE TRUE |
#define | DEFAULT_UPGDPRIOINDICATOR 1 |
#define | DEFAULT_UPGDPRIOLINEAR 2 |
#define | DEFAULT_MAXUPGDCOEFLINEAR 1e4 |
Functions | |
static SCIP_RETCODE | consdataCreateSuperindicator (SCIP *scip, SCIP_CONSDATA **consdata, SCIP_VAR *binvar, SCIP_CONS *slackcons) |
static SCIP_RETCODE | consdataCheckSuperindicator (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result) |
static void | extractLinearValues (SCIP *scip, SCIP_CONS *cons, SCIP_Real *minactivity, SCIP_Real *maxactivity, SCIP_Real *minabscoef) |
static SCIP_RETCODE | upgradeIndicatorSuperindicator (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success, SCIP_Bool *deleted) |
static SCIP_RETCODE | upgradeLinearSuperindicator (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success, SCIP_Bool *deleted) |
static SCIP_RETCODE | upgradeSuperindicator (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *success, SCIP_Bool *deleted) |
static SCIP_RETCODE | enforceConstraint (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_Bool solinfeasible, SCIP_RESULT *result) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopySuperindicator) |
static | SCIP_DECL_CONSFREE (consFreeSuperindicator) |
static | SCIP_DECL_CONSINITPRE (consInitpreSuperindicator) |
static | SCIP_DECL_CONSDELETE (consDeleteSuperindicator) |
static | SCIP_DECL_CONSTRANS (consTransSuperindicator) |
static | SCIP_DECL_CONSINITLP (consInitlpSuperindicator) |
static | SCIP_DECL_CONSSEPALP (consSepalpSuperindicator) |
static | SCIP_DECL_CONSSEPASOL (consSepasolSuperindicator) |
static | SCIP_DECL_CONSENFOLP (consEnfolpSuperindicator) |
static | SCIP_DECL_CONSENFORELAX (consEnforelaxSuperindicator) |
static | SCIP_DECL_CONSENFOPS (consEnfopsSuperindicator) |
static | SCIP_DECL_CONSCHECK (consCheckSuperindicator) |
static | SCIP_DECL_CONSPROP (consPropSuperindicator) |
static | SCIP_DECL_CONSPRESOL (consPresolSuperindicator) |
static | SCIP_DECL_CONSRESPROP (consRespropSuperindicator) |
static | SCIP_DECL_CONSLOCK (consLockSuperindicator) |
static | SCIP_DECL_CONSPRINT (consPrintSuperindicator) |
static | SCIP_DECL_CONSCOPY (consCopySuperindicator) |
static | SCIP_DECL_CONSPARSE (consParseSuperindicator) |
static | SCIP_DECL_CONSGETVARS (consGetVarsSuperindicator) |
static | SCIP_DECL_CONSGETNVARS (consGetNVarsSuperindicator) |
SCIP_RETCODE | SCIPincludeConshdlrSuperindicator (SCIP *scip) |
SCIP_RETCODE | SCIPcreateConsSuperindicator (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *slackcons, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode) |
SCIP_RETCODE | SCIPcreateConsBasicSuperindicator (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *slackcons) |
SCIP_VAR * | SCIPgetBinaryVarSuperindicator (SCIP_CONS *cons) |
SCIP_CONS * | SCIPgetSlackConsSuperindicator (SCIP_CONS *cons) |
SCIP_RETCODE | SCIPtransformMinUC (SCIP *scip, SCIP_Bool *success) |
SCIP_DECL_DIALOGEXEC (SCIPdialogExecChangeMinUC) | |
Macro Definition Documentation
◆ CONSHDLR_NAME
#define CONSHDLR_NAME "superindicator" |
Definition at line 62 of file cons_superindicator.c.
Referenced by SCIPcreateConsSuperindicator(), SCIPgetBinaryVarSuperindicator(), SCIPgetSlackConsSuperindicator(), and SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_DESC
#define CONSHDLR_DESC "constraint handler for indicator constraints over arbitrary constraint types" |
Definition at line 63 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_SEPAPRIORITY
#define CONSHDLR_SEPAPRIORITY 0 |
priority of the constraint handler for separation
Definition at line 64 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_ENFOPRIORITY
#define CONSHDLR_ENFOPRIORITY -5000000 |
priority of the constraint handler for constraint enforcing
Definition at line 65 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_CHECKPRIORITY
#define CONSHDLR_CHECKPRIORITY -5000000 |
priority of the constraint handler for checking feasibility
Definition at line 66 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_SEPAFREQ
#define CONSHDLR_SEPAFREQ -1 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 67 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_PROPFREQ
#define CONSHDLR_PROPFREQ 1 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 68 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_EAGERFREQ
#define CONSHDLR_EAGERFREQ 100 |
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 69 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_MAXPREROUNDS
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 72 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_DELAYSEPA
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 75 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_DELAYPROP
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 76 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_NEEDSCONS
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 77 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_PROP_TIMING
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
propagation timing mask of the constraint handler
Definition at line 79 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ CONSHDLR_PRESOLTIMING
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_MEDIUM |
presolving timing of the constraint handler (fast, medium, or exhaustive)
Definition at line 80 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ DEFAULT_CHECKSLACKTYPE
#define DEFAULT_CHECKSLACKTYPE TRUE |
should type of slack constraint be checked when creating superindicator constraint?
Definition at line 82 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ DEFAULT_UPGDPRIOINDICATOR
#define DEFAULT_UPGDPRIOINDICATOR 1 |
priority for upgrading to an indicator constraint (-1: never)
Definition at line 83 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ DEFAULT_UPGDPRIOLINEAR
#define DEFAULT_UPGDPRIOLINEAR 2 |
priority for upgrading to a linear constraint (-1: never)
Definition at line 84 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
◆ DEFAULT_MAXUPGDCOEFLINEAR
#define DEFAULT_MAXUPGDCOEFLINEAR 1e4 |
maximum big-M coefficient of binary variable in upgrade to a linear constraint (relative to smallest coefficient)
Definition at line 85 of file cons_superindicator.c.
Referenced by SCIPincludeConshdlrSuperindicator().
Function Documentation
◆ consdataCreateSuperindicator()
|
static |
creates superindicator constraint data
- Parameters
-
scip SCIP data structure consdata pointer to constraint data binvar binary variable slackcons slack constraint
Definition at line 118 of file cons_superindicator.c.
References consdataCheckSuperindicator(), NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPcaptureCons(), SCIPdebugMsg, SCIPgetTransformedVar(), SCIPisTransformed(), and SCIPtransformCons().
Referenced by SCIPcreateConsSuperindicator().
◆ consdataCheckSuperindicator()
|
static |
checks the feasibility of a superindicator constraint
- Parameters
-
scip SCIP data structure consdata pointer to superindicator constraint data sol pointer to the solution to be checked checkintegrality Has integrality to be checked? checklprows Do constraints represented by rows in the current LP have to be checked? printreason Should the reason for the violation be printed? result pointer to store the result of the test
Definition at line 157 of file cons_superindicator.c.
References extractLinearValues(), NULL, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPcheckCons(), SCIPconsGetName(), SCIPdebugMsg, SCIPgetSolVal(), SCIPinfoMessage(), SCIPisFeasEQ(), SCIPisIntegral(), SCIPvarGetName(), and TRUE.
Referenced by consdataCreateSuperindicator(), and enforceConstraint().
◆ extractLinearValues()
|
static |
computes the minactivity, maxactivity, and minimal absolute value of nonzero coefficients of a linear constraint with respect to its global bounds
- Parameters
-
scip SCIP data structure cons pointer to linear constraint minactivity pointer to return the minimal activity maxactivity pointer to return the maximal activity minabscoef pointer to return the minimal absolute value of the coefficients
Definition at line 228 of file cons_superindicator.c.
References FALSE, NULL, SCIP_Bool, SCIP_Real, SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPgetNVarsLinear(), SCIPgetValsLinear(), SCIPgetVarsLinear(), SCIPinfinity(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and upgradeIndicatorSuperindicator().
Referenced by consdataCheckSuperindicator(), and upgradeLinearSuperindicator().
◆ upgradeIndicatorSuperindicator()
|
static |
tries to upgrade superindicator constraint to an indicator constraint
- Parameters
-
scip SCIP data structure cons superindicator constraint to be upgraded success pointer to store if the upgrading was successful deleted pointer to store if the constraint was deleted
Definition at line 305 of file cons_superindicator.c.
References FALSE, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsIndicator(), SCIPdebug, SCIPdebugMsg, SCIPdelCons(), SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetLhsLinear(), SCIPgetNVarsLinear(), SCIPgetRhsLinear(), SCIPgetValsLinear(), SCIPgetVarsLinear(), SCIPisInfinity(), SCIPreleaseCons(), SCIPsnprintf(), TRUE, and upgradeLinearSuperindicator().
Referenced by extractLinearValues(), and upgradeSuperindicator().
◆ upgradeLinearSuperindicator()
|
static |
upgrades a superindicator constraint to a linear constraint if possible
- Parameters
-
scip SCIP data structure cons superindicator constraint to be upgraded success pointer to store if the upgrading was successful deleted pointer to store if the constraint was deleted
Definition at line 421 of file cons_superindicator.c.
References extractLinearValues(), FALSE, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdebug, SCIPdebugMsg, SCIPdelCons(), SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetLhsLinear(), SCIPgetNVarsLinear(), SCIPgetRhsLinear(), SCIPgetValsLinear(), SCIPgetVarsLinear(), SCIPinfinity(), SCIPisGE(), SCIPisInfinity(), SCIPisLE(), SCIPisNegative(), SCIPisPositive(), SCIPreleaseCons(), SCIPsnprintf(), TRUE, and upgradeSuperindicator().
Referenced by upgradeIndicatorSuperindicator(), and upgradeSuperindicator().
◆ upgradeSuperindicator()
|
static |
tries to upgrade a superindicator constraint in order of the upgrade priority parameters
- Parameters
-
scip SCIP data structure cons superindicator constraint to be updated success pointer to store if the constraint was upgraded deleted pointer to store if the constraint was deleted
Definition at line 624 of file cons_superindicator.c.
References enforceConstraint(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetData(), upgradeIndicatorSuperindicator(), and upgradeLinearSuperindicator().
Referenced by upgradeLinearSuperindicator().
◆ enforceConstraint()
|
static |
helper function to 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 enforce (NULL for the LP solution) solinfeasible was the solution already declared infeasible by a constraint handler? result pointer to store the result of the enforcing call
Definition at line 671 of file cons_superindicator.c.
References consdataCheckSuperindicator(), FALSE, NULL, SCIP_Bool, SCIP_BRANCHED, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DECL_CONSHDLRCOPY(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_INVALIDRESULT, SCIP_OKAY, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPdebugPrintf, SCIPenfolpCons(), SCIPenforelaxCons(), SCIPerrorMessage, SCIPisFeasEQ(), SCIPprintSol(), SCIPvarGetLbLocal(), SCIPvarGetName(), and TRUE.
Referenced by SCIP_DECL_CONSENFOLP(), and upgradeSuperindicator().
◆ SCIP_DECL_CONSHDLRCOPY()
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 805 of file cons_superindicator.c.
Referenced by enforceConstraint().
◆ SCIP_DECL_CONSFREE()
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 821 of file cons_superindicator.c.
◆ SCIP_DECL_CONSINITPRE()
|
static |
presolving initialization method of constraint handler (called when presolving is about to begin)
Definition at line 844 of file cons_superindicator.c.
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 865 of file cons_superindicator.c.
◆ SCIP_DECL_CONSTRANS()
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 888 of file cons_superindicator.c.
◆ SCIP_DECL_CONSINITLP()
|
static |
LP initialization method of constraint handler
Definition at line 915 of file cons_superindicator.c.
◆ SCIP_DECL_CONSSEPALP()
|
static |
separation method of constraint handler for LP solutions
Definition at line 952 of file cons_superindicator.c.
◆ SCIP_DECL_CONSSEPASOL()
|
static |
separation method of constraint handler for arbitrary primal solutions
Definition at line 1061 of file cons_superindicator.c.
◆ SCIP_DECL_CONSENFOLP()
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 1170 of file cons_superindicator.c.
References enforceConstraint(), and SCIP_CALL.
◆ SCIP_DECL_CONSENFORELAX()
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 1179 of file cons_superindicator.c.
References SCIP_Bool.
◆ SCIP_DECL_CONSENFOPS()
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 1188 of file cons_superindicator.c.
◆ SCIP_DECL_CONSCHECK()
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 1321 of file cons_superindicator.c.
◆ SCIP_DECL_CONSPROP()
|
static |
domain propagation method of constraint handler
Definition at line 1349 of file cons_superindicator.c.
◆ SCIP_DECL_CONSPRESOL()
|
static |
presolving method of constraint handler
Definition at line 1442 of file cons_superindicator.c.
◆ SCIP_DECL_CONSRESPROP()
|
static |
propagation conflict resolving method of constraint handler
Definition at line 1531 of file cons_superindicator.c.
◆ SCIP_DECL_CONSLOCK()
|
static |
variable rounding lock method of constraint handler
Definition at line 1564 of file cons_superindicator.c.
◆ SCIP_DECL_CONSPRINT()
|
static |
constraint display method of constraint handler
Definition at line 1588 of file cons_superindicator.c.
◆ SCIP_DECL_CONSCOPY()
|
static |
constraint copying method of constraint handler
Definition at line 1630 of file cons_superindicator.c.
◆ SCIP_DECL_CONSPARSE()
|
static |
constraint parsing method of constraint handler
Definition at line 1749 of file cons_superindicator.c.
◆ SCIP_DECL_CONSGETVARS()
|
static |
constraint method of constraint handler which returns the variables (if possible)
Definition at line 1840 of file cons_superindicator.c.
◆ SCIP_DECL_CONSGETNVARS()
|
static |
constraint method of constraint handler which returns the number of variables (if possible)
Definition at line 1864 of file cons_superindicator.c.