00001 // Copyright (C) 2008 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpInexactAlgBuilder.hpp 1390 2009-01-06 16:55:52Z andreasw $ 00006 // 00007 // Authors: Andreas Waechter IBM 2008-09-05 00008 // based on IpAlgBuilder.hpp (rev 913) 00009 00010 #ifndef __IPINEXACTALGBUILDER_HPP__ 00011 #define __IPINEXACTALGBUILDER_HPP__ 00012 00013 #include "IpAlgBuilder.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00021 class InexactAlgorithmBuilder : public AlgorithmBuilder 00022 { 00023 public: 00027 InexactAlgorithmBuilder(); 00028 00030 virtual ~InexactAlgorithmBuilder() 00031 {} 00032 00034 00037 virtual void BuildIpoptObjects(const Journalist& jnlst, 00038 const OptionsList& options, 00039 const std::string& prefix, 00040 const SmartPtr<NLP>& nlp, 00041 SmartPtr<IpoptNLP>& ip_nlp, 00042 SmartPtr<IpoptData>& ip_data, 00043 SmartPtr<IpoptCalculatedQuantities>& ip_cq); 00044 00045 virtual SmartPtr<IpoptAlgorithm> BuildBasicAlgorithm(const Journalist& jnlst, 00046 const OptionsList& options, 00047 const std::string& prefix); 00049 00053 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00055 00056 private: 00066 //InexactAlgorithmBuilder(); 00067 00069 InexactAlgorithmBuilder(const InexactAlgorithmBuilder&); 00070 00072 void operator=(const InexactAlgorithmBuilder&); 00074 00078 SmartPtr<AugSystemSolver> custom_solver_; 00079 00080 }; 00081 00087 void AddInexactDefaultOptions(OptionsList& options_list); 00088 00089 } // namespace Ipopt 00090 00091 #endif