package cs437.som.neighborhood;

/**
 * Neighborhood width strategy for self-organizing maps that decays the width
 * exponentially as the iterations progress.
 */
public class ExponentialDecayNeighborhoodWidth {
    private final double initialNeighborhoodWidth;
    private double expectedIterations;

    public ExponentialDecayNeighborhoodWidth(double initialWidth) {
        initialNeighborhoodWidth = initialWidth;
    }

    public void setExpectedIterations(int expectedIterations) {
        this.expectedIterations = expectedIterations;
    }

    public double neighborhoodWidth(int iteration) {
        return initialNeighborhoodWidth * Math.exp(-iteration / expectedIterations);
    }

    @Override
    public String toString() {
        return "ExponentialDecayNeighborhoodWidth";
    }
}

@@ -153,16 +153,294 @@
 ogress.%0A
+ *%0A * The exact behavior follows the formula:%0A *      w_i * e%5E(-t / t_max)%0A *  where%0A *      w_i   is the initial width of the neighborhood%0A *      e     is the base of the natural logarithm%0A *      t     is the current iteration%0A *      t_max is the maximum expected iteration%0A
  */%0Apubl

Add formula to exp. decay NW class.