coin-Cgl
|
00001 // Copyright (C) 2005, International Business Machines 00002 // Corporation and others. All Rights Reserved. 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 // Protected member methods 00103 00104 // Protected member data 00105 00108 00109 double requiredViolation_; 00111 CglTreeProbingInfo * probingInfo_; 00113 mutable OsiCuts cuts_; 00115 int numberColumns_; 00117 double * bestSolution_; 00119 double * bounds_; 00121 }; 00122 #endif