00001 // Copyright (C) 2000, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef OsiRowCutDebugger_H 00004 #define OsiRowCutDebugger_H 00005 00006 #include <string> 00007 00008 #include "OsiCuts.hpp" 00009 #include "OsiSolverInterface.hpp" 00010 00012 class OsiRowCutDebugger { 00013 friend void OsiRowCutDebuggerUnitTest(const OsiSolverInterface * siP, 00014 const std::string & mpsDir); 00015 00016 public: 00017 00030 virtual int validateCuts(const OsiCuts & cs, int first, int last) const; 00031 00033 virtual bool invalidCut(const OsiRowCut & rowcut) const; 00034 00036 inline const double * optimalSolution() const 00037 { return optimalSolution_;} 00038 00040 inline int numberColumns() const { return (numberColumns_) ; } 00042 inline double optimalValue() const 00043 { return optimalValue_;} 00045 00052 bool activate(const OsiSolverInterface & si, const char * model); 00058 bool activate(const OsiSolverInterface & si, const double * solution); 00060 void redoSolution(int numberColumns,const int * originalColumns); 00062 int printOptimalSolution(const OsiSolverInterface & si) const; 00064 00071 bool onOptimalPath(const OsiSolverInterface & si) const; 00073 00076 00077 bool active() const; 00079 00082 00083 OsiRowCutDebugger (); 00084 00088 OsiRowCutDebugger (const OsiSolverInterface & si, const char * model); 00089 00090 // Constructor with full solution (only integers need be correct) 00091 OsiRowCutDebugger (const OsiSolverInterface & si, const double * solution); 00092 00094 OsiRowCutDebugger ( 00095 const OsiRowCutDebugger &); 00096 00098 OsiRowCutDebugger & 00099 operator=( 00100 const OsiRowCutDebugger& rhs); 00101 00103 virtual 00104 ~OsiRowCutDebugger (); 00106 00107 private: 00108 00109 // Private member methods 00110 00111 00114 00116 00117 // Private member data 00118 00121 00122 double optimalValue_; 00124 int numberColumns_; 00126 bool * integerVariable_; 00128 double * optimalSolution_; 00130 }; 00131 00132 //############################################################################# 00138 void 00139 OsiRowCutDebuggerUnitTest(const OsiSolverInterface * siP, 00140 const std::string & mpsDir); 00141 00142 #endif