Detailed Description
constraint handler that checks bounds on fixed variables
For each original variable that has a counterpart in the transformed problem which is not active (i.e., fixed, negated, aggregated, or multiaggregated), check the original bounds. In enforcement, add a cut that enforces the bounds or tighten LP feasibility tolerance.
Definition in file cons_fixedvar.c.
Go to the source code of this file.
Macros | |
#define | CONSHDLR_NAME "fixedvar" |
#define | CONSHDLR_DESC "check bounds of original variables that are not active in transformed problem" |
#define | CONSHDLR_ENFOPRIORITY -7000000 |
#define | CONSHDLR_CHECKPRIORITY -7000000 |
#define | CONSHDLR_EAGERFREQ -1 |
#define | CONSHDLR_NEEDSCONS FALSE |
#define | DEFAULT_ENABLED TRUE |
#define | DEFAULT_SUBSCIPS TRUE |
#define | DEFAULT_PREFERCUT TRUE |
#define | assertSmallViolation(lb, val, ub) (assert((val) >= (lb) - 0.5 && (val) <= (ub) + 0.5)); |
Functions | |
static SCIP_RETCODE | addCut (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Bool *success, SCIP_Bool *cutoff) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyFixedvar) |
static | SCIP_DECL_CONSFREE (consFreeFixedvar) |
static | SCIP_DECL_CONSINITSOL (consInitsolFixedvar) |
static | SCIP_DECL_CONSEXITSOL (consExitsolFixedvar) |
static | SCIP_DECL_CONSENFOLP (consEnfolpFixedvar) |
static | SCIP_DECL_CONSENFORELAX (consEnforelaxFixedvar) |
static | SCIP_DECL_CONSENFOPS (consEnfopsFixedvar) |
static | SCIP_DECL_CONSCHECK (consCheckFixedvar) |
static | SCIP_DECL_CONSLOCK (consLockFixedvar) |
SCIP_RETCODE | SCIPincludeConshdlrFixedvar (SCIP *scip) |
Macro Definition Documentation
◆ CONSHDLR_NAME
#define CONSHDLR_NAME "fixedvar" |
Definition at line 44 of file cons_fixedvar.c.
◆ CONSHDLR_DESC
#define CONSHDLR_DESC "check bounds of original variables that are not active in transformed problem" |
Definition at line 45 of file cons_fixedvar.c.
◆ CONSHDLR_ENFOPRIORITY
#define CONSHDLR_ENFOPRIORITY -7000000 |
priority of the constraint handler for constraint enforcing
Definition at line 46 of file cons_fixedvar.c.
◆ CONSHDLR_CHECKPRIORITY
#define CONSHDLR_CHECKPRIORITY -7000000 |
priority of the constraint handler for checking feasibility
Definition at line 47 of file cons_fixedvar.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 49 of file cons_fixedvar.c.
◆ CONSHDLR_NEEDSCONS
#define CONSHDLR_NEEDSCONS FALSE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 50 of file cons_fixedvar.c.
◆ DEFAULT_ENABLED
#define DEFAULT_ENABLED TRUE |
enable constraint handler
Definition at line 53 of file cons_fixedvar.c.
◆ DEFAULT_SUBSCIPS
#define DEFAULT_SUBSCIPS TRUE |
also run in subSCIPs
Definition at line 54 of file cons_fixedvar.c.
◆ DEFAULT_PREFERCUT
#define DEFAULT_PREFERCUT TRUE |
whether to prefer separation over tightening LP feastol in enforcement
Definition at line 55 of file cons_fixedvar.c.
◆ assertSmallViolation
#define assertSmallViolation | ( | lb, | |
val, | |||
ub | |||
) | (assert((val) >= (lb) - 0.5 && (val) <= (ub) + 0.5)); |
an assert for checking that the violation is not so large
The idea of this constraint handler is the handling of tiny bound violations that are scaled up above the feasibility tolerance by aggregation factors. Usually, the violation should still be rather "small". For this test, we quantify "small" as 0.5.
Definition at line 84 of file cons_fixedvar.c.
Function Documentation
◆ addCut()
|
static |
add cut to enforce global bounds on variable aggregation
Given an original fixed variable x, add cut lb <= x <= ub. SCIP will replace x by the corresponding aggregation of x in the transformed problem. Though we only need to enforce original bounds on x, we use here the global bounds on x for lb/ub, as these should be as tight as or tighter than the original bounds.
- Parameters
-
scip SCIP data structure conshdlr fixedvar conshdlr sol solution that is enforced var fixed original variable which bound is violated success buffer to store whether cut was added cutoff buffer to store whether a cutoff was detected
Definition at line 94 of file cons_fixedvar.c.
References FALSE, NULL, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPaddRow(), SCIPaddVarToRow(), SCIPcreateEmptyRowConshdlr(), SCIPdebugMsg, SCIPgetRowSolFeasibility(), SCIPgetSolVal(), SCIPisFeasNegative(), SCIPprintRow(), SCIPreleaseRow(), SCIPsnprintf(), SCIPvarGetLbGlobal(), SCIPvarGetLbOriginal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbOriginal(), and TRUE.
Referenced by SCIP_DECL_CONSENFOLP(), and SCIP_DECL_CONSENFORELAX().
◆ SCIP_DECL_CONSHDLRCOPY()
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 145 of file cons_fixedvar.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPincludeConshdlrFixedvar(), and TRUE.
◆ SCIP_DECL_CONSFREE()
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 163 of file cons_fixedvar.c.
References NULL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrSetData(), and SCIPfreeBlockMemory.
◆ SCIP_DECL_CONSINITSOL()
|
static |
solving process initialization method of constraint handler (called when branch and bound process is about to begin)
Definition at line 180 of file cons_fixedvar.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPconshdlrGetData(), SCIPgetNFixedVars(), SCIPgetNOrigVars(), SCIPgetOrigVars(), SCIPgetTransformedVar(), SCIPisInfinity(), SCIPvarGetLbOriginal(), SCIPvarGetUbOriginal(), and SCIPvarIsActive().
◆ SCIP_DECL_CONSEXITSOL()
|
static |
solving process deinitialization method of constraint handler (called before branch and bound process data is freed)
Definition at line 238 of file cons_fixedvar.c.
References NULL, SCIP_OKAY, SCIPconshdlrGetData(), and SCIPfreeBlockMemoryArrayNull.
◆ SCIP_DECL_CONSENFOLP()
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 254 of file cons_fixedvar.c.
References addCut(), assertSmallViolation, MAX, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIP_SOLVELP, SCIPconshdlrGetData(), SCIPepsilon(), SCIPgetLPFeastol(), SCIPgetSolVal(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisInfinity(), SCIPisPositive(), SCIPsetLPFeastol(), SCIPvarGetLbOriginal(), SCIPvarGetUbOriginal(), and SCIPwarningMessage().
◆ SCIP_DECL_CONSENFORELAX()
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 346 of file cons_fixedvar.c.
References addCut(), assertSmallViolation, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIP_SOLVELP, SCIPconshdlrGetData(), SCIPgetSolVal(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisInfinity(), SCIPvarGetLbOriginal(), and SCIPvarGetUbOriginal().
◆ SCIP_DECL_CONSENFOPS()
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 406 of file cons_fixedvar.c.
References assertSmallViolation, NULL, SCIP_FEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_SOLVELP, SCIPconshdlrGetData(), SCIPgetSolVal(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisInfinity(), SCIPvarGetLbOriginal(), and SCIPvarGetUbOriginal().
◆ SCIP_DECL_CONSCHECK()
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 455 of file cons_fixedvar.c.
References assertSmallViolation, NULL, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIP_STAGE_FREETRANS, SCIP_STAGE_SOLVING, SCIP_STAGE_TRANSFORMED, SCIPconshdlrGetData(), SCIPdebugMsg, SCIPgetNOrigVars(), SCIPgetOrigVars(), SCIPgetSolVal(), SCIPgetStage(), SCIPgetTransformedVar(), SCIPinfoMessage(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisInfinity(), SCIPvarGetLbOriginal(), SCIPvarGetName(), SCIPvarGetUbOriginal(), and SCIPvarIsActive().
◆ SCIP_DECL_CONSLOCK()
|
static |
variable rounding lock method of constraint handler
Definition at line 556 of file cons_fixedvar.c.
References SCIP_OKAY.