MLPACK
1.0.4
|
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