All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
presol_domcol.c File Reference Detailed Descriptiondominated column presolver This presolver looks for dominance relations between variable pairs. From a dominance relation and certain bound/clique-constellations variable fixings mostly at the lower bound of the dominated variable can be derived. Additionally it is possible to improve bounds by predictive bound strengthening. Definition in file presol_domcol.c. #include <stdio.h> #include <assert.h> #include <string.h> #include "scip/cons_knapsack.h" #include "scip/cons_linear.h" #include "scip/cons_logicor.h" #include "scip/cons_setppc.h" #include "scip/cons_varbound.h" #include "presol_domcol.h" Go to the source code of this file.
Macro Definition Documentation
Definition at line 52 of file presol_domcol.c. Referenced by SCIP_DECL_PRESOLCOPY(), and SCIPincludePresolDomcol().
Definition at line 53 of file presol_domcol.c. Referenced by SCIPincludePresolDomcol().
priority of the presolver (>= 0: before, < 0: after constraint handlers) Definition at line 54 of file presol_domcol.c. Referenced by SCIPincludePresolDomcol().
maximal number of presolving rounds the presolver participates in (-1: no limit) Definition at line 55 of file presol_domcol.c. Referenced by SCIPincludePresolDomcol().
should presolver be delayed, if other presolvers found reductions? Definition at line 56 of file presol_domcol.c. Referenced by SCIPincludePresolDomcol().
minimal number of pair comparisons Definition at line 58 of file presol_domcol.c. Referenced by SCIPincludePresolDomcol().
maximal number of pair comparisons Definition at line 59 of file presol_domcol.c. Referenced by SCIPincludePresolDomcol().
should predictive bound strengthening be applied? Definition at line 61 of file presol_domcol.c. Referenced by SCIPincludePresolDomcol().
should singleton columns stuffing be applied? Definition at line 62 of file presol_domcol.c. Referenced by SCIPincludePresolDomcol(). Typedef Documentation
Definition at line 90 of file presol_domcol.c.
Definition at line 130 of file presol_domcol.c. Enumeration Type Documentation
type of fixing direction
Definition at line 84 of file presol_domcol.c. Function Documentation
transforms given variables, scalars, and constant to the corresponding active variables, scalars, and constant
Definition at line 134 of file presol_domcol.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, and TRUE. Referenced by addConstraint().
add one row to the constraint matrix
Definition at line 169 of file presol_domcol.c. References FALSE, NULL, SCIP_Bool, SCIP_OKAY, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetProbindex(), and TRUE. Referenced by addConstraint().
add one constraint to matrix
Definition at line 272 of file presol_domcol.c. References addRow(), getActiveVariables(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisInfinity(), and SCIPisLE(). Referenced by initMatrix().
transform row major format into column major format
Definition at line 351 of file presol_domcol.c. References BMSclearMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, and SCIPfreeBufferArray. Referenced by initMatrix().
calculate min/max activity per row
Definition at line 418 of file presol_domcol.c. References NULL, SCIP_OKAY, SCIP_Real, SCIPisInfinity(), and SCIPisZero(). Referenced by initMatrix().
initialize matrix
Definition at line 494 of file presol_domcol.c. References addConstraint(), BMSclearMemoryArray, calcActivityBounds(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_SETPPCTYPE_COVERING, SCIP_SETPPCTYPE_PACKING, SCIP_SETPPCTYPE_PARTITIONING, SCIPallocBuffer, SCIPallocBufferArray, SCIPallocClearMemoryArray, SCIPconsGetName(), SCIPconshdlrGetCheckConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNCheckConss(), SCIPconsIsTransformed(), SCIPdebugMessage, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetCapacityKnapsack(), SCIPgetConshdlrs(), SCIPgetLhsLinear(), SCIPgetLhsVarbound(), SCIPgetNConshdlrs(), SCIPgetNConss(), SCIPgetNVars(), SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetRhsLinear(), SCIPgetRhsVarbound(), SCIPgetTypeSetppc(), SCIPgetValsLinear(), SCIPgetVars(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsLogicor(), SCIPgetVarsSetppc(), SCIPgetVarVarbound(), SCIPgetVbdcoefVarbound(), SCIPgetVbdvarVarbound(), SCIPgetWeightsKnapsack(), SCIPinfinity(), SCIPisStopped(), SCIPreallocBufferArray, SCIPvarGetLbGlobal(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetUbGlobal(), setColumnMajorFormat(), and TRUE. Referenced by SCIP_DECL_PRESOLEXEC().
frees the constraint matrix
Definition at line 822 of file presol_domcol.c. References NULL, SCIPfreeBuffer, SCIPfreeBufferArray, SCIPfreeBufferArrayNull, and SCIPfreeMemoryArray. Referenced by SCIP_DECL_PRESOLEXEC().
get minimum/maximum residual activity for the specified variable and with another variable set to its upper bound Definition at line 1033 of file presol_domcol.c. References FALSE, NULL, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE. Referenced by calcVarBoundsDominated().
get minimum/maximum residual activity for the specified variable and with another variable set to its lower bound
Definition at line 1210 of file presol_domcol.c. References FALSE, NULL, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE. Referenced by calcVarBoundsDominating().
Calculate bounds of the dominated variable by rowbound analysis. We use a special kind of predictive rowbound analysis by first setting the dominating variable to its upper bound.
Definition at line 1389 of file presol_domcol.c. References FALSE, getActivityResidualsUpperBound(), NULL, SCIP_Bool, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIPinfinity(), SCIPisInfinity(), SCIPisZero(), SCIPvarGetStatus(), and TRUE. Referenced by updateBounds().
Calculate bounds of the dominating variable by rowbound analysis. We use a special kind of predictive rowbound analysis by first setting the dominated variable to its lower bound.
Definition at line 1564 of file presol_domcol.c. References FALSE, getActivityResidualsLowerBound(), NULL, SCIP_Bool, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIPinfinity(), SCIPisInfinity(), SCIPisZero(), SCIPvarGetStatus(), and TRUE. Referenced by updateBounds().
try to find new variable bounds and update them when they are better then the old bounds
Definition at line 1737 of file presol_domcol.c. References calcVarBoundsDominated(), calcVarBoundsDominating(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, and SCIPinfinity(). Referenced by findDominancePairs().
detect parallel columns by using the algorithm of Bixby and Wagner see paper: "A note on Detecting Simple Redundancies in Linear Systems", June 1986
Definition at line 1820 of file presol_domcol.c. References BMSclearMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMessage, SCIPfreeBufferArray, SCIPisEQ(), SCIPisZero(), SCIPsortIntIntReal(), SCIPsortRealInt(), and TRUE. Referenced by SCIP_DECL_PRESOLEXEC().
try to improve variable bounds by predictive bound strengthening
Definition at line 1990 of file presol_domcol.c. References NOFIX, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPceil(), SCIPchgVarLb(), SCIPchgVarUb(), SCIPdebugMessage, SCIPfloor(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPisNegative(), SCIPisPositive(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetType(), SCIPvarGetUbGlobal(), and SCIPvarIsBinary(). Referenced by findDominancePairs().
try to find variable fixings
Definition at line 2188 of file presol_domcol.c. References FALSE, FIXATLB, FIXATUB, NOFIX, SCIP_OKAY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPisEQ(), SCIPisGE(), SCIPisInfinity(), SCIPisLE(), SCIPisNegative(), SCIPisPositive(), SCIPvarGetObj(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarsHaveCommonClique(), and TRUE. Referenced by findDominancePairs().
find dominance relation between variable pairs
Definition at line 2327 of file presol_domcol.c. References FALSE, findFixings(), FIXATLB, MIN, NOFIX, NULL, predBndStr(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPinfinity(), SCIPisEQ(), SCIPisFeasGE(), SCIPisGE(), SCIPisLT(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), TRUE, and updateBounds(). Referenced by SCIP_DECL_PRESOLEXEC().
try to fix singleton column continuous variables
Definition at line 2711 of file presol_domcol.c. References BMSclearMemoryArray, FALSE, FIXATLB, FIXATUB, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPisGE(), SCIPisInfinity(), SCIPisLE(), SCIPisNegative(), SCIPisPositive(), SCIPsortRealRealIntInt(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetType(), SCIPvarGetUbGlobal(), and TRUE. Referenced by SCIP_DECL_PRESOLEXEC().
copy method for constraint handler plugins (called when SCIP copies plugins) Definition at line 3032 of file presol_domcol.c. References NULL, PRESOL_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludePresolDomcol(), and SCIPpresolGetName().
destructor of presolver to free user data (called when SCIP is exiting) Definition at line 3046 of file presol_domcol.c. References NULL, SCIP_OKAY, SCIPfreeMemory, SCIPpresolGetData(), and SCIPpresolSetData().
execution method of presolver Definition at line 3062 of file presol_domcol.c. References BMSclearMemoryArray, detectParallelCols(), FALSE, findDominancePairs(), FIXATLB, FIXATUB, freeMatrix(), initMatrix(), NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PRESOLVING, SCIP_SUCCESS, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPallocBufferArray, SCIPdebugMessage, SCIPfixVar(), SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetStage(), SCIPinProbing(), SCIPisFeasIntegral(), SCIPisNLPEnabled(), SCIPisStopped(), SCIPpresolGetData(), SCIPsortIntInt(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), singletonColumnStuffing(), and TRUE.
creates the domcol presolver and includes it in SCIP
Definition at line 3501 of file presol_domcol.c. References DEFAULT_NUMMAXPAIRS, DEFAULT_NUMMINPAIRS, DEFAULT_PREDBNDSTR, DEFAULT_SINGCOLSTUFF, FALSE, NULL, PRESOL_DELAY, PRESOL_DESC, PRESOL_MAXROUNDS, PRESOL_NAME, PRESOL_PRIORITY, SCIP_CALL, SCIP_OKAY, SCIPaddBoolParam(), SCIPaddIntParam(), SCIPallocMemory, SCIPincludePresolBasic(), SCIPsetPresolCopy(), SCIPsetPresolExitpre(), and SCIPsetPresolFree(). Referenced by SCIP_DECL_PRESOLCOPY(), and SCIPincludeDefaultPlugins(). |