00001 /* $Id: OSCouenneSolver.h 4448 2012-02-14 02:37:25Z Gassmann $ */ 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 #include "CouenneBab.hpp" 00043 00044 #include <vector> 00045 #include <map> 00046 00047 00048 00062 class CouenneSolver : public DefaultSolver 00063 { 00064 public: 00065 00067 CouenneSolver(); 00068 00070 ~CouenneSolver(); 00071 00074 virtual void solve() throw (ErrorClass) ; 00075 00080 virtual void buildSolverInstance() throw(ErrorClass); 00081 00086 virtual void setSolverOptions() throw(ErrorClass); 00087 00093 void dataEchoCheck(); 00094 00099 void writeResult(); 00100 00105 OSiLReader *m_osilreader; 00106 00111 OSoLReader *m_osolreader; 00112 00113 Couenne::CouenneProblem *couenne; 00114 00115 Ipopt::SmartPtr<BonminProblem> tminlp; 00116 00117 Ipopt::SmartPtr<Bonmin::TNLPSolver> app_ ; 00118 00119 //SmartPtr<Bonmin::IpoptSolver> app_ ; 00120 00121 // this is a Bonmin BonCbc object; 00122 Couenne::CouenneBab bb; 00123 00124 Bonmin::TMINLP::SolverReturn status; 00125 00126 Couenne::expression *con_body; 00127 Couenne::expression *obj_body; 00128 00129 private: 00130 OSrLWriter *osrlwriter; 00131 00132 Couenne::CouenneSetup couenneSetup; 00133 std::string couenneErrorMsg; 00134 00135 Couenne::expression* createCouenneExpression(OSnLNode* node); 00136 }; 00137 00138 00139 #endif /*COUENNESOLVER_H*/