00001 /* $Id: OSCouenneSolver.h 4951 2015-02-06 22:04:27Z 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 #ifdef OS_HAS_CPPAD 00035 # include <cppad/cppad.hpp> 00036 #endif 00037 00038 00039 //Couenne stuff 00040 namespace Couenne 00041 { 00042 class CouenneProblem; 00043 class expression; 00044 } 00045 #include "BonCbc.hpp" 00046 #include "BonCouenneSetup.hpp" 00047 #include "CouenneBab.hpp" 00048 00049 #include <vector> 00050 #include <map> 00051 00052 00053 00067 class CouenneSolver : public DefaultSolver 00068 { 00069 public: 00070 00072 CouenneSolver(); 00073 00075 ~CouenneSolver(); 00076 00079 virtual void solve() throw (ErrorClass) ; 00080 00085 virtual void buildSolverInstance() throw(ErrorClass); 00086 00091 virtual void setSolverOptions() throw(ErrorClass); 00092 00098 void dataEchoCheck(); 00099 00104 void writeResult(); 00105 00110 OSiLReader *m_osilreader; 00111 00116 OSoLReader *m_osolreader; 00117 00118 Couenne::CouenneProblem *couenne; 00119 00120 Ipopt::SmartPtr<BonminProblem> tminlp; 00121 00122 Ipopt::SmartPtr<Bonmin::TNLPSolver> app_ ; 00123 00124 //SmartPtr<Bonmin::IpoptSolver> app_ ; 00125 00126 // this is a Bonmin BonCbc object; 00127 Couenne::CouenneBab bb; 00128 00129 Bonmin::TMINLP::SolverReturn status; 00130 00131 Couenne::expression *con_body; 00132 Couenne::expression *obj_body; 00133 00134 private: 00135 OSrLWriter *osrlwriter; 00136 00137 Couenne::CouenneSetup couenneSetup; 00138 std::string couenneErrorMsg; 00139 00140 Couenne::expression* createCouenneExpression(OSnLNode* node); 00141 }; 00142 00143 00144 #endif /*COUENNESOLVER_H*/
1.6.1