Ipopt Documentation  
IpAlgBuilder.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2007 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Authors: Carl Laird, Andreas Waechter IBM 2004-09-29
6 
7 #ifndef __IPALGBUILDER_HPP__
8 #define __IPALGBUILDER_HPP__
9 
10 #include "IpIpoptAlg.hpp"
11 #include "IpReferenced.hpp"
12 #include "IpAugSystemSolver.hpp"
13 #include "IpPDSystemSolver.hpp"
14 #include "IpLibraryLoader.hpp"
15 
16 namespace Ipopt
17 {
18 
19 // forward declarations
20 class IterationOutput;
21 class HessianUpdater;
22 class ConvergenceCheck;
23 class SearchDirectionCalculator;
24 class EqMultiplierCalculator;
25 class IterateInitializer;
26 class LineSearch;
27 class MuUpdate;
28 
50 {
51 public:
53 
56  SmartPtr<AugSystemSolver> custom_solver = NULL,
57  const std::string& custom_solver_name = std::string()
58  );
59 
62  { }
63 
65 
67 
69  static void RegisterOptions(
71  );
73 
83 
88  virtual SmartPtr<SymLinearSolver> SymLinearSolverFactory(
89  const Journalist& jnlst,
90  const OptionsList& options,
91  const std::string& prefix
92  );
93 
99  SmartPtr<SymLinearSolver> GetSymLinearSolver(
100  const Journalist& jnlst,
101  const OptionsList& options,
102  const std::string& prefix
103  );
104 
112  virtual SmartPtr<AugSystemSolver> AugSystemSolverFactory(
113  const Journalist& jnlst,
114  const OptionsList& options,
115  const std::string& prefix
116  );
117 
123  SmartPtr<AugSystemSolver> GetAugSystemSolver(
124  const Journalist& jnlst,
125  const OptionsList& options,
126  const std::string& prefix
127  );
128 
138  virtual SmartPtr<PDSystemSolver> PDSystemSolverFactory(
139  const Journalist& jnlst,
140  const OptionsList& options,
141  const std::string& prefix
142  );
143 
149  SmartPtr<PDSystemSolver> GetPDSystemSolver(
150  const Journalist& jnlst,
151  const OptionsList& options,
152  const std::string& prefix
153  );
155 
157 
162  virtual void BuildIpoptObjects(
163  const Journalist& jnlst,
164  const OptionsList& options,
165  const std::string& prefix,
166  const SmartPtr<NLP>& nlp,
167  SmartPtr<IpoptNLP>& ip_nlp,
168  SmartPtr<IpoptData>& ip_data,
170  );
171 
188  virtual SmartPtr<IpoptAlgorithm> BuildBasicAlgorithm(
189  const Journalist& jnlst,
190  const OptionsList& options,
191  const std::string& prefix
192  );
193 
200  virtual SmartPtr<IterationOutput> BuildIterationOutput(
201  const Journalist& jnlst,
202  const OptionsList& options,
203  const std::string& prefix
204  );
205 
212  virtual SmartPtr<HessianUpdater> BuildHessianUpdater(
213  const Journalist& jnlst,
214  const OptionsList& options,
215  const std::string& prefix
216  );
217 
224  virtual SmartPtr<ConvergenceCheck> BuildConvergenceCheck(
225  const Journalist& jnlst,
226  const OptionsList& options,
227  const std::string& prefix
228  );
229 
243  virtual SmartPtr<SearchDirectionCalculator> BuildSearchDirectionCalculator(
244  const Journalist& jnlst,
245  const OptionsList& options,
246  const std::string& prefix
247  );
248 
260  virtual SmartPtr<EqMultiplierCalculator> BuildEqMultiplierCalculator(
261  const Journalist& jnlst,
262  const OptionsList& options,
263  const std::string& prefix
264  );
265 
278  virtual SmartPtr<IterateInitializer> BuildIterateInitializer(
279  const Journalist& jnlst,
280  const OptionsList& options,
281  const std::string& prefix
282  );
283 
304  virtual SmartPtr<LineSearch> BuildLineSearch(
305  const Journalist& jnlst,
306  const OptionsList& options,
307  const std::string& prefix
308  );
309 
326  virtual SmartPtr<MuUpdate> BuildMuUpdate(
327  const Journalist& jnlst,
328  const OptionsList& options,
329  const std::string& prefix
330  );
332 
333 protected:
338  SmartPtr<LibraryLoader> GetHSLLoader(
339  const OptionsList& options,
340  const std::string& prefix
341  );
342 
347  SmartPtr<LibraryLoader> GetPardisoLoader(
348  const OptionsList& options,
349  const std::string& prefix
350  );
351 
352 private:
360 
362  //AlgorithmBuilder();
363 
366  const AlgorithmBuilder&
367  );
368 
370  void operator=(
371  const AlgorithmBuilder&
372  );
374 
382  SmartPtr<IterationOutput> IterOutput_;
392 
397  SmartPtr<SymLinearSolver> SymSolver_;
402 
406  std::string custom_solver_name_;
407 
409  std::string linear_solver;
410 
415 
416 };
417 } // namespace Ipopt
418 
419 #endif
SmartPtr< ConvergenceCheck > ConvCheck_
SmartPtr< AugSystemSolver > custom_solver_
Optional pointer to AugSystemSolver.
SmartPtr< HessianUpdater > HessUpdater_
#define IPOPTLIB_EXPORT
Definition: config.h:94
Builder for creating a complete IpoptAlg object.
SmartPtr< SearchDirectionCalculator > SearchDirCalc_
std::string linear_solver
name of linear solver constructed in SymLinearSolverFactory
This file contains a base class for all exceptions and a set of macros to help with exceptions...
SmartPtr< IterateInitializer > IterInitializer_
SmartPtr< AugSystemSolver > AugSolver_
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:164
Storing the reference count of all the smart pointers that currently reference it.
This class stores a list of user set options.
SmartPtr< LineSearch > LineSearch_
SmartPtr< MuUpdate > MuUpdate_
SmartPtr< LibraryLoader > pardisoloader
loader of Pardiso library (at runtime)
SmartPtr< EqMultiplierCalculator > EqMultCalculator_
Class responsible for all message output.
SmartPtr< LibraryLoader > hslloader
loader of HSL library (at runtime)
virtual ~AlgorithmBuilder()
Destructor.
SmartPtr< PDSystemSolver > PDSolver_
std::string custom_solver_name_