Scippy

SCIP

Solving Constraint Integer Programs

presol_domcol.c File Reference

Detailed Description

dominated column presolver

Author
Dieter Weninger
Gerald Gamrath

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.

Macros

#define PRESOL_NAME   "domcol"
 
#define PRESOL_DESC   "dominated column presolver"
 
#define PRESOL_PRIORITY   20000000
 
#define PRESOL_MAXROUNDS   -1
 
#define PRESOL_DELAY   TRUE
 
#define DEFAULT_NUMMINPAIRS   1024
 
#define DEFAULT_NUMMAXPAIRS   1048576
 
#define DEFAULT_PREDBNDSTR   FALSE
 
#define DEFAULT_SINGCOLSTUFF   TRUE
 

Typedefs

typedef enum Fixingdirection FIXINGDIRECTION
 
typedef struct ConstraintMatrix CONSTRAINTMATRIX
 

Enumerations

enum  Fixingdirection {
  FIXATLB = -1,
  NOFIX = 0,
  FIXATUB = 1,
  FIXATLB = -1,
  NOFIX = 0,
  FIXATUB = 1
}
 

Functions

static SCIP_RETCODE getActiveVariables (SCIP *scip, SCIP_VAR ***vars, SCIP_Real **scalars, int *nvars, SCIP_Real *constant)
 
static SCIP_RETCODE addRow (SCIP *scip, CONSTRAINTMATRIX *matrix, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Real lhs, SCIP_Real rhs)
 
static SCIP_RETCODE addConstraint (SCIP *scip, CONSTRAINTMATRIX *matrix, SCIP_VAR **vars, SCIP_Real *vals, int nvars, SCIP_Real lhs, SCIP_Real rhs)
 
static SCIP_RETCODE setColumnMajorFormat (SCIP *scip, CONSTRAINTMATRIX *matrix)
 
static SCIP_RETCODE calcActivityBounds (SCIP *scip, CONSTRAINTMATRIX *matrix)
 
static SCIP_RETCODE initMatrix (SCIP *scip, CONSTRAINTMATRIX **matrixptr, SCIP_Bool *initialized)
 
static void freeMatrix (SCIP *scip, CONSTRAINTMATRIX **matrix)
 
static void getActivityResidualsUpperBound (SCIP *scip, CONSTRAINTMATRIX *matrix, int row, int col, SCIP_Real coef, int upperboundcol, SCIP_Real upperboundcoef, SCIP_Real *minresactivity, SCIP_Real *maxresactivity, SCIP_Bool *success)
 
static void getActivityResidualsLowerBound (SCIP *scip, CONSTRAINTMATRIX *matrix, int row, int col, SCIP_Real coef, int lowerboundcol, SCIP_Real lowerboundcoef, SCIP_Real *minresactivity, SCIP_Real *maxresactivity, SCIP_Bool *success)
 
static SCIP_RETCODE calcVarBoundsDominated (SCIP *scip, CONSTRAINTMATRIX *matrix, int row, int coldominating, SCIP_Real valdominating, int coldominated, SCIP_Real valdominated, SCIP_Bool *ubcalculated, SCIP_Real *calculatedub, SCIP_Bool *wclbcalculated, SCIP_Real *calculatedwclb, SCIP_Bool *lbcalculated, SCIP_Real *calculatedlb, SCIP_Bool *wcubcalculated, SCIP_Real *calculatedwcub)
 
static SCIP_RETCODE calcVarBoundsDominating (SCIP *scip, CONSTRAINTMATRIX *matrix, int row, int coldominating, SCIP_Real valdominating, int coldominated, SCIP_Real valdominated, SCIP_Bool *ubcalculated, SCIP_Real *calculatedub, SCIP_Bool *wclbcalculated, SCIP_Real *calculatedwclb, SCIP_Bool *lbcalculated, SCIP_Real *calculatedlb, SCIP_Bool *wcubcalculated, SCIP_Real *calculatedwcub)
 
static SCIP_RETCODE updateBounds (SCIP *scip, CONSTRAINTMATRIX *matrix, int row, int col1, SCIP_Real val1, int col2, SCIP_Real val2, SCIP_Bool predictdominating, SCIP_Real *upperbound, SCIP_Real *wclowerbound, SCIP_Real *lowerbound, SCIP_Real *wcupperbound)
 
static SCIP_RETCODE detectParallelCols (SCIP *scip, CONSTRAINTMATRIX *matrix, int *pclass, SCIP_Bool *varineq)
 
static SCIP_RETCODE predBndStr (SCIP *scip, SCIP_VAR *dominatingvar, int dominatingidx, SCIP_Real dominatingub, SCIP_Real dominatinglb, SCIP_Real dominatingwcub, SCIP_VAR *dominatedvar, int dominatedidx, SCIP_Real dominatedub, SCIP_Real dominatedwclb, SCIP_Real dominatedlb, FIXINGDIRECTION *varstofix, int *nchgbds)
 
static SCIP_RETCODE findFixings (SCIP *scip, CONSTRAINTMATRIX *matrix, SCIP_VAR *dominatingvar, int dominatingidx, SCIP_Real dominatingub, SCIP_Real dominatingwclb, SCIP_Real dominatinglb, SCIP_Real dominatingwcub, SCIP_VAR *dominatedvar, int dominatedidx, FIXINGDIRECTION *varstofix, SCIP_Bool onlybinvars, SCIP_Bool onlyoneone, int *nfixings)
 
static SCIP_RETCODE findDominancePairs (SCIP *scip, CONSTRAINTMATRIX *matrix, SCIP_PRESOLDATA *presoldata, int *searchcols, int searchsize, SCIP_Bool onlybinvars, FIXINGDIRECTION *varstofix, int *nfixings, SCIP_Longint *ndomrelations, int *nchgbds)
 
static SCIP_RETCODE singletonColumnStuffing (SCIP *scip, CONSTRAINTMATRIX *matrix, SCIP_Bool *varsprocessed, FIXINGDIRECTION *varstofix, int *nfixings)
 
static SCIP_DECL_PRESOLCOPY (presolCopyDomcol)
 
static SCIP_DECL_PRESOLFREE (presolFreeDomcol)
 
static SCIP_DECL_PRESOLEXEC (presolExecDomcol)
 
SCIP_RETCODE SCIPincludePresolDomcol (SCIP *scip)
 

Macro Definition Documentation

#define PRESOL_NAME   "domcol"

Definition at line 52 of file presol_domcol.c.

Referenced by SCIP_DECL_PRESOLCOPY(), and SCIPincludePresolDomcol().

#define PRESOL_DESC   "dominated column presolver"

Definition at line 53 of file presol_domcol.c.

Referenced by SCIPincludePresolDomcol().

#define PRESOL_PRIORITY   20000000

priority of the presolver (>= 0: before, < 0: after constraint handlers)

Definition at line 54 of file presol_domcol.c.

Referenced by SCIPincludePresolDomcol().

#define PRESOL_MAXROUNDS   -1

maximal number of presolving rounds the presolver participates in (-1: no limit)

Definition at line 55 of file presol_domcol.c.

Referenced by SCIPincludePresolDomcol().

#define PRESOL_DELAY   TRUE

should presolver be delayed, if other presolvers found reductions?

Definition at line 56 of file presol_domcol.c.

Referenced by SCIPincludePresolDomcol().

#define DEFAULT_NUMMINPAIRS   1024

minimal number of pair comparisons

Definition at line 58 of file presol_domcol.c.

Referenced by SCIPincludePresolDomcol().

#define DEFAULT_NUMMAXPAIRS   1048576

maximal number of pair comparisons

Definition at line 59 of file presol_domcol.c.

Referenced by SCIPincludePresolDomcol().

#define DEFAULT_PREDBNDSTR   FALSE

should predictive bound strengthening be applied?

Definition at line 61 of file presol_domcol.c.

Referenced by SCIPincludePresolDomcol().

#define DEFAULT_SINGCOLSTUFF   TRUE

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.

typedef struct ConstraintMatrix CONSTRAINTMATRIX

Definition at line 130 of file presol_domcol.c.

Enumeration Type Documentation

type of fixing direction

Enumerator:
FIXATLB 

fix variable at lower bound

NOFIX 

do not fix variable

FIXATUB 

fix variable at upper bound

FIXATLB 
NOFIX 
FIXATUB 

Definition at line 84 of file presol_domcol.c.

Function Documentation

static SCIP_RETCODE getActiveVariables ( SCIP scip,
SCIP_VAR ***  vars,
SCIP_Real **  scalars,
int *  nvars,
SCIP_Real constant 
)
static

transforms given variables, scalars, and constant to the corresponding active variables, scalars, and constant

Parameters
scipSCIP data structure
varsvars array to get active variables for
scalarsscalars a_1, ..., a_n in linear sum a_1*x_1 + ... + a_n*x_n + c
nvarspointer to number of variables and values in vars and vals array
constantpointer to constant c in linear sum a_1*x_1 + ... + a_n*x_n + c

Definition at line 134 of file presol_domcol.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, and TRUE.

Referenced by addConstraint().

static SCIP_RETCODE addRow ( SCIP scip,
CONSTRAINTMATRIX matrix,
SCIP_VAR **  vars,
SCIP_Real vals,
int  nvars,
SCIP_Real  lhs,
SCIP_Real  rhs 
)
static

add one row to the constraint matrix

Parameters
scipSCIP data structure
matrixconstraint matrix
varsvariables of this row
valscoefficients of this row
nvarsnumber of variables of this row
lhsleft hand side
rhsright hand side

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().

static SCIP_RETCODE addConstraint ( SCIP scip,
CONSTRAINTMATRIX matrix,
SCIP_VAR **  vars,
SCIP_Real vals,
int  nvars,
SCIP_Real  lhs,
SCIP_Real  rhs 
)
static

add one constraint to matrix

Parameters
scipcurrent scip instance
matrixconstraint matrix
varsvariables of this constraint
valsvariable coefficients of this constraint
nvarsnumber of variables
lhsleft hand side
rhsright hand side

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().

static SCIP_RETCODE setColumnMajorFormat ( SCIP scip,
CONSTRAINTMATRIX matrix 
)
static

transform row major format into column major format

Parameters
scipcurrent scip instance
matrixconstraint matrix

Definition at line 351 of file presol_domcol.c.

References BMSclearMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, and SCIPfreeBufferArray.

Referenced by initMatrix().

static SCIP_RETCODE calcActivityBounds ( SCIP scip,
CONSTRAINTMATRIX matrix 
)
static

calculate min/max activity per row

Parameters
scipcurrent scip instance
matrixconstraint matrix

Definition at line 418 of file presol_domcol.c.

References NULL, SCIP_OKAY, SCIP_Real, SCIPisInfinity(), and SCIPisZero().

Referenced by initMatrix().

static SCIP_RETCODE initMatrix ( SCIP scip,
CONSTRAINTMATRIX **  matrixptr,
SCIP_Bool initialized 
)
static
static void freeMatrix ( SCIP scip,
CONSTRAINTMATRIX **  matrix 
)
static

frees the constraint matrix

Parameters
scipcurrent SCIP instance
matrixconstraint matrix object

Definition at line 822 of file presol_domcol.c.

References NULL, SCIPfreeBuffer, SCIPfreeBufferArray, SCIPfreeBufferArrayNull, and SCIPfreeMemoryArray.

Referenced by SCIP_DECL_PRESOLEXEC().

static void getActivityResidualsUpperBound ( SCIP scip,
CONSTRAINTMATRIX matrix,
int  row,
int  col,
SCIP_Real  coef,
int  upperboundcol,
SCIP_Real  upperboundcoef,
SCIP_Real minresactivity,
SCIP_Real maxresactivity,
SCIP_Bool success 
)
static

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().

static void getActivityResidualsLowerBound ( SCIP scip,
CONSTRAINTMATRIX matrix,
int  row,
int  col,
SCIP_Real  coef,
int  lowerboundcol,
SCIP_Real  lowerboundcoef,
SCIP_Real minresactivity,
SCIP_Real maxresactivity,
SCIP_Bool success 
)
static

get minimum/maximum residual activity for the specified variable and with another variable set to its lower bound

Parameters
scipSCIP main data structure
matrixmatrix containing the constraints
rowrow index
colcolumn index
coefcoefficient of the column in this row
lowerboundcolcolumn index of variable to set to its lower bound
lowerboundcoefcoefficient in this row of the column to be set to its lower bound
minresactivityminimum residual activity of this row
maxresactivitymaximum residual activity of this row
successpointer to store whether the computation was successful

Definition at line 1210 of file presol_domcol.c.

References FALSE, NULL, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by calcVarBoundsDominating().

static SCIP_RETCODE calcVarBoundsDominated ( SCIP scip,
CONSTRAINTMATRIX matrix,
int  row,
int  coldominating,
SCIP_Real  valdominating,
int  coldominated,
SCIP_Real  valdominated,
SCIP_Bool ubcalculated,
SCIP_Real calculatedub,
SCIP_Bool wclbcalculated,
SCIP_Real calculatedwclb,
SCIP_Bool lbcalculated,
SCIP_Real calculatedlb,
SCIP_Bool wcubcalculated,
SCIP_Real calculatedwcub 
)
static

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.

Parameters
scipSCIP main data structure
matrixmatrix containing the constraints
rowcurrent row index
coldominatingcolumn index of dominating variable
valdominatingrow coefficient of dominating variable
coldominatedcolumn index of dominated variable
valdominatedrow coefficient of dominated variable
ubcalculatedwas a upper bound calculated?
calculatedubpredicted upper bound
wclbcalculatedwas a lower worst case bound calculated?
calculatedwclbpredicted worst case lower bound
lbcalculatedwas a lower bound calculated?
calculatedlbpredicted lower bound
wcubcalculatedwas a worst case upper bound calculated?
calculatedwcubcalculated worst case 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().

static SCIP_RETCODE calcVarBoundsDominating ( SCIP scip,
CONSTRAINTMATRIX matrix,
int  row,
int  coldominating,
SCIP_Real  valdominating,
int  coldominated,
SCIP_Real  valdominated,
SCIP_Bool ubcalculated,
SCIP_Real calculatedub,
SCIP_Bool wclbcalculated,
SCIP_Real calculatedwclb,
SCIP_Bool lbcalculated,
SCIP_Real calculatedlb,
SCIP_Bool wcubcalculated,
SCIP_Real calculatedwcub 
)
static

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.

Parameters
scipSCIP main data structure
matrixmatrix containing the constraints
rowcurrent row index
coldominatingcolumn index of dominating variable
valdominatingrow coefficient of dominating variable
coldominatedcolumn index of dominated variable
valdominatedrow coefficient of dominated variable
ubcalculatedwas a upper bound calculated?
calculatedubpredicted upper bound
wclbcalculatedwas a lower worst case bound calculated?
calculatedwclbpredicted worst case lower bound
lbcalculatedwas a lower bound calculated?
calculatedlbpredicted lower bound
wcubcalculatedwas a worst case upper bound calculated?
calculatedwcubcalculated worst case upper 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().

static SCIP_RETCODE updateBounds ( SCIP scip,
CONSTRAINTMATRIX matrix,
int  row,
int  col1,
SCIP_Real  val1,
int  col2,
SCIP_Real  val2,
SCIP_Bool  predictdominating,
SCIP_Real upperbound,
SCIP_Real wclowerbound,
SCIP_Real lowerbound,
SCIP_Real wcupperbound 
)
static

try to find new variable bounds and update them when they are better then the old bounds

Parameters
scipSCIP main data structure
matrixmatrix containing the constraints
rowrow index
col1dominating variable index
val1dominating variable coefficient
col2dominated variable index
val2dominated variable coefficient
predictdominatingflag indicating if bounds of dominating or dominated variable are predicted
upperboundpredicted upper bound
wclowerboundpredicted worst case lower bound
lowerboundpredicted lower bound
wcupperboundpredicted worst case upper bound

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().

static SCIP_RETCODE detectParallelCols ( SCIP scip,
CONSTRAINTMATRIX matrix,
int *  pclass,
SCIP_Bool varineq 
)
static

detect parallel columns by using the algorithm of Bixby and Wagner see paper: "A note on Detecting Simple Redundancies in Linear Systems", June 1986

Parameters
scipSCIP main data structure
matrixmatrix containing the constraints
pclassparallel column classes
varineqindicating if variable is within an equation

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().

static SCIP_RETCODE predBndStr ( SCIP scip,
SCIP_VAR dominatingvar,
int  dominatingidx,
SCIP_Real  dominatingub,
SCIP_Real  dominatinglb,
SCIP_Real  dominatingwcub,
SCIP_VAR dominatedvar,
int  dominatedidx,
SCIP_Real  dominatedub,
SCIP_Real  dominatedwclb,
SCIP_Real  dominatedlb,
FIXINGDIRECTION varstofix,
int *  nchgbds 
)
static

try to improve variable bounds by predictive bound strengthening

Parameters
scipSCIP main data structure
dominatingvardominating variable
dominatingidxcolumn index of the dominating variable
dominatingubpredicted upper bound of the dominating variable
dominatinglbpredicted lower bound of the dominating variable
dominatingwcubpredicted worst case upper bound of the dominating variable
dominatedvardominated variable
dominatedidxcolumn index of the dominated variable
dominatedubpredicted upper bound of the dominated variable
dominatedwclbpredicted worst case lower bound of the dominated variable
dominatedlbpredicted lower bound of the dominated variable
varstofixarray holding fixing information
nchgbdscount number of bound changes

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().

static SCIP_RETCODE findFixings ( SCIP scip,
CONSTRAINTMATRIX matrix,
SCIP_VAR dominatingvar,
int  dominatingidx,
SCIP_Real  dominatingub,
SCIP_Real  dominatingwclb,
SCIP_Real  dominatinglb,
SCIP_Real  dominatingwcub,
SCIP_VAR dominatedvar,
int  dominatedidx,
FIXINGDIRECTION varstofix,
SCIP_Bool  onlybinvars,
SCIP_Bool  onlyoneone,
int *  nfixings 
)
static

try to find variable fixings

Parameters
scipSCIP main data structure
matrixconstraint matrix structure
dominatingvardominating variable
dominatingidxcolumn index of the dominating variable
dominatingubpredicted upper bound of the dominating variable
dominatingwclbpredicted worst case lower bound of the dominating variable
dominatinglbpredicted lower bound of the dominating variable
dominatingwcubpredicted worst case upper bound of the dominating variable
dominatedvardominated variable
dominatedidxcolumn index of the dominated variable
varstofixarray holding fixing information
onlybinvarsflag indicating only binary variables are present
onlyoneonewhen onlybinvars is TRUE, flag indicates if both binary variables are in clique
nfixingscounter for possible 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().

static SCIP_RETCODE findDominancePairs ( SCIP scip,
CONSTRAINTMATRIX matrix,
SCIP_PRESOLDATA presoldata,
int *  searchcols,
int  searchsize,
SCIP_Bool  onlybinvars,
FIXINGDIRECTION varstofix,
int *  nfixings,
SCIP_Longint ndomrelations,
int *  nchgbds 
)
static

find dominance relation between variable pairs

Parameters
scipSCIP main data structure
matrixmatrix containing the constraints
presoldatapresolver data
searchcolsindexes of variables for pair comparisons
searchsizenumber of variables for pair comparisons
onlybinvarsflag indicating searchcols has only binary variable indexes
varstofixarray holding information for later upper/lower bound fixing
nfixingsfound number of possible fixings
ndomrelationsfound number of dominance relations
nchgbdsnumber of changed bounds

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().

static SCIP_RETCODE singletonColumnStuffing ( SCIP scip,
CONSTRAINTMATRIX matrix,
SCIP_Bool varsprocessed,
FIXINGDIRECTION varstofix,
int *  nfixings 
)
static

try to fix singleton column continuous variables

Parameters
scipSCIP main data structure
matrixmatrix containing the constraints
varsprocessedarray indicating that this variable has been processed
varstofixarray holding fixing information
nfixingsnumber of possible fixings

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().

static SCIP_DECL_PRESOLCOPY ( presolCopyDomcol  )
static

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().

static SCIP_DECL_PRESOLFREE ( presolFreeDomcol  )
static

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().