Changeset 10983


Ignore:
Timestamp:
06/11/14 13:58:37 (5 years ago)
Author:
gkronber
Message:

#2109 added unit test to create and run grammatical evolution samples

Location:
trunk/sources/HeuristicLab.Tests
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Tests/HeuristicLab-3.3/SamplesTest.cs

    r10578 r10983  
    2828using HeuristicLab.Algorithms.GeneticAlgorithm;
    2929using HeuristicLab.Algorithms.LocalSearch;
     30using HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm;
    3031using HeuristicLab.Algorithms.ParticleSwarmOptimization;
    3132using HeuristicLab.Algorithms.RAPGA;
     
    3637using HeuristicLab.Data;
    3738using HeuristicLab.Encodings.BinaryVectorEncoding;
     39using HeuristicLab.Encodings.IntegerVectorEncoding;
    3840using HeuristicLab.Encodings.PermutationEncoding;
    3941using HeuristicLab.Encodings.RealVectorEncoding;
     
    6264using HeuristicLab.Selection;
    6365using Microsoft.VisualStudio.TestTools.UnitTesting;
     66using StdDevStrategyVectorCreator = HeuristicLab.Encodings.RealVectorEncoding.StdDevStrategyVectorCreator;
     67using StdDevStrategyVectorCrossover = HeuristicLab.Encodings.RealVectorEncoding.StdDevStrategyVectorCrossover;
     68using StdDevStrategyVectorManipulator = HeuristicLab.Encodings.RealVectorEncoding.StdDevStrategyVectorManipulator;
    6469
    6570
     
    11941199    #endregion
    11951200
     1201    #region grammatical evolution
     1202    #region artificial ant
     1203    [TestMethod]
     1204    [TestCategory("Samples.Create")]
     1205    [TestProperty("Time", "medium")]
     1206    public void CreateGeArtificialAntSampleTest() {
     1207      var geaa = CreateGeArtificialAntSample();
     1208      XmlGenerator.Serialize(geaa, @"Samples\GE_ArtificialAnt.hl");
     1209    }
     1210
     1211    [TestMethod]
     1212    [TestCategory("Samples.Execute")]
     1213    [TestProperty("Time", "long")]
     1214    public void RunGeArtificalAntSampleTest() {
     1215      var ga = CreateGeArtificialAntSample();
     1216      ga.SetSeedRandomly.Value = false;
     1217      RunAlgorithm(ga);
     1218    }
     1219
     1220    public OffspringSelectionGeneticAlgorithm CreateGeArtificialAntSample() {
     1221      OffspringSelectionGeneticAlgorithm ga = new OffspringSelectionGeneticAlgorithm();
     1222      #region Problem Configuration
     1223      var problem = new HeuristicLab.Problems.GrammaticalEvolution.GEArtificialAntProblem();
     1224      #endregion
     1225      #region Algorithm Configuration
     1226      ga.Name = "Grammatical Evolution - Artificial Ant (SantaFe)";
     1227      ga.Description = "Grammatical evolution algorithm for solving a artificial ant problem";
     1228      ga.Problem = problem;
     1229      ConfigureOsGeneticAlgorithmParameters<GenderSpecificSelector, Encodings.IntegerVectorEncoding.SinglePointCrossover, Encodings.IntegerVectorEncoding.UniformOnePositionManipulator>(
     1230        ga, 200, 1, 50, 0.05, 200);
     1231      #endregion
     1232      return ga;
     1233    }
     1234    #endregion
     1235
     1236    #region symbolic regression
     1237    #endregion
     1238    [TestMethod]
     1239    [TestCategory("Samples.Create")]
     1240    [TestProperty("Time", "medium")]
     1241    public void CreateGeSymbolicRegressionSampleTest() {
     1242      var geSymbReg = CreateGeSymbolicRegressionSample();
     1243      XmlGenerator.Serialize(geSymbReg, @"Samples\GE_SymbReg.hl");
     1244    }
     1245
     1246    [TestMethod]
     1247    [TestCategory("Samples.Execute")]
     1248    [TestProperty("Time", "long")]
     1249    public void RunGeSymbolicRegressionSampleTest() {
     1250      var ga = CreateGeSymbolicRegressionSample();
     1251      ga.SetSeedRandomly.Value = false;
     1252      RunAlgorithm(ga);
     1253    }
     1254
     1255    [TestMethod]
     1256    [TestCategory("Samples.Create")]
     1257    [TestProperty("Time", "medium")]
     1258    public OffspringSelectionGeneticAlgorithm CreateGeSymbolicRegressionSample() {
     1259      var ga = new OffspringSelectionGeneticAlgorithm();
     1260      #region Problem Configuration
     1261      var problem = new HeuristicLab.Problems.GrammaticalEvolution.GESymbolicRegressionSingleObjectiveProblem();
     1262
     1263      #endregion
     1264      #region Algorithm Configuration
     1265      ga.Name = "Grammatical Evolution - Symbolic Regression (Poly-10)";
     1266      ga.Description = "Grammatical evolution algorithm for solving a symbolic regression problem problem";
     1267      ga.Problem = problem;
     1268      problem.Load(new PolyTen().GenerateRegressionData());
     1269
     1270      // must occur after loading problem data because the grammar creates symbols for random constants once the data is loaded
     1271      var consts = problem.SymbolicExpressionTreeGrammar.AllowedSymbols.OfType<Constant>().ToList();
     1272      foreach (var c in consts) {
     1273        problem.SymbolicExpressionTreeGrammar.RemoveSymbol(c);
     1274      }
     1275
     1276      ConfigureOsGeneticAlgorithmParameters<GenderSpecificSelector, Encodings.IntegerVectorEncoding.SinglePointCrossover, Encodings.IntegerVectorEncoding.UniformOnePositionManipulator>(
     1277        ga, 1000, 1, 50, 0.05, 200);
     1278      #endregion
     1279      return ga;
     1280    }
     1281    #endregion
     1282
    11961283    #region Helpers
    11971284    private void ConfigureEvolutionStrategyParameters<R, M, SC, SR, SM>(EvolutionStrategy es, int popSize, int children, int parentsPerChild, int maxGens, bool plusSelection)
     
    12401327      ga.Seed.Value = 0;
    12411328      ga.SetSeedRandomly.Value = true;
     1329      ga.Selector = ga.SelectorParameter.ValidValues
     1330        .OfType<S>()
     1331        .First();
     1332
     1333      ga.Crossover = ga.CrossoverParameter.ValidValues
     1334        .OfType<C>()
     1335        .First();
     1336
     1337      ga.Mutator = ga.MutatorParameter.ValidValues
     1338        .OfType<M>()
     1339        .First();
     1340
     1341      var tSelector = ga.Selector as TournamentSelector;
     1342      if (tSelector != null) {
     1343        tSelector.GroupSizeParameter.Value.Value = tournGroupSize;
     1344      }
     1345      ga.Engine = new ParallelEngine.ParallelEngine();
     1346    }
     1347
     1348    private void ConfigureOsGeneticAlgorithmParameters<S, C, M>(OffspringSelectionGeneticAlgorithm ga, int popSize, int elites, int maxGens, double mutationRate=0.05, double maxSelPres=100, int tournGroupSize = 0)
     1349      where S : ISelector
     1350      where C : ICrossover
     1351      where M : IManipulator {
     1352      ga.Elites.Value = elites;
     1353      ga.MaximumGenerations.Value = maxGens;
     1354      ga.MutationProbability.Value = mutationRate;
     1355      ga.PopulationSize.Value = popSize;
     1356      ga.MaximumSelectionPressure.Value = maxSelPres;
     1357      ga.Seed.Value = 0;
     1358      ga.SetSeedRandomly.Value = true;
     1359      ga.ComparisonFactorLowerBound.Value = 1;
     1360      ga.ComparisonFactorUpperBound.Value = 1;
     1361
    12421362      ga.Selector = ga.SelectorParameter.ValidValues
    12431363        .OfType<S>()
  • trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj

    r10652 r10983  
    122122      <Private>False</Private>
    123123    </Reference>
     124    <Reference Include="HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
     125      <SpecificVersion>False</SpecificVersion>
     126      <HintPath>..\bin\HeuristicLab.Algorithms.OffspringSelectionGeneticAlgorithm-3.3.dll</HintPath>
     127    </Reference>
    124128    <Reference Include="HeuristicLab.Algorithms.ParticleSwarmOptimization-3.3">
    125129      <HintPath>..\bin\HeuristicLab.Algorithms.ParticleSwarmOptimization-3.3.dll</HintPath>
     
    249253      <HintPath>..\bin\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis-3.4.dll</HintPath>
    250254      <Private>False</Private>
     255    </Reference>
     256    <Reference Include="HeuristicLab.Problems.GrammaticalEvolution-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
     257      <SpecificVersion>False</SpecificVersion>
     258      <HintPath>..\bin\HeuristicLab.Problems.GrammaticalEvolution-3.3.dll</HintPath>
    251259    </Reference>
    252260    <Reference Include="HeuristicLab.Problems.Instances-3.3">
Note: See TracChangeset for help on using the changeset viewer.