00001
00002
00003 #ifndef CglGomory_H
00004 #define CglGomory_H
00005
00006 #include <string>
00007
00008 #include "CglCutGenerator.hpp"
00009
00010 class CoinWarmStartBasis;
00012 class CglGomory : public CglCutGenerator {
00013 friend void CglGomoryUnitTest(const OsiSolverInterface * siP,
00014 const std::string mpdDir );
00015
00016 public:
00017
00018
00032 virtual void generateCuts( const OsiSolverInterface & si, OsiCuts & cs,
00033 const CglTreeInfo info = CglTreeInfo()) const;
00036 int generateCuts( const OsiRowCutDebugger * debugger,
00037 OsiCuts & cs,
00038 const CoinPackedMatrix & columnCopy,
00039 const double * objective, const double * colsol,
00040 const double * colLower, const double * colUpper,
00041 const double * rowLower, const double * rowUpper,
00042 const char * intVar ,
00043 const CoinWarmStartBasis* warm,
00044 const CglTreeInfo info = CglTreeInfo()) const;
00045
00047 virtual bool needsOptimalBasis() const;
00049
00052
00053 void setLimit(int limit);
00055 int getLimit() const;
00057 void setLimitAtRoot(int limit);
00059 int getLimitAtRoot() const;
00061
00066
00067 void setAway(double value);
00069 double getAway() const;
00071
00072
00075
00076 CglGomory ();
00077
00079 CglGomory (
00080 const CglGomory &);
00081
00083 virtual CglCutGenerator * clone() const;
00084
00086 CglGomory &
00087 operator=(
00088 const CglGomory& rhs);
00089
00091 virtual
00092 ~CglGomory ();
00094 virtual std::string generateCpp( FILE * fp);
00096
00097 private:
00098
00099
00100
00101
00102
00105
00106 double away_;
00108 int limit_;
00110 int limitAtRoot_;
00112 };
00113
00114
00120 void CglGomoryUnitTest(const OsiSolverInterface * siP,
00121 const std::string mpdDir );
00122
00123 #endif