Ipopt Documentation  
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 // Authors: Andreas Waechter IBM 2008-09-11
6 // derived file from IpPenaltyLSAcceptor.hpp (rev 019)
7 
8 #ifndef __IPINEXACTLSACCEPTOR_HPP__
9 #define __IPINEXACTLSACCEPTOR_HPP__
10 
12 #include "IpInexactCq.hpp"
13 
14 namespace Ipopt
15 {
16 
21 {
22 public:
24 
32 
34  virtual ~InexactLSAcceptor();
36 
37  virtual bool InitializeImpl(
38  const OptionsList& options,
39  const std::string& prefix
40  );
41 
49  virtual void Reset();
50 
57  virtual void InitThisLineSearch(
58  bool in_watchdog
59  );
60 
65  virtual void PrepareRestoPhaseStart();
66 
68  virtual Number CalculateAlphaMin();
69 
76  virtual bool CheckAcceptabilityOfTrialPoint(
77  Number alpha_primal
78  );
79 
85  virtual bool TrySecondOrderCorrection(
86  Number alpha_primal_test,
87  Number& alpha_primal,
88  SmartPtr<IteratesVector>& actual_delta
89  );
90 
98  virtual bool TryCorrector(
99  Number alpha_primal_test,
100  Number& alpha_primal,
101  SmartPtr<IteratesVector>& actual_delta
102  );
103 
111  virtual char UpdateForNextIteration(
112  Number alpha_primal_test
113  );
114 
118  virtual void StartWatchDog();
119 
123  virtual void StopWatchDog();
124 
131 
134  Number trial_barr,
135  Number trial_theta,
136  bool called_from_restoration = false
137  ) const;
139 
141  virtual Number ComputeAlphaForY(
142  Number alpha_primal,
143  Number alpha_dual,
145  );
146 
150  virtual bool HasComputeAlphaForY() const
151  {
152  return true;
153  }
154 
156  static void RegisterOptions(
159  );
161 
162 protected:
165  {
166  InexactData& inexact_data = static_cast<InexactData&>(IpData().AdditionalData());
167  DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
168  return inexact_data;
169  }
170 
173  {
174  InexactCq& inexact_cq = static_cast<InexactCq&>(IpCq().AdditionalCq());
175  DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
176  return inexact_cq;
177  }
178 
179 private:
189 
192  const InexactLSAcceptor&
193  );
194 
196  void operator=(
197  const InexactLSAcceptor&
198  );
200 
203  Number alpha
204  );
205 
210  void ResetSlacks();
211 
213 
234 
236 
253 
255 
269 
274  bool in_tt2_;
275 
280 
287 };
288 
289 } // namespace Ipopt
290 
291 #endif
void ResetSlacks()
Method for resetting the slacks to be satisfying the slack equality constraints without increasing th...
void operator=(const InexactLSAcceptor &)
Overloaded Assignment 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.
IpoptCalculatedQuantities & IpCq() const
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.
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.
This file contains a base class for all exceptions and a set of macros to help with exceptions...
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:164
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class...
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.
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.
ipnumber Number
Type of all numbers.
Definition: IpTypes.hpp:17
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:27
virtual bool TryCorrector(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try higher order corrector (for fast local convergence).
virtual ~InexactLSAcceptor()
Destructor.
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Definition: IpInexactCq.hpp:20
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.
Number nu_update_inf_skip_tol_
Lower feasibility 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 bool HasComputeAlphaForY() const
Method returning true of ComputeAlphaForY is implemented for this acceptor.
virtual void StopWatchDog()
Method for setting internal data if the watchdog procedure is stopped.
Number nu_inc_
Increment for penalty parameter.