.TH "mlpack::optimization::AugLagrangian< LagrangianFunction >" 3 "Tue Sep 9 2014" "Version 1.0.10" "MLPACK" \" -*- nroff -*- .ad l .nh .SH NAME mlpack::optimization::AugLagrangian< LagrangianFunction > \- .PP The \fBAugLagrangian\fP class implements the Augmented Lagrangian method of optimization\&. .SH SYNOPSIS .br .PP .SS "Public Types" .in +1c .ti -1c .RI "typedef \fBL_BFGS\fP .br < \fBAugLagrangianFunction\fP .br < LagrangianFunction > > \fBL_BFGSType\fP" .br .RI "\fIShorthand for the type of the L-BFGS optimizer we'll be using\&. \fP" .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "\fBAugLagrangian\fP (LagrangianFunction &\fBfunction\fP)" .br .RI "\fIInitialize the Augmented Lagrangian with the default L-BFGS optimizer\&. \fP" .ti -1c .RI "\fBAugLagrangian\fP (\fBAugLagrangianFunction\fP< LagrangianFunction > &\fBaugfunc\fP, \fBL_BFGSType\fP &\fBlbfgs\fP)" .br .RI "\fIInitialize the Augmented Lagrangian with a custom L-BFGS optimizer\&. \fP" .ti -1c .RI "const LagrangianFunction & \fBFunction\fP () const " .br .RI "\fIGet the LagrangianFunction\&. \fP" .ti -1c .RI "LagrangianFunction & \fBFunction\fP ()" .br .RI "\fIModify the LagrangianFunction\&. \fP" .ti -1c .RI "const arma::vec & \fBLambda\fP () const " .br .RI "\fIGet the Lagrange multipliers\&. \fP" .ti -1c .RI "arma::vec & \fBLambda\fP ()" .br .RI "\fIModify the Lagrange multipliers (i\&.e\&. set them before optimization)\&. \fP" .ti -1c .RI "const \fBL_BFGSType\fP & \fBLBFGS\fP () const " .br .RI "\fIGet the L-BFGS object used for the actual optimization\&. \fP" .ti -1c .RI "\fBL_BFGSType\fP & \fBLBFGS\fP ()" .br .RI "\fIModify the L-BFGS object used for the actual optimization\&. \fP" .ti -1c .RI "bool \fBOptimize\fP (arma::mat &coordinates, const size_t maxIterations=1000)" .br .RI "\fIOptimize the function\&. \fP" .ti -1c .RI "bool \fBOptimize\fP (arma::mat &coordinates, const arma::vec &initLambda, const double initSigma, const size_t maxIterations=1000)" .br .RI "\fIOptimize the function, giving initial estimates for the Lagrange multipliers\&. \fP" .ti -1c .RI "double \fBSigma\fP () const " .br .RI "\fIGet the penalty parameter\&. \fP" .ti -1c .RI "double & \fBSigma\fP ()" .br .RI "\fIModify the penalty parameter\&. \fP" .ti -1c .RI "std::string \fBToString\fP () const " .br .in -1c .SS "Private Attributes" .in +1c .ti -1c .RI "\fBAugLagrangianFunction\fP .br < LagrangianFunction > \fBaugfunc\fP" .br .RI "\fIInternally used \fBAugLagrangianFunction\fP which holds the function we are optimizing\&. \fP" .ti -1c .RI "LagrangianFunction & \fBfunction\fP" .br .RI "\fIFunction to be optimized\&. \fP" .ti -1c .RI "\fBL_BFGSType\fP & \fBlbfgs\fP" .br .RI "\fIThe L-BFGS optimizer that we will use\&. \fP" .ti -1c .RI "\fBL_BFGSType\fP \fBlbfgsInternal\fP" .br .RI "\fIIf the user did not pass an \fBL_BFGS\fP object, we'll use our own internal one\&. \fP" .in -1c .SH "Detailed Description" .PP .SS "templateclass mlpack::optimization::AugLagrangian< LagrangianFunction >" The \fBAugLagrangian\fP class implements the Augmented Lagrangian method of optimization\&. In this scheme, a penalty term is added to the Lagrangian\&. This method is also called the 'method of multipliers'\&. .PP The template class LagrangianFunction must implement the following five methods: .PP .IP "\(bu" 2 double Evaluate(const arma::mat& coordinates); .IP "\(bu" 2 void Gradient(const arma::mat& coordinates, arma::mat& gradient); .IP "\(bu" 2 size_t NumConstraints(); .IP "\(bu" 2 double EvaluateConstraint(size_t index, const arma::mat& coordinates); .IP "\(bu" 2 double GradientConstraint(size_t index, const arma::mat& coordinates, arma::mat& gradient); .PP .PP The number of constraints must be greater than or equal to 0, and EvaluateConstraint() should evaluate the constraint at the given index for the given coordinates\&. Evaluate() should provide the objective function value for the given coordinates\&. .PP \fBTemplate Parameters:\fP .RS 4 \fILagrangianFunction\fP Function which can be optimized by this class\&. .RE .PP .PP Definition at line 59 of file aug_lagrangian\&.hpp\&. .SH "Member Typedef Documentation" .PP .SS "template typedef \fBL_BFGS\fP<\fBAugLagrangianFunction\fP > \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::\fBL_BFGSType\fP" .PP Shorthand for the type of the L-BFGS optimizer we'll be using\&. .PP Definition at line 64 of file aug_lagrangian\&.hpp\&. .SH "Constructor & Destructor Documentation" .PP .SS "template \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::\fBAugLagrangian\fP (LagrangianFunction &function)" .PP Initialize the Augmented Lagrangian with the default L-BFGS optimizer\&. We limit the number of L-BFGS iterations to 1000, rather than the unlimited default L-BFGS\&. .PP \fBParameters:\fP .RS 4 \fIfunction\fP The function to be optimized\&. .RE .PP .SS "template \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::\fBAugLagrangian\fP (\fBAugLagrangianFunction\fP< LagrangianFunction > &augfunc, \fBL_BFGSType\fP &lbfgs)" .PP Initialize the Augmented Lagrangian with a custom L-BFGS optimizer\&. .PP \fBParameters:\fP .RS 4 \fIfunction\fP The function to be optimized\&. This must be a pre-created utility \fBAugLagrangianFunction\fP\&. .br \fIlbfgs\fP The custom L-BFGS optimizer to be used\&. This should have already been initialized with the given \fBAugLagrangianFunction\fP\&. .RE .PP .SH "Member Function Documentation" .PP .SS "template const LagrangianFunction& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::Function () const\fC [inline]\fP" .PP Get the LagrangianFunction\&. .PP Definition at line 117 of file aug_lagrangian\&.hpp\&. .SS "template LagrangianFunction& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::Function ()\fC [inline]\fP" .PP Modify the LagrangianFunction\&. .PP Definition at line 119 of file aug_lagrangian\&.hpp\&. .SS "template const arma::vec& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::Lambda () const\fC [inline]\fP" .PP Get the Lagrange multipliers\&. .PP Definition at line 127 of file aug_lagrangian\&.hpp\&. .SS "template arma::vec& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::Lambda ()\fC [inline]\fP" .PP Modify the Lagrange multipliers (i\&.e\&. set them before optimization)\&. .PP Definition at line 129 of file aug_lagrangian\&.hpp\&. .SS "template const \fBL_BFGSType\fP& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::LBFGS () const\fC [inline]\fP" .PP Get the L-BFGS object used for the actual optimization\&. .PP Definition at line 122 of file aug_lagrangian\&.hpp\&. .SS "template \fBL_BFGSType\fP& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::LBFGS ()\fC [inline]\fP" .PP Modify the L-BFGS object used for the actual optimization\&. .PP Definition at line 124 of file aug_lagrangian\&.hpp\&. .SS "template bool \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::Optimize (arma::mat &coordinates, const size_tmaxIterations = \fC1000\fP)" .PP Optimize the function\&. The value '1' is used for the initial value of each Lagrange multiplier\&. To set the Lagrange multipliers yourself, use the other overload of \fBOptimize()\fP\&. .PP \fBParameters:\fP .RS 4 \fIcoordinates\fP Output matrix to store the optimized coordinates in\&. .br \fImaxIterations\fP Maximum number of iterations of the Augmented Lagrangian algorithm\&. 0 indicates no maximum\&. .br \fIsigma\fP Initial penalty parameter\&. .RE .PP .SS "template bool \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::Optimize (arma::mat &coordinates, const arma::vec &initLambda, const doubleinitSigma, const size_tmaxIterations = \fC1000\fP)" .PP Optimize the function, giving initial estimates for the Lagrange multipliers\&. The vector of Lagrange multipliers will be modified to contain the Lagrange multipliers of the final solution (if one is found)\&. .PP \fBParameters:\fP .RS 4 \fIcoordinates\fP Output matrix to store the optimized coordinates in\&. .br \fIinitLambda\fP Vector of initial Lagrange multipliers\&. Should have length equal to the number of constraints\&. .br \fIinitSigma\fP Initial penalty parameter\&. .br \fImaxIterations\fP Maximum number of iterations of the Augmented Lagrangian algorithm\&. 0 indicates no maximum\&. .RE .PP .SS "template double \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::Sigma () const\fC [inline]\fP" .PP Get the penalty parameter\&. .PP Definition at line 132 of file aug_lagrangian\&.hpp\&. .SS "template double& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::Sigma ()\fC [inline]\fP" .PP Modify the penalty parameter\&. .PP Definition at line 134 of file aug_lagrangian\&.hpp\&. .SS "template std::string \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::ToString () const" .SH "Member Data Documentation" .PP .SS "template \fBAugLagrangianFunction\fP \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::augfunc\fC [private]\fP" .PP Internally used \fBAugLagrangianFunction\fP which holds the function we are optimizing\&. This isn't publically accessible, but we provide ways to get to the Lagrange multipliers and the penalty parameter sigma\&. .PP Definition at line 146 of file aug_lagrangian\&.hpp\&. .PP Referenced by mlpack::optimization::AugLagrangian< mlpack::optimization::LRSDPFunction >::Lambda(), and mlpack::optimization::AugLagrangian< mlpack::optimization::LRSDPFunction >::Sigma()\&. .SS "template LagrangianFunction& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::function\fC [private]\fP" .PP Function to be optimized\&. .PP Definition at line 141 of file aug_lagrangian\&.hpp\&. .SS "template \fBL_BFGSType\fP& \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::lbfgs\fC [private]\fP" .PP The L-BFGS optimizer that we will use\&. .PP Definition at line 152 of file aug_lagrangian\&.hpp\&. .PP Referenced by mlpack::optimization::AugLagrangian< mlpack::optimization::LRSDPFunction >::LBFGS()\&. .SS "template \fBL_BFGSType\fP \fBmlpack::optimization::AugLagrangian\fP< LagrangianFunction >::lbfgsInternal\fC [private]\fP" .PP If the user did not pass an \fBL_BFGS\fP object, we'll use our own internal one\&. .PP Definition at line 149 of file aug_lagrangian\&.hpp\&. .SH "Author" .PP Generated automatically by Doxygen for MLPACK from the source code\&.