All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
presol_dualinfer.c File Reference Detailed Descriptiondual inference presolver This presolver exploits dual information for primal variable fixings: a) The first method is an enhanced dual fixing technique. b) The second method does dual bound strengthening on continuous primal variables and applies complementary slackness (yA-c)_i > 0 => x_i = 0 for fixing primal variables at their lower bound. Definition in file presol_dualinfer.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_dualinfer.h" Go to the source code of this file.
Macro Definition Documentation
Definition at line 44 of file presol_dualinfer.c. Referenced by SCIP_DECL_PRESOLCOPY(), and SCIPincludePresolDualinfer().
Definition at line 45 of file presol_dualinfer.c. Referenced by SCIPincludePresolDualinfer().
priority of the presolver (>= 0: before, < 0: after constraint handlers) Definition at line 46 of file presol_dualinfer.c. Referenced by SCIPincludePresolDualinfer().
maximal number of presolving rounds the presolver participates in (-1: no limit) Definition at line 47 of file presol_dualinfer.c. Referenced by SCIPincludePresolDualinfer().
should presolver be delayed, if other presolvers found reductions? Definition at line 48 of file presol_dualinfer.c. Referenced by SCIPincludePresolDualinfer().
maximal number of dual bound strengthening loops Definition at line 50 of file presol_dualinfer.c. Referenced by dualBoundStrengthening(). Typedef Documentation
Definition at line 65 of file presol_dualinfer.c.
Definition at line 102 of file presol_dualinfer.c. Enumeration Type Documentation
type of fixing direction
Definition at line 59 of file presol_dualinfer.c. Function Documentation
transforms given variables, scalars, and constant to the corresponding active variables, scalars, and constant
Definition at line 106 of file presol_dualinfer.c. References NULL, SCIP_CALL, SCIP_OKAY, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, and TRUE. Referenced by addConstraint().
add one row to the constraint matrix
Definition at line 141 of file presol_dualinfer.c. References NULL, SCIP_OKAY, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetProbindex(), and TRUE. Referenced by addConstraint().
add one constraint to matrix
Definition at line 207 of file presol_dualinfer.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 286 of file presol_dualinfer.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 353 of file presol_dualinfer.c. References NULL, SCIP_OKAY, SCIP_Real, SCIPinfinity(), and SCIPisInfinity(). Referenced by initMatrix().
initialize matrix
Definition at line 431 of file presol_dualinfer.c. References addConstraint(), 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 754 of file presol_dualinfer.c. References NULL, SCIPfreeBuffer, SCIPfreeBufferArray, SCIPfreeBufferArrayNull, and SCIPfreeMemoryArray. Referenced by SCIP_DECL_PRESOLEXEC().
return if row is redundant or not
Definition at line 829 of file presol_dualinfer.c. References NULL, and SCIPisFeasLE(). Referenced by costCalculation().
initialize shadow prices
Definition at line 845 of file presol_dualinfer.c. References NULL, and SCIPinfinity(). Referenced by costFixing().
search for singleton columns and update shadow prices
Definition at line 868 of file presol_dualinfer.c. References NULL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPisInfinity(), SCIPvarGetObj(), SCIPvarGetType(), and SCIPvarGetUbGlobal(). Referenced by costFixing().
calculate min/max costs per column
Definition at line 925 of file presol_dualinfer.c. References FALSE, isRowRedundant(), NULL, SCIP_Bool, SCIP_Real, SCIPinfinity(), and SCIPisInfinity(). Referenced by costFixing().
fix variables at their bounds out of the min/max costs
Definition at line 1008 of file presol_dualinfer.c. References FIXATLB, FIXATUB, NULL, SCIP_Real, SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), and SCIPvarGetUbGlobal(). Referenced by costFixing().
dual cost fixing
Definition at line 1059 of file presol_dualinfer.c. References costCalculation(), fixColumns(), initShadowPrices(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, and singletonColumns(). Referenced by SCIP_DECL_PRESOLEXEC().
calculate maximal column activity from one continuous variable without one row
Definition at line 1101 of file presol_dualinfer.c. References NULL, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPisInfinity(), and SCIPvarGetType(). Referenced by calcColActivityResiduals().
calculate minimal column activity from one continuous variable without one row
Definition at line 1157 of file presol_dualinfer.c. References NULL, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPisInfinity(), and SCIPvarGetType(). Referenced by calcColActivityResiduals().
calculate minimal/maximal column residual activities
Definition at line 1213 of file presol_dualinfer.c. References getMaxColActWithoutRow(), getMinColActWithoutRow(), NULL, SCIP_VARTYPE_CONTINUOUS, SCIPinfinity(), SCIPisInfinity(), and SCIPvarGetType(). Referenced by dualBoundStrengthening().
calculate minimal/maximal column activity on continuous variables
Definition at line 1316 of file presol_dualinfer.c. References FALSE, NULL, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPinfinity(), SCIPisInfinity(), SCIPisPositive(), SCIPvarGetLbGlobal(), SCIPvarGetType(), SCIPvarGetUbGlobal(), and TRUE. Referenced by dualBoundStrengthening(), and infCounterUpdate().
update bounds on dual variables
Definition at line 1427 of file presol_dualinfer.c. References FALSE, NULL, SCIP_Real, SCIPisInfinity(), and TRUE. Referenced by dualBoundStrengthening().
update minimal/maximal column activity infinity counters
Definition at line 1491 of file presol_dualinfer.c. References calcColActivity(), NULL, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, and SCIPvarGetType(). Referenced by dualBoundStrengthening().
dual bound strengthening on continuous variables
Definition at line 1601 of file presol_dualinfer.c. References calcColActivity(), calcColActivityResiduals(), FALSE, FIXATLB, infCounterUpdate(), MAX_LOOPS, NOFIX, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPinfinity(), SCIPisInfinity(), SCIPisLT(), SCIPisNegative(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetType(), SCIPvarGetUbGlobal(), TRUE, and updateDualBounds(). Referenced by SCIP_DECL_PRESOLEXEC().
copy method for constraint handler plugins (called when SCIP copies plugins) Definition at line 1811 of file presol_dualinfer.c. References NULL, PRESOL_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludePresolDualinfer(), and SCIPpresolGetName().
execution method of presolver Definition at line 1825 of file presol_dualinfer.c. References BMSclearMemoryArray, costFixing(), dualBoundStrengthening(), FALSE, FIXATLB, FIXATUB, freeMatrix(), initMatrix(), NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PRESOLVING, SCIP_SUCCESS, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPdebugMessage, SCIPfixVar(), SCIPfreeBufferArray, SCIPgetNContVars(), SCIPgetStage(), SCIPinProbing(), SCIPisFeasIntegral(), SCIPvarGetLbLocal(), SCIPvarGetType(), and SCIPvarGetUbLocal().
creates the dual inference presolver and includes it in SCIP
Definition at line 1959 of file presol_dualinfer.c. References NULL, PRESOL_DELAY, PRESOL_DESC, PRESOL_MAXROUNDS, PRESOL_NAME, PRESOL_PRIORITY, SCIP_CALL, SCIP_OKAY, SCIPincludePresolBasic(), and SCIPsetPresolCopy(). Referenced by SCIP_DECL_PRESOLCOPY(), and SCIPincludeDefaultPlugins(). |