mlpack  git-master
AugLagrangianFunction< LagrangianFunction > Class Template Reference

This is a utility class used by AugLagrangian, meant to wrap a LagrangianFunction into a function usable by a simple optimizer like L-BFGS. More...

Public Member Functions

 AugLagrangianFunction (LagrangianFunction &function)
 Initialize the AugLagrangianFunction, but don't set the Lagrange multipliers or penalty parameters yet. More...

 
 AugLagrangianFunction (LagrangianFunction &function, const arma::vec &lambda, const double sigma)
 Initialize the AugLagrangianFunction with the given LagrangianFunction, Lagrange multipliers, and initial penalty parameter. More...

 
double Evaluate (const arma::mat &coordinates) const
 Evaluate the objective function of the Augmented Lagrangian function, which is the standard Lagrangian function evaluation plus a penalty term, which penalizes unsatisfied constraints. More...

 
template
<
>
double Evaluate (const arma::mat &coordinates) const
 
template
<
>
double Evaluate (const arma::mat &coordinates) const
 
const LagrangianFunction & Function () const
 Get the Lagrangian function. More...

 
LagrangianFunction & Function ()
 Modify the Lagrangian function. More...

 
const arma::mat & GetInitialPoint () const
 Get the initial point of the optimization (supplied by the LagrangianFunction). More...

 
void Gradient (const arma::mat &coordinates, arma::mat &gradient) const
 Evaluate the gradient of the Augmented Lagrangian function. More...

 
template
<
>
void Gradient (const arma::mat &coordinates, arma::mat &gradient) const
 
template
<
>
void Gradient (const arma::mat &coordinates, arma::mat &gradient) const
 
const arma::vec & Lambda () const
 Get the Lagrange multipliers. More...

 
arma::vec & Lambda ()
 Modify the Lagrange multipliers. More...

 
double Sigma () const
 Get sigma (the penalty parameter). More...

 
double & Sigma ()
 Modify sigma (the penalty parameter). More...

 

Detailed Description


template
<
typename
LagrangianFunction
>

class mlpack::optimization::AugLagrangianFunction< LagrangianFunction >

This is a utility class used by AugLagrangian, meant to wrap a LagrangianFunction into a function usable by a simple optimizer like L-BFGS.

Given a LagrangianFunction which follows the format outlined in the documentation for AugLagrangian, this class provides Evaluate(), Gradient(), and GetInitialPoint() functions which allow this class to be used with a simple optimizer like L-BFGS.

This class can be specialized for your particular implementation – commonly, a faster method for computing the overall objective and gradient of the augmented Lagrangian function can be implemented than the naive, default implementation given. Use class template specialization and re-implement all of the methods (unfortunately, C++ specialization rules mean you have to re-implement everything).

Template Parameters
LagrangianFunctionLagrangian function to be used.

Definition at line 38 of file aug_lagrangian_function.hpp.

Constructor & Destructor Documentation

◆ AugLagrangianFunction() [1/2]

AugLagrangianFunction ( LagrangianFunction &  function)

Initialize the AugLagrangianFunction, but don't set the Lagrange multipliers or penalty parameters yet.

Make sure you set the Lagrange multipliers before you use this...

Parameters
functionLagrangian function.

◆ AugLagrangianFunction() [2/2]

AugLagrangianFunction ( LagrangianFunction &  function,
const arma::vec &  lambda,
const double  sigma 
)

Initialize the AugLagrangianFunction with the given LagrangianFunction, Lagrange multipliers, and initial penalty parameter.

Parameters
functionLagrangian function.
lambdaInitial Lagrange multipliers.
sigmaInitial penalty parameter.

Member Function Documentation

◆ Evaluate() [1/3]

double Evaluate ( const arma::mat &  coordinates) const

Evaluate the objective function of the Augmented Lagrangian function, which is the standard Lagrangian function evaluation plus a penalty term, which penalizes unsatisfied constraints.

Parameters
coordinatesCoordinates to evaluate function at.
Returns
Objective function.

◆ Evaluate() [2/3]

double Evaluate ( const arma::mat &  coordinates) const
inline

◆ Evaluate() [3/3]

double Evaluate ( const arma::mat &  coordinates) const
inline

◆ Function() [1/2]

const LagrangianFunction& Function ( ) const
inline

Get the Lagrangian function.

Definition at line 98 of file aug_lagrangian_function.hpp.

◆ Function() [2/2]

LagrangianFunction& Function ( )
inline

Modify the Lagrangian function.

Definition at line 100 of file aug_lagrangian_function.hpp.

◆ GetInitialPoint()

const arma::mat& GetInitialPoint ( ) const

Get the initial point of the optimization (supplied by the LagrangianFunction).

Returns
Initial point.

◆ Gradient() [1/3]

void Gradient ( const arma::mat &  coordinates,
arma::mat &  gradient 
) const

Evaluate the gradient of the Augmented Lagrangian function.

Parameters
coordinatesCoordinates to evaluate gradient at.
gradientMatrix to store gradient into.

◆ Gradient() [2/3]

void Gradient ( const arma::mat &  coordinates,
arma::mat &  gradient 
) const
inline

◆ Gradient() [3/3]

void Gradient ( const arma::mat &  coordinates,
arma::mat &  gradient 
) const
inline

◆ Lambda() [1/2]

const arma::vec& Lambda ( ) const
inline

Get the Lagrange multipliers.

Definition at line 88 of file aug_lagrangian_function.hpp.

◆ Lambda() [2/2]

arma::vec& Lambda ( )
inline

Modify the Lagrange multipliers.

Definition at line 90 of file aug_lagrangian_function.hpp.

◆ Sigma() [1/2]

double Sigma ( ) const
inline

Get sigma (the penalty parameter).

Definition at line 93 of file aug_lagrangian_function.hpp.

◆ Sigma() [2/2]

double& Sigma ( )
inline

Modify sigma (the penalty parameter).

Definition at line 95 of file aug_lagrangian_function.hpp.


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