Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OsiPresolve.hpp
Go to the documentation of this file.
1 // Copyright (C) 2003, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 // This code is licensed under the terms of the Eclipse Public License (EPL).
4 
5 #ifndef OsiPresolve_H
6 #define OsiPresolve_H
7 #include "OsiSolverInterface.hpp"
8 
10 #include "CoinPresolveMatrix.hpp"
11 
59 class OsiPresolve {
60 public:
62  OsiPresolve();
63 
65  virtual ~OsiPresolve();
66 
88  double feasibilityTolerance = 0.0,
89  bool keepIntegers = true,
90  int numberPasses = 5,
91  const char *prohibited = NULL,
92  bool doStatus = true,
93  const char *rowProhibited = NULL);
94 
112  virtual void postsolve(bool updateStatus = true);
113 
115  OsiSolverInterface *model() const;
116 
119 
122 
124  const int *originalColumns() const;
125 
127  const int *originalRows() const;
128 
130  inline int getNumRows() const
131  {
132  return nrows_;
133  }
134 
136  inline int getNumCols() const
137  {
138  return ncols_;
139  }
140 
145  inline void setNonLinearValue(double value)
146  {
147  nonLinearValue_ = value;
148  }
149  inline double nonLinearValue() const
150  {
151  return nonLinearValue_;
152  }
171  inline void setPresolveActions(int action)
172  {
173  presolveActions_ = (presolveActions_ & 0xffff0000) | (action & 0xffff);
174  }
177  {
178  return presolvedModel_;
179  }
181  inline void setPresolvedModel(OsiSolverInterface *presolvedModel)
182  {
184  }
185 
186 private:
192 
198 
205 
208 
211 
214 
221  int ncols_;
222 
224  int nrows_;
225 
228 
237 
238 protected:
247  virtual const CoinPresolveAction *presolve(CoinPresolveMatrix *prob);
248 
259  virtual void postsolve(CoinPostsolveMatrix &prob);
260 
267  void gutsOfDestroy();
268 };
269 #endif
270 
271 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
272 */
int numberPasses_
Number of major passes.
int nrows_
Number of rows in original model.
int ncols_
Number of columns in original model.
const int * originalRows() const
Return a pointer to the original rows.
OsiSolverInterface * model() const
Return a pointer to the presolved model.
virtual void postsolve(bool updateStatus=true)
Restate the solution to the presolved problem in terms of the original problem and load it into the o...
double nonLinearValue() const
Abstract base class of all presolve routines.
void setOriginalModel(OsiSolverInterface *model)
Set the pointer to the original model.
OsiSolverInterface * presolvedModel_
Presolved model (solver interface loaded with the presolved problem)
Abstract Base Class for describing an interface to a solver.
Declarations for CoinPresolveMatrix and CoinPostsolveMatrix and their common base class CoinPrePostso...
void setPresolvedModel(OsiSolverInterface *presolvedModel)
Set presolved model.
void setNonLinearValue(double value)
"Magic" number.
void setPresolveActions(int action)
Fine control over presolve actions.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during postsol...
OsiSolverInterface * presolvedModel() const
Get presolved model.
int getNumCols() const
Return number of columns in original model.
virtual ~OsiPresolve()
Virtual destructor.
double nonLinearValue_
"Magic" number.
CoinBigIndex nelems_
Number of nonzero matrix coefficients in the original model.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during presolv...
OSI interface to COIN problem simplification capabilities.
Definition: OsiPresolve.hpp:59
int * originalRow_
Original row numbers.
void gutsOfDestroy()
Destroys queued postsolve actions.
const CoinPresolveAction * paction_
The list of transformations applied.
virtual const CoinPresolveAction * presolve(CoinPresolveMatrix *prob)
Apply presolve transformations to the problem.
OsiSolverInterface * originalModel_
Original model (solver interface loaded with the original problem).
OsiSolverInterface * originalModel() const
Return a pointer to the original model.
int CoinBigIndex
int presolveActions_
Whether we want to skip dual part of presolve etc.
OsiPresolve()
Default constructor (empty object)
const int * originalColumns() const
Return a pointer to the original columns.
int * originalColumn_
Original column numbers.
int getNumRows() const
Return number of rows in original model.