IpIpoptApplication.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2004, 2010 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Eclipse Public License.
00004 //
00005 // $Id: IpIpoptApplication.hpp 2346 2013-07-01 13:03:35Z stefan $
00006 //
00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
00008 
00009 #ifndef __IPIPOPTAPPLICATION_HPP__
00010 #define __IPIPOPTAPPLICATION_HPP__
00011 
00012 #ifndef IPOPT_EXPORT
00013 #ifdef _MSC_VER
00014 #ifdef IPOPT_DLL
00015 #define IPOPT_EXPORT(type) __declspec(dllexport) type __cdecl
00016 #else
00017 #define IPOPT_EXPORT(type) type __cdecl
00018 #endif
00019 #else
00020 #define IPOPT_EXPORT(type) type
00021 #endif
00022 #endif
00023 
00024 #include <iostream>
00025 
00026 #include "IpJournalist.hpp"
00027 #include "IpTNLP.hpp"
00028 #include "IpNLP.hpp"
00029 /* Return codes for the Optimize call for an application */
00030 #include "IpReturnCodes.hpp"
00031 
00032 namespace Ipopt
00033 {
00034   DECLARE_STD_EXCEPTION(IPOPT_APPLICATION_ERROR);
00035 
00036   /* forward declarations */
00037   class IpoptAlgorithm;
00038   class IpoptNLP;
00039   class IpoptData;
00040   class IpoptCalculatedQuantities;
00041   class AlgorithmBuilder;
00042   class RegisteredOptions;
00043   class OptionsList;
00044   class SolveStatistics;
00045 
00047   class IpoptApplication : public ReferencedObject
00048   {
00049   public:
00050     IpoptApplication(bool create_console_out = true,
00051                      bool create_empty = false);
00052 
00055     IpoptApplication(SmartPtr<RegisteredOptions> reg_options,
00056                      SmartPtr<OptionsList> options,
00057                      SmartPtr<Journalist> jnlst);
00058 
00059     virtual ~IpoptApplication();
00060 
00064     virtual SmartPtr<IpoptApplication> clone();
00065 
00073     virtual ApplicationReturnStatus Initialize(std::istream& is);
00083     virtual ApplicationReturnStatus Initialize(std::string params_file);
00091     virtual ApplicationReturnStatus Initialize();
00092 
00096     virtual ApplicationReturnStatus OptimizeTNLP(const SmartPtr<TNLP>& tnlp);
00097 
00099     virtual ApplicationReturnStatus OptimizeNLP(const SmartPtr<NLP>& nlp);
00100 
00102     virtual ApplicationReturnStatus OptimizeNLP(const SmartPtr<NLP>& nlp, SmartPtr<AlgorithmBuilder>& alg_builder);
00103 
00109     virtual ApplicationReturnStatus ReOptimizeTNLP(const SmartPtr<TNLP>& tnlp);
00110 
00116     virtual ApplicationReturnStatus ReOptimizeNLP(const SmartPtr<NLP>& nlp);
00118 
00121     virtual bool OpenOutputFile(std::string file_name, EJournalLevel print_level);
00122 
00126     virtual SmartPtr<Journalist> Jnlst()
00127     {
00128       return jnlst_;
00129     }
00130 
00133     virtual SmartPtr<RegisteredOptions> RegOptions()
00134     {
00135       return reg_options_;
00136     }
00137 
00139     virtual SmartPtr<OptionsList> Options()
00140     {
00141       return options_;
00142     }
00143 
00145     virtual SmartPtr<const OptionsList> Options() const
00146     {
00147       return ConstPtr(options_);
00148     }
00149 
00152     virtual SmartPtr<SolveStatistics> Statistics();
00153 
00155     virtual SmartPtr<IpoptNLP> IpoptNLPObject();
00156 
00158     SmartPtr<IpoptData> IpoptDataObject();
00159 
00161     virtual SmartPtr<IpoptCalculatedQuantities> IpoptCQObject();
00162 
00164     SmartPtr<IpoptAlgorithm> AlgorithmObject();
00166 
00171     void PrintCopyrightMessage();
00172 
00175     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00177 
00179     static void
00180     RegisterAllIpoptOptions(const SmartPtr<RegisteredOptions>& roptions);
00181 
00182   private:
00192     // IpoptApplication();
00193 
00195     IpoptApplication(const IpoptApplication&);
00196 
00198     void operator=(const IpoptApplication&);
00200 
00203     ApplicationReturnStatus call_optimize();
00204 
00208     bool read_params_dat_;
00210 
00212     SmartPtr<Journalist> jnlst_;
00213 
00215     SmartPtr<RegisteredOptions> reg_options_;
00216 
00218     SmartPtr<OptionsList> options_;
00219 
00222     SmartPtr<SolveStatistics> statistics_;
00223 
00226     SmartPtr<IpoptAlgorithm> alg_;
00227 
00230     SmartPtr<IpoptNLP> ip_nlp_;
00231 
00235     SmartPtr<IpoptData> ip_data_;
00236 
00240     SmartPtr<IpoptCalculatedQuantities> ip_cq_;
00241 
00244     SmartPtr<NLP> nlp_adapter_;
00245 
00249     bool inexact_algorithm_;
00252     bool replace_bounds_;
00254   };
00255 
00256 } // namespace Ipopt
00257 
00258 extern "C" IPOPT_EXPORT(class Ipopt::IpoptApplication *) IpoptApplicationFactory();
00259 
00260 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 9 Aug 2013 for Ipopt by  doxygen 1.6.1