00001
00002
00003
00004
00005
00006 #ifndef CglStored_H
00007 #define CglStored_H
00008
00009 #include <string>
00010
00011 #include "CglCutGenerator.hpp"
00012
00013 class CoinWarmStartBasis;
00014 class CglTreeProbingInfo;
00016 class CglStored : public CglCutGenerator {
00017
00018 public:
00019
00020
00031 virtual void generateCuts( const OsiSolverInterface & si, OsiCuts & cs,
00032 const CglTreeInfo info = CglTreeInfo());
00034
00039
00040 inline void setRequiredViolation(double value)
00041 { requiredViolation_=value;}
00043 inline double getRequiredViolation() const
00044 { return requiredViolation_;}
00046 inline void setProbingInfo(CglTreeProbingInfo * info)
00047 { probingInfo_ = info;}
00049
00052
00053 void addCut(const OsiCuts & cs);
00055 void addCut(const OsiRowCut & cut);
00057 void addCut(double lb, double ub, const CoinPackedVector & vector);
00059 void addCut(double lb, double ub, int size, const int * colIndices, const double * elements);
00060 inline int sizeRowCuts() const
00061 { return cuts_.sizeRowCuts();}
00062 const OsiRowCut * rowCutPointer(int index) const
00063 { return cuts_.rowCutPtr(index);}
00065 void saveStuff(double bestObjective, const double * bestSolution,
00066 const double * lower, const double * upper);
00068 inline const double * bestSolution() const
00069 { return bestSolution_;}
00071 double bestObjective() const;
00073 const double * tightLower() const
00074 { return bounds_;}
00076 const double * tightUpper() const
00077 { return bounds_+numberColumns_;}
00079
00082
00083 CglStored (int numberColumns=0);
00084
00086 CglStored (const CglStored & rhs);
00087
00089 CglStored (const char * fileName);
00090
00092 virtual CglCutGenerator * clone() const;
00093
00095 CglStored &
00096 operator=(const CglStored& rhs);
00097
00099 virtual
00100 ~CglStored ();
00102
00103 protected:
00104
00105
00106
00107
00108
00111
00112 double requiredViolation_;
00114 CglTreeProbingInfo * probingInfo_;
00116 OsiCuts cuts_;
00118 int numberColumns_;
00120 double * bestSolution_;
00122 double * bounds_;
00124 };
00125 #endif