ROL
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ROL::AugmentedLagrangianStep< Real > Class Template Reference

Provides the interface to compute augmented Lagrangian steps. More...

#include <ROL_AugmentedLagrangianStep.hpp>

+ Inheritance diagram for ROL::AugmentedLagrangianStep< Real >:

Public Member Functions

 ~AugmentedLagrangianStep ()
 
 AugmentedLagrangianStep (ROL::ParameterList &parlist)
 
void initialize (Vector< Real > &x, const Vector< Real > &g, Vector< Real > &l, const Vector< Real > &c, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state)
 Initialize step with equality constraint. More...
 
void initialize (Vector< Real > &x, const Vector< Real > &g, Vector< Real > &l, const Vector< Real > &c, Objective< Real > &obj, Constraint< Real > &con, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Initialize step with equality and bound constraints. More...
 
void compute (Vector< Real > &s, const Vector< Real > &x, const Vector< Real > &l, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state)
 Compute step (equality constraint). More...
 
void compute (Vector< Real > &s, const Vector< Real > &x, const Vector< Real > &l, Objective< Real > &obj, Constraint< Real > &con, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Compute step (equality and bound constraints). More...
 
void update (Vector< Real > &x, Vector< Real > &l, const Vector< Real > &s, Objective< Real > &obj, Constraint< Real > &con, AlgorithmState< Real > &algo_state)
 Update step, if successful (equality constraint). More...
 
void update (Vector< Real > &x, Vector< Real > &l, const Vector< Real > &s, Objective< Real > &obj, Constraint< Real > &con, BoundConstraint< Real > &bnd, AlgorithmState< Real > &algo_state)
 Update step, if successful (equality and bound constraints). More...
 
std::string printHeader (void) const
 Print iterate header. More...
 
std::string printName (void) const
 Print step name. More...
 
std::string print (AlgorithmState< Real > &algo_state, bool pHeader=false) const
 Print iterate status. More...
 
void compute (Vector< Real > &s, const Vector< Real > &x, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state)
 Compute step for bound constraints; here only to satisfy the interface requirements, does nothing, needs refactoring. More...
 
void update (Vector< Real > &x, const Vector< Real > &s, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state)
 Update step, for bound constraints; here only to satisfy the interface requirements, does nothing, needs refactoring. More...
 
- Public Member Functions inherited from ROL::Step< Real >
virtual ~Step ()
 
 Step (void)
 
virtual void initialize (Vector< Real > &x, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state)
 Initialize step with bound constraint. More...
 
virtual void initialize (Vector< Real > &x, const Vector< Real > &s, const Vector< Real > &g, Objective< Real > &obj, BoundConstraint< Real > &con, AlgorithmState< Real > &algo_state)
 Initialize step with bound constraint. More...
 
const ROL::Ptr< const
StepState< Real > > 
getStepState (void) const
 Get state for step object. More...
 
void reset (const Real searchSize=1.0)
 Get state for step object. More...
 

Private Member Functions

Real computeGradient (Vector< Real > &g, const Vector< Real > &x, const Real mu, Objective< Real > &obj, BoundConstraint< Real > &bnd)
 

Private Attributes

ROL::Ptr< StatusTest< Real > > status_
 
ROL::Ptr< Step< Real > > step_
 
ROL::Ptr< Algorithm< Real > > algo_
 
ROL::Ptr< Vector< Real > > x_
 
ROL::Ptr< BoundConstraint< Real > > bnd_
 
ROL::ParameterList parlist_
 
bool useDefaultInitPen_
 
bool scaleLagrangian_
 
Real minPenaltyReciprocal_
 
Real minPenaltyLowerBound_
 
Real penaltyUpdate_
 
Real maxPenaltyParam_
 
Real optIncreaseExponent_
 
Real optDecreaseExponent_
 
Real optToleranceInitial_
 
Real optTolerance_
 
Real feasIncreaseExponent_
 
Real feasDecreaseExponent_
 
Real feasToleranceInitial_
 
Real feasTolerance_
 
bool print_
 
int maxit_
 
int subproblemIter_
 
std::string subStep_
 
Real outerOptTolerance_
 
Real outerFeasTolerance_
 
Real outerStepTolerance_
 
bool useDefaultScaling_
 
Real fscale_
 
Real cscale_
 
int verbosity_
 

Additional Inherited Members

- Protected Member Functions inherited from ROL::Step< Real >
ROL::Ptr< StepState< Real > > getState (void)
 

Detailed Description

template<class Real>
class ROL::AugmentedLagrangianStep< Real >

Provides the interface to compute augmented Lagrangian steps.

The Augmented Lagrangian algorithm is used to solve Type-EB problems. This algorithm solves the scaled problem

\[ \min_{x} w_J J(x) \quad\text{subject to}\quad w_c c(x) = 0,\quad \ell \le x \le u \]

for some positive consants \(w_J,\, w_c\). These constants are either input by the user or automatically estimated. To solve this scaled problem, the Augmented Lagrangian algorithm minimizes the so-called Augmented Lagrangian functional

\[ L(x,\lambda,r) := w_J J(x) + w_c \langle \lambda, c(x)\rangle_{X^*,X} + \frac{w_c^2 r}{2} \|c(x)\|_X^2 \]

subject to the bound constraints \(\ell \le x \le u\). The multiplier estimate \(\lambda\) is updated as

\[ \lambda \leftarrow \lambda + r w_c c(x). \]

The penalty parameter \(r>0\) is also updated based on the progress of the algorithm. The initial penalty parameter is either input by the user or automatically computed.

User Input Parameters: bool Step -> Augmented Lagrangian -> Use Default initial Penalty Parameter Use automatically determined initial penalty parameter. Default: true

Real Step -> Augmented Lagrangian -> Initial Penalty Parameter Initial penalty parameter. Default: 10

Real Step -> Augmented Lagrangian -> Use Scaled Augmented Lagrangian Use Augmented Lagrangian scaled by the reciprocal of the penalty parameter. Default: false

Real Step -> Augmented Lagrangian -> Penalty Parameter Reciprocal Lower Bound Minimum penalty parameter reciprocal for tolerance updates. Default: 0.1

Real Step -> Augmented Lagrangian -> Penalty Parameter Growth Factor Rate of growth for penalty parameter. Default: 10

Real Step -> Augmented Lagrangian -> Maximum Penalty Parameter Maximum penalty parameter size. Default: 1e8

Real Step -> Augmented Lagrangian -> Optimality Tolerance Update Exponent Rate at which to update optimality tolerance. Default: 1

Real Step -> Augmented Lagrangian -> Optimality Tolerance Decrease Exponent Rate at which to decrease optimality tolerance. Default: 1

Real Step -> Augmented Lagrangian -> Initial Optimality Tolerance Initial tolerance for optimality. Default: 1

Real Step -> Augmented Lagrangian -> Feasibility Tolerance Update Exponent Rate at which to update feasibility tolerance. Default: 0.1

Real Step -> Augmented Lagrangian -> Feasibility Tolerance Decrease Exponent Rate at which to decrease feasibility tolerance. Default: 0.9

Real Step -> Augmented Lagrangian -> Initial Feasibility Tolerance Initial tolerance for equality constraint feasibility. Default: 1

bool Step -> Augmented Lagrangian -> Print Intermediate Optimization History Print iteration history for subproblem solve. Default: false

int Step -> Augmented Lagrangian -> Subproblem Iteration Limit Subproblem iteration limit. Default: 1000

string Step -> Augmented Lagrangian -> Subproblem Step Type Subproblem (bound constrained) solver type. Default: Trust Region

bool Step -> Augmented Lagrangian -> Use Default Problem Scaling Use automatic constraint and objective scaling. Default: true

Real Step -> Augmented Lagrangian -> Objective Scaling Positive scaling constant for objective. Default: 1

Real Step -> Augmented Lagrangian -> Constraint Scaling Positive scaling constant for constraint. Default: 1

int General -> Print Verbosity Print additional information to screen for debugging purposes. Default: 0

Definition at line 160 of file ROL_AugmentedLagrangianStep.hpp.

Constructor & Destructor Documentation

template<class Real >
ROL::AugmentedLagrangianStep< Real >::~AugmentedLagrangianStep ( )
inline

Definition at line 231 of file ROL_AugmentedLagrangianStep.hpp.

template<class Real >
ROL::AugmentedLagrangianStep< Real >::AugmentedLagrangianStep ( ROL::ParameterList &  parlist)
inline

Member Function Documentation

template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::computeGradient ( Vector< Real > &  g,
const Vector< Real > &  x,
const Real  mu,
Objective< Real > &  obj,
BoundConstraint< Real > &  bnd 
)
inlineprivate
template<class Real >
void ROL::AugmentedLagrangianStep< Real >::initialize ( Vector< Real > &  x,
const Vector< Real > &  g,
Vector< Real > &  l,
const Vector< Real > &  c,
Objective< Real > &  obj,
Constraint< Real > &  con,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual

Initialize step with equality constraint.

Reimplemented from ROL::Step< Real >.

Definition at line 275 of file ROL_AugmentedLagrangianStep.hpp.

References ROL::AugmentedLagrangianStep< Real >::bnd_.

template<class Real >
void ROL::AugmentedLagrangianStep< Real >::initialize ( Vector< Real > &  x,
const Vector< Real > &  g,
Vector< Real > &  l,
const Vector< Real > &  c,
Objective< Real > &  obj,
Constraint< Real > &  con,
BoundConstraint< Real > &  bnd,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual

Initialize step with equality and bound constraints.

Reimplemented from ROL::Step< Real >.

Definition at line 285 of file ROL_AugmentedLagrangianStep.hpp.

References ROL::Constraint< Real >::applyAdjointJacobian(), ROL::Vector< Real >::basis(), ROL::Vector< Real >::clone(), ROL::AlgorithmState< Real >::cnorm, ROL::AugmentedLagrangianStep< Real >::computeGradient(), ROL::AugmentedLagrangianStep< Real >::cscale_, ROL::Vector< Real >::dimension(), ROL::AugmentedLagrangianStep< Real >::feasDecreaseExponent_, ROL::AugmentedLagrangianStep< Real >::feasTolerance_, ROL::AugmentedLagrangianStep< Real >::feasToleranceInitial_, ROL::AugmentedLagrangianStep< Real >::fscale_, ROL::AugmentedLagrangian< Real >::getConstraintVec(), ROL::AugmentedLagrangian< Real >::getNumberConstraintEvaluations(), ROL::AugmentedLagrangian< Real >::getNumberFunctionEvaluations(), ROL::AugmentedLagrangian< Real >::getNumberGradientEvaluations(), ROL::AugmentedLagrangian< Real >::getObjectiveGradient(), ROL::AugmentedLagrangian< Real >::getObjectiveValue(), ROL::Step< Real >::getState(), ROL::AlgorithmState< Real >::gnorm, ROL::BoundConstraint< Real >::isActivated(), ROL::AlgorithmState< Real >::iter, ROL::AugmentedLagrangianStep< Real >::maxPenaltyParam_, ROL::AugmentedLagrangianStep< Real >::minPenaltyLowerBound_, ROL::AugmentedLagrangianStep< Real >::minPenaltyReciprocal_, ROL::AlgorithmState< Real >::ncval, ROL::AlgorithmState< Real >::nfval, ROL::AlgorithmState< Real >::ngrad, ROL::AugmentedLagrangianStep< Real >::optDecreaseExponent_, ROL::AugmentedLagrangianStep< Real >::optTolerance_, ROL::AugmentedLagrangianStep< Real >::optToleranceInitial_, ROL::AugmentedLagrangianStep< Real >::outerFeasTolerance_, ROL::AugmentedLagrangianStep< Real >::outerOptTolerance_, ROL::BoundConstraint< Real >::project(), ROL::AugmentedLagrangian< Real >::setScaling(), ROL::BoundConstraint< Real >::update(), ROL::AugmentedLagrangian< Real >::update(), ROL::AugmentedLagrangianStep< Real >::useDefaultInitPen_, ROL::AugmentedLagrangianStep< Real >::useDefaultScaling_, ROL::AlgorithmState< Real >::value, ROL::AugmentedLagrangianStep< Real >::verbosity_, and ROL::AugmentedLagrangianStep< Real >::x_.

template<class Real >
void ROL::AugmentedLagrangianStep< Real >::compute ( Vector< Real > &  s,
const Vector< Real > &  x,
const Vector< Real > &  l,
Objective< Real > &  obj,
Constraint< Real > &  con,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual

Compute step (equality constraint).

Reimplemented from ROL::Step< Real >.

Definition at line 360 of file ROL_AugmentedLagrangianStep.hpp.

References ROL::AugmentedLagrangianStep< Real >::bnd_.

template<class Real >
void ROL::AugmentedLagrangianStep< Real >::compute ( Vector< Real > &  s,
const Vector< Real > &  x,
const Vector< Real > &  l,
Objective< Real > &  obj,
Constraint< Real > &  con,
BoundConstraint< Real > &  bnd,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual
template<class Real >
void ROL::AugmentedLagrangianStep< Real >::update ( Vector< Real > &  x,
Vector< Real > &  l,
const Vector< Real > &  s,
Objective< Real > &  obj,
Constraint< Real > &  con,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual

Update step, if successful (equality constraint).

Reimplemented from ROL::Step< Real >.

Definition at line 429 of file ROL_AugmentedLagrangianStep.hpp.

References ROL::AugmentedLagrangianStep< Real >::bnd_.

template<class Real >
void ROL::AugmentedLagrangianStep< Real >::update ( Vector< Real > &  x,
Vector< Real > &  l,
const Vector< Real > &  s,
Objective< Real > &  obj,
Constraint< Real > &  con,
BoundConstraint< Real > &  bnd,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual

Update step, if successful (equality and bound constraints).

Reimplemented from ROL::Step< Real >.

Definition at line 437 of file ROL_AugmentedLagrangianStep.hpp.

References ROL::AugmentedLagrangianStep< Real >::algo_, ROL::Vector< Real >::axpy(), ROL::AlgorithmState< Real >::cnorm, ROL::AugmentedLagrangianStep< Real >::computeGradient(), ROL::AugmentedLagrangianStep< Real >::cscale_, ROL::EXITSTATUS_CONVERGED, ROL::AugmentedLagrangianStep< Real >::feasDecreaseExponent_, ROL::AugmentedLagrangianStep< Real >::feasIncreaseExponent_, ROL::AugmentedLagrangianStep< Real >::feasTolerance_, ROL::AugmentedLagrangianStep< Real >::feasToleranceInitial_, ROL::AugmentedLagrangianStep< Real >::fscale_, ROL::AugmentedLagrangian< Real >::getConstraintVec(), ROL::AugmentedLagrangian< Real >::getNumberConstraintEvaluations(), ROL::AugmentedLagrangian< Real >::getNumberFunctionEvaluations(), ROL::AugmentedLagrangian< Real >::getNumberGradientEvaluations(), ROL::AugmentedLagrangian< Real >::getObjectiveValue(), ROL::Step< Real >::getState(), ROL::AlgorithmState< Real >::gnorm, ROL::AlgorithmState< Real >::iter, ROL::AlgorithmState< Real >::iterateVec, ROL::AlgorithmState< Real >::lagmultVec, ROL::AugmentedLagrangianStep< Real >::maxPenaltyParam_, ROL::AugmentedLagrangianStep< Real >::minPenaltyLowerBound_, ROL::AugmentedLagrangianStep< Real >::minPenaltyReciprocal_, ROL::AlgorithmState< Real >::ncval, ROL::AlgorithmState< Real >::nfval, ROL::AlgorithmState< Real >::ngrad, ROL::Vector< Real >::norm(), ROL::AugmentedLagrangianStep< Real >::optDecreaseExponent_, ROL::AugmentedLagrangianStep< Real >::optIncreaseExponent_, ROL::AugmentedLagrangianStep< Real >::optTolerance_, ROL::AugmentedLagrangianStep< Real >::optToleranceInitial_, ROL::AugmentedLagrangianStep< Real >::outerFeasTolerance_, ROL::AugmentedLagrangianStep< Real >::outerOptTolerance_, ROL::AugmentedLagrangianStep< Real >::penaltyUpdate_, ROL::Vector< Real >::plus(), ROL::AugmentedLagrangian< Real >::reset(), ROL::AlgorithmState< Real >::snorm, ROL::AugmentedLagrangianStep< Real >::subproblemIter_, ROL::Objective< Real >::update(), ROL::BoundConstraint< Real >::update(), ROL::AugmentedLagrangian< Real >::update(), and ROL::AlgorithmState< Real >::value.

template<class Real >
std::string ROL::AugmentedLagrangianStep< Real >::printHeader ( void  ) const
inlinevirtual

Print iterate header.

Reimplemented from ROL::Step< Real >.

Definition at line 494 of file ROL_AugmentedLagrangianStep.hpp.

References ROL::AugmentedLagrangianStep< Real >::verbosity_.

Referenced by ROL::AugmentedLagrangianStep< Real >::print().

template<class Real >
std::string ROL::AugmentedLagrangianStep< Real >::printName ( void  ) const
inlinevirtual

Print step name.

Reimplemented from ROL::Step< Real >.

Definition at line 533 of file ROL_AugmentedLagrangianStep.hpp.

References ROL::AugmentedLagrangianStep< Real >::subStep_.

Referenced by ROL::AugmentedLagrangianStep< Real >::print().

template<class Real >
std::string ROL::AugmentedLagrangianStep< Real >::print ( AlgorithmState< Real > &  algo_state,
bool  pHeader = false 
) const
inlinevirtual
template<class Real >
void ROL::AugmentedLagrangianStep< Real >::compute ( Vector< Real > &  s,
const Vector< Real > &  x,
Objective< Real > &  obj,
BoundConstraint< Real > &  con,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual

Compute step for bound constraints; here only to satisfy the interface requirements, does nothing, needs refactoring.

Reimplemented from ROL::Step< Real >.

Definition at line 589 of file ROL_AugmentedLagrangianStep.hpp.

template<class Real >
void ROL::AugmentedLagrangianStep< Real >::update ( Vector< Real > &  x,
const Vector< Real > &  s,
Objective< Real > &  obj,
BoundConstraint< Real > &  con,
AlgorithmState< Real > &  algo_state 
)
inlinevirtual

Update step, for bound constraints; here only to satisfy the interface requirements, does nothing, needs refactoring.

Reimplemented from ROL::Step< Real >.

Definition at line 596 of file ROL_AugmentedLagrangianStep.hpp.

Member Data Documentation

template<class Real >
ROL::Ptr<StatusTest<Real> > ROL::AugmentedLagrangianStep< Real >::status_
private
template<class Real >
ROL::Ptr<Step<Real> > ROL::AugmentedLagrangianStep< Real >::step_
private
template<class Real >
ROL::Ptr<Algorithm<Real> > ROL::AugmentedLagrangianStep< Real >::algo_
private
template<class Real >
ROL::Ptr<Vector<Real> > ROL::AugmentedLagrangianStep< Real >::x_
private
template<class Real >
ROL::Ptr<BoundConstraint<Real> > ROL::AugmentedLagrangianStep< Real >::bnd_
private
template<class Real >
ROL::ParameterList ROL::AugmentedLagrangianStep< Real >::parlist_
private
template<class Real >
bool ROL::AugmentedLagrangianStep< Real >::useDefaultInitPen_
private
template<class Real >
bool ROL::AugmentedLagrangianStep< Real >::scaleLagrangian_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::minPenaltyReciprocal_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::minPenaltyLowerBound_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::penaltyUpdate_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::maxPenaltyParam_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::optIncreaseExponent_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::optDecreaseExponent_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::optToleranceInitial_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::optTolerance_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::feasIncreaseExponent_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::feasDecreaseExponent_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::feasToleranceInitial_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::feasTolerance_
private
template<class Real >
bool ROL::AugmentedLagrangianStep< Real >::print_
private
template<class Real >
int ROL::AugmentedLagrangianStep< Real >::maxit_
private
template<class Real >
int ROL::AugmentedLagrangianStep< Real >::subproblemIter_
private
template<class Real >
std::string ROL::AugmentedLagrangianStep< Real >::subStep_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::outerOptTolerance_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::outerFeasTolerance_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::outerStepTolerance_
private
template<class Real >
bool ROL::AugmentedLagrangianStep< Real >::useDefaultScaling_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::fscale_
private
template<class Real >
Real ROL::AugmentedLagrangianStep< Real >::cscale_
private
template<class Real >
int ROL::AugmentedLagrangianStep< Real >::verbosity_
private

The documentation for this class was generated from the following file: