00001 /* $Id: BonCouenneInterface.hpp 624 2011-06-09 15:21:30Z stefan $ */ 00002 // (C) Copyright International Business Machines Corporation (IBM) 2006-09 00003 // All Rights Reserved. 00004 // This code is published under the Eclipse Public License (EPL). 00005 // 00006 // Authors : 00007 // Pietro Belotti, Carnegie Mellon University 00008 // Pierre Bonami, International Business Machines Corporation 00009 // 00010 // Date : 12/19/2006 00011 00012 #ifndef CouenneInterface_H 00013 #define CouenneInterface_H 00014 00015 #include "CouenneConfig.h" 00016 #include "CouenneCutGenerator.hpp" 00017 00018 #ifdef COUENNEINTERFACE_FROM_ASL 00019 #include "BonAmplInterface.hpp" 00020 00021 struct ASL; 00022 struct ASL *readASLfg (char **); 00023 #else 00024 #define AmplInterface OsiTMINLPInterface 00025 #endif 00026 00027 namespace Bonmin { 00028 class AmplInterface; 00029 } 00030 00031 namespace Couenne { 00032 00033 class CouenneInterface : public Bonmin::AmplInterface 00034 { 00035 public: 00037 CouenneInterface(); 00038 00040 CouenneInterface(const CouenneInterface &other); 00041 00043 virtual CouenneInterface * clone(bool CopyData); 00044 00046 virtual ~CouenneInterface(); 00047 00048 // My name is Couenne [ku:en] 00049 virtual std::string appName() {return "couenne";} 00050 00051 #ifdef COUENNEINTERFACE_FROM_ASL 00052 00053 virtual void readAmplNlFile(char **& argv, Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions, 00054 Ipopt::SmartPtr<Ipopt::OptionsList> options, 00055 Ipopt::SmartPtr<Ipopt::Journalist> journalist); 00056 #endif 00057 00065 virtual void extractLinearRelaxation 00066 (OsiSolverInterface &si, CouenneCutGenerator & couenneCg, bool getObj = 1, bool solveNlp = 1); 00067 00068 00070 virtual void setAppDefaultOptions(Ipopt::SmartPtr<Ipopt::OptionsList> Options); 00071 00073 bool haveNlpSolution () 00074 {return have_nlp_solution_;} 00075 00076 protected: 00077 00079 bool have_nlp_solution_; 00080 }; 00081 00082 } 00083 00084 #endif