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
15#include "ROL_Secant.hpp"
16
22namespace ROL {
23namespace TypeG {
24
25
26template<typename Real>
28private:
29 const Ptr<Secant<Real>> secant_;
30 ParameterList list_;
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
67 using TypeG::Algorithm<Real>::state_;
68 using TypeG::Algorithm<Real>::status_;
69 using TypeG::Algorithm<Real>::proj_;
70
72 const Vector<Real> &g,
73 const Vector<Real> &l,
74 const Vector<Real> &c,
78 std::ostream &outStream = std::cout);
79
80public:
81
82 AugmentedLagrangianAlgorithm(ParameterList &list, const Ptr<Secant<Real>> &secant = nullPtr);
83
84 using TypeG::Algorithm<Real>::run;
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 the augmented Lagrangian.
Provides the interface to apply upper and lower bound constraints.
Defines the general constraint operator interface.
Provides the interface to evaluate objective functions.
Provides interface for and implements limited-memory secant operators.
Provides an interface to run general constrained optimization algorithms.
const Ptr< CombinedStatusTest< Real > > status_
Ptr< PolyhedralProjection< Real > > proj_
const Ptr< AlgorithmState< Real > > state_
Provides an interface to run general constrained optimization algorithms using Augmented Lagrangians.
void writeOutput(std::ostream &os, const bool print_header=false) const override
Print iterate status.
void writeName(std::ostream &os) const override
Print step name.
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.
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)
void writeHeader(std::ostream &os) const override
Print iterate header.
Defines the linear algebra or vector space interface.