Mathematical optimization (Differential Evolution).
#include <numbers>
{
using std::numbers::pi;
constexpr double A = 10.0;
const double rastrigin =
+ std::accumulate(x.
begin(), x.
end(), 0.0,
[=](double sum, double xi)
{
return sum + xi*xi - A*std::cos(2*pi*xi);
});
return -rastrigin;
}
int main()
{
log::reporting_level = log::lINFO;
const unsigned dimensions(5);
prob.params.evolution.generations = 1000;
const auto solution(res.best_individual());
const auto value(res.best_measurements().fitness);
std::cout << "Minimum found: " << *value << '\n';
std::cout << "Coordinates: [ ";
for (auto xi : solution)
std::cout << xi << ' ';
std::cout << "]\n";
}
search_stats< individual_t, fitness_t > run(unsigned=1, const model_measurements< fitness_t > &={})
Definition search.h:230
Definition de/individual.h:36
Definition de/problem.h:29
Definition de/search.h:28
std::size_t parameters() const noexcept
Definition vector_individual.h:173
const_iterator begin() const noexcept
Definition vector_individual.h:65
const_iterator end() const noexcept
Definition vector_individual.h:75
std::size_t individuals
Definition parameters.h:54