Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/12/11 17:06:14 (13 years ago)
Author:
mkommend
Message:

#1657: Corrected and adapted implementation of !PTC2 to handle symbol frequencies correctly and to always create trees of the target size. Additionally the performance of the grammars have been improved and a unit test was added.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Tests/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4/ProbabilisticTreeCreaterTest.cs

    r6866 r6911  
    7272        Util.GetTerminalDistributionString(randomTrees) + Environment.NewLine
    7373        );
    74       Assert.IsTrue(Math.Round(1000.0 / (msPerRandomTreeCreation)) > 300); // must achieve more than 500 random trees / s
     74      Assert.IsTrue(Math.Round(1000.0 / (msPerRandomTreeCreation)) > 250); // must achieve more than 250 random trees / s
     75    }
     76
     77    [TestMethod]
     78    public void ProbabilisticTreeCreatorSpecificTreeSizesTest() {
     79      var trees = new List<ISymbolicExpressionTree>();
     80      var grammar = Grammars.CreateSimpleArithmeticGrammar();
     81      var random = new MersenneTwister(31415);
     82      var treeGrammarType = SymbolicExpressionTreeGrammar_Accessor.ShadowedType.ReferencedType;
     83
     84
     85      for (int targetTreeSize = 1; targetTreeSize <= 100; targetTreeSize++) {
     86        var tree = new SymbolicExpressionTree();
     87        var rootNode = (SymbolicExpressionTreeTopLevelNode)grammar.ProgramRootSymbol.CreateTreeNode();
     88        rootNode.SetGrammar((ISymbolicExpressionTreeGrammar)Activator.CreateInstance(treeGrammarType, grammar));
     89        if (rootNode.HasLocalParameters) rootNode.ResetLocalParameters(random);
     90        var startNode = (SymbolicExpressionTreeTopLevelNode)grammar.StartSymbol.CreateTreeNode();
     91        startNode.SetGrammar((ISymbolicExpressionTreeGrammar)Activator.CreateInstance(treeGrammarType, grammar));
     92        if (startNode.HasLocalParameters) startNode.ResetLocalParameters(random);
     93        rootNode.AddSubtree(startNode);
     94
     95        ProbabilisticTreeCreator_Accessor.TryCreateFullTreeFromSeed(random, startNode, targetTreeSize, ((int)Math.Log(targetTreeSize, 2)) + 1);
     96        tree.Root = rootNode;
     97        Assert.AreEqual(targetTreeSize + 2, tree.Length);  //the root and start node must be additionally added
     98      }
    7599    }
    76100  }
Note: See TracChangeset for help on using the changeset viewer.