Ipopt  3.11.9
IpInexactLSAcceptor.hpp
Go to the documentation of this file.
1 // Copyright (C) 2008 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpInexactLSAcceptor.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2008-09-11
8 // derived file from IpPenaltyLSAcceptor.hpp (rev 019)
9 
10 #ifndef __IPINEXACTLSACCEPTOR_HPP__
11 #define __IPINEXACTLSACCEPTOR_HPP__
12 
14 #include "IpInexactCq.hpp"
15 
16 namespace Ipopt
17 {
18 
23  {
24  public:
31 
33  virtual ~InexactLSAcceptor();
35 
37  virtual bool InitializeImpl(const OptionsList& options,
38  const std::string& prefix);
39 
46  virtual void Reset();
47 
51  virtual void InitThisLineSearch(bool in_watchdog);
52 
55  virtual void PrepareRestoPhaseStart();
56 
59 
65  virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal);
66 
71  virtual bool TrySecondOrderCorrection(Number alpha_primal_test,
72  Number& alpha_primal,
73  SmartPtr<IteratesVector>& actual_delta);
74 
81  virtual bool TryCorrector(Number alpha_primal_test,
82  Number& alpha_primal,
83  SmartPtr<IteratesVector>& actual_delta);
84 
89  virtual char UpdateForNextIteration(Number alpha_primal_test);
90 
93  virtual void StartWatchDog();
94 
97  virtual void StopWatchDog();
98 
105  bool IsAcceptableToCurrentIterate(Number trial_barr, Number trial_theta,
106  bool called_from_restoration=false) const;
108 
110  virtual Number ComputeAlphaForY(Number alpha_primal,
111  Number alpha_dual,
112  SmartPtr<IteratesVector>& delta);
113 
116  virtual bool HasComputeAlphaForY() const
117  {
118  return true;
119  }
120 
125 
126  protected:
129  {
130  InexactData& inexact_data =
131  static_cast<InexactData&>(IpData().AdditionalData());
132  DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
133  return inexact_data;
134  }
135 
138  {
139  InexactCq& inexact_cq =
140  static_cast<InexactCq&>(IpCq().AdditionalCq());
141  DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
142  return inexact_cq;
143  }
144 
145  private:
156 
160 
163 
167  void ResetSlacks();
168 
191 
210 
226 
230  bool in_tt2_;
231 
235 
239  };
240 
241 } // namespace Ipopt
242 
243 #endif
#define DBG_ASSERT(test)
Definition: IpDebug.hpp:38
IpoptCalculatedQuantities & IpCq() const
Base class for backtracking line search acceptors.
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Definition: IpInexactCq.hpp:23
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm.
Penalty function line search for the inexact step algorithm version.
InexactLSAcceptor(const InexactLSAcceptor &)
Copy Constructor.
virtual char UpdateForNextIteration(Number alpha_primal_test)
Method for ending the current line search.
virtual void Reset()
Reset the acceptor.
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
Number nu_update_inf_skip_tol_
Lower feasiblity bound to skip penalty parameter update.
Number reference_theta_
Constraint violation at the point with respect to which progress is to be made.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
InitializeImpl - overloaded from AlgorithmStrategyObject.
virtual void InitThisLineSearch(bool in_watchdog)
Initialization for the next line search.
Number reference_barr_
Barrier objective function at the point with respect to which progress is to be made.
void operator=(const InexactLSAcceptor &)
Overloaded Equals Operator.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for OptionsList.
virtual void StopWatchDog()
Method for setting internal data if the watchdog procedure is stopped.
InexactData & InexData()
Method to easily access Inexact data.
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.
Number reference_pred_
Reference predicted reduction.
virtual bool TrySecondOrderCorrection(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try a second order correction for the constraints.
Number nu_low_init_
Initial value of lower penalty parameter.
bool in_tt2_
Flag indicating if this is a termination test 2 iteration in which we just update the multipliers and...
Number nu_inc_
Incrememt for penalty parameter.
void ResetSlacks()
Method for resetting the slacks to be satisfying the slack equality constraints without increasing th...
Number inexact_decomposition_activate_tol_
Step size threshold for activating step decomposition.
Number inexact_decomposition_inactivate_tol_
Step size threshold for inactivating step decomposition.
Number nu_low_
Current lower value of the penalty parameter.
virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal)
Method for checking if current trial point is acceptable.
virtual Number CalculateAlphaMin()
Method returning the lower bound on the trial step sizes.
virtual Number ComputeAlphaForY(Number alpha_primal, Number alpha_dual, SmartPtr< IteratesVector > &delta)
Method for updating the equality constraint multipliers.
Number watchdog_barr_
Barrier objective function at reference point.
bool flexible_penalty_function_
Flag indicating whether the Curtis/Nocedal flexible penalty function should be used.
virtual void StartWatchDog()
Method for setting internal data if the watchdog procedure is started.
InexactLSAcceptor()
Constructor.
virtual bool HasComputeAlphaForY() const
Method returning true of ComputeAlphaForY is implemented for this acceptor.
bool accepted_by_low_only_
Flag indicating if the step was accepted only because of the lower penalty parameter.
Number watchdog_pred_
Predicted reduction to be compared with in watch dog.
Number nu_low_fact_
Factor in update rule for lower penalty parameter.
virtual ~InexactLSAcceptor()
Default destructor.
Number CalcPred(Number alpha)
Compute predicted reduction for given step size.
Number nu_init_
Initial value of penalty parameter.
Number tcc_theta_
theta factor in Tangential Component Condition
Number resto_pred_
When called from the restoration phase, this is the required predicted reduction.
Number last_nu_
Value of penalty parameter at beginning of the iteration.
Number nu_
Current value of the penalty parameter.
Number watchdog_theta_
Constraint violation at reference point.
virtual bool TryCorrector(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try higher order corrector (for fast local convergence).
virtual void PrepareRestoPhaseStart()
Method that is called before the restoration phase is called.
Number last_nu_low_
Value of lower penalty parameter at beginning of the iteration.
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
This class stores a list of user set options.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:183
double Number
Type of all numbers.
Definition: IpTypes.hpp:17