Ipopt  3.12.12
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 
58  virtual Number CalculateAlphaMin();
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 
123  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
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 
158  void operator=(const InexactLSAcceptor&);
160 
162  Number CalcPred(Number alpha);
163 
167  void ResetSlacks();
168 
191 
210 
226 
230  bool in_tt2_;
231 
235 
239  };
240 
241 } // namespace Ipopt
242 
243 #endif
void ResetSlacks()
Method for resetting the slacks to be satisfying the slack equality constraints without increasing t...
void operator=(const InexactLSAcceptor &)
Overloaded Equals Operator.
Number watchdog_theta_
Constraint violation at reference point.
Penalty function line search for the inexact step algorithm version.
virtual void StartWatchDog()
Method for setting internal data if the watchdog procedure is started.
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.
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Base class for backtracking line search acceptors.
bool in_tt2_
Flag indicating if this is a termination test 2 iteration in which we just update the multipliers and...
Number watchdog_pred_
Predicted reduction to be compared with in watch dog.
Number last_nu_
Value of penalty parameter at beginning of the iteration.
virtual void InitThisLineSearch(bool in_watchdog)
Initialization for the next line search.
Number resto_pred_
When called from the restoration phase, this is the required predicted reduction. ...
Number inexact_decomposition_activate_tol_
Step size threshold for activating step decomposition.
Number nu_low_fact_
Factor in update rule for lower penalty parameter.
Number reference_pred_
Reference predicted reduction.
Number last_nu_low_
Value of lower penalty parameter at beginning of the iteration.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for OptionsList.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
InitializeImpl - overloaded from AlgorithmStrategyObject.
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.
This class stores a list of user set options.
Number reference_theta_
Constraint violation at the point with respect to which progress is to be made.
virtual bool HasComputeAlphaForY() const
Method returning true of ComputeAlphaForY is implemented for this acceptor.
Number nu_low_
Current lower value of the penalty parameter.
Number watchdog_barr_
Barrier objective function at reference point.
InexactData & InexData()
Method to easily access Inexact data.
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
virtual char UpdateForNextIteration(Number alpha_primal_test)
Method for ending the current line search.
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
virtual void PrepareRestoPhaseStart()
Method that is called before the restoration phase is called.
Number inexact_decomposition_inactivate_tol_
Step size threshold for inactivating step decomposition.
virtual bool TrySecondOrderCorrection(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try a second order correction for the constraints.
#define DBG_ASSERT(test)
Definition: IpDebug.hpp:38
virtual bool TryCorrector(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try higher order corrector (for fast local convergence).
virtual ~InexactLSAcceptor()
Default destructor.
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Definition: IpInexactCq.hpp:22
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm...
Number nu_
Current value of the penalty parameter.
Number nu_init_
Initial value of penalty parameter.
Number nu_low_init_
Initial value of lower penalty parameter.
Number tcc_theta_
theta factor in Tangential Component Condition
Number reference_barr_
Barrier objective function at the point with respect to which progress is to be made.
InexactLSAcceptor()
Constructor.
virtual void Reset()
Reset the acceptor.
virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal)
Method for checking if current trial point is acceptable.
bool flexible_penalty_function_
Flag indicating whether the Curtis/Nocedal flexible penalty function should be used.
Number CalcPred(Number alpha)
Compute predicted reduction for given step size.
IpoptCalculatedQuantities & IpCq() const
Number nu_update_inf_skip_tol_
Lower feasiblity bound to skip penalty parameter update.
bool accepted_by_low_only_
Flag indicating if the step was accepted only because of the lower penalty parameter.
virtual void StopWatchDog()
Method for setting internal data if the watchdog procedure is stopped.
Number nu_inc_
Incrememt for penalty parameter.