package lbms.plugins.mldht.utils; public class ExponentialWeightendMovingAverage { private double weight = 0.3; private double average = Double.NaN; public void updateAverage(double value) { if(Double.isNaN(average)) average = value; else average = value * weight + average * (1.0 - weight); } public ExponentialWeightendMovingAverage setWeight(double weight) { this.weight = weight; return this; } public double getAverage() { return average; } public double getAverage(double defaultValue) { return Double.isNaN(average) ? defaultValue : average; } public ExponentialWeightendMovingAverage setValue(double average) { this.average = average; return this; } }