Ipopt  3.11.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpIpoptAlg.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2010 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpIpoptAlg.hpp 2167 2013-03-08 11:15:38Z stefan $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8 
9 #ifndef __IPIPOPTALG_HPP__
10 #define __IPIPOPTALG_HPP__
11 
12 #include "IpIpoptNLP.hpp"
13 #include "IpAlgStrategy.hpp"
15 #include "IpLineSearch.hpp"
16 #include "IpMuUpdate.hpp"
17 #include "IpConvCheck.hpp"
18 #include "IpOptionsList.hpp"
19 #include "IpIterateInitializer.hpp"
20 #include "IpIterationOutput.hpp"
21 #include "IpAlgTypes.hpp"
22 #include "IpHessianUpdater.hpp"
23 #include "IpEqMultCalculator.hpp"
24 
25 namespace Ipopt
26 {
27 
30  DECLARE_STD_EXCEPTION(STEP_COMPUTATION_FAILED);
32 
46  {
47  public:
48 
55  IpoptAlgorithm(const SmartPtr<SearchDirectionCalculator>& search_dir_calculator,
56  const SmartPtr<LineSearch>& line_search,
57  const SmartPtr<MuUpdate>& mu_update,
58  const SmartPtr<ConvergenceCheck>& conv_check,
59  const SmartPtr<IterateInitializer>& iterate_initializer,
60  const SmartPtr<IterationOutput>& iter_output,
61  const SmartPtr<HessianUpdater>& hessian_updater,
62  const SmartPtr<EqMultiplierCalculator>& eq_multiplier_calculator = NULL);
63 
65  virtual ~IpoptAlgorithm();
67 
68 
70  virtual bool InitializeImpl(const OptionsList& options,
71  const std::string& prefix);
72 
74  SolverReturn Optimize(bool isResto = false);
75 
78  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
80 
84  {
86  }
88 
89  static void print_copyright_message(const Journalist& jnlst);
90 
91  private:
101  IpoptAlgorithm();
102 
105 
107  void operator=(const IpoptAlgorithm&);
109 
123 
130  void UpdateHessian();
131 
136  bool UpdateBarrierParameter();
137 
142  bool ComputeSearchDirection();
143 
148 
151  void AcceptTrialPoint();
152 
154  void OutputIteration();
155 
159  void InitializeIterates();
160 
162  void PrintProblemStatistics();
163 
167 
173 
184  bool recalc_y_;
192  std::string linear_solver_;
194 
198  const Vector& x,
199  const Vector& x_L,
200  const Vector& x_U,
201  const Matrix& Px_L,
202  const Matrix& Px_U,
203  Index& n_tot,
204  Index& n_only_lower,
205  Index& n_both,
206  Index& n_only_upper);
207 
215  Number correct_bound_multiplier(const Vector& trial_z,
216  const Vector& trial_slack,
217  const Vector& trial_compl,
218  SmartPtr<const Vector>& new_trial_z);
220  };
221 
222 } // namespace Ipopt
223 
224 #endif