ROL
ROL_TypeE_AugmentedLagrangianAlgorithm.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Rapid Optimization Library (ROL) Package
4 //
5 // Copyright 2014 NTESS and the ROL contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef ROL_TYPEE_AUGMENTEDLAGRANGIANALGORITHM_H
11 #define ROL_TYPEE_AUGMENTEDLAGRANGIANALGORITHM_H
12 
13 #include "ROL_TypeE_Algorithm.hpp"
15 #include "ROL_Secant.hpp"
16 
22 namespace ROL {
23 namespace TypeE {
24 
25 template<typename Real>
27 private:
28  const Ptr<Secant<Real>> secant_;
29  ParameterList list_;
30  bool useRelTol_;
31  // Lagrange multiplier update
38  // Optimality tolerance update
43  // Feasibility tolerance update
48  // Subproblem information
49  bool print_;
50  int maxit_;
52  std::string subStep_;
57  // Scaling information
59  Real fscale_;
60  Real cscale_;
61  // Verbosity flag
64 
67 
68  void initialize(Vector<Real> &x,
69  const Vector<Real> &g,
70  const Vector<Real> &l,
71  const Vector<Real> &c,
73  Constraint<Real> &con,
74  std::ostream &outStream = std::cout);
75 
76 public:
77 
78  AugmentedLagrangianAlgorithm(ParameterList &list, const Ptr<Secant<Real>> &secant = nullPtr);
79 
81  virtual void run( Vector<Real> &x,
82  const Vector<Real> &g,
83  Objective<Real> &obj,
84  Constraint<Real> &econ,
85  Vector<Real> &emul,
86  const Vector<Real> &eres,
87  std::ostream &outStream = std::cout) override;
88 
89  virtual void writeHeader( std::ostream& os ) const override;
90 
91  virtual void writeName( std::ostream& os ) const override;
92 
93  virtual void writeOutput( std::ostream& os, const bool print_header = false ) const override;
94 
95 }; // class ROL::TypeE::AugmentedLagrangianAlgorithm
96 
97 } // namespace TypeE
98 } // namespace ROL
99 
101 
102 #endif
Provides the interface to evaluate objective functions.
virtual void run(Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj, Constraint< Real > &econ, Vector< Real > &emul, const Vector< Real > &eres, std::ostream &outStream=std::cout) override
Run algorithm on equality constrained problems (Type-E). This general interface supports the use of d...
Provides an interface to run equality constrained optimization algorithms using Augmented Lagrangians...
Defines the linear algebra or vector space interface.
Definition: ROL_Vector.hpp:46
void initialize(Vector< Real > &x, const Vector< Real > &g, const Vector< Real > &l, const Vector< Real > &c, AugmentedLagrangianObjective< Real > &alobj, Constraint< Real > &con, std::ostream &outStream=std::cout)
Provides interface for and implements limited-memory secant operators.
Definition: ROL_Secant.hpp:45
virtual void writeOutput(std::ostream &os, const bool print_header=false) const override
Print iterate status.
Provides the interface to evaluate the augmented Lagrangian.
virtual void writeHeader(std::ostream &os) const override
Print iterate header.
virtual void writeName(std::ostream &os) const override
Print step name.
AugmentedLagrangianAlgorithm(ParameterList &list, const Ptr< Secant< Real >> &secant=nullPtr)
Defines the general constraint operator interface.