Free cookie consent management tool by TermsFeed Policy Generator

source: branches/DataAnalysis.IslandAlgorithms/HeuristicLab.Tests/ConsecutiveSamplesEvaluatorTest.cs @ 16682

Last change on this file since 16682 was 10178, checked in by mkommend, 11 years ago

#1997: Follow up commit to r10177. Added different evaluators for symbolic island algorithms, unit test for consecutive samples evaluator.

File size: 8.7 KB
RevLine 
[10178]1using System.Collections;
2using System.Collections.Generic;
3using System.Linq;
4using HeuristicLab.Algorithms.DataAnalysis.Symbolic;
5using HeuristicLab.Data;
6using Microsoft.VisualStudio.TestTools.UnitTesting;
7
8namespace HeuristicLab.Tests {
9  [TestClass]
10  public class ConsecutiveSamplesEvaluatorTest {
11    [TestMethod]
12    public void GenerateRowsTest() {
13
14      IntRange samples = new IntRange(0, 50);
15      IntRange fixedSamples = new IntRange(0, 30);
16      IEnumerable<int> rows = null;
17
18      //test simple case
19      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 0);
20      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10)));
21      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 1);
22      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10)));
23      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 2);
24      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10)));
25
26      for (int i = 0; i < 10; i++) {
27        rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: i);
28        var match = Enumerable.Range(30 + i % 2 * 10, 10);
29        Assert.IsTrue(rows.SequenceEqual(match));
30      }
31
32      //test with overlap
33      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 0);
34      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10)));
35      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 1);
36      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(35, 10)));
37      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 2);
38      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10)));
39      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 3);
40      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(45, 5).Concat(Enumerable.Range(30, 5))));
41      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 5, iteration: 4);
42      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10)));
43
44      //test with overlap
45      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 0);
46      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(30, 10)));
47      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 1);
48      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(33, 10)));
49      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 2);
50      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(36, 10)));
51      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 3);
52      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(39, 10)));
53      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 4);
54      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(42, 8).Concat(Enumerable.Range(30, 2))));
55      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 5);
56      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(45, 5).Concat(Enumerable.Range(30, 5))));
57      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 6);
58      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(48, 2).Concat(Enumerable.Range(30, 8))));
59      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 7, iteration: 7);
60      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(31, 10)));
61
62
63      samples = new IntRange(0, 60);
64      fixedSamples = new IntRange(20, 40);
65
66      //test simple case
67      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 0);
68      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10)));
69      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 1);
70      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(50, 10)));
71      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 2);
72      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(0, 10)));
73      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 3);
74      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(10, 10)));
75
76      //test with overlap
77      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 0);
78      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 20).Concat(Enumerable.Range(0, 10))));
79      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 1);
80      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(45, 15).Concat(Enumerable.Range(0, 15))));
81      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 2);
82      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(50, 10).Concat(Enumerable.Range(0, 20))));
83      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 3);
84      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(55, 5).Concat(Enumerable.Range(0, 20).Concat(Enumerable.Range(40, 5)))));
85      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 4);
86      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(0, 20).Concat(Enumerable.Range(40, 10))));
87      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 30, overlap: 25, iteration: 5);
88      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(5, 15).Concat(Enumerable.Range(40, 15))));
89
90      samples = new IntRange(10, 60);
91      fixedSamples = new IntRange(20, 40);
92      //test simple case
93      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 0);
94      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10)));
95      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 1);
96      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(50, 10)));
97      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 2);
98      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(10, 10)));
99      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 10, overlap: 0, iteration: 3);
100      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 10)));
101
102      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 0);
103      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(40, 20)));
104      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 1);
105      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(45, 15).Concat(Enumerable.Range(10, 5))));
106      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 2);
107      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(50, 10).Concat(Enumerable.Range(10, 10))));
108      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 3);
109      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(55, 5).Concat(Enumerable.Range(10, 10).Concat(Enumerable.Range(40, 5)))));
110      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 4);
111      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(10, 10).Concat(Enumerable.Range(40, 10))));
112      rows = ConsecutiveSamplesEvaluator.GenerateRows(samples, fixedSamples, consecutiveSamples: 20, overlap: 15, iteration: 5);
113      Assert.IsTrue(rows.SequenceEqual(Enumerable.Range(15, 5).Concat(Enumerable.Range(40, 15))));
114
115
116      //error cases
117      //consecutive samples larger than remaining samples
118      //fixed samples partition invalid
119    }
120  }
121}
Note: See TracBrowser for help on using the repository browser.