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.

Location:
trunk/sources/HeuristicLab.Tests
Files:
1 added
3 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  }
  • trunk/sources/HeuristicLab.Tests/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4/Util.cs

    r6866 r6911  
    154154      Assert.IsTrue(grammar.Symbols.Count() == grammar.Symbols.Distinct().Count());
    155155      foreach (ISymbol symbol in grammar.AllowedSymbols) {
    156         Assert.IsTrue(grammar.GetMinimumSubtreeCount(symbol) <= grammar.GetMaximumExpressionLength(symbol));
    157156        Assert.IsTrue(grammar.GetAllowedChildSymbols(symbol).Count() == grammar.GetAllowedChildSymbols(symbol).Distinct().Count());
    158157        for (int i = 0; i < grammar.GetMaximumSubtreeCount(symbol); i++) {
     
    165164        for (int i = 0; i < grammar.GetMaximumSubtreeCount(symbol); i++)
    166165          Assert.IsTrue(grammar.GetAllowedChildSymbols(symbol, i).Any());
    167 
    168         //if (symbol is ProgramRootSymbol) continue;
    169         ////check if symbol is allowed as at least one child symbol
    170         //bool result = false;
    171         //foreach (var parentSymbol in grammar.Symbols) {
    172         //  if (result) break;
    173         //  for (int i = 0; i < grammar.GetMaximumSubtreeCount(parentSymbol); i++)
    174         //    result = result || grammar.IsAllowedChildSymbol(parentSymbol, symbol, i);
    175         //}
    176         //Assert.IsTrue(result);
    177 
    178166      }
    179167    }
  • trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj

    r6891 r6911  
    424424    <EmbeddedResource Include="HeuristicLab.Problems.QuadraticAssignment-3.3\QAPLIB\wil50.dat" />
    425425    <None Include="HeuristicLab.snk" />
     426    <Shadow Include="Test References\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.accessor" />
    426427    <Shadow Include="Test References\HeuristicLab.PluginInfrastructure-3.3.accessor" />
    427428    <Shadow Include="Test References\HeuristicLab.MainForm.WindowsForms-3.3.accessor" />
Note: See TracChangeset for help on using the changeset viewer.