Go to the documentation of this file.00001
00002
00003 #ifndef CglStored_H
00004 #define CglStored_H
00005
00006 #include <string>
00007
00008 #include "CglCutGenerator.hpp"
00009
00010 class CoinWarmStartBasis;
00011 class CglTreeProbingInfo;
00013 class CglStored : public CglCutGenerator {
00014
00015 public:
00016
00017
00028 virtual void generateCuts( const OsiSolverInterface & si, OsiCuts & cs,
00029 const CglTreeInfo info = CglTreeInfo()) const;
00031
00036
00037 inline void setRequiredViolation(double value)
00038 { requiredViolation_=value;}
00040 inline double getRequiredViolation() const
00041 { return requiredViolation_;}
00043 inline void setProbingInfo(CglTreeProbingInfo * info)
00044 { probingInfo_ = info;}
00046
00049
00050 void addCut(const OsiCuts & cs);
00052 void addCut(const OsiRowCut & cut);
00054 void addCut(double lb, double ub, const CoinPackedVector & vector);
00056 void addCut(double lb, double ub, int size, const int * colIndices, const double * elements);
00057 inline int sizeRowCuts() const
00058 { return cuts_.sizeRowCuts();}
00059 const OsiRowCut * rowCutPointer(int index) const
00060 { return cuts_.rowCutPtr(index);}
00062 void saveStuff(double bestObjective, const double * bestSolution,
00063 const double * lower, const double * upper);
00065 inline const double * bestSolution() const
00066 { return bestSolution_;}
00068 double bestObjective() const;
00070 const double * tightLower() const
00071 { return bounds_;}
00073 const double * tightUpper() const
00074 { return bounds_+numberColumns_;}
00076
00079
00080 CglStored (int numberColumns=0);
00081
00083 CglStored (const CglStored & rhs);
00084
00086 CglStored (const char * fileName);
00087
00089 virtual CglCutGenerator * clone() const;
00090
00092 CglStored &
00093 operator=(const CglStored& rhs);
00094
00096 virtual
00097 ~CglStored ();
00099
00100 protected:
00101
00102
00103
00104
00105
00108
00109 double requiredViolation_;
00111 CglTreeProbingInfo * probingInfo_;
00113 mutable OsiCuts cuts_;
00115 int numberColumns_;
00117 double * bestSolution_;
00119 double * bounds_;
00121 };
00122 #endif