Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/04/19 16:27:08 (5 years ago)
Author:
gkronber
Message:

#2994: refactor / cleanup of unit tests related to intervals and new interpreters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2994-AutoDiffForIntervals/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs

    r17303 r17318  
    266266            Assert.AreEqual(sum, s, 1e-12, errorMessage);
    267267          }
    268         }
    269       }
    270     }
    271 
    272     [TestMethod]
    273     [TestCategory("Problems.DataAnalysis.Symbolic")]
    274     [TestProperty("Time", "long")]
    275     public void TestVectorInterpretersEstimatedValuesConsistency() {
    276       var twister = new MersenneTwister();
    277       twister.Seed(31415);
    278       const int numRows = 100;
    279       var dataset = Util.CreateRandomDataset(twister, numRows, Columns);
    280 
    281       var grammar = new TypeCoherentExpressionGrammar();
    282       grammar.ConfigureAsDefaultRegressionGrammar();
    283       grammar.Symbols.First(s => s is Square).Enabled = true;
    284       grammar.Symbols.First(s => s is SquareRoot).Enabled = true;
    285       grammar.Symbols.First(s => s is Cube).Enabled = true;
    286       grammar.Symbols.First(s => s is CubeRoot).Enabled = true;
    287       grammar.Symbols.First(s => s is Exponential).Enabled = true;
    288       grammar.Symbols.First(s => s is Logarithm).Enabled = true;
    289       grammar.Symbols.First(s => s is Sine).Enabled = true;
    290       grammar.Symbols.First(s => s is Cosine).Enabled = true;
    291       grammar.Symbols.First(s => s is Absolute).Enabled = true;
    292       grammar.Symbols.First(s => s is AnalyticQuotient).Enabled = true;
    293 
    294       var refInterpreter = new SymbolicDataAnalysisExpressionTreeLinearInterpreter();
    295       var newInterpreter = new VectorEvaluator();
    296       var newAutoDiffInterpreter = new VectorAutoDiffEvaluator();
    297 
    298       var rows = Enumerable.Range(0, numRows).ToList();
    299       var randomTrees = Util.CreateRandomTrees(twister, dataset, grammar, N, 1, 10, 0, 0);
    300       foreach (ISymbolicExpressionTree tree in randomTrees) {
    301         Util.InitTree(tree, twister, new List<string>(dataset.VariableNames));
    302       }
    303 
    304       for (int i = 0; i < randomTrees.Length; ++i) {
    305         var tree = randomTrees[i];
    306         var refValues = refInterpreter.GetSymbolicExpressionTreeValues(tree, dataset, rows).ToArray();
    307         var newValues = newInterpreter.Evaluate(tree, dataset, rows.ToArray()).ToArray();
    308         var newAutoDiffValues = new double[numRows];
    309         newAutoDiffInterpreter.Evaluate(tree, dataset, rows.ToArray(), new ISymbolicExpressionTreeNode[0], newAutoDiffValues, null);
    310 
    311         for (int j = 0; j < rows.Count; j++) {
    312           if (double.IsNaN(refValues[j]) && double.IsNaN(newValues[j]) && double.IsNaN(newAutoDiffValues[j])) continue;
    313           string errorMessage = string.Format("Interpreters do not agree on tree {0} {1}.", i, (new InfixExpressionFormatter()).Format(tree));
    314 
    315           var relDelta = Math.Abs(refValues[j]) * 1e-5;
    316           Assert.AreEqual(refValues[j], newValues[j], relDelta, errorMessage);
    317           Assert.AreEqual(newValues[j], newAutoDiffValues[j], relDelta, errorMessage);
    318268        }
    319269      }
Note: See TracChangeset for help on using the changeset viewer.