ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
algorithm
TypeU
ROL_TypeU_TrustRegionAlgorithm.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_TYPEU_TRUSTREGIONALGORITHM_H
11
#define ROL_TYPEU_TRUSTREGIONALGORITHM_H
12
13
#include "
ROL_TypeU_Algorithm.hpp
"
14
#include "
ROL_TrustRegion_U_Types.hpp
"
15
#include "
ROL_TrustRegion_U.hpp
"
16
#include "
ROL_TrustRegionUtilities.hpp
"
17
#include "
ROL_Secant.hpp
"
18
23
24
namespace
ROL
{
25
namespace
TypeU
{
26
27
template
<
typename
Real>
28
class
TrustRegionAlgorithm
:
public
Algorithm
<Real> {
29
private
:
30
// TRUST REGION INFORMATION
31
Ptr<TrustRegion_U<Real>>
solver_
;
32
Ptr<TrustRegionModel_U<Real>>
model_
;
33
ETrustRegionU
etr_
;
34
Real
delMax_
;
35
Real
eta0_
;
36
Real
eta1_
;
37
Real
eta2_
;
38
Real
gamma0_
;
39
Real
gamma1_
;
40
Real
gamma2_
;
41
Real
TRsafe_
;
42
Real
eps_
;
43
TRUtils::ETRFlag
TRflag_
;
44
int
SPflag_
;
45
int
SPiter_
;
46
47
// NONMONOTONE INFORMATION
48
bool
useNM_
;
49
int
NMstorage_
;
50
51
// SECANT INFORMATION
52
ESecant
esec_
;
53
bool
useSecantPrecond_
;
54
bool
useSecantHessVec_
;
55
56
// INEXACT COMPUTATION PARAMETERS
57
std::vector<bool>
useInexact_
;
58
Real
scale0_
;
59
Real
scale1_
;
60
Real
scale_
,
omega_
,
force_
,
forceFactor_
;
61
int
updateIter_
;
62
Real
gtol_
;
63
64
// VERBOSITY SETTING
65
int
verbosity_
;
66
bool
printHeader_
;
67
68
using
Algorithm
<Real>
::state_
;
69
using
Algorithm
<Real>
::status_
;
70
using
Algorithm
<Real>
::initialize
;
71
72
public
:
73
74
TrustRegionAlgorithm
( ParameterList &parlist,
75
const
Ptr<
Secant<Real>
> &secant = nullPtr );
76
77
using
Algorithm
<Real>
::run
;
78
void
run
(
Vector<Real>
&x,
79
const
Vector<Real>
&g,
80
Objective<Real>
&obj,
81
std::ostream &outStream = std::cout)
override
;
82
83
void
writeHeader
( std::ostream& os )
const override
;
84
85
void
writeName
( std::ostream& os )
const override
;
86
87
void
writeOutput
( std::ostream& os,
const
bool
print_header =
false
)
const override
;
88
89
private
:
90
91
void
initialize
(
const
Vector<Real>
&x,
const
Vector<Real>
&g,
Vector<Real>
&Bg,
92
Objective<Real>
&obj, std::ostream &outStream = std::cout);
93
94
Real
computeValue
(
const
Vector<Real>
&x,
Objective<Real>
&obj, Real pRed);
95
108
void
computeGradient
(
const
Vector<Real>
&x,
Objective<Real>
&obj,
bool
accept);
109
110
};
// class ROL::TrustRegionAlgorithm
111
}
// namespace TypeU
112
}
// namespace ROL
113
114
#include "
ROL_TypeU_TrustRegionAlgorithm_Def.hpp
"
115
116
#endif
ROL_Secant.hpp
ROL_TrustRegionUtilities.hpp
ROL_TrustRegion_U.hpp
ROL_TrustRegion_U_Types.hpp
Contains definitions of enums for trust region algorithms.
ROL_TypeU_Algorithm.hpp
ROL_TypeU_TrustRegionAlgorithm_Def.hpp
ROL::Objective
Provides the interface to evaluate objective functions.
Definition
ROL_Objective.hpp:44
ROL::ROL::TypeU::Algorithm::Algorithm
Algorithm()
Constructor, given a step and a status test.
Definition
ROL_Constraint_SerialSimOpt.hpp:21
ROL::ROL::TypeU::Algorithm::status_
const Ptr< CombinedStatusTest< Real > > status_
Definition
ROL_Constraint_SerialSimOpt.hpp:51
ROL::ROL::TypeU::Algorithm::state_
const Ptr< AlgorithmState< Real > > state_
Definition
ROL_Constraint_SerialSimOpt.hpp:52
ROL::Secant
Provides interface for and implements limited-memory secant operators.
Definition
ROL_Secant.hpp:45
ROL::TypeU::TrustRegionAlgorithm::scale1_
Real scale1_
Scale for inexact gradient computation.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:59
ROL::TypeU::TrustRegionAlgorithm::printHeader_
bool printHeader_
Print header at every iteration.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:66
ROL::TypeU::TrustRegionAlgorithm::useInexact_
std::vector< bool > useInexact_
Flags for inexact (0) objective function, (1) gradient, (2) Hessian.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:57
ROL::TypeU::TrustRegionAlgorithm::SPiter_
int SPiter_
Subproblem solver iteration count.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:45
ROL::TypeU::TrustRegionAlgorithm::gamma0_
Real gamma0_
Radius decrease rate (negative rho).
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:38
ROL::TypeU::TrustRegionAlgorithm::TRsafe_
Real TRsafe_
Safeguard size for numerically evaluating ratio.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:41
ROL::TypeU::TrustRegionAlgorithm::writeHeader
void writeHeader(std::ostream &os) const override
Print iterate header.
ROL::TypeU::TrustRegionAlgorithm::useSecantPrecond_
bool useSecantPrecond_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:53
ROL::TypeU::TrustRegionAlgorithm::scale_
Real scale_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:60
ROL::TypeU::TrustRegionAlgorithm::useNM_
bool useNM_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:48
ROL::TypeU::TrustRegionAlgorithm::scale0_
Real scale0_
Scale for inexact gradient computation.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:58
ROL::TypeU::TrustRegionAlgorithm::writeOutput
void writeOutput(std::ostream &os, const bool print_header=false) const override
Print iterate status.
ROL::TypeU::TrustRegionAlgorithm::esec_
ESecant esec_
Secant type.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:52
ROL::TypeU::TrustRegionAlgorithm::gamma2_
Real gamma2_
Radius increase rate.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:40
ROL::TypeU::TrustRegionAlgorithm::NMstorage_
int NMstorage_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:49
ROL::TypeU::TrustRegionAlgorithm::updateIter_
int updateIter_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:61
ROL::TypeU::TrustRegionAlgorithm::eps_
Real eps_
Safeguard for numerically evaluating ratio.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:42
ROL::TypeU::TrustRegionAlgorithm::omega_
Real omega_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:60
ROL::TypeU::TrustRegionAlgorithm::useSecantHessVec_
bool useSecantHessVec_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:54
ROL::TypeU::TrustRegionAlgorithm::verbosity_
int verbosity_
Print additional information to screen if > 0.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:65
ROL::TypeU::TrustRegionAlgorithm::writeName
void writeName(std::ostream &os) const override
Print step name.
ROL::TypeU::TrustRegionAlgorithm::computeGradient
void computeGradient(const Vector< Real > &x, Objective< Real > &obj, bool accept)
Compute gradient to iteratively satisfy inexactness condition.
ROL::TypeU::TrustRegionAlgorithm::computeValue
Real computeValue(const Vector< Real > &x, Objective< Real > &obj, Real pRed)
ROL::TypeU::TrustRegionAlgorithm::gamma1_
Real gamma1_
Radius decrease rate (positive rho).
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:39
ROL::TypeU::TrustRegionAlgorithm::SPflag_
int SPflag_
Subproblem solver termination flag.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:44
ROL::TypeU::TrustRegionAlgorithm::TRflag_
TRUtils::ETRFlag TRflag_
Trust-region exit flag.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:43
ROL::TypeU::TrustRegionAlgorithm::delMax_
Real delMax_
Maximum trust-region radius.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:34
ROL::TypeU::TrustRegionAlgorithm::eta0_
Real eta0_
Step acceptance threshold.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:35
ROL::TypeU::TrustRegionAlgorithm::model_
Ptr< TrustRegionModel_U< Real > > model_
Container for trust-region model.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:32
ROL::TypeU::TrustRegionAlgorithm::forceFactor_
Real forceFactor_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:60
ROL::TypeU::TrustRegionAlgorithm::eta2_
Real eta2_
Radius increase threshold.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:37
ROL::TypeU::TrustRegionAlgorithm::TrustRegionAlgorithm
TrustRegionAlgorithm(ParameterList &parlist, const Ptr< Secant< Real > > &secant=nullPtr)
ROL::TypeU::TrustRegionAlgorithm::force_
Real force_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:60
ROL::TypeU::TrustRegionAlgorithm::eta1_
Real eta1_
Radius decrease threshold.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:36
ROL::TypeU::TrustRegionAlgorithm::gtol_
Real gtol_
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:62
ROL::TypeU::TrustRegionAlgorithm::initialize
void initialize(const Vector< Real > &x, const Vector< Real > &g, Vector< Real > &Bg, Objective< Real > &obj, std::ostream &outStream=std::cout)
ROL::TypeU::TrustRegionAlgorithm::run
void run(Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj, std::ostream &outStream=std::cout) override
ROL::TypeU::TrustRegionAlgorithm::etr_
ETrustRegionU etr_
Trust-region subproblem solver type.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:33
ROL::TypeU::TrustRegionAlgorithm::solver_
Ptr< TrustRegion_U< Real > > solver_
Container for trust-region solver object.
Definition
ROL_TypeU_TrustRegionAlgorithm.hpp:31
ROL::Vector
Defines the linear algebra or vector space interface.
Definition
ROL_Vector.hpp:51
ROL::TRUtils::ETRFlag
ETRFlag
Definition
ROL_TrustRegionUtilities.hpp:28
ROL::TypeU
Definition
ROL_TypeU_Algorithm.hpp:23
ROL
Definition
ROL_ElementwiseVector.hpp:27
ROL::ETrustRegionU
ETrustRegionU
Definition
ROL_TrustRegion_U_Types.hpp:29
ROL::ESecant
ESecant
Definition
ROL_Types.hpp:456
Generated by
1.17.0