00001 // Copyright (C) 2004, 2007 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpAlgBuilder.hpp 913 2007-03-02 12:49:22Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-09-29 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 //AlgorithmBuilder(); 00078 00080 AlgorithmBuilder(const AlgorithmBuilder&); 00081 00083 void operator=(const AlgorithmBuilder&); 00085 00089 SmartPtr<AugSystemSolver> custom_solver_; 00090 00091 }; 00092 } // namespace Ipopt 00093 00094 #endif