44#ifndef ROL_AUGMENTEDLAGRANGIANOBJECTIVE_H
45#define ROL_AUGMENTEDLAGRANGIANOBJECTIVE_H
90 const Ptr<Objective<Real>>
obj_;
91 const Ptr<Constraint<Real>>
con_;
102 Ptr<ScalarController<Real,int>>
fval_;
122 const Real penaltyParameter,
126 ParameterList &parlist)
130 fval_ = makePtr<ScalarController<Real,int>>();
131 gradient_ = makePtr<VectorController<Real,int>>();
132 conValue_ = makePtr<VectorController<Real,int>>();
139 ParameterList& sublist = parlist.sublist(
"Step").sublist(
"Augmented Lagrangian");
141 HessianApprox_ = sublist.get(
"Level of Hessian Approximation", 0);
146 const Real penaltyParameter,
150 const bool scaleLagrangian,
151 const int HessianApprox)
156 fval_ = makePtr<ScalarController<Real,int>>();
157 gradient_ = makePtr<VectorController<Real,int>>();
158 conValue_ = makePtr<VectorController<Real,int>>();
167 obj_->update(x,type,iter);
168 con_->update(x,type,iter);
169 fval_->objectiveUpdate(type);
174 void setScaling(
const Real fscale = 1.0,
const Real cscale = 1.0) {
184 const Real half(0.5);
213 obj_->hessVec(hv,v,x,tol);
245 bool isComputed =
fval_->get(val,key);
Contains definitions of custom data types in ROL.
Provides the interface to evaluate the augmented Lagrangian.
Ptr< Vector< Real > > multiplier_
const Ptr< Constraint< Real > > con_
AugmentedLagrangianObjective(const Ptr< Objective< Real > > &obj, const Ptr< Constraint< Real > > &con, const Real penaltyParameter, const Vector< Real > &dualOptVec, const Vector< Real > &primConVec, const Vector< Real > &dualConVec, ParameterList &parlist)
void reset(const Vector< Real > &multiplier, const Real penaltyParameter)
int getNumberGradientEvaluations(void) const
Real value(const Vector< Real > &x, Real &tol)
Compute value.
void update(const Vector< Real > &x, UpdateType type, int iter=-1)
Update objective function.
Ptr< Vector< Real > > primConVector_
int getNumberFunctionEvaluations(void) const
Ptr< VectorController< Real, int > > conValue_
Real getObjectiveValue(const Vector< Real > &x, Real &tol)
Ptr< VectorController< Real, int > > gradient_
void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Compute gradient.
void setScaling(const Real fscale=1.0, const Real cscale=1.0)
AugmentedLagrangianObjective(const Ptr< Objective< Real > > &obj, const Ptr< Constraint< Real > > &con, const Real penaltyParameter, const Vector< Real > &dualOptVec, const Vector< Real > &primConVec, const Vector< Real > &dualConVec, const bool scaleLagrangian, const int HessianApprox)
const Ptr< const Vector< Real > > getObjectiveGradient(const Vector< Real > &x, Real &tol)
void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply Hessian approximation to vector.
Ptr< ScalarController< Real, int > > fval_
const Ptr< Objective< Real > > obj_
Ptr< Vector< Real > > dualConVector_
Ptr< Vector< Real > > dualOptVector_
const Ptr< const Vector< Real > > getConstraintVec(const Vector< Real > &x, Real &tol)
int getNumberConstraintEvaluations(void) const
Defines the general constraint operator interface.
Provides the interface to evaluate objective functions.
Defines the linear algebra or vector space interface.
virtual void set(const Vector &x)
Set where .
virtual void scale(const Real alpha)=0
Compute where .
virtual void zero()
Set to zero vector.
virtual ROL::Ptr< Vector > clone() const =0
Clone to make a new (uninitialized) vector.
virtual void axpy(const Real alpha, const Vector &x)
Compute where .