coin-Bcp
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 CoinBigIndex
virtual ~OsiPresolve()
Virtual destructor.
OsiSolverInterface * presolvedModel_
int getNumCols() const
Return number of columns in original model.
virtual const CoinPresolveAction * presolve(CoinPresolveMatrix *prob)
Apply presolve transformations to the problem.
OsiSolverInterface * originalModel_
OsiSolverInterface * model() const
Return a pointer to the presolved model.
int getNumRows() const
Return number of rows in original model.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during postsol...
const CoinPresolveAction * paction_
The list of transformations applied.
Augments CoinPrePostsolveMatrix with information about the problem that is only needed during presolv...
OsiSolverInterface * presolvedModel() const
Get presolved model.
OsiPresolve()
Default constructor (empty object)
int presolveActions_
Whether we want to skip dual part of presolve etc.
void setPresolveActions(int action)
Fine control over presolve actions.
void setOriginalModel(OsiSolverInterface *model)
Set the pointer to the original model.
int * originalColumn_
Original column numbers.
const int * originalColumns() const
Return a pointer to the original columns.
int numberPasses_
Number of major passes.
OsiSolverInterface * originalModel() const
Return a pointer to the original model.
const int * originalRows() const
Return a pointer to the original rows.
void setPresolvedModel(OsiSolverInterface *presolvedModel)
Set presolved model.
void gutsOfDestroy()
Destroys queued postsolve actions.
OSI interface to COIN problem simplification capabilities.
Definition: OsiPresolve.hpp:59
int nrows_
Number of rows in original model.
Abstract base class of all presolve routines.
Abstract Base Class for describing an interface to a solver.
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...
int ncols_
Number of columns in original model.
double nonLinearValue_
int * originalRow_
Original row numbers.
void setNonLinearValue(double value)
"Magic" number.
CoinBigIndex nelems_
Number of nonzero matrix coefficients in the original model.
double nonLinearValue() const