24 #ifndef SOM_NEIGHBORHOODFUNC_H
25 #define SOM_NEIGHBORHOODFUNC_H
33 namespace NeighborhoodFunc {
57 const double time_constant =
static_cast<double>(total_iterations) /
m_sigma_log;
58 const double sigma =
m_init_sigma *
std::exp(-1. * static_cast<double>(iteration) / time_constant);
62 const auto x =
static_cast<double>(
static_cast<int>(bmu.first) - static_cast<int>(cell.first));
63 const auto y =
static_cast<double>(
static_cast<int>(bmu.second) - static_cast<int>(cell.second));
64 const auto dist_square = x * x + y * y;
67 return std::exp(-1. * dist_square / (2. * m_sigma_square));
double operator()(std::pair< std::size_t, std::size_t > bmu, std::pair< std::size_t, std::size_t > cell, std::size_t iteration, std::size_t total_iterations)
const double m_init_sigma
double operator()(std::pair< std::size_t, std::size_t > bmu, std::pair< std::size_t, std::size_t > cell, std::size_t iteration, std::size_t total_iterations)
Kohonen(std::size_t x_size, std::size_t y_size, double sigma_cutoff_mult)
const double m_cutoff_mult_square
std::size_t m_last_iteration
LinearUnitDisk(double initial_radius)