Osi
trunk
|
00001 // Copyright (C) 2000, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 // This code is licensed under the terms of the Eclipse Public License (EPL). 00004 00005 #ifndef OsiRowCutDebugger_H 00006 #define OsiRowCutDebugger_H 00007 00014 #include <string> 00015 00016 #include "OsiCuts.hpp" 00017 #include "OsiSolverInterface.hpp" 00018 00042 class OsiRowCutDebugger { 00043 friend void OsiRowCutDebuggerUnitTest(const OsiSolverInterface * siP, 00044 const std::string & mpsDir); 00045 00046 public: 00047 00059 virtual int validateCuts(const OsiCuts & cs, int first, int last) const; 00060 00066 virtual bool invalidCut(const OsiRowCut & rowcut) const; 00067 00074 bool onOptimalPath(const OsiSolverInterface &si) const; 00076 00088 bool activate(const OsiSolverInterface &si, const char *model) ; 00089 00101 bool activate(const OsiSolverInterface &si, const double* solution, 00102 bool keepContinuous = false) ; 00103 00105 bool active() const; 00107 00110 00111 inline const double * optimalSolution() const 00112 { return knownSolution_;} 00113 00115 inline int numberColumns() const { return (numberColumns_) ; } 00116 00118 inline double optimalValue() const { return knownValue_;} 00119 00130 void redoSolution(int numberColumns, const int *originalColumns); 00131 00133 int printOptimalSolution(const OsiSolverInterface & si) const; 00135 00138 00139 OsiRowCutDebugger (); 00140 00145 OsiRowCutDebugger(const OsiSolverInterface &si, const char *model) ; 00146 00151 OsiRowCutDebugger(const OsiSolverInterface &si, const double *solution, 00152 bool enforceOptimality = false) ; 00153 00155 OsiRowCutDebugger(const OsiRowCutDebugger &); 00156 00158 OsiRowCutDebugger& operator=(const OsiRowCutDebugger& rhs); 00159 00161 virtual ~OsiRowCutDebugger (); 00163 00164 private: 00165 00166 // Private member data 00167 00170 00171 double knownValue_; 00172 00177 int numberColumns_; 00178 00180 bool * integerVariable_; 00181 00183 double * knownSolution_; 00185 }; 00186 00187 #endif