MLPACK  1.0.4
aug_lagrangian_test_functions.hpp
Go to the documentation of this file.
00001 
00022 #ifndef __MLPACK_CORE_OPTIMIZERS_AUG_LAGRANGIAN_TEST_FUNCTIONS_HPP
00023 #define __MLPACK_CORE_OPTIMIZERS_AUG_LAGRANGIAN_TEST_FUNCTIONS_HPP
00024 
00025 #include <mlpack/core.hpp>
00026 
00027 namespace mlpack {
00028 namespace optimization {
00029 
00038 class AugLagrangianTestFunction
00039 {
00040  public:
00041   AugLagrangianTestFunction();
00042   AugLagrangianTestFunction(const arma::mat& initial_point);
00043 
00044   double Evaluate(const arma::mat& coordinates);
00045   void Gradient(const arma::mat& coordinates, arma::mat& gradient);
00046 
00047   size_t NumConstraints() const { return 1; }
00048 
00049   double EvaluateConstraint(const size_t index, const arma::mat& coordinates);
00050   void GradientConstraint(const size_t index,
00051                           const arma::mat& coordinates,
00052                           arma::mat& gradient);
00053 
00054   const arma::mat& GetInitialPoint() const { return initialPoint; }
00055 
00056  private:
00057   arma::mat initialPoint;
00058 };
00059 
00071 class GockenbachFunction
00072 {
00073  public:
00074   GockenbachFunction();
00075   GockenbachFunction(const arma::mat& initial_point);
00076 
00077   double Evaluate(const arma::mat& coordinates);
00078   void Gradient(const arma::mat& coordinates, arma::mat& gradient);
00079 
00080   size_t NumConstraints() const { return 2; };
00081 
00082   double EvaluateConstraint(const size_t index, const arma::mat& coordinates);
00083   void GradientConstraint(const size_t index,
00084                           const arma::mat& coordinates,
00085                           arma::mat& gradient);
00086 
00087   const arma::mat& GetInitialPoint() const { return initialPoint; }
00088 
00089  private:
00090   arma::mat initialPoint;
00091 };
00092 
00093 
00094 
00115 class LovaszThetaSDP
00116 {
00117  public:
00118   LovaszThetaSDP();
00119 
00128   LovaszThetaSDP(const arma::mat& edges);
00129 
00130   double Evaluate(const arma::mat& coordinates);
00131   void Gradient(const arma::mat& coordinates, arma::mat& gradient);
00132 
00133   size_t NumConstraints() const;
00134 
00135   double EvaluateConstraint(const size_t index, const arma::mat& coordinates);
00136   void GradientConstraint(const size_t index,
00137                           const arma::mat& coordinates,
00138                           arma::mat& gradient);
00139 
00140   const arma::mat& GetInitialPoint();
00141 
00142   const arma::mat& Edges() const { return edges; }
00143   arma::mat&       Edges()       { return edges; }
00144 
00145  private:
00146   arma::mat edges;
00147   size_t vertices;
00148 
00149   arma::mat initialPoint;
00150 };
00151 
00152 }; // namespace optimization
00153 }; // namespace mlpack
00154 
00155 #endif // __MLPACK_CORE_OPTIMIZERS_AUG_LAGRANGIAN_TEST_FUNCTIONS_HPP