00001 // Copyright (C) 2000, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef CglLiftAndProject_H 00004 #define CglLiftAndProject_H 00005 00006 #include <string> 00007 00008 #include "CglCutGenerator.hpp" 00009 00011 class CglLiftAndProject : public CglCutGenerator { 00012 friend void CglLiftAndProjectUnitTest(const OsiSolverInterface * siP, 00013 const std::string mpdDir ); 00014 00015 public: 00022 virtual void generateCuts(const OsiSolverInterface & si, OsiCuts & cs) const; 00023 00027 double getBeta() const { 00028 return beta_; 00029 } 00030 00034 void setBeta(int oneOrMinusOne){ 00035 if (oneOrMinusOne==1 || oneOrMinusOne==-1){ 00036 beta_= (double)oneOrMinusOne; 00037 } 00038 else { 00039 throw CoinError("Unallowable value. Beta must be 1 or -1", 00040 "cutGeneration","CglLiftAndProject"); 00041 } 00042 } 00043 00045 00048 00049 CglLiftAndProject (); 00050 00052 CglLiftAndProject ( 00053 const CglLiftAndProject &); 00054 00056 CglLiftAndProject & 00057 operator=( 00058 const CglLiftAndProject& rhs); 00059 00061 virtual 00062 ~CglLiftAndProject (); 00064 00065 private: 00066 00067 // Private member methods 00068 00071 00073 00074 // Private member data 00075 00078 00079 double beta_; 00081 double epsilon_; 00083 double onetol_; 00085 }; 00086 00087 //############################################################################# 00093 void CglLiftAndProjectUnitTest(const OsiSolverInterface * siP, 00094 const std::string mpdDir ); 00095 00096 #endif