mlpack
a scalable c++ machine learning library
docs
mlpack: mlpack::optimization::AugLagrangianFunction< LagrangianFunction > Class Template Reference

mlpack::optimization::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...

Inheritance diagram for mlpack::optimization::AugLagrangianFunction< LagrangianFunction >:

List of all members.

Public Member Functions

 AugLagrangianFunction (LagrangianFunction &function)
 Initialize the AugLagrangianFunction, but don't set the Lagrange multipliers or penalty parameters yet.
 AugLagrangianFunction (LagrangianFunction &function, const arma::vec &lambda, const double sigma)
 Initialize the AugLagrangianFunction with the given LagrangianFunction, Lagrange multipliers, and initial penalty parameter.
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.
template<>
double Evaluate (const arma::mat &coordinates) const
const LagrangianFunction & Function () const
 Get the Lagrangian function.
LagrangianFunction & Function ()
 Modify the Lagrangian function.
const arma::mat & GetInitialPoint () const
 Get the initial point of the optimization (supplied by the LagrangianFunction).
void Gradient (const arma::mat &coordinates, arma::mat &gradient) const
 Evaluate the gradient of the Augmented Lagrangian function.
template<>
void Gradient (const arma::mat &coordinates, arma::mat &gradient) const
arma::vec & Lambda ()
 Modify the Lagrange multipliers.
const arma::vec & Lambda () const
 Get the Lagrange multipliers.
double & Sigma ()
 Modify sigma (the penalty parameter).
double Sigma () const
 Get sigma (the penalty parameter).
std::string ToString () const

Private Attributes

LagrangianFunction & function
 Instantiation of the function to be optimized.
arma::vec lambda
 The Lagrange multipliers.
double sigma
 The penalty parameter.

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:
LagrangianFunction Lagrangian function to be used.

Definition at line 48 of file aug_lagrangian_function.hpp.


Constructor & Destructor Documentation

template<typename LagrangianFunction>
mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::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:
function Lagrangian function.
template<typename LagrangianFunction>
mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::AugLagrangianFunction ( LagrangianFunction &  function,
const arma::vec &  lambda,
const double  sigma 
)

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

Parameters:
function Lagrangian function.
lambda Initial Lagrange multipliers.
sigma Initial penalty parameter.

Member Function Documentation

template<typename LagrangianFunction>
double mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::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:
coordinates Coordinates to evaluate function at.
Returns:
Objective function.
template<>
double mlpack::optimization::AugLagrangianFunction< LRSDPFunction >::Evaluate ( const arma::mat &  coordinates  )  const
template<typename LagrangianFunction>
LagrangianFunction& mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::Function (  )  [inline]

Modify the Lagrangian function.

Definition at line 110 of file aug_lagrangian_function.hpp.

template<typename LagrangianFunction>
const LagrangianFunction& mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::Function (  )  const [inline]

Get the Lagrangian function.

Definition at line 108 of file aug_lagrangian_function.hpp.

template<typename LagrangianFunction>
const arma::mat& mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::GetInitialPoint (  )  const

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

Returns:
Initial point.
template<typename LagrangianFunction>
void mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::Gradient ( const arma::mat &  coordinates,
arma::mat &  gradient 
) const

Evaluate the gradient of the Augmented Lagrangian function.

Parameters:
coordinates Coordinates to evaluate gradient at.
gradient Matrix to store gradient into.
template<>
void mlpack::optimization::AugLagrangianFunction< LRSDPFunction >::Gradient ( const arma::mat &  coordinates,
arma::mat &  gradient 
) const
template<typename LagrangianFunction>
const arma::vec& mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::Lambda (  )  const [inline]

Get the Lagrange multipliers.

Definition at line 98 of file aug_lagrangian_function.hpp.

template<typename LagrangianFunction>
arma::vec& mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::Lambda (  )  [inline]

Modify the Lagrange multipliers.

Definition at line 100 of file aug_lagrangian_function.hpp.

template<typename LagrangianFunction>
double mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::Sigma (  )  const [inline]

Get sigma (the penalty parameter).

Definition at line 103 of file aug_lagrangian_function.hpp.

template<typename LagrangianFunction>
double& mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::Sigma (  )  [inline]

Modify sigma (the penalty parameter).

Definition at line 105 of file aug_lagrangian_function.hpp.

template<typename LagrangianFunction>
std::string mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::ToString (  )  const

Member Data Documentation

template<typename LagrangianFunction>
LagrangianFunction& mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::function [private]

Instantiation of the function to be optimized.

Definition at line 117 of file aug_lagrangian_function.hpp.

template<typename LagrangianFunction>
arma::vec mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::lambda [private]

The Lagrange multipliers.

Definition at line 120 of file aug_lagrangian_function.hpp.

template<typename LagrangianFunction>
double mlpack::optimization::AugLagrangianFunction< LagrangianFunction >::sigma [private]

The penalty parameter.

Definition at line 122 of file aug_lagrangian_function.hpp.


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