00001 // Copyright (C) 2004, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef CglDuplicateRow_H 00004 #define CglDuplicateRow_H 00005 00006 #include <string> 00007 00008 #include "CglCutGenerator.hpp" 00009 00011 class CglDuplicateRow : public CglCutGenerator { 00012 00013 public: 00014 00015 00036 virtual void generateCuts( const OsiSolverInterface & si, OsiCuts & cs, 00037 const CglTreeInfo info = CglTreeInfo()) const; 00039 00042 00043 inline const int * duplicate() const 00044 { return duplicate_;}; 00046 inline int sizeDynamic() const 00047 { return sizeDynamic_;}; 00049 inline int numberOriginalRows() const 00050 { return matrix_.getNumRows();}; 00052 00055 00056 inline int logLevel() const 00057 { return logLevel_;}; 00058 inline void setLogLevel(int value) 00059 { logLevel_ = value;}; 00061 00062 00065 00066 inline int maximumRhs() const 00067 { return maximumRhs_;}; 00069 inline void setMaximumRhs(int value) 00070 { maximumRhs_=value;}; 00072 00075 00076 CglDuplicateRow (); 00077 00079 CglDuplicateRow (OsiSolverInterface * solver); 00080 00082 CglDuplicateRow ( 00083 const CglDuplicateRow & rhs); 00084 00086 virtual CglCutGenerator * clone() const; 00087 00089 CglDuplicateRow & 00090 operator=( 00091 const CglDuplicateRow& rhs); 00092 00094 virtual 00095 ~CglDuplicateRow (); 00097 virtual std::string generateCpp( FILE * fp); 00098 00100 virtual void refreshSolver(OsiSolverInterface * solver); 00102 00103 protected: 00104 00105 00106 // Protected member data 00107 00110 00111 CoinPackedMatrix matrix_; 00113 CoinPackedMatrix matrixByRow_; 00115 int * rhs_; 00117 mutable int * duplicate_; 00119 int * lower_; 00121 int maximumRhs_; 00123 mutable int sizeDynamic_; 00125 int logLevel_; 00127 }; 00128 #endif