ROL
ROL_TypeG_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_TYPEG_AUGMENTEDLAGRANGIANALGORITHM_H
11 #define ROL_TYPEG_AUGMENTEDLAGRANGIANALGORITHM_H
12 
13 #include "ROL_TypeG_Algorithm.hpp"
15 #include "ROL_Secant.hpp"
16 
22 namespace ROL {
23 namespace TypeG {
24 
25 
26 template<typename Real>
28 private:
29  const Ptr<Secant<Real>> secant_;
30  ParameterList list_;
31  bool useRelTol_;
32  // Lagrange multiplier update
39  // Optimality tolerance update
44  // Feasibility tolerance update
49  // Subproblem information
50  bool print_;
51  int maxit_;
53  std::string subStep_;
58  // Scaling information
60  Real fscale_;
61  Real cscale_;
62  // Verbosity flag
66 
70 
71  void initialize(Vector<Real> &x,
72  const Vector<Real> &g,
73  const Vector<Real> &l,
74  const Vector<Real> &c,
77  Constraint<Real> &con,
78  std::ostream &outStream = std::cout);
79 
80 public:
81 
82  AugmentedLagrangianAlgorithm(ParameterList &list, const Ptr<Secant<Real>> &secant = nullPtr);
83 
85  void run( Vector<Real> &x,
86  const Vector<Real> &g,
87  Objective<Real> &obj,
89  Constraint<Real> &econ,
90  Vector<Real> &emul,
91  const Vector<Real> &eres,
92  std::ostream &outStream = std::cout) override ;
93 
94  void writeHeader( std::ostream& os ) const override;
95 
96  void writeName( std::ostream& os ) const override;
97 
98  void writeOutput( std::ostream& os, const bool print_header = false ) const override;
99 
100 }; // class ROL::TypeG::AugmentedLagrangianAlgorithm
101 
102 } // namespace TypeG
103 } // namespace ROL
104 
106 
107 #endif
Provides the interface to evaluate objective functions.
void writeName(std::ostream &os) const override
Print step name.
void initialize(Vector< Real > &x, const Vector< Real > &g, const Vector< Real > &l, const Vector< Real > &c, AugmentedLagrangianObjective< Real > &alobj, BoundConstraint< Real > &bnd, Constraint< Real > &con, std::ostream &outStream=std::cout)
Provides an interface to run general constrained optimization algorithms using Augmented Lagrangians...
Defines the linear algebra or vector space interface.
Definition: ROL_Vector.hpp:46
Provides an interface to run general constrained optimization algorithms.
void writeOutput(std::ostream &os, const bool print_header=false) const override
Print iterate status.
void run(Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &bnd, Constraint< Real > &econ, Vector< Real > &emul, const Vector< Real > &eres, std::ostream &outStream=std::cout) override
Run algorithm on general constrained problems (Type-G). This is the primary Type-G interface...
Provides interface for and implements limited-memory secant operators.
Definition: ROL_Secant.hpp:45
Provides the interface to evaluate the augmented Lagrangian.
Provides the interface to apply upper and lower bound constraints.
void writeHeader(std::ostream &os) const override
Print iterate header.
AugmentedLagrangianAlgorithm(ParameterList &list, const Ptr< Secant< Real >> &secant=nullPtr)
Defines the general constraint operator interface.