Ejemplo n.º 1
0
        public void EWMA_should_calculate_for_alpha_1_0_and_max_bias_towards_latest_value()
        {
            var e0 = new NodeMetrics.Types.EWMA(100, 1.0);

            e0.Value.Should().BeApproximately(100, 0.01);
            var e1 = e0 + 1;

            e1.Value.Should().BeApproximately(1, 0.01);
            var e2 = e1 + 57;

            e2.Value.Should().BeApproximately(57, 0.01);
            var e3 = e2 + 10;

            e3.Value.Should().BeApproximately(10, 0.01);
        }
Ejemplo n.º 2
0
        public void EWMA_should_calculate_correct_ewma_for_normal_decay()
        {
            var e0 = new NodeMetrics.Types.EWMA(1000, 2.0 / (1 + 10));

            e0.Value.Should().BeApproximately(1000, 0.01);
            var e1 = e0 + 10.0;

            e1.Value.Should().BeApproximately(820.0, 0.01);
            var e2 = e1 + 10.0;

            e2.Value.Should().BeApproximately(672.73, 0.01);
            var e3 = e2 + 10.0;

            e3.Value.Should().BeApproximately(552.23, 0.01);
            var e4 = e3 + 10.0;

            e4.Value.Should().BeApproximately(453.64, 0.01);

            var en = Enumerable.Range(1, 100).Aggregate(e0, (e, _) => e + 10.0);

            en.Value.Should().BeApproximately(10.0, 0.1);
        }
Ejemplo n.º 3
0
        public void EWMA_should_be_same_for_constant_values()
        {
            var e = new NodeMetrics.Types.EWMA(100, 0.18) + 100 + 100 + 100;

            e.Value.Should().BeApproximately(100, 0.001);
        }