coin-Cgl
|
00001 // Copyright (C) 2000, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef CglOddHole_H 00004 #define CglOddHole_H 00005 00006 #include <string> 00007 00008 #include "CglCutGenerator.hpp" 00009 00011 class CglOddHole : public CglCutGenerator { 00012 friend void CglOddHoleUnitTest(const OsiSolverInterface * siP, 00013 const std::string mpdDir ); 00014 00015 public: 00016 00017 00038 virtual void generateCuts( const OsiSolverInterface & si, OsiCuts & cs, 00039 const CglTreeInfo info = CglTreeInfo()) const; 00041 00044 00045 00046 00047 void createRowList( const OsiSolverInterface & si, 00048 const int * possible=NULL); 00050 void createRowList(int numberRows, const int * whichRow); 00052 00055 00056 00057 void createCliqueList(int numberCliques, const int * cliqueStart, 00058 const int * cliqueMember); 00060 00063 00064 int numberPossible(); 00066 00068 00069 double getMinimumViolation() const; 00070 void setMinimumViolation(double value); 00072 double getMinimumViolationPer() const; 00073 void setMinimumViolationPer(double value); 00075 int getMaximumEntries() const; 00076 void setMaximumEntries(int value); 00078 00081 00082 CglOddHole (); 00083 00085 CglOddHole ( 00086 const CglOddHole &); 00087 00089 virtual CglCutGenerator * clone() const; 00090 00092 CglOddHole & 00093 operator=( 00094 const CglOddHole& rhs); 00095 00097 virtual 00098 ~CglOddHole (); 00099 00101 virtual void refreshSolver(OsiSolverInterface * solver); 00103 00104 private: 00105 00106 // Private member methods 00107 00108 00111 00112 00113 void generateCuts(const OsiRowCutDebugger * debugger, 00114 const CoinPackedMatrix & rowCopy, 00115 const double * solution, const double * dj, 00116 OsiCuts & cs, const int * suitableRow, 00117 const int * fixedColumn,const CglTreeInfo info, 00118 bool packed); 00120 00121 // Private member data 00122 00125 00126 int * suitableRows_; 00128 int * startClique_; 00130 int * member_; 00132 double epsilon_; 00134 double onetol_; 00136 double minimumViolation_; 00138 double minimumViolationPer_; 00140 int maximumEntries_; 00142 int numberRows_; 00144 int numberCliques_; 00146 }; 00147 00148 //############################################################################# 00154 void CglOddHoleUnitTest(const OsiSolverInterface * siP, 00155 const std::string mpdDir ); 00156 00157 #endif