10#ifndef ROL_FLETCHEROBJECTVEBASEDEF_H
11#define ROL_FLETCHEROBJECTVEBASEDEF_H
15template<
typename Real>
22 ParameterList &parlist)
42 vv_ = makePtr<PartitionedVector<Real>>(std::vector<Ptr<Vector<Real>>>({
v1_,
v2_}));
46 ww_ = makePtr<PartitionedVector<Real>>(std::vector<Ptr<Vector<Real>>>({
w1_,
w2_}));
50 bb_ = makePtr<PartitionedVector<Real>>(std::vector<Ptr<Vector<Real>>>({
b1_,
b2_}));
52 ParameterList& sublist = parlist.sublist(
"Step").sublist(
"Fletcher");
57 ROL::ParameterList krylovList;
58 Real atol =
static_cast<Real
>(1e-12);
59 Real rtol =
static_cast<Real
>(1e-2);
60 krylovList.sublist(
"General").sublist(
"Krylov").set(
"Type",
"GMRES");
61 krylovList.sublist(
"General").sublist(
"Krylov").set(
"Absolute Tolerance", atol);
62 krylovList.sublist(
"General").sublist(
"Krylov").set(
"Relative Tolerance", rtol);
63 krylovList.sublist(
"General").sublist(
"Krylov").set(
"Iteration Limit", 200);
67template<
typename Real>
69 obj_->update(x,type,iter);
70 con_->update(x,type,iter);
71 fPhi_->objectiveUpdate(type);
72 gPhi_->objectiveUpdate(type);
73 y_->objectiveUpdate(type);
74 fval_->objectiveUpdate(type);
75 g_->objectiveUpdate(type);
76 c_->objectiveUpdate(type);
80template<
typename Real>
83 Real tol =
static_cast<Real
>(1e-12);
89template<
typename Real>
96template<
typename Real>
99 Real tol =
static_cast<Real
>(1e-12);
104template<
typename Real>
107 Real tol =
static_cast<Real
>(1e-12);
112template<
typename Real>
118template<
typename Real>
123template<
typename Real>
128template<
typename Real>
133template<
typename Real>
141template<
typename Real>
145 bool isComputed =
fval_->get(val,key);
153template<
typename Real>
156 bool isComputed =
g_->get(g,key);
163template<
typename Real>
166 bool isComputed =
c_->get(c,key);
173template<
typename Real>
176 bool isComputed =
y_->get(y,key);
180 objGrad(g, x, tol2); tol2 = tol;
186 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)