Ipopt  3.11.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpLimMemQuasiNewtonUpdater.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 2010 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpLimMemQuasiNewtonUpdater.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2005-12-26
8 
9 #ifndef __IPLIMMEMQUASINEWTONUPDATER_HPP__
10 #define __IPLIMMEMQUASINEWTONUPDATER_HPP__
11 
12 #include "IpHessianUpdater.hpp"
14 #include "IpMultiVectorMatrix.hpp"
15 #include "IpDenseVector.hpp"
16 #include "IpDenseGenMatrix.hpp"
17 #include "IpDenseSymMatrix.hpp"
18 
19 namespace Ipopt
20 {
21 
26  {
27  public:
31  LimMemQuasiNewtonUpdater(bool update_for_resto);
32 
35  {}
37 
39  virtual bool InitializeImpl(const OptionsList& options,
40  const std::string& prefix);
41 
44  virtual void UpdateHessian();
45 
48  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
50 
51  private:
62 
66 
69 
76  {
77  BFGS=0,
79  };
84  {
90  };
107 
113  const bool update_for_resto_;
131 
135 
221 
228  bool CheckSkippingBFGS(Vector& s_new, Vector& y_new);
233  bool UpdateInternalData(const Vector& s_new, const Vector& y_new,
234  SmartPtr<Vector> ypart_new);
241  const Vector& v_new);
248  Number v_new);
257  const MultiVectorMatrix& S,
258  const MultiVectorMatrix& Y);
266  const MultiVectorMatrix& S);
275  const MultiVectorMatrix& S,
276  const MultiVectorMatrix& DRS);
277 
282  void ShiftMultiVector(SmartPtr<MultiVectorMatrix>& V, const Vector& v_new);
296  const MultiVectorMatrix& S,
297  const MultiVectorMatrix& Y);
304  const MultiVectorMatrix& S);
311  const MultiVectorMatrix& S,
312  const MultiVectorMatrix& DRS);
315  void RecalcY(Number eta, const Vector& DR_x,
317  MultiVectorMatrix& Ypart,
320  void RecalcD(MultiVectorMatrix& S,
324  void RecalcL(MultiVectorMatrix& S,
336  bool SplitEigenvalues(DenseGenMatrix& Q, const DenseVector& E,
337  SmartPtr<DenseGenMatrix>& Qminus,
338  SmartPtr<DenseGenMatrix>& Qplus);
351  void SetW();
353 
354  };
355 
356 } // namespace Ipopt
357 
358 #endif