10#ifndef ROL_AUGMENTEDLAGRANGIANOBJECTIVE2_H
11#define ROL_AUGMENTEDLAGRANGIANOBJECTIVE2_H
24 const Ptr<Objective<Real>>
obj_;
25 const std::vector<Ptr<AugmentedLagrangianPenalty<Real>>>
pvec_;
31 Ptr<ScalarController<Real,int>>
fval_;
50 ParameterList &parlist)
53 fval_ = makePtr<ScalarController<Real,int>>();
54 gradient_ = makePtr<VectorController<Real,int>>();
58 ParameterList& sublist = parlist.sublist(
"Step").sublist(
"Augmented Lagrangian");
65 const bool scaleLagrangian)
69 fval_ = makePtr<ScalarController<Real,int>>();
70 gradient_ = makePtr<VectorController<Real,int>>();
76 obj_->update(x,type,iter);
78 fval_->objectiveUpdate(type);
87 pvec_[k]->setScaling(cscale);
91 return pvec_[k]->getScaling();
117 obj_->hessVec(hv,v,x,tol);
127 return pvec_[k]->dualNorm(x,tol);
131 return pvec_[k]->dualResidual(x,tol);
135 return pvec_[k]->feasibility(x,tol);
139 pvec_[k]->setPenaltyParameter(penaltyParameter);
143 return pvec_[k]->getPenaltyParameter();
146 pvec_[k]->setMultiplier(multiplier);
150 pvec_[k]->updateMultiplier(x,tol);
157 bool isComputed =
fval_->get(val,key);
177 return pvec_[k]->getConstraintVec(x,tol);
int getNumberFunctionEvaluations(void) const
const Ptr< const Vector< Real > > getObjectiveGradient(const Vector< Real > &x, Real &tol)
virtual void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply Hessian approximation to vector.
virtual void update(const Vector< Real > &x, UpdateType type, int iter=-1)
Update objective function.
AugmentedLagrangianObjective2(const Ptr< Objective< Real > > &obj, const std::vector< Ptr< AugmentedLagrangianPenalty< Real > > > &pen, const Vector< Real > &dualOptVec, const bool scaleLagrangian)
const Ptr< Objective< Real > > obj_
AugmentedLagrangianObjective2(const Ptr< Objective< Real > > &obj, const std::vector< Ptr< AugmentedLagrangianPenalty< Real > > > &pen, const Vector< Real > &dualOptVec, ParameterList &parlist)
Real getPenaltyParameter(const int k)
Ptr< VectorController< Real, int > > gradient_
int getNumberGradientEvaluations(void) const
virtual void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Compute gradient.
Real dualResidual(const Vector< Real > &x, Real &tol, const int k)
void setScaling(const Real cscale, const int k)
int getNumberConstraints(void) const
Real getObjectiveValue(const Vector< Real > &x, Real &tol)
int getNumberConstraintEvaluations(void) const
void setScaling(const Real fscale=1.0)
virtual Real value(const Vector< Real > &x, Real &tol)
Compute value.
void setMultiplier(const Vector< Real > &multiplier, const int k)
void setPenaltyParameter(const Real penaltyParameter, const int k)
void updateMultiplier(const Vector< Real > &x, Real &tol, const int k)
const std::vector< Ptr< AugmentedLagrangianPenalty< Real > > > pvec_
Ptr< ScalarController< Real, int > > fval_
Real getScaling(const int k)
Real dualNorm(const Vector< Real > &x, Real &tol, const int k)
Real feasibility(const Vector< Real > &x, Real &tol, const int k)
Ptr< Vector< Real > > dualOptVector_
const Ptr< const Vector< Real > > getConstraintVec(const Vector< Real > &x, Real &tol, const int k)
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 plus(const Vector &x)=0
Compute , where .
virtual ROL::Ptr< Vector > clone() const =0
Clone to make a new (uninitialized) vector.