Changeset 5549 for branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Tests/AllArchitectureAlteringOperatorsTest.cs
- Timestamp:
- 02/22/11 19:04:54 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Tests/AllArchitectureAlteringOperatorsTest.cs
r5445 r5549 25 25 using HeuristicLab.Data; 26 26 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 27 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ArchitectureManipulators;28 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Creators;29 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Crossovers;30 27 using HeuristicLab.Random; 31 28 using Microsoft.VisualStudio.TestTools.UnitTesting; 32 29 33 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding_3._ 3.Tests {30 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding_3._4.Tests { 34 31 [TestClass] 35 32 public class AllArchitectureAlteringOperatorsTest { 36 33 private const int POPULATION_SIZE = 1000; 37 34 private const int N_ITERATIONS = 20; 38 private const int MAX_TREE_ SIZE= 100;39 private const int MAX_TREE_ HEIGHT= 10;35 private const int MAX_TREE_LENGTH = 100; 36 private const int MAX_TREE_DEPTH = 10; 40 37 private TestContext testContextInstance; 41 38 … … 55 52 [TestMethod()] 56 53 public void AllArchitectureAlteringOperatorsDistributionTest() { 57 var trees = new List< SymbolicExpressionTree>();58 var newTrees = new List< SymbolicExpressionTree>();54 var trees = new List<ISymbolicExpressionTree>(); 55 var newTrees = new List<ISymbolicExpressionTree>(); 59 56 var grammar = Grammars.CreateArithmeticAndAdfGrammar(); 60 57 var random = new MersenneTwister(31415); 61 IntValue maxTreeSize = new IntValue(MAX_TREE_ SIZE);62 IntValue maxTreeHeigth = new IntValue(MAX_TREE_ HEIGHT);58 IntValue maxTreeSize = new IntValue(MAX_TREE_LENGTH); 59 IntValue maxTreeHeigth = new IntValue(MAX_TREE_DEPTH); 63 60 IntValue maxDefuns = new IntValue(3); 64 61 IntValue maxArgs = new IntValue(3); 65 62 for (int i = 0; i < POPULATION_SIZE; i++) { 66 var tree = ProbabilisticTreeCreator.Create(random, grammar, MAX_TREE_ SIZE, MAX_TREE_HEIGHT, 3, 3);63 var tree = ProbabilisticTreeCreator.Create(random, grammar, MAX_TREE_LENGTH, MAX_TREE_DEPTH, 3, 3); 67 64 Util.IsValid(tree); 68 65 trees.Add(tree); … … 70 67 Stopwatch stopwatch = new Stopwatch(); 71 68 stopwatch.Start(); 72 var combinedAAOperator = new MultiSymbolicExpressionTreeArchitectureManipulator();73 69 int failedEvents = 0; 74 70 for (int g = 0; g < N_ITERATIONS; g++) { … … 76 72 if (random.NextDouble() < 0.5) { 77 73 // manipulate 78 var selectedTree = (SymbolicExpressionTree)trees.SelectRandom(random).Clone(); 79 var op = combinedAAOperator.Operators.SelectRandom(random); 74 var selectedTree = (ISymbolicExpressionTree)trees.SelectRandom(random).Clone(); 80 75 bool success = false; 81 op.ModifyArchitecture(random, selectedTree, grammar, maxTreeSize, maxTreeHeigth, maxDefuns, maxArgs, out success); 82 if (!success) failedEvents++; // architecture manipulation might fail 76 switch (random.Next(6)) { 77 case 0: success = ArgumentCreater.CreateNewArgument(random, selectedTree, MAX_TREE_LENGTH, MAX_TREE_DEPTH, 3, 3); break; 78 case 1: success = ArgumentDeleter.DeleteArgument(random, selectedTree, 3, 3); break; 79 case 2: success = ArgumentDuplicater.DuplicateArgument(random, selectedTree, 3, 3); break; 80 case 3: success = SubroutineCreater.CreateSubroutine(random, selectedTree, MAX_TREE_LENGTH, MAX_TREE_DEPTH, 3, 3); break; 81 case 4: success = SubroutineDuplicater.DuplicateSubroutine(random, selectedTree, 3, 3); break; 82 case 5: success = SubroutineDeleter.DeleteSubroutine(random, selectedTree, 3, 3); break; 83 } 84 if (!success) failedEvents++; 83 85 Util.IsValid(selectedTree); 84 86 newTrees.Add(selectedTree); … … 90 92 par0 = (SymbolicExpressionTree)trees.SelectRandom(random).Clone(); 91 93 par1 = (SymbolicExpressionTree)trees.SelectRandom(random).Clone(); 92 } while (par0.Size > MAX_TREE_SIZE || par1.Size > MAX_TREE_SIZE); 93 bool success; 94 newTrees.Add(SubtreeCrossover.Cross(random, par0, par1, 0.9, MAX_TREE_SIZE, MAX_TREE_HEIGHT, out success)); 95 Assert.IsTrue(success); // crossover must succeed 94 } while (par0.Length > MAX_TREE_LENGTH || par1.Length > MAX_TREE_LENGTH); 95 newTrees.Add(SubtreeCrossover.Cross(random, par0, par1, 0.9, MAX_TREE_LENGTH, MAX_TREE_DEPTH)); 96 96 } 97 97 }
Note: See TracChangeset
for help on using the changeset viewer.