Ipopt  3.11.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpFilterLSAcceptor.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpFilterLSAcceptor.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2005-10-13
8 // derived file from IpFilterLineSearch.hpp
9 
10 #ifndef __IPFILTERLSACCEPTOR_HPP__
11 #define __IPFILTERLSACCEPTOR_HPP__
12 
13 #include "IpFilter.hpp"
15 #include "IpPDSystemSolver.hpp"
16 
17 namespace Ipopt
18 {
19 
24  {
25  public:
32 
34  virtual ~FilterLSAcceptor();
36 
38  virtual bool InitializeImpl(const OptionsList& options,
39  const std::string& prefix);
40 
47  virtual void Reset();
48 
52  virtual void InitThisLineSearch(bool in_watchdog);
53 
58  virtual void PrepareRestoPhaseStart();
59 
61  virtual Number CalculateAlphaMin();
62 
68  virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal);
69 
81  virtual bool TrySecondOrderCorrection(Number alpha_primal_test,
82  Number& alpha_primal,
83  SmartPtr<IteratesVector>& actual_delta);
84 
91  virtual bool TryCorrector(Number alpha_primal_test,
92  Number& alpha_primal,
93  SmartPtr<IteratesVector>& actual_delta);
94 
99  virtual char UpdateForNextIteration(Number alpha_primal_test);
100 
103  virtual void StartWatchDog();
104 
107  virtual void StopWatchDog();
108 
115  bool IsAcceptableToCurrentIterate(Number trial_barr, Number trial_theta,
116  bool called_from_restoration=false) const;
117 
119  bool IsAcceptableToCurrentFilter(Number trial_barr, Number trial_theta) const;
121 
124  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
126 
127  private:
138 
140  void operator=(const FilterLSAcceptor&);
142 
148 
153 
158  bool IsFtype(Number alpha_primal_test);
159 
164  bool ArmijoHolds(Number alpha_primal_test);
165 
168  void AugmentFilter();
169 
197 
200  {
204  };
224 
243 
246 
257 
262  };
263 
264 } // namespace Ipopt
265 
266 #endif