Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/15/10 19:58:42 (14 years ago)
Author:
gkronber
Message:

Fixed bugs in ADF operators and added test classes for ADF operators. #290 (Implement ADFs)

Location:
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Tests
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Tests

    • Property svn:ignore
      •  

        old new  
        11bin
        22obj
         3*.user
  • trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/Tests/SubroutineCreaterTest.cs

    r3338 r3360  
    1 using System;
     1#region License Information
     2/* HeuristicLab
     3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     4 *
     5 * This file is part of HeuristicLab.
     6 *
     7 * HeuristicLab is free software: you can redistribute it and/or modify
     8 * it under the terms of the GNU General Public License as published by
     9 * the Free Software Foundation, either version 3 of the License, or
     10 * (at your option) any later version.
     11 *
     12 * HeuristicLab is distributed in the hope that it will be useful,
     13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 * GNU General Public License for more details.
     16 *
     17 * You should have received a copy of the GNU General Public License
     18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
     19 */
     20#endregion
     21
     22using System;
    223using System.Text;
    324using System.Collections.Generic;
     
    829using System.Diagnostics;
    930using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ArchitectureAlteringOperators;
    10 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.GeneralSymbols;
    1131
    1232namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding_3._3.Tests {
    1333  [TestClass]
    1434  public class SubroutineCreaterTest {
    15     private static ISymbolicExpressionGrammar grammar;
    16     private static List<SymbolicExpressionTree> subroutineTrees;
    17     private static int failedEvents;
    18 
     35    private const int POPULATION_SIZE = 1000;
     36    private const int MAX_TREE_SIZE = 100;
     37    private const int MAX_TREE_HEIGHT = 10;
    1938    private TestContext testContextInstance;
    2039
     
    3251    }
    3352
    34     [ClassInitialize()]
    35     public static void SubroutineCreaterTestInitialize(TestContext testContext) {
    36       var randomTrees = new List<SymbolicExpressionTree>();
    37       subroutineTrees = new List<SymbolicExpressionTree>();
    38       int populationSize = 1000;
    39       failedEvents = 0;
    40       grammar = Grammars.CreateArithmeticAndAdfGrammar();
    41       var random = new MersenneTwister();
    42       for (int i = 0; i < populationSize; i++) {
    43         var randTree = ProbabilisticTreeCreator.Create(random, grammar, 100, 10);
    44         // PTC create is tested separately
    45         randomTrees.Add(randTree);
     53    [TestMethod()]
     54    public void SubroutineCreaterDistributionsTest() {
     55      var trees = new List<SymbolicExpressionTree>();
     56      var grammar = Grammars.CreateArithmeticAndAdfGrammar();
     57      var random = new MersenneTwister(31415);
     58      int failedEvents = 0;
     59      for (int i = 0; i < POPULATION_SIZE; i++) {
     60        var tree = ProbabilisticTreeCreator.Create(random, grammar, MAX_TREE_SIZE, MAX_TREE_HEIGHT, 3, 3);
     61        if (!SubroutineCreater.CreateSubroutine(random, tree, grammar, MAX_TREE_SIZE, MAX_TREE_HEIGHT, 3, 3))
     62          failedEvents++;
     63        Util.IsValid(tree);
     64        trees.Add(tree);
    4665      }
    47       var newPopulation = new List<SymbolicExpressionTree>();
    48       for (int i = 0; i < populationSize; i++) {
    49         var par0 = (SymbolicExpressionTree)randomTrees[random.Next(populationSize)].Clone();
    50         bool success = SubroutineCreater.CreateSubroutine(random, par0, grammar, 100, 10, 3, 3);
    51         if (!success) failedEvents++;
    52         subroutineTrees.Add(par0);
    53       }
    54     }
    55 
    56 
    57     [TestMethod()]
    58     public void SubroutineCreaterCreateTest() {
    59       foreach (var tree in subroutineTrees)
    60         Assert.IsTrue(grammar.IsValidExpression(tree));
    61     }
    62 
    63     [TestMethod()]
    64     public void SubroutineCreaterSizeDistributionTest() {
    65       Assert.Inconclusive("SubroutineCreater: " + Util.GetSizeDistributionString(subroutineTrees, 105, 5));
    66     }
    67 
    68     [TestMethod()]
    69     public void SubroutineCreaterFunctionDistributionTest() {
    70       Assert.Inconclusive("SubroutineCreater: " + Util.GetFunctionDistributionString(subroutineTrees));
    71     }
    72 
    73     [TestMethod()]
    74     public void SubroutineCreaterNumberOfSubTreesDistributionTest() {
    75       Assert.Inconclusive("SubroutineCreater: " + Util.GetNumberOfSubTreesDistributionString(subroutineTrees));
    76     }
    77 
    78 
    79     [TestMethod()]
    80     public void SubroutineCreaterTerminalDistributionTest() {
    81       Assert.Inconclusive("SubroutineCreater: " + Util.GetTerminalDistributionString(subroutineTrees));
     66      Assert.Inconclusive("SubroutineCreator: " + Environment.NewLine +
     67        "Failed events: " + failedEvents / (double)POPULATION_SIZE * 100 + " %" + Environment.NewLine +
     68        Util.GetSizeDistributionString(trees, 105, 5) + Environment.NewLine +
     69        Util.GetFunctionDistributionString(trees) + Environment.NewLine +
     70        Util.GetNumberOfSubTreesDistributionString(trees) + Environment.NewLine +
     71        Util.GetTerminalDistributionString(trees) + Environment.NewLine
     72        );
    8273    }
    8374  }
Note: See TracChangeset for help on using the changeset viewer.