10class CoinPresolveAction;
11#include "CoinPresolveMatrix.hpp"
42 double feasibilityTolerance = 0.0,
43 bool keepIntegers =
true,
45 bool dropNames =
false,
46 bool doRowObjective =
false,
47 const char *prohibitedRows = NULL,
48 const char *prohibitedColumns = NULL);
54 double feasibilityTolerance = 0.0,
55 bool keepIntegers =
true,
57 bool dropNames =
false,
58 bool doRowObjective =
false);
305 virtual void postsolve(
bool updateStatus =
true);
308 void destroyPresolve();
358 virtual const CoinPresolveAction *
presolve(CoinPresolveMatrix *prob);
368 double feasibilityTolerance,
373 const char *prohibitedRows = NULL,
374 const char *prohibitedColumns = NULL);
bool doTwoxTwo() const
Whether we want to do twoxtwo part of presolve.
const int * originalColumns() const
return pointer to original columns
void setDoDependency(bool doDependency)
void setDoTripleton(bool doTripleton)
void setDoForcing(bool doForcing)
void setDoTwoxtwo(bool doTwoxTwo)
void setDoDuprow(bool doDuprow)
bool doDupcol() const
Whether we want to do dupcol part of presolve.
void statistics()
Asks for statistics.
bool doTighten() const
Whether we want to do tighten part of presolve.
*The postsolved problem will expand back to its former size *as postsolve transformations are applied *It is efficient to allocate data structures for the final size *of the problem rather than expand them as needed *These fields give the size of the original problem int ncols_
bool doSingletonColumn() const
Whether we want to do singleton column part of presolve.
void setPresolveActions(int action)
void setDoTighten(bool doTighten)
bool doIntersection() const
Whether we want to allow duplicate intersections.
*Number of major passes int numberPasses_
ClpPresolve()
Default constructor.
int presolveStatus() const
Return presolve status (0,1,2).
int presolvedModelToFile(ClpSimplex &si, std::string fileName, double feasibilityTolerance=0.0, bool keepIntegers=true, int numberPasses=5, bool dropNames=false, bool doRowObjective=false)
This version saves data in a file.
bool doDependency() const
Whether we want to do dependency part of presolve.
void setDoDupcol(bool doDupcol)
void setZeroSmall(int value)
bool doSingleton() const
Whether we want to do singleton part of presolve.
void setDoDoubleton(bool doDoubleton)
bool doTransfer() const
Whether we want to do transfer part of presolve.
*The list of transformations applied const CoinPresolveAction * paction_
ClpSimplex * originalModel() const
Return pointer to original model.
void setDoTransfer(bool doTransfer)
*ClpPresolved model up to user to destroy by deleteClpPresolvedModel ClpSimplex * presolvedModel_
void setDoIntersection(bool doIntersection)
bool doDoubleton() const
Whether we want to do doubleton part of presolve.
void setDoImpliedFree(bool doImpliedfree)
virtual ClpSimplex * gutsOfPresolvedModel(ClpSimplex *originalModel, double feasibilityTolerance, bool keepIntegers, int numberPasses, bool dropNames, bool doRowObjective, const char *prohibitedRows=NULL, const char *prohibitedColumns=NULL)
This is main part of Presolve.
const int * originalRows() const
return pointer to original rows
*Original row numbers int * originalRow_
void setSubstitution(int value)
Substitution level.
bool doImpliedFree() const
Whether we want to do impliedfree part of presolve.
void setOriginalModel(ClpSimplex *model)
Set pointer to original model.
bool doDuprow() const
Whether we want to do duprow part of presolve.
double nonLinearValue_
"Magic" number.
int zeroSmall() const
How much we want to zero small values from aggregation - ratio 0 - 1.0e-12, 1 1.0e-11,...
void setDoSingleton(bool doSingleton)
*If you want to apply the individual presolve routines *or perhaps add your own to the *define a derived class and override this method virtual const CoinPresolveAction * presolve(CoinPresolveMatrix *prob)
just apply the transformations *in reverse order *You will probably only be interested in overriding this method *if you want to add code to test for consistency *while debugging new presolve virtual techniques void postsolve(CoinPostsolveMatrix &prob)
double nonLinearValue() const
int presolveActions_
Whether we want to skip dual part of presolve etc.
*Original column numbers int * originalColumn_
bool doGubrow() const
Whether we want to do gubrow part of presolve.
*Substitution level int substitution_
void setNonLinearValue(double value)
"Magic" number.
void setDoSingletonColumn(bool doSingleton)
*Original model must not be destroyed before postsolve ClpSimplex * originalModel_
virtual ~ClpPresolve()
Virtual destructor.
ClpSimplex * presolvedModel(ClpSimplex &si, double feasibilityTolerance=0.0, bool keepIntegers=true, int numberPasses=5, bool dropNames=false, bool doRowObjective=false, const char *prohibitedRows=NULL, const char *prohibitedColumns=NULL)
void setDoDual(bool doDual)
bool doForcing() const
Whether we want to do forcing part of presolve.
bool doTripleton() const
Whether we want to do tripleton part of presolve.
ClpSimplex * model() const
Return pointer to presolved model, Up to user to destroy.
*Name of saved model file std::string saveFile_
bool doDual() const
Whether we want to do dual part of presolve.
void setDoGubrow(bool doGubrow)
int presolveActions() const
Set whole group.
*Row objective double * rowObjective_
This solves LPs using the simplex method.