12 #ifndef MLPACK_CORE_OPTIMIZERS_AUG_LAGRANGIAN_AUG_LAGRANGIAN_FUNCTION_HPP
13 #define MLPACK_CORE_OPTIMIZERS_AUG_LAGRANGIAN_AUG_LAGRANGIAN_FUNCTION_HPP
18 namespace optimization {
37 template<
typename LagrangianFunction>
59 const arma::vec& lambda,
69 double Evaluate(
const arma::mat& coordinates)
const;
77 void Gradient(
const arma::mat& coordinates, arma::mat& gradient)
const;
88 const arma::vec&
Lambda()
const {
return lambda; }
90 arma::vec&
Lambda() {
return lambda; }
93 double Sigma()
const {
return sigma; }
95 double&
Sigma() {
return sigma; }
98 const LagrangianFunction&
Function()
const {
return function; }
100 LagrangianFunction&
Function() {
return function; }
104 LagrangianFunction&
function;
116 #include "aug_lagrangian_function_impl.hpp"
118 #endif // MLPACK_CORE_OPTIMIZERS_AUG_LAGRANGIAN_AUG_LAGRANGIAN_FUNCTION_HPP
double Evaluate(const arma::mat &coordinates) const
Evaluate the objective function of the Augmented Lagrangian function, which is the standard Lagrangia...
The core includes that mlpack expects; standard C++ includes and Armadillo.
const arma::vec & Lambda() const
Get the Lagrange multipliers.
LagrangianFunction & Function()
Modify the Lagrangian function.
const LagrangianFunction & Function() const
Get the Lagrangian function.
double Sigma() const
Get sigma (the penalty parameter).
void Gradient(const arma::mat &coordinates, arma::mat &gradient) const
Evaluate the gradient of the Augmented Lagrangian function.
This is a utility class used by AugLagrangian, meant to wrap a LagrangianFunction into a function usa...
AugLagrangianFunction(LagrangianFunction &function)
Initialize the AugLagrangianFunction, but don't set the Lagrange multipliers or penalty parameters ye...
double & Sigma()
Modify sigma (the penalty parameter).
const arma::mat & GetInitialPoint() const
Get the initial point of the optimization (supplied by the LagrangianFunction).
arma::vec & Lambda()
Modify the Lagrange multipliers.