diff --git a/apps/compare_convergence.cpp b/apps/compare_convergence.cpp index b154ac487d031e129229dbd475600eff8ef4fecb..e423cd2b8b6a7f7b690e430dab4bbe186a59487e 100644 --- a/apps/compare_convergence.cpp +++ b/apps/compare_convergence.cpp @@ -51,7 +51,6 @@ int main() { for (uint32_t i = 0; i < dims.size(); ++i) { uint32_t dim = dims[i]; - objective.dim() = dim; initial_point.resize(dim); initial_point.fill(-1); diff --git a/optimization/objectives/paraboloid.h b/optimization/objectives/paraboloid.h index c10e1dbd4e7dbe16f21130e5098842e271d5e6ba..6355e2c7a84a05ce43a6c59ac2218a8121b3274a 100644 --- a/optimization/objectives/paraboloid.h +++ b/optimization/objectives/paraboloid.h @@ -15,28 +15,23 @@ public: static constexpr char const* name = "paraboloid"; Paraboloid() {} - Paraboloid(uint32_t dim): dim_(dim) {} - - uint32_t dim() const { return dim_; } - uint32_t& dim() { return dim_; } void operator()(Input const& x, Scalar& value) const { + uint32_t const dim = x.size(); value = 0; - for (uint32_t d = 0; d < dim_; ++d) { + for (uint32_t d = 0; d < dim; ++d) { value += x[d] * x[d]; } } void operator()(Input const& x, Scalar& value, Gradient& gradient) const { + uint32_t const dim = x.size(); value = 0; - for (uint32_t d = 0; d < dim_; ++d) { + for (uint32_t d = 0; d < dim; ++d) { value += x[d] * x[d]; gradient[d] = 2 * x[d]; } } - -private: - uint32_t dim_; }; } diff --git a/optimization/objectives/rosenbrock.h b/optimization/objectives/rosenbrock.h index 607436d4806f026f3d88875f4f068b41efda3749..be5021898affa0c9c7d0cd71ada4cc1f06d74607 100644 --- a/optimization/objectives/rosenbrock.h +++ b/optimization/objectives/rosenbrock.h @@ -11,14 +11,12 @@ class Rosenbrock { public: static constexpr char const* name = "rosenbrock"; - Rosenbrock(): dim_(2) {} - - uint32_t dim() const { return dim_; } - uint32_t& dim() { return dim_; } + Rosenbrock() {} void operator()(VectorNs<N> const& x, Scalar& value) { + uint32_t const dim = x.size(); value = Scalar(0); - for (uint32_t i = 1; i < dim_; ++i) { + for (uint32_t i = 1; i < dim; ++i) { Scalar const x_squared = x[i - 1] * x[i - 1]; Scalar const tmp_1 = (1 - x[i - 1]); Scalar const tmp_2 = (x[i] - x_squared); @@ -27,10 +25,11 @@ public: } void operator()(VectorNs<N> const& x, Scalar& value, VectorNs<N>& gradient) { + uint32_t const dim = x.size(); value = Scalar(0); - gradient.resize(dim_); + gradient.resize(dim); gradient.setZero(); - for (uint32_t i = 1; i < dim_; ++i) { + for (uint32_t i = 1; i < dim; ++i) { Scalar const x_squared = x[i - 1] * x[i - 1]; Scalar const tmp_1 = (1 - x[i - 1]); Scalar const tmp_2 = (x[i] - x_squared); @@ -39,10 +38,6 @@ public: gradient[i] += 200 * tmp_2; } } - -private: - // This is redundant for N != -1. - uint32_t dim_; }; } diff --git a/optimization/optimizers/cma_es/main.cpp b/optimization/optimizers/cma_es/main.cpp index eb159394daf3b5f522a7db99e22409d01cdf7cd7..b6c2da6531ab1facd7e18fe559979a086a843d03 100644 --- a/optimization/optimizers/cma_es/main.cpp +++ b/optimization/optimizers/cma_es/main.cpp @@ -54,10 +54,8 @@ int main(int const argc, char const** argv) { initial_std_dev.fill(std_dev); //using Objective = Paraboloid<Vector2<Scalar>>; - //Objective objective(dim); using Objective = Rosenbrock<-1>; Objective objective; - objective.dim() = dim; CmaEs optimizer(dim, pop_size, seed, max_evaluations, max_iterations, rel_y_tol); CmaEsLogEverything log; diff --git a/optimization/optimizers/conjugate_gradient_descent/main.cpp b/optimization/optimizers/conjugate_gradient_descent/main.cpp index 215de9bb43bdc0e20ad224af20e71e366692d2cf..73276d594679f83d185a789988f26f8f7121a711 100644 --- a/optimization/optimizers/conjugate_gradient_descent/main.cpp +++ b/optimization/optimizers/conjugate_gradient_descent/main.cpp @@ -47,10 +47,8 @@ int main(int const argc, char const** argv) { } //using Objective = Paraboloid<Vector2<Scalar>>; - //Objective objective(dim); using Objective = Rosenbrock<-1>; Objective objective; - objective.dim() = dim; ConjugateGradientDescent<-1> optimizer( gradient_threshold, diff --git a/optimization/optimizers/gradient_descent/main.cpp b/optimization/optimizers/gradient_descent/main.cpp index 3ab9d34129d6cd234c22ab19d0e8e1ce09ae6e07..e7872627751e586216f7571dde06edb0a367fce2 100644 --- a/optimization/optimizers/gradient_descent/main.cpp +++ b/optimization/optimizers/gradient_descent/main.cpp @@ -46,10 +46,8 @@ int main(int const argc, char const** argv) { } //using Objective = Paraboloid<Vector2<Scalar>>; - //Objective objective(dim); using Objective = Rosenbrock<-1>; Objective objective; - objective.dim() = dim; GradientDescent<-1> optimizer(learning_rate, max_evaluations, gradient_threshold); GradientDescentLogEverything<-1> log; diff --git a/optimization/optimizers/nelder_mead/main.cpp b/optimization/optimizers/nelder_mead/main.cpp index 8d73373a5b9b55d8f06a0a81388deaa3cc0aee5e..95c1c4355bc8b07950a1b0eae41ffab66b414ca9 100644 --- a/optimization/optimizers/nelder_mead/main.cpp +++ b/optimization/optimizers/nelder_mead/main.cpp @@ -38,10 +38,8 @@ int main(int const argc, char const** argv) { } //using Objective = Paraboloid<Vector2<Scalar>>; - //Objective objective(dim); using Objective = Rosenbrock<-1>; Objective objective; - objective.dim() = dim; NelderMead<-1> optimizer(max_evaluations, relative_y_tolerance); NelderMeadLogEverything<-1> log;