Ipopt Documentation  
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IpCGPenaltyLSAcceptor.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 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 2005-10-13
6 
7 #ifndef __IPCGPENALTYLSACCEPTOR_HPP__
8 #define __IPCGPENALTYLSACCEPTOR_HPP__
9 
10 #include "IpPiecewisePenalty.hpp"
12 #include "IpPDSystemSolver.hpp"
13 #include "IpIpoptAlg.hpp"
14 #include "IpCGPenaltyCq.hpp"
15 
16 namespace Ipopt
17 {
18 
22 {
23 public:
33  const SmartPtr<PDSystemSolver>& pd_solver
34  );
35 
37  virtual ~CGPenaltyLSAcceptor();
39 
40  virtual bool InitializeImpl(
41  const OptionsList& options,
42  const std::string& prefix);
43 
51  virtual void Reset();
52 
58  virtual void InitThisLineSearch(
59  bool in_watchdog
60  );
61 
67  virtual void PrepareRestoPhaseStart();
68 
75  virtual Number CalculateAlphaMin();
76 
83  virtual bool CheckAcceptabilityOfTrialPoint(
84  Number alpha_primal
85  );
86 
101  virtual bool TrySecondOrderCorrection(
102  Number alpha_primal_test,
103  Number& alpha_primal,
104  SmartPtr<IteratesVector>& actual_delta
105  );
106 
114  virtual bool TryCorrector(
115  Number alpha_primal_test,
116  Number& alpha_primal,
117  SmartPtr<IteratesVector>& actual_delta
118  );
119 
127  virtual char UpdateForNextIteration(
128  Number alpha_primal_test
129  );
130 
132  virtual void StartWatchDog();
133 
135  virtual void StopWatchDog();
136 
140  virtual bool RestoredIterate();
141 
145  virtual bool NeverRestorationPhase();
146 
152  virtual bool DoFallback();
153 
156  static void RegisterOptions(
158  );
160 
161 private:
174  const CGPenaltyLSAcceptor&
175  );
176 
178  void operator=(
179  const CGPenaltyLSAcceptor&
180  );
182 
185  {
186  CGPenaltyData& cg_pen_data = static_cast<CGPenaltyData&>(IpData().AdditionalData());
187  DBG_ASSERT(dynamic_cast<CGPenaltyData*>(&IpData().AdditionalData()));
188  return cg_pen_data;
189  }
190 
193  {
194  CGPenaltyCq& cg_pen_cq = static_cast<CGPenaltyCq&>(IpCq().AdditionalCq());
195  DBG_ASSERT(dynamic_cast<CGPenaltyCq*>(&IpCq().AdditionalCq()));
196  return cg_pen_cq;
197  }
198 
201  Number alpha_primal_test
202  );
203 
205  bool ArmijoHolds(
206  Number alpha_primal_test
207  );
208 
213  static bool Compare_le(
214  Number lhs,
215  Number rhs,
216  Number BasVal
217  );
218 
219  bool CurrentIsBest();
220  void StoreBestPoint();
221  bool RestoreBestPoint();
222  bool MultipliersDiverged();
223  char UpdatePenaltyParameter();
224 
249 
253  // Number used to indicate that mu has been decreased
255 
258 
263 
266 
268 
271 
278 
283 
293 
313 
319 
321 
326 };
327 
328 } // namespace Ipopt
329 
330 #endif
virtual void StopWatchDog()
Method for setting internal data if the watchdog procedure is stopped.
Number piecewisepenalty_gamma_obj_
Parameters for piecewise penalty acceptor.
CGPenaltyData & CGPenData()
Method to easily access CGPenalty data.
bool IsAcceptableToPiecewisePenalty(Number alpha_primal_test)
Check if the trial point is acceptable to the piecewise penalty list.
static bool Compare_le(Number lhs, Number rhs, Number BasVal)
Check comparison &quot;lhs &lt;= rhs&quot;, using machine precision based on BasVal.
Number penalty_update_infeasibility_tol_
Tolerance for infeasibility part in penalty parameter update rule.
Number theta_min_
Parameters deciding when the piecewise penalty acceptor shall be closed.
virtual void Reset()
Reset the acceptor.
Index max_soc_
Maximal number of second order correction steps.
Number reference_penalty_function_
Penalty function at the point with respect to which progress is to be made.
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...
Number eta_penalty_
Relaxation factor in the Armijo condition for the penalty function.
virtual bool RestoredIterate()
Method for telling the BacktrackingLineSearch object that a previous iterate has been restored...
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
virtual ~CGPenaltyLSAcceptor()
Destructor.
Base class for backtracking line search acceptors.
bool never_use_piecewise_penalty_ls_
Flag for whether or not use piecewise penalty line search.
Index ls_counter_
counter for cut backs in the line search
virtual Number CalculateAlphaMin()
Method returning the lower bound on the trial step sizes.
Number kappa_soc_
Required reduction in constraint violation before trying multiple second order correction steps ...
virtual char UpdateForNextIteration(Number alpha_primal_test)
Method for ending the current line search.
SmartPtr< const IteratesVector > watchdog_delta_cgpen_
Backup for the Chen-Goldfarb search direction (needed in the update rule for the penalty parameter...
Number mult_diverg_feasibility_tol_
Check if the multpliers are diverging.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:171
virtual void StartWatchDog()
Method for setting internal data if the watchdog procedure is started.
This class stores a list of user set options.
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm...
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for OptionsList.
bool ArmijoHolds(Number alpha_primal_test)
Check if the trial point is acceptable by the Armijo condition.
virtual bool NeverRestorationPhase()
Method for telling the BacktrackingLineSearch object that the restoration is not needed.
Class for all Chen-Goldfarb penalty method specific calculated quantities.
virtual bool TryCorrector(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try higher order corrector (for fast local convergence).
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
bool reset_piecewise_penalty_
Flag indicating whether PiecewisePenalty has to be initialized.
CGPenaltyCq & CGPenCq()
Method to easily access CGPenalty calculated quantities.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
Number eta_min_
Minimal tolerance for step part in penalty parameter update rule.
Number watchdog_direct_deriv_penalty_function_
Directional derivative of penalty function at the point with respect to which progress is to be made ...
CGPenaltyLSAcceptor(const SmartPtr< PDSystemSolver > &pd_solver)
Constructor.
#define DBG_ASSERT(test)
Definition: IpDebug.hpp:28
SmartPtr< PDSystemSolver > pd_solver_
virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal)
Method for checking if current trial point is acceptable.
Number pen_theta_max_
Upper bound on infeasibility.
void operator=(const CGPenaltyLSAcceptor &)
Default Assignment Operator.
Number watchdog_penalty_function_
Penalty function at the point with respect to which progress is to be made (at watchdog point) ...
Number min_alpha_primal_
Minimal step size that triggers non-monotone method.
virtual bool TrySecondOrderCorrection(Number alpha_primal_test, Number &alpha_primal, SmartPtr< IteratesVector > &actual_delta)
Try a second order correction for the constraints.
Number penalty_update_compl_tol_
Tolerance for complementarity part in penalty parameter update rule.
Line search acceptor, based on the Chen-Goldfarb penalty function approach.
virtual void PrepareRestoPhaseStart()
Method that is called before the restoration phase is called.
IpoptCalculatedQuantities & IpCq() const
virtual bool DoFallback()
Method for doing a fallback approach in case no search direction could be computed.
Number reference_direct_deriv_penalty_function_
Directional derivative of penalty function at the point with respect to which progress is to be made...
virtual void InitThisLineSearch(bool in_watchdog)
Initialization for the next line search.
SmartPtr< const IteratesVector > best_iterate_
Store the iterate with best KKT error found so far.
PiecewisePenalty PiecewisePenalty_
piecewise penalty list
Number best_KKT_error_
Record the lease KKT error found so far.
Index counter_first_type_penalty_updates_
Counter for increases of penalty parameter.
bool accepted_by_Armijo_
Flag indicating whether the trial point is accepted by the Armijo condition or the PLPF condition...
Number reference_theta_
Initial constraint violation.
Class for the Piecewise Penalty.