From b0d2b8e7e753c449b692bc9ec9cf95a847675646 Mon Sep 17 00:00:00 2001 From: Stephen Tu Date: Fri, 2 Jan 2015 14:20:47 -0800 Subject: [PATCH] don't hardcore Evaluate for the lovasz theta objective function --- src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp b/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp index f6ac6aee304..9bbdd225c5d 100644 --- a/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp +++ b/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp @@ -34,7 +34,13 @@ LRSDPFunction::LRSDPFunction(const size_t numSparseConstraints, double LRSDPFunction::Evaluate(const arma::mat& coordinates) const { - return -accu(coordinates * trans(coordinates)); + const arma::mat rrt = coordinates * trans(coordinates); + double objective = 0.; + if (hasSparseObjective()) + objective += trace(SparseC() * rrt); + if (hasDenseObjective()) + objective += trace(DenseC() * rrt); + return objective; } void LRSDPFunction::Gradient(const arma::mat& /* coordinates */,