00001 /* $Id: OSCoinSolver.h 4292 2011-09-21 05:47:18Z kmartin $ */ 00015 #ifndef COINSOLVER_H 00016 #define COINSOLVER_H 00017 00018 #include "OSConfig.h" 00019 #include "OSDefaultSolver.h" 00020 #include "OSrLWriter.h" 00021 #include "OSErrorClass.h" 00022 #include "OSiLReader.h" 00023 #include "OSoLReader.h" 00024 #include "CbcModel.hpp" 00025 00026 #include <string> 00027 00028 class OsiSolverInterface; 00029 class CoinPackedMatrix; 00030 00037 class CoinSolver : public DefaultSolver 00038 { 00039 00040 public: 00041 00045 CoinSolver(); 00046 00050 ~CoinSolver(); 00051 00056 virtual void solve() throw(ErrorClass); 00057 00062 virtual void buildSolverInstance() throw(ErrorClass); 00063 00068 virtual void setSolverOptions() throw(ErrorClass); 00069 00070 00075 bool setCoinPackedMatrix(); 00076 00082 std::string getCoinSolverType(std::string osol_); 00083 00088 void dataEchoCheck(); 00089 00093 OsiSolverInterface *osiSolver; 00094 00095 00096 00101 OSiLReader *m_osilreader; 00102 00107 OSoLReader *m_osolreader; 00108 00109 00110 void writeResult(OsiSolverInterface *solver); 00111 00112 // use this for when we solve with Cbc --AND-- have integer variables 00113 void writeResult(CbcModel *model); 00114 00115 00116 00117 private: 00118 00119 00120 00121 00122 00126 CoinPackedMatrix *m_CoinPackedMatrix ; 00127 00129 OSrLWriter *osrlwriter; 00130 00134 const char **cbc_argv; 00135 00138 int num_cbc_argv; 00139 00140 double cpuTime; 00141 00142 }; 00143 #endif