This is a utility class used by auglagrangian, meant to wrap a lagrangianfunction into a function usable by a simple optimizer like l-bfgs.
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. 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. const arma::vec & Lambda () const
Get the Lagrange multipliers. arma::vec & Lambda ()
Modify the Lagrange multipliers. double Sigma () const
Get sigma (the penalty parameter). double & Sigma ()
Modify sigma (the penalty parameter). std::string ToString () const
LagrangianFunction & function
Instantiation of the function to be optimized. arma::vec lambda
The Lagrange multipliers. double sigma
The penalty parameter.
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.
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.
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.
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.
Get the Lagrangian function.
Definition at line 108 of file aug_lagrangian_function.hpp.
Modify the Lagrangian function.
Definition at line 110 of file aug_lagrangian_function.hpp.
Get the initial point of the optimization (supplied by the LagrangianFunction).
Returns:
Initial point.
Evaluate the gradient of the Augmented Lagrangian function.
Parameters:
coordinates Coordinates to evaluate gradient at.
gradient Matrix to store gradient into.
Get the Lagrange multipliers.
Definition at line 98 of file aug_lagrangian_function.hpp.
Modify the Lagrange multipliers.
Definition at line 100 of file aug_lagrangian_function.hpp.
Get sigma (the penalty parameter).
Definition at line 103 of file aug_lagrangian_function.hpp.
Modify sigma (the penalty parameter).
Definition at line 105 of file aug_lagrangian_function.hpp.
Instantiation of the function to be optimized.
Definition at line 117 of file aug_lagrangian_function.hpp.
The Lagrange multipliers.
Definition at line 120 of file aug_lagrangian_function.hpp.
Referenced by mlpack::optimization::AugLagrangianFunction< mlpack::optimization::LRSDPFunction >::Lambda().
The penalty parameter.
Definition at line 122 of file aug_lagrangian_function.hpp.
Referenced by mlpack::optimization::AugLagrangianFunction< mlpack::optimization::LRSDPFunction >::Sigma().
Generated automatically by Doxygen for MLPACK from the source code.