Ipopt  3.11.9
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 
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 
126 
127  private:
138 
142 
148 
153 
158  bool IsFtype(Number alpha_primal_test);
159 
164  bool ArmijoHolds(Number alpha_primal_test);
165 
169 
197 
200  {
204  };
224 
243 
246 
257 
262  };
263 
264 } // namespace Ipopt
265 
266 #endif
Base class for backtracking line search acceptors.
Number theta_max_
Upper bound on infeasibility.
SmartPtr< PDSystemSolver > pd_solver_
Index filter_reset_trigger_
interation counter trigger for filter reset.
bool IsAcceptableToCurrentFilter(Number trial_barr, Number trial_theta) const
Checks if a trial point is acceptable to the current filter.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for OptionsList.
virtual char UpdateForNextIteration(Number alpha_primal_test)
Method for ending the current line search.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
InitializeImpl - overloaded from AlgorithmStrategyObject.
bool skip_corr_if_neg_curv_
Flag indicating whether the corrector should be skipped in an iteration in which negative curvature i...
Number watchdog_gradBarrTDelta_
Barrier gradient transpose search direction at reference point.
virtual void StartWatchDog()
Method for setting internal data if the watchdog procedure is started.
Index count_successive_filter_rejections_
Counter of successive iterations in which filter was reason for last rejection.
virtual void InitThisLineSearch(bool in_watchdog)
Initialization for the next line search.
Number reference_gradBarrTDelta_
Barrier gradient transpose search direction at the point with respect to which progress is to be made...
virtual void PrepareRestoPhaseStart()
Method that is called before the restoration phase is called.
virtual bool TryCorrector(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try higher order corrector (for fast local convergence).
Filter filter_
Filter with entries.
bool ArmijoHolds(Number alpha_primal_test)
Method for checking the Armijo condition, given a trial step size.
Number watchdog_theta_
Constraint violation at reference point.
Number last_rejection_due_to_filter_
True, if last rejected was due to the filter.
Index max_filter_resets_
maximal allowed number of filter resets.
bool IsAcceptableToCurrentIterate(Number trial_barr, Number trial_theta, bool called_from_restoration=false) const
Checks if a trial point is acceptable to the current iterate.
virtual void StopWatchDog()
Method for setting internal data if the watchdog procedure is stopped.
Index n_filter_resets_
Counter for the filter resets done so far.
Number kappa_soc_
Required reduction in constraint violation before trying multiple second order correction steps .
void AugmentFilter()
Augment the filter used on the current values of the barrier objective function and the contraint vio...
Index max_soc_
Maximal number of second order correction steps.
virtual bool TrySecondOrderCorrection(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try a second order correction for the constraints.
CorrectorTypeEnum
enumeration for the corrector type
virtual void Reset()
Reset the acceptor.
Number reference_theta_
Constraint violation at the point with respect to which progress is to be made.
FilterLSAcceptor(const FilterLSAcceptor &)
Copy Constructor.
FilterLSAcceptor(const SmartPtr< PDSystemSolver > &pd_solver)
Constructor.
bool skip_corr_in_monotone_mode_
Flag indicating whether the corrector should be skipped during the monotone mu mode.
Number reference_barr_
Barrier objective function at the point with respect to which progress is to be made.
void operator=(const FilterLSAcceptor &)
Overloaded Equals Operator.
Number watchdog_barr_
Barrier objective function at reference point.
Number theta_min_
Infeasibility switching bound.
virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal)
Method for checking if current trial point is acceptable.
Number corrector_compl_avrg_red_fact_
parameter in heurstic that determines whether corrector step should be tried.
virtual ~FilterLSAcceptor()
Default destructor.
bool IsFtype(Number alpha_primal_test)
Method for checking if the current step size satisfies the f-type switching condition.
Number obj_max_inc_
Maximal increase in objective function in orders of magnitute (log10).
CorrectorTypeEnum corrector_type_
Type of corrector steps that should be tried.
virtual Number CalculateAlphaMin()
Method returning the lower bound on the trial step sizes.
Class for the filter.
Definition: IpFilter.hpp:112
This class stores a list of user set options.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:183
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
double Number
Type of all numbers.
Definition: IpTypes.hpp:17