45#ifndef ROL_FLETCHEROBJECTVEBASEDEF_H
46#define ROL_FLETCHEROBJECTVEBASEDEF_H
50template<
typename Real>
57 ParameterList &parlist)
77 vv_ = makePtr<PartitionedVector<Real>>(std::vector<Ptr<Vector<Real>>>({
v1_,
v2_}));
81 ww_ = makePtr<PartitionedVector<Real>>(std::vector<Ptr<Vector<Real>>>({
w1_,
w2_}));
85 bb_ = makePtr<PartitionedVector<Real>>(std::vector<Ptr<Vector<Real>>>({
b1_,
b2_}));
87 ParameterList& sublist = parlist.sublist(
"Step").sublist(
"Fletcher");
92 ROL::ParameterList krylovList;
93 Real atol =
static_cast<Real
>(1e-12);
94 Real rtol =
static_cast<Real
>(1e-2);
95 krylovList.sublist(
"General").sublist(
"Krylov").set(
"Type",
"GMRES");
96 krylovList.sublist(
"General").sublist(
"Krylov").set(
"Absolute Tolerance", atol);
97 krylovList.sublist(
"General").sublist(
"Krylov").set(
"Relative Tolerance", rtol);
98 krylovList.sublist(
"General").sublist(
"Krylov").set(
"Iteration Limit", 200);
102template<
typename Real>
104 obj_->update(x,type,iter);
105 con_->update(x,type,iter);
106 fPhi_->objectiveUpdate(type);
107 gPhi_->objectiveUpdate(type);
108 y_->objectiveUpdate(type);
109 fval_->objectiveUpdate(type);
110 g_->objectiveUpdate(type);
111 c_->objectiveUpdate(type);
115template<
typename Real>
118 Real tol =
static_cast<Real
>(1e-12);
124template<
typename Real>
131template<
typename Real>
134 Real tol =
static_cast<Real
>(1e-12);
139template<
typename Real>
142 Real tol =
static_cast<Real
>(1e-12);
147template<
typename Real>
153template<
typename Real>
158template<
typename Real>
163template<
typename Real>
168template<
typename Real>
176template<
typename Real>
180 bool isComputed =
fval_->get(val,key);
188template<
typename Real>
191 bool isComputed =
g_->get(g,key);
198template<
typename Real>
201 bool isComputed =
c_->get(c,key);
208template<
typename Real>
211 bool isComputed =
y_->get(y,key);
215 objGrad(g, x, tol2); tol2 = tol;
221 bool refine = isComputed;
Defines the general constraint operator interface.
virtual void solveAugmentedSystem(Vector< Real > &v1, Vector< Real > &v2, const Vector< Real > &b1, const Vector< Real > &b2, const Vector< Real > &x, Real &multSolverError_, bool refine)=0
Ptr< VectorController< Real, int > > g_
Ptr< Vector< Real > > gL_
int getNumberGradientEvaluations() const
Ptr< const Vector< Real > > getLagrangianGradient(const Vector< Real > &x)
Ptr< Vector< Real > > xdual_
Ptr< const Vector< Real > > getConstraintVec(const Vector< Real > &x)
void objGrad(Vector< Real > &g, const Vector< Real > &x, Real &tol)
const Ptr< Objective< Real > > obj_
Ptr< VectorController< Real, int > > gPhi_
Ptr< Vector< Real > > scaledc_
Ptr< Vector< Real > > cdual_
virtual void update(const Vector< Real > &x, UpdateType type, int iter=-1) override
Ptr< Vector< Real > > b2_
Real objValue(const Vector< Real > &x, Real &tol)
int getNumberFunctionEvaluations() const
Ptr< ScalarController< Real, int > > fval_
Ptr< VectorController< Real, int > > c_
Real getObjectiveValue(const Vector< Real > &x)
Ptr< Vector< Real > > xprim_
void conValue(Vector< Real > &c, const Vector< Real > &x, Real &tol)
Ptr< PartitionedVector< Real > > bb_
void reset(Real sigma, Real delta)
int getNumberConstraintEvaluations() const
Ptr< PartitionedVector< Real > > ww_
Ptr< ScalarController< Real, int > > fPhi_
Ptr< Vector< Real > > cprim_
Ptr< Vector< Real > > gLdual_
Ptr< PartitionedVector< Real > > vv_
Ptr< Vector< Real > > w2_
Ptr< Vector< Real > > b1_
Real quadPenaltyParameter_
Ptr< Vector< Real > > v2_
Ptr< const Vector< Real > > getGradient(const Vector< Real > &x)
FletcherObjectiveBase(const Ptr< Objective< Real > > &obj, const Ptr< Constraint< Real > > &con, const Vector< Real > &xprim, const Vector< Real > &xdual, const Vector< Real > &cprim, const Vector< Real > &cdual, ParameterList &parlist)
void computeMultipliers(Vector< Real > &y, Vector< Real > &gL, const Vector< Real > &x, Vector< Real > &g, Vector< Real > &c, Real tol)
Ptr< Vector< Real > > v1_
Ptr< Krylov< Real > > krylov_
const Ptr< Constraint< Real > > con_
Ptr< VectorController< Real, int > > y_
Ptr< const Vector< Real > > getMultiplierVec(const Vector< Real > &x)
Ptr< Vector< Real > > w1_
virtual void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Compute gradient.
Defines the linear algebra or vector space interface.
virtual Real norm() const =0
Returns where .
virtual ROL::Ptr< Vector > clone() const =0
Clone to make a new (uninitialized) vector.
Real ROL_EPSILON(void)
Platform-dependent machine epsilon.
Ptr< Krylov< Real > > KrylovFactory(ParameterList &parlist)