00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __IPALGBUILDER_HPP__
00010 #define __IPALGBUILDER_HPP__
00011
00012 #include "IpIpoptAlg.hpp"
00013 #include "IpReferenced.hpp"
00014 #include "IpAugSystemSolver.hpp"
00015
00016 namespace Ipopt
00017 {
00018
00032 class AlgorithmBuilder : public ReferencedObject
00033 {
00034 public:
00038 AlgorithmBuilder(SmartPtr<AugSystemSolver> custom_solver=NULL);
00039
00041 virtual ~AlgorithmBuilder()
00042 {}
00043
00045
00048 virtual void BuildIpoptObjects(const Journalist& jnlst,
00049 const OptionsList& options,
00050 const std::string& prefix,
00051 const SmartPtr<NLP>& nlp,
00052 SmartPtr<IpoptNLP>& ip_nlp,
00053 SmartPtr<IpoptData>& ip_data,
00054 SmartPtr<IpoptCalculatedQuantities>& ip_cq);
00055
00056 virtual SmartPtr<IpoptAlgorithm> BuildBasicAlgorithm(const Journalist& jnlst,
00057 const OptionsList& options,
00058 const std::string& prefix);
00060
00064 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00066
00067 private:
00077
00078
00080 AlgorithmBuilder(const AlgorithmBuilder&);
00081
00083 void operator=(const AlgorithmBuilder&);
00085
00089 SmartPtr<AugSystemSolver> custom_solver_;
00090
00091 };
00092 }
00093
00094 #endif