00001 /* $Id: OSCouenneSolver.h 4292 2011-09-21 05:47:18Z kmartin $ */ 00015 #ifndef COUENNESOLVER_H 00016 #define COUENNESOLVER_H 00017 00018 #include "OSConfig.h" 00019 #include "OSDefaultSolver.h" 00020 #include "OSBonminSolver.h" 00021 #include "OSIpoptSolver.h" 00022 #include "OSrLWriter.h" 00023 #include "OSInstance.h" 00024 #include "OSParameters.h" 00025 #include "OSiLReader.h" 00026 #include "OSExpressionTree.h" 00027 #include "OSnLNode.h" 00028 #include "OSDataStructures.h" 00029 #include "OSFileUtil.h" 00030 #include "OSErrorClass.h" 00031 #include "OSResult.h" 00032 #include "OSOption.h" 00033 00034 //Couenne stuff 00035 namespace Couenne 00036 { 00037 class CouenneProblem; 00038 class expression; 00039 } 00040 #include "BonCbc.hpp" 00041 #include "BonCouenneSetup.hpp" 00042 00043 #include <vector> 00044 #include <map> 00045 00046 00047 00061 class CouenneSolver : public DefaultSolver 00062 { 00063 public: 00064 00066 CouenneSolver(); 00067 00069 ~CouenneSolver(); 00070 00073 virtual void solve() throw (ErrorClass) ; 00074 00079 virtual void buildSolverInstance() throw(ErrorClass); 00080 00085 virtual void setSolverOptions() throw(ErrorClass); 00086 00092 void dataEchoCheck(); 00093 00098 void writeResult(); 00099 00104 OSiLReader *m_osilreader; 00105 00110 OSoLReader *m_osolreader; 00111 00112 Couenne::CouenneProblem *couenne; 00113 00114 Ipopt::SmartPtr<BonminProblem> tminlp; 00115 00116 Ipopt::SmartPtr<Bonmin::TNLPSolver> app_ ; 00117 00118 //SmartPtr<Bonmin::IpoptSolver> app_ ; 00119 00120 // this is a Bonmin BonCbc object; 00121 Bonmin::Bab bb; 00122 00123 Bonmin::TMINLP::SolverReturn status; 00124 00125 Couenne::expression *con_body; 00126 Couenne::expression *obj_body; 00127 00128 private: 00129 OSrLWriter *osrlwriter; 00130 00131 Couenne::CouenneSetup couenneSetup; 00132 std::string couenneErrorMsg; 00133 00134 Couenne::expression* createCouenneExpression(OSnLNode* node); 00135 }; 00136 00137 00138 #endif /*COUENNESOLVER_H*/