Ipopt  3.11.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 // $Id: IpCGPenaltyLSAcceptor.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2005-10-13
8 
9 #ifndef __IPCGPENALTYLSACCEPTOR_HPP__
10 #define __IPCGPENALTYLSACCEPTOR_HPP__
11 
12 #include "IpPiecewisePenalty.hpp"
14 #include "IpPDSystemSolver.hpp"
15 #include "IpIpoptAlg.hpp"
16 #include "IpCGPenaltyCq.hpp"
17 
18 namespace Ipopt
19 {
20 
24  {
25  public:
32 
34  virtual ~CGPenaltyLSAcceptor();
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 
57  virtual void PrepareRestoPhaseStart();
58 
63  virtual Number CalculateAlphaMin();
64 
70  virtual bool CheckAcceptabilityOfTrialPoint(Number alpha_primal);
71 
84  virtual bool TrySecondOrderCorrection(Number alpha_primal_test,
85  Number& alpha_primal,
86  SmartPtr<IteratesVector>& actual_delta);
87 
94  virtual bool TryCorrector(Number alpha_primal_test,
95  Number& alpha_primal,
96  SmartPtr<IteratesVector>& actual_delta);
97 
102  virtual char UpdateForNextIteration(Number alpha_primal_test);
103 
106  virtual void StartWatchDog();
107 
110  virtual void StopWatchDog();
111 
114  virtual bool RestoredIterate();
117  virtual bool NeverRestorationPhase();
118 
122  virtual bool DoFallback();
123 
126  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
128 
129  private:
140 
142  void operator=(const CGPenaltyLSAcceptor&);
144 
147  {
148  CGPenaltyData& cg_pen_data =
149  static_cast<CGPenaltyData&>(IpData().AdditionalData());
150  DBG_ASSERT(dynamic_cast<CGPenaltyData*>(&IpData().AdditionalData()));
151  return cg_pen_data;
152  }
153 
156  {
157  CGPenaltyCq& cg_pen_cq =
158  static_cast<CGPenaltyCq&>(IpCq().AdditionalCq());
159  DBG_ASSERT(dynamic_cast<CGPenaltyCq*>(&IpCq().AdditionalCq()));
160  return cg_pen_cq;
161  }
162 
164  bool IsAcceptableToPiecewisePenalty(Number alpha_primal_test);
165 
167  bool ArmijoHolds(Number alpha_primal_test);
168 
170  //ToDo This should probably not be a static member function if we want to
171  // allow for different relaxation parameters values
172  static bool Compare_le(Number lhs, Number rhs, Number BasVal);
173 
174  bool CurrentIsBest();
175  void StoreBestPoint();
176  bool RestoreBestPoint();
177  bool MultipliersDiverged();
178  char UpdatePenaltyParameter();
179 
204 
208  // Number used to indicate that mu has been decreased
210 
213 
218 
221 
223  /*Initial constraint violation*/
226 
233 
238 
248 
268 
270  // piecewise penalty list
274 
276 
281  };
282 
283 
284 
285 
286 
287 } // namespace Ipopt
288 
289 #endif