Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/20/11 17:45:14 (13 years ago)
Author:
gkronber
Message:

#1480 added check if row index lies within the possible range of the dataset and implemented interpretation of time series symbols in the IL emitting interpreter. Added test cases for evaluation of time series symbols.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tests/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs

    r6769 r6809  
    110110        { 1.0, 1.0, 1.0 },
    111111        { 2.0, 2.0, 2.0 },
    112         { 3.0, 1.0, 2.0 }
     112        { 3.0, 1.0, 2.0 },
     113        { 4.0, 1.0, 1.0 },
     114        { 5.0, 2.0, 2.0 },
     115        { 6.0, 1.0, 2.0 },
     116        { 7.0, 1.0, 1.0 },
     117        { 8.0, 2.0, 2.0 },
     118        { 9.0, 1.0, 2.0 },
     119        { 10.0, 1.0, 1.0 },
     120        { 11.0, 2.0, 2.0 },
     121        { 12.0, 1.0, 2.0 }
    113122      });
    114123
     
    124133        { 1.0, 1.0, 1.0 },
    125134        { 2.0, 2.0, 2.0 },
    126         { 3.0, 1.0, 2.0 }
     135        { 3.0, 1.0, 2.0 },
     136        { 4.0, 1.0, 1.0 },
     137        { 5.0, 2.0, 2.0 },
     138        { 6.0, 1.0, 2.0 },
     139        { 7.0, 1.0, 1.0 },
     140        { 8.0, 2.0, 2.0 },
     141        { 9.0, 1.0, 2.0 },
     142        { 10.0, 1.0, 1.0 },
     143        { 11.0, 2.0, 2.0 },
     144        { 12.0, 1.0, 2.0 }
    127145      });
    128146
     
    297315      Evaluate(interpreter, ds, "(lagVariable 1.0 a 0) ", 2, ds.GetDoubleValue("A", 2));
    298316      Evaluate(interpreter, ds, "(lagVariable 1.0 a 1) ", 0, ds.GetDoubleValue("A", 1));
     317
     318      // integral
     319      Evaluate(interpreter, ds, "(integral -1.0 (variable 1.0 a)) ", 1, ds.GetDoubleValue("A", 0) + ds.GetDoubleValue("A", 1));
     320      Evaluate(interpreter, ds, "(integral -1.0 (lagVariable 1.0 a 1)) ", 1, ds.GetDoubleValue("A", 1) + ds.GetDoubleValue("A", 2));
     321      Evaluate(interpreter, ds, "(integral -2.0 (variable 1.0 a)) ", 2, ds.GetDoubleValue("A", 0) + ds.GetDoubleValue("A", 1) + ds.GetDoubleValue("A", 2));
     322      Evaluate(interpreter, ds, "(integral -1.0 (* (variable 1.0 a) (variable 1.0 b)))", 1, ds.GetDoubleValue("A", 0) * ds.GetDoubleValue("B", 0) + ds.GetDoubleValue("A", 1) * ds.GetDoubleValue("B", 1));
     323      Evaluate(interpreter, ds, "(integral -2.0 3.0)", 1, 9.0);
     324
     325      // derivative
     326      // (f_0 + 2 * f_1 - 2 * f_3 - f_4) / 8; // h = 1
     327      Evaluate(interpreter, ds, "(diff (variable 1.0 a)) ", 5, (ds.GetDoubleValue("A", 5) + 2 * ds.GetDoubleValue("A", 4) - 2 * ds.GetDoubleValue("A", 2) - ds.GetDoubleValue("A", 1)) / 8.0);
     328      Evaluate(interpreter, ds, "(diff (variable 1.0 b)) ", 5, (ds.GetDoubleValue("B", 5) + 2 * ds.GetDoubleValue("B", 4) - 2 * ds.GetDoubleValue("B", 2) - ds.GetDoubleValue("B", 1)) / 8.0);
     329      Evaluate(interpreter, ds, "(diff (* (variable 1.0 a) (variable 1.0 b)))", 5, +
     330        (ds.GetDoubleValue("A", 5) * ds.GetDoubleValue("B", 5) +
     331        2 * ds.GetDoubleValue("A", 4) * ds.GetDoubleValue("B", 4) -
     332        2 * ds.GetDoubleValue("A", 2) * ds.GetDoubleValue("B", 2) -
     333        ds.GetDoubleValue("A", 1) * ds.GetDoubleValue("B", 1)) / 8.0);
     334      Evaluate(interpreter, ds, "(diff -2.0 3.0)", 5, 0.0);
     335
     336      // timelag
     337      Evaluate(interpreter, ds, "(lag -1.0 (lagVariable 1.0 a 2)) ", 1, ds.GetDoubleValue("A", 2));
     338      Evaluate(interpreter, ds, "(lag -2.0 (lagVariable 1.0 a 2)) ", 2, ds.GetDoubleValue("A", 2));
     339      Evaluate(interpreter, ds, "(lag -1.0 (* (lagVariable 1.0 a 1) (lagVariable 1.0 b 2)))", 1, ds.GetDoubleValue("A", 1) * ds.GetDoubleValue("B", 2));
     340      Evaluate(interpreter, ds, "(lag -2.0 3.0)", 1, 3.0);
    299341    }
    300342
     
    305347      double actual = interpreter.GetSymbolicExpressionTreeValues(tree, ds, Enumerable.Range(index, 1)).First();
    306348
     349      Assert.IsFalse(double.IsNaN(actual) && !double.IsNaN(expected));
     350      Assert.IsFalse(!double.IsNaN(actual) && double.IsNaN(expected));
    307351      Assert.AreEqual(expected, actual, 1.0E-12, expr);
    308352    }
Note: See TracChangeset for help on using the changeset viewer.