44 #ifndef ROL_SROMGENERATOR_HPP 45 #define ROL_SROMGENERATOR_HPP 67 Teuchos::RCP<Objective<Real> >
obj_;
68 Teuchos::RCP<BoundConstraint<Real> >
bnd_;
69 Teuchos::RCP<EqualityConstraint<Real> >
con_;
71 Teuchos::RCP<Algorithm<Real> >
algo_;
82 parlist_.sublist(
"Step").sublist(
"Moreau-Yosida Penalty").set(
"Initial Penalty Parameter",10.);
83 parlist_.sublist(
"Step").sublist(
"Moreau-Yosida Penalty").set(
"Penalty Parameter Growth Factor",1.);
84 parlist_.sublist(
"Step").sublist(
"Moreau-Yosida Penalty").sublist(
"Subproblem").set(
"Optimality Tolerance",1.e-8);
85 parlist_.sublist(
"Step").sublist(
"Moreau-Yosida Penalty").sublist(
"Subproblem").set(
"Feasibility Tolerance",1.e-8);
86 parlist_.sublist(
"Step").sublist(
"Moreau-Yosida Penalty").sublist(
"Subproblem").set(
"Iteration Limit",1000);
87 parlist_.sublist(
"Step").sublist(
"Moreau-Yosida Penalty").sublist(
"Subproblem").set(
"Print History",
false);
89 parlist_.sublist(
"Status Test").set(
"Gradient Tolerance", 1.e-4);
90 parlist_.sublist(
"Status Test").set(
"Constraint Tolerance", 1.e-6);
91 parlist_.sublist(
"Status Test").set(
"Iteration Limit", 15);
93 algo_ = Teuchos::rcp(
new Algorithm<Real>(
"Moreau-Yosida Penalty",parlist_,
false));
96 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Initial Penalty Parameter",1.e1);
97 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Penalty Parameter Growth Factor",1.e2);
98 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Optimality Tolerance Update Exponent",1.);
99 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Feasibility Tolerance Update Exponent",0.1);
100 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Optimality Tolerance Decrease Exponent",1.);
101 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Feasibility Tolerance Decrease Exponent",0.9);
102 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Initial Optimality Tolerance",1.);
103 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Initial Feasibility Tolerance",1.);
104 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Minimum Penalty Parameter Reciprocal",0.1);
105 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Print Intermediate Optimization History",
false);
106 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Subproblem Iteration Limit",1000);
107 parlist_.sublist(
"Step").sublist(
"Augmented Lagrangian").set(
"Subproblem Step Type",
"Trust Region");
109 parlist_.sublist(
"Status Test").set(
"Gradient Tolerance", 1.e-4);
110 parlist_.sublist(
"Status Test").set(
"Constraint Tolerance", 1.e-6);
111 parlist_.sublist(
"Status Test").set(
"Iteration Limit", 15);
113 algo_ = Teuchos::rcp(
new Algorithm<Real>(
"Augmented Lagrangian",parlist_,
false));
118 const std::vector<Real> &allWeights) {
122 size_t frac = nSamp_ / nProc;
123 size_t rem = nSamp_ % nProc;
124 size_t N = frac + ((rank < rem) ? 1 : 0);
127 std::vector<std::vector<Real> > pts;
128 std::vector<Real> wts;
129 for (
size_t i = 0; i < N; i++) {
130 index = i*nProc + rank;
131 pts.push_back(allPoints[index]);
132 wts.push_back(allWeights[index]);
138 void pruneSamples(std::vector<std::vector<Real> > &pts, std::vector<Real> &wts,
141 for (
size_t i = 0; i <
nSamp_; i++) {
153 const size_t dimension,
154 const size_t nSamp = 10,
155 const bool adaptive =
false,
156 const size_t numNewSamps = 0 )
158 nSamp_(nSamp), numNewSamps_(numNewSamps), adaptive_(adaptive) {
160 SROMVector<Real> x(Teuchos::rcp(
new std::vector<Real>(dimension_*nSamp_,0.)),
161 Teuchos::rcp(
new std::vector<Real>(nSamp_,0.)));
165 bool useAugLag =
false;
169 std::vector<std::vector<Real> > allPoints;
170 std::vector<Real> allWeights;
178 const size_t dimension,
179 const size_t nSamp = 10,
180 const bool adaptive =
false,
181 const size_t numNewSamps = 0 )
182 :
SampleGenerator<Real>(bman), obj_(obj), bnd_(bnd), dimension_(dimension),
183 nSamp_(nSamp), numNewSamps_(numNewSamps), adaptive_(adaptive) {
185 SROMVector<Real> x(Teuchos::rcp(
new std::vector<Real>(dimension_*nSamp_,0.)),
186 Teuchos::rcp(
new std::vector<Real>(nSamp_,0.)));
189 bool useAugLag =
false;
193 std::vector<std::vector<Real> > allPoints;
194 std::vector<Real> allWeights;
203 const size_t dimension,
204 const size_t nSamp = 10,
205 const bool adaptive =
false,
206 const size_t numNewSamps = 0 )
207 :
SampleGenerator<Real>(bman), obj_(obj), bnd_(bnd), dimension_(dimension),
208 nSamp_(nSamp), numNewSamps_(numNewSamps), adaptive_(adaptive) {
212 bool useAugLag =
true;
217 std::vector<std::vector<Real> > allPoints;
218 std::vector<Real> allWeights;
Provides the interface to evaluate objective functions.
Teuchos::RCP< const std::vector< Element > > getPoint(const size_t i) const
const Element getWeight(const size_t i) const
void splitSamples(const std::vector< std::vector< Real > > &allPoints, const std::vector< Real > &allWeights)
Teuchos::RCP< EqualityConstraint< Real > > con_
Contains definitions for std::vector bound constraints.
SROMGenerator(Teuchos::RCP< BatchManager< Real > > &bman, Teuchos::RCP< Objective< Real > > &obj, Teuchos::RCP< BoundConstraint< Real > > &bnd, Teuchos::RCP< Vector< Real > > &x, const size_t dimension, const size_t nSamp=10, const bool adaptive=false, const size_t numNewSamps=0)
Defines the linear algebra or vector space interface.
Provides the std::vector implementation of the ROL::Vector interface.
void pruneSamples(std::vector< std::vector< Real > > &pts, std::vector< Real > &wts, const SROMVector< Real > &x)
SROMGenerator(Teuchos::RCP< BatchManager< Real > > &bman, Teuchos::RCP< Objective< Real > > &obj, const size_t dimension, const size_t nSamp=10, const bool adaptive=false, const size_t numNewSamps=0)
Provides an interface to run optimization algorithms.
Teuchos::ParameterList parlist_
Provides the std::vector implementation of the ROL::Vector interface.
Provides the interface to apply upper and lower bound constraints.
Teuchos::RCP< Objective< Real > > obj_
Teuchos::RCP< Algorithm< Real > > algo_
SROMGenerator(Teuchos::RCP< BatchManager< Real > > &bman, Teuchos::RCP< Objective< Real > > &obj, Teuchos::RCP< BoundConstraint< Real > > &bnd, const size_t dimension, const size_t nSamp=10, const bool adaptive=false, const size_t numNewSamps=0)
void setPoints(std::vector< std::vector< Real > > &p)
Teuchos::RCP< BoundConstraint< Real > > bnd_
void buildOptimizer(const bool useAugLag=true)
const size_t numNewSamps_
void setWeights(std::vector< Real > &w)
static const double ROL_EPSILON
Platform-dependent machine epsilon.