[mlpack-git] master: Slight style changes, and comment utility functions and put them inside the relevant namespace. (42d9d25)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Thu Mar 5 22:09:11 EST 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/904762495c039e345beba14c1142fd719b3bd50e...f94823c800ad6f7266995c700b1b630d5ffdcf40

>---------------------------------------------------------------

commit 42d9d25fbdd756aa1192bc25be61609c0e98de37
Author: ryan <ryan at ratml.org>
Date:   Wed Dec 31 20:39:47 2014 -0500

    Slight style changes, and comment utility functions and put them inside the relevant namespace.


>---------------------------------------------------------------

42d9d25fbdd756aa1192bc25be61609c0e98de37
 .../core/optimizers/lrsdp/lrsdp_function.cpp       | 56 +++++++++++-----------
 1 file changed, 29 insertions(+), 27 deletions(-)

diff --git a/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp b/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp
index 31d4bd7..f6ac6ae 100644
--- a/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp
+++ b/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp
@@ -75,46 +75,50 @@ std::string LRSDPFunction::ToString() const
   return convert.str();
 }
 
+namespace mlpack {
+namespace optimization {
+
+//! Utility function for calculating part of the objective when AugLagrangian is
+//! used with an LRSDPFunction.
 template <typename MatrixType>
 static inline void
-updateObjective(double &objective,
-                const arma::mat &rrt,
-                const std::vector<MatrixType> &ais,
-                const arma::vec &bis,
-                const arma::vec &lambda,
-                size_t lambda_offset,
-                double sigma)
+UpdateObjective(double& objective,
+                const arma::mat& rrt,
+                const std::vector<MatrixType>& ais,
+                const arma::vec& bis,
+                const arma::vec& lambda,
+                const size_t lambdaOffset,
+                const double sigma)
 {
   for (size_t i = 0; i < ais.size(); ++i)
   {
     // Take the trace subtracted by the b_i.
-    double constraint = trace(ais[i] * rrt) - bis[i];
-    objective -= (lambda[lambda_offset + i] * constraint);
+    const double constraint = trace(ais[i] * rrt) - bis[i];
+    objective -= (lambda[lambdaOffset + i] * constraint);
     objective += (sigma / 2.) * constraint * constraint;
   }
 }
 
+//! Utility function for calculating part of the gradient when AugLagrangian is
+//! used with an LRSDPFunction.
 template <typename MatrixType>
 static inline void
-updateGradient(arma::mat &s,
-               const arma::mat &rrt,
-               const std::vector<MatrixType> &ais,
-               const arma::vec &bis,
-               const arma::vec &lambda,
-               size_t lambda_offset,
-               double sigma)
+UpdateGradient(arma::mat& s,
+               const arma::mat& rrt,
+               const std::vector<MatrixType>& ais,
+               const arma::vec& bis,
+               const arma::vec& lambda,
+               const size_t lambdaOffset,
+               const double sigma)
 {
   for (size_t i = 0; i < ais.size(); ++i)
   {
     const double constraint = trace(ais[i] * rrt) - bis[i];
-    const double y = lambda[lambda_offset + i] - sigma * constraint;
+    const double y = lambda[lambdaOffset + i] - sigma * constraint;
     s -= y * ais[i];
   }
 }
 
-namespace mlpack {
-namespace optimization {
-
 // Template specializations for function and gradient evaluation.
 template<>
 double AugLagrangianFunction<LRSDPFunction>::Evaluate(
@@ -141,12 +145,10 @@ double AugLagrangianFunction<LRSDPFunction>::Evaluate(
     objective += trace(function.DenseC() * rrt);
 
   // Now each constraint.
-  updateObjective(
-      objective, rrt, function.SparseA(), function.SparseB(),
+  UpdateObjective(objective, rrt, function.SparseA(), function.SparseB(),
       lambda, 0, sigma);
-  updateObjective(
-      objective, rrt, function.DenseA(), function.DenseB(),
-      lambda, function.NumSparseConstraints(), sigma);
+  UpdateObjective(objective, rrt, function.DenseA(), function.DenseB(), lambda,
+      function.NumSparseConstraints(), sigma);
 
   return objective;
 }
@@ -171,10 +173,10 @@ void AugLagrangianFunction<LRSDPFunction>::Gradient(
   if (function.hasDenseObjective())
     s += function.DenseC();
 
-  updateGradient(
+  UpdateGradient(
       s, rrt, function.SparseA(), function.SparseB(),
       lambda, 0, sigma);
-  updateGradient(
+  UpdateGradient(
       s, rrt, function.DenseA(), function.DenseB(),
       lambda, function.NumSparseConstraints(), sigma);
 



More information about the mlpack-git mailing list