00001 // $Id$ 00002 // 00003 // (C) Copyright XXX 2009 00004 // All Rights Reserved. 00005 // This code is published under the Common Public License. 00006 // 00007 // Authors : 00008 // Pietro Belotti, Lehigh University 00009 // Stefan Vigerske, Humboldt University 00010 // 00011 // Date : 07/18/2009 00012 00013 #ifndef COUENNEAMPLINTERFACE_HPP_ 00014 #define COUENNEAMPLINTERFACE_HPP_ 00015 00016 #include "CouenneUserInterface.hpp" 00017 #include "BonRegisteredOptions.hpp" 00018 00019 struct ASL; 00020 struct expr; 00021 class expression; 00022 00023 class CouenneAmplInterface : public CouenneUserInterface { 00024 private: 00025 CouenneProblem* problem; 00026 Ipopt::SmartPtr<Bonmin::TMINLP> tminlp; 00027 00028 Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions; 00029 struct ASL* asl; 00030 00031 bool readASLfg(); 00032 bool readnl(); 00033 expression* nl2e(expr *e); 00034 00035 public: 00036 static void registerOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00037 00038 CouenneAmplInterface(Ipopt::SmartPtr<Ipopt::OptionsList> options_, Ipopt::SmartPtr<Ipopt::Journalist> jnlst_) 00039 : CouenneUserInterface(options_, jnlst_), problem(NULL), asl(NULL) 00040 { } 00041 00042 ~CouenneAmplInterface(); 00043 00044 CouenneProblem* getCouenneProblem(); 00045 00046 Ipopt::SmartPtr<Bonmin::TMINLP> getTMINLP(); 00047 00048 bool writeSolution(Bonmin::Bab& bab); 00049 00050 void setRegisteredOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions_) 00051 { roptions = roptions_; } 00052 00053 }; 00054 00055 #endif /*COUENNEAMPLINTERFACE_HPP_*/