1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.math4.neuralnet.sofm;
19
20 import org.junit.Test;
21 import org.junit.Assert;
22
23 import static org.junit.jupiter.api.Assertions.assertThrows;
24
25
26
27
28 public class NeighbourhoodSizeFunctionFactoryTest {
29
30 @Test
31 public void testExponentialDecayPrecondition1() {
32 assertThrows(IllegalArgumentException.class, () ->
33 NeighbourhoodSizeFunctionFactory.exponentialDecay(0, 0, 2));
34 }
35
36 @Test
37 public void testExponentialDecayPrecondition2() {
38 assertThrows(IllegalArgumentException.class, () ->
39 NeighbourhoodSizeFunctionFactory.exponentialDecay(1, 0, 2));
40 }
41
42 @Test
43 public void testExponentialDecayPrecondition3() {
44 assertThrows(IllegalArgumentException.class, () ->
45 NeighbourhoodSizeFunctionFactory.exponentialDecay(1, 1, 100));
46 }
47
48 @Test
49 public void testExponentialDecayPrecondition4() {
50 assertThrows(IllegalArgumentException.class, () ->
51 NeighbourhoodSizeFunctionFactory.exponentialDecay(2, 1, 0));
52 }
53
54 @Test
55 public void testExponentialDecayTrivial() {
56 final int n = 65;
57 final int init = 4;
58 final int valueAtN = 3;
59 final NeighbourhoodSizeFunction f
60 = NeighbourhoodSizeFunctionFactory.exponentialDecay(init, valueAtN, n);
61
62 Assert.assertEquals(init, f.value(0));
63 Assert.assertEquals(valueAtN, f.value(n));
64 Assert.assertEquals(0, f.value(Long.MAX_VALUE));
65 }
66
67 @Test
68 public void testQuasiSigmoidDecayPrecondition1() {
69 assertThrows(IllegalArgumentException.class, () ->
70 NeighbourhoodSizeFunctionFactory.quasiSigmoidDecay(0d, -1d, 2));
71 }
72
73 @Test
74 public void testQuasiSigmoidDecayPrecondition3() {
75 assertThrows(IllegalArgumentException.class, () ->
76 NeighbourhoodSizeFunctionFactory.quasiSigmoidDecay(1d, 0d, 100));
77 }
78
79 @Test
80 public void testQuasiSigmoidDecayPrecondition4() {
81 assertThrows(IllegalArgumentException.class, () ->
82 NeighbourhoodSizeFunctionFactory.quasiSigmoidDecay(1d, -1d, 0));
83 }
84
85 @Test
86 public void testQuasiSigmoidDecayTrivial() {
87 final int n = 65;
88 final double init = 4;
89 final double slope = -1e-1;
90 final NeighbourhoodSizeFunction f
91 = NeighbourhoodSizeFunctionFactory.quasiSigmoidDecay(init, slope, n);
92
93 Assert.assertEquals(init, f.value(0), 0d);
94 Assert.assertEquals(0, f.value(Long.MAX_VALUE), 0d);
95 }
96
97 }