Cgl trunk
|
00001 // $Id$ 00002 // Copyright (C) 2005, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 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()) const; 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 // Protected member methods 00106 00107 // Protected member data 00108 00111 00112 double requiredViolation_; 00114 CglTreeProbingInfo * probingInfo_; 00116 mutable OsiCuts cuts_; 00118 int numberColumns_; 00120 double * bestSolution_; 00122 double * bounds_; 00124 }; 00125 #endif