Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/20/18 13:49:19 (6 years ago)
Author:
lkammere
Message:

#2886: Add constants to grammar.

Location:
branches/2886_SymRegGrammarEnumeration/Test
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2886_SymRegGrammarEnumeration/Test/GrammarEnumerationTest.cs

    r15834 r15849  
    3131      alg.Problem = problem;
    3232      alg.GuiUpdateInterval = int.MaxValue;
     33      foreach (IGrammarEnumerationAnalyzer grammarEnumerationAnalyzer in alg.Analyzers) {
     34        alg.Analyzers.SetItemCheckedState(grammarEnumerationAnalyzer, grammarEnumerationAnalyzer is RSquaredEvaluator);
     35      }
    3336    }
    3437
     
    5760    public void NoConstants_Nguyen1() {
    5861      // x³ + x² + x
    59       alg.MaxTreeSize = 12;
     62      alg.MaxTreeSize = 20;
    6063      alg.Problem.ProblemData = new NguyenFunctionOne(Seed).GenerateRegressionData();
    6164
    6265      alg.Start();
    6366
     67      TerminalSymbol constSymbol = alg.Grammar.Const;
    6468      TerminalSymbol varSymbol = alg.Grammar.VarTerminals.First();
    6569      TerminalSymbol mulSymbol = alg.Grammar.Multiplication;
     
    6771
    6872      SymbolString targetSolution = new SymbolString(new[] {
    69         varSymbol, varSymbol, varSymbol, mulSymbol, mulSymbol,
    70         varSymbol, varSymbol, mulSymbol, addSymbol,
    71         varSymbol, addSymbol
     73        constSymbol, varSymbol, varSymbol, varSymbol, mulSymbol, mulSymbol, mulSymbol,
     74        constSymbol, varSymbol, varSymbol, mulSymbol, mulSymbol, addSymbol,
     75        constSymbol, varSymbol, mulSymbol, addSymbol,
     76        constSymbol, addSymbol
    7277      });
    7378
     
    8893    public void NoConstants_Nguyen2() {
    8994      // x^4 + x³ + x² + x
    90       alg.MaxTreeSize = 20;
     95      alg.MaxTreeSize = 30;
    9196      alg.Problem.ProblemData = new NguyenFunctionTwo(Seed).GenerateRegressionData();
    9297
     
    112117    public void NoConstants_Nguyen6() {
    113118      // sin(x) + sin(x + x²)
    114       alg.MaxTreeSize = 10;
     119      alg.MaxTreeSize = 25;
    115120      alg.Problem.ProblemData = new NguyenFunctionSix(Seed).GenerateRegressionData();
    116121
    117122      alg.Start();
    118123
     124      TerminalSymbol constSymbol = alg.Grammar.Const;
    119125      TerminalSymbol varSymbol = alg.Grammar.VarTerminals.First();
    120126      TerminalSymbol mulSymbol = alg.Grammar.Multiplication;
     
    122128      TerminalSymbol sinSymbol = alg.Grammar.Sin;
    123129
     130      // c * sin(c x + c) + c * sin(c * x * x + c * x) + c
    124131      SymbolString targetSolution = new SymbolString(new[] {
    125         varSymbol, sinSymbol,
    126         varSymbol, varSymbol, mulSymbol, varSymbol, addSymbol, sinSymbol, addSymbol
     132        varSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol,
     133        varSymbol, varSymbol, mulSymbol, constSymbol, mulSymbol, varSymbol, constSymbol, mulSymbol, addSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol, addSymbol,
     134        constSymbol, addSymbol
    127135      });
    128136
     
    140148    public void NoConstants_Nguyen9() {
    141149      // sin(x) + sin(y²)
    142       alg.MaxTreeSize = 11;
     150      alg.MaxTreeSize = 22;
    143151      alg.Problem.ProblemData = new NguyenFunctionNine(Seed).GenerateRegressionData();
    144152
     
    147155      TerminalSymbol xSymbol = alg.Grammar.VarTerminals.First(v => v.StringRepresentation == "X");
    148156      TerminalSymbol ySymbol = alg.Grammar.VarTerminals.First(v => v.StringRepresentation == "Y");
     157      TerminalSymbol constSymbol = alg.Grammar.Const;
    149158      TerminalSymbol mulSymbol = alg.Grammar.Multiplication;
    150159      TerminalSymbol addSymbol = alg.Grammar.Addition;
    151160      TerminalSymbol sinSymbol = alg.Grammar.Sin;
    152161
     162      // c*sin(c*x + c) + c*sin(c*y*y + c) + c
    153163      SymbolString targetSolution = new SymbolString(new[] {
    154         xSymbol, sinSymbol,
    155         ySymbol, ySymbol, mulSymbol, sinSymbol, addSymbol
     164        xSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol,
     165        ySymbol, ySymbol, mulSymbol, constSymbol, mulSymbol, constSymbol, addSymbol, sinSymbol, constSymbol, mulSymbol, addSymbol,
     166        constSymbol, addSymbol
    156167      });
    157168
     
    180191    public void NoConstants_Inverse() {
    181192      // x / (log(x)*x + x)
    182       alg.MaxTreeSize = 12;
     193      alg.MaxTreeSize = 23;
    183194
    184195      var x = Enumerable.Range(0, 100).Select(_ => rand.NextDouble() + 1.1).ToList();
  • branches/2886_SymRegGrammarEnumeration/Test/TreeHashingTest.cs

    r15834 r15849  
    1212    private TerminalSymbol varB;
    1313    private TerminalSymbol varC;
     14    private TerminalSymbol c;
    1415
    1516    [TestInitialize]
     
    2021      varB = grammar.VarTerminals.First(s => s.StringRepresentation == "b");
    2122      varC = grammar.VarTerminals.First(s => s.StringRepresentation == "c");
     23      c = grammar.Const;
    2224    }
    2325
     
    132134    }
    133135
     136    // Constants
     137    [TestMethod]
     138    [TestCategory("TreeHashing")]
     139    public void SimpleConst() {
     140      SymbolString s1 = new SymbolString(new Symbol[] { c, varA, grammar.Multiplication, c, grammar.Addition});
     141      SymbolString s2 = new SymbolString(new Symbol[] { c, varA, grammar.Multiplication, c, varA, grammar.Multiplication, grammar.Addition, c, grammar.Addition });
     142
     143      int hash1 = grammar.Hasher.CalcHashCode(s1);
     144      int hash2 = grammar.Hasher.CalcHashCode(s2);
     145
     146      Assert.AreEqual(hash1, hash2);
     147    }
     148
    134149    /* DEPRECATED; SINCE WE DO NOT ALLOW COMPOUND DIVISIONS
    135150    [TestMethod]
Note: See TracChangeset for help on using the changeset viewer.