Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/17/11 11:03:48 (13 years ago)
Author:
cneumuel
Message:

#1215

  • fixed import of existing algorithm
  • moved operators in subfolders
  • extended tests for SymbolicExpressionGrammar
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs

    r5927 r6017  
    1515using HeuristicLab.Data;
    1616using HeuristicLab.Encodings.RealVectorEncoding;
    17 using HeuristicLab.Hive.ExperimentManager;
     17//using HeuristicLab.Hive.ExperimentManager;
    1818using HeuristicLab.Optimization;
    1919using HeuristicLab.Parameters;
     
    3030  class Program {
    3131    static void Main(string[] args) {
    32       //PluginLoader.pluginAssemblies.Any();
    3332      PluginManager pm = new PluginManager(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
    3433      pm.DiscoverAndCheckPlugins();
    35 
    3634      pm.Run(pm.Applications.Where(x => x.Name == "TestApp").SingleOrDefault());
    3735    }
     
    4947    //private static int baseAlgorithmMaxGenerations = 1000;
    5048
    51     private static int metaAlgorithmPopulationSize = 10;
    52     private static int metaAlgorithmMaxGenerations = 15;
     49    private static int metaAlgorithmPopulationSize = 20;
     50    private static int metaAlgorithmMaxGenerations = 20;
    5351    private static int metaProblemRepetitions = 3;
    54     private static int baseAlgorithmMaxGenerations = 10;
     52    private static int baseAlgorithmMaxGenerations = 100;
    5553    private static double mutationProbability = 0.10;
    5654
     
    8280      MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem();
    8381      metaOptimizationProblem.Repetitions = new IntValue(metaProblemRepetitions);
    84       GeneticAlgorithm metaLevelAlgorithm = GetMetaGA(metaOptimizationProblem);
    85       //GeneticAlgorithm metaLevelAlgorithm = GetParallelMetaGA(metaOptimizationProblem);
     82      //GeneticAlgorithm metaLevelAlgorithm = GetMetaGA(metaOptimizationProblem);
     83      GeneticAlgorithm metaLevelAlgorithm = GetParallelMetaGA(metaOptimizationProblem);
    8684      //GeneticAlgorithm metaLevelAlgorithm = GetHiveParallelMetaGA(metaOptimizationProblem);
    8785
     
    9593      //Console.WriteLine("Press enter to start");
    9694      //Console.ReadLine();
    97       TestConfiguration(algorithmVc, typeof(GeneticAlgorithm), metaOptimizationProblem.Problems.First());
    98 
    99       Console.WriteLine("Press enter to start");
    100       Console.ReadLine();
     95      //TestConfiguration(algorithmVc, typeof(GeneticAlgorithm), metaOptimizationProblem.Problems.First());
     96
     97      //Console.WriteLine("Press enter to start");
     98      //Console.ReadLine();
    10199      TestOptimization(metaLevelAlgorithm);
    102100
     
    111109      var grammar1 = new TypeCoherentExpressionGrammar();
    112110      var grammar2 = new TypeCoherentExpressionGrammar();
    113 
    114       grammar2.Symbols.Single(x => x.Name == "Addition").InitialFrequency = 0.5;
    115 
     111     
    116112      Console.WriteLine("========== Grammar1: ==========");
    117113      PrintGrammar(grammar1);
    118       Console.WriteLine("========== Grammar2: ==========");
    119       PrintGrammar(grammar2);
    120 
    121 
    122       RealVector v1 = GetInitialFrequenciesAsRealVector(grammar1);
    123       RealVector v2 = GetInitialFrequenciesAsRealVector(grammar2);
    124 
    125       for (int i = 0; i < 10; i++) {
    126         RealVector v3 = DiscreteCrossover.Apply(random, new ItemArray<RealVector>(new List<RealVector> { v1, v2 }));
    127 
    128         var grammar3 = new TypeCoherentExpressionGrammar();
    129         SetInitialFrequenciesFromRealVector(grammar3, v3);
    130 
    131         Console.WriteLine("\n========== Crossed: ==========");
    132         PrintGrammar(grammar3);
    133       }
     114      //Console.WriteLine("========== Grammar2: ==========");
     115      //PrintGrammar(grammar2);
     116
     117      var vc1 = new SymbolicExpressionGrammarValueConfiguration(grammar1);
     118      ConfigureSymbolicExpressionGrammarVc(vc1);
     119      var vc2 = new SymbolicExpressionGrammarValueConfiguration(grammar2);
     120      ConfigureSymbolicExpressionGrammarVc(vc2);
     121
     122      vc1.Mutate(random, new MutateDelegate(ParameterConfigurationManipulator.Mutate), new UniformIntValueManipulator(), new UniformDoubleValueManipulator());
     123      vc1.Parameterize(grammar1);
     124
     125      Console.WriteLine("========== Grammar1 (mutated): ==========");
     126      PrintGrammar(grammar1);
     127
     128      vc1.Cross(random, vc2, new CrossDelegate(ParameterConfigurationCrossover.Cross), new DiscreteIntValueCrossover(), new AverageDoubleValueCrossover());
     129      vc1.Parameterize(grammar1);
     130
     131      Console.WriteLine("========== Grammar1 (crossed): ==========");
     132      PrintGrammar(grammar1);
     133
     134      //RealVector v1 = GetInitialFrequenciesAsRealVector(grammar1);
     135      //RealVector v2 = GetInitialFrequenciesAsRealVector(grammar2);
     136
     137      //for (int i = 0; i < 10; i++) {
     138      //  RealVector v3 = DiscreteCrossover.Apply(random, new ItemArray<RealVector>(new List<RealVector> { v1, v2 }));
     139
     140      //  var grammar3 = new TypeCoherentExpressionGrammar();
     141      //  SetInitialFrequenciesFromRealVector(grammar3, v3);
     142
     143      //  Console.WriteLine("\n========== Crossed: ==========");
     144      //  PrintGrammar(grammar3);
     145      //}
    134146
    135147    }
     
    421433
    422434      GeneticAlgorithm ga = new GeneticAlgorithm();
    423       ga.PopulationSize.Value = 3;
    424       ga.MaximumGenerations.Value = 1;
     435      ga.PopulationSize.Value = 5;
     436      ga.MaximumGenerations.Value = 5;
    425437      ga.Engine = new SequentialEngine.SequentialEngine();
    426438      ga.Problem = new SingleObjectiveTestFunctionProblem();
    427439
    428       MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem();
    429       //metaOptimizationProblem.Repetitions = new IntValue(metaProblemRepetitions);
    430       GeneticAlgorithm metaLevelAlgorithm = GetMetaGA(metaOptimizationProblem);
    431       ParameterConfigurationTree algorithmVc = SetupGAAlgorithm(typeof(GeneticAlgorithm), metaOptimizationProblem);
    432       algorithmVc.Randomize(random);
     440      //MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem();
     441      ////metaOptimizationProblem.Repetitions = new IntValue(metaProblemRepetitions);
     442      //GeneticAlgorithm metaLevelAlgorithm = GetMetaGA(metaOptimizationProblem);
     443      //ParameterConfigurationTree algorithmVc = SetupGAAlgorithm(typeof(GeneticAlgorithm), metaOptimizationProblem);
     444      //algorithmVc.Randomize(random);
    433445      Stopwatch sw = new Stopwatch();
    434446
     
    449461        algs.Enqueue(clonedGa);
    450462
    451         if (algs.Count > 24)
    452           algs.Dequeue();
     463        //if (algs.Count > 24)
     464        //  algs.Dequeue();
    453465        clonedGa.StartSync();
    454466        sw.Stop();
     
    610622
    611623    private static void TestTypeDiscovery() {
    612       PluginLoader.pluginAssemblies.Any();
    613 
    614624      var items = ApplicationManager.Manager.GetInstances(typeof(DoubleArray)).ToArray();
    615625
     
    667677    }
    668678
    669     private static GeneticAlgorithm GetHiveParallelMetaGA(MetaOptimizationProblem metaOptimizationProblem) {
    670       GeneticAlgorithm metaLevelAlgorithm = GetParallelMetaGA(metaOptimizationProblem);
    671       metaLevelAlgorithm.Engine = new HiveEngine.HiveEngine();
    672       ServiceLocator.Instance.ClientFacadePool.UserName = "cneumuel";
    673       ServiceLocator.Instance.ClientFacadePool.Password = "cneumuel";
    674       ServiceLocator.Instance.StreamedClientFacadePool.UserName = "cneumuel";
    675       ServiceLocator.Instance.StreamedClientFacadePool.Password = "cneumuel";
    676       return metaLevelAlgorithm;
    677     }
     679    //private static GeneticAlgorithm GetHiveParallelMetaGA(MetaOptimizationProblem metaOptimizationProblem) {
     680    //  GeneticAlgorithm metaLevelAlgorithm = GetParallelMetaGA(metaOptimizationProblem);
     681    //  metaLevelAlgorithm.Engine = new HiveEngine.HiveEngine();
     682    //  ServiceLocator.Instance.ClientFacadePool.UserName = "cneumuel";
     683    //  ServiceLocator.Instance.ClientFacadePool.Password = "cneumuel";
     684    //  ServiceLocator.Instance.StreamedClientFacadePool.UserName = "cneumuel";
     685    //  ServiceLocator.Instance.StreamedClientFacadePool.Password = "cneumuel";
     686    //  return metaLevelAlgorithm;
     687    //}
    678688
    679689    private static EvolutionStrategy GetMetaES(MetaOptimizationProblem metaOptimizationProblem) {
     
    714724
    715725      //ConfigurePopulationSize(algorithmVc, 15, 20, 1);
    716       ConfigureMutationRate(algorithmVc, 0.0, 1.0, 0.01);
    717       ConfigureMutationOperator(algorithmVc);
     726      //ConfigureMutationRate(algorithmVc, 0.0, 1.0, 0.01);
     727      //ConfigureMutationOperator(algorithmVc);
    718728      //ConfigureElites(algorithmVc, 0, 8, 1);
    719729      //ConfigureSelectionOperator(algorithmVc, true);
     
    736746        }
    737747      }
     748
     749      ConfigureSymbolicExpressionGrammarVc(symbolicExpressionGrammarVc);
     750    }
     751
     752    private static void ConfigureSymbolicExpressionGrammarVc(SymbolicExpressionGrammarValueConfiguration symbolicExpressionGrammarVc) {
    738753      symbolicExpressionGrammarVc.Optimize = true;
    739 
    740       var additionPc = symbolicExpressionGrammarVc.ParameterConfigurations.Single(x => x.Name == "Addition");
    741       additionPc.Optimize = true;
    742       var initialFrequencyVc = ((ParameterizedValueConfiguration)additionPc.ValueConfigurations.First()).ParameterConfigurations.Single(x => x.Name == "InitialFrequency");
    743       initialFrequencyVc.Optimize = true;
     754      foreach (var pc in symbolicExpressionGrammarVc.ParameterConfigurations) {
     755        if (pc.Name != "Constant"
     756          && pc.Name != "Variable"
     757          && pc.Name != "ProgramRootSymbol"
     758          && pc.Name != "StartSymbol") {
     759          pc.Optimize = true;
     760          var initialFrequencyVc = ((ParameterizedValueConfiguration)pc.ValueConfigurations.First()).ParameterConfigurations.Single(x => x.Name == "InitialFrequency");
     761          initialFrequencyVc.Optimize = true;
     762        }
     763      }
     764      //var additionPc = symbolicExpressionGrammarVc.ParameterConfigurations.Single(x => x.Name == "Addition");
     765      //additionPc.Optimize = true;
    744766    }
    745767
     
    896918      string resultPath = Path.Combine(path, string.Format("{0} - Result.hl", id));
    897919      string outputPath = Path.Combine(path, string.Format("{0} - Console.txt", id));
     920
     921      ContentManager.Save((IStorableContent)metaLevelAlgorithm, resultPath+"-before.hl", true);
    898922
    899923      using (var sw = new StreamWriter(outputPath)) {
     
    946970                var orderedRuns = rc.OrderBy(x => x.Results["AverageQualityNormalized"]);
    947971
    948                 TableBuilder tb = new TableBuilder("QNorm", "Qualities"/*, "PoSi"*/ ,"MutRa" /*,"Eli", "SelOp"*/, "MutOp"/*, "NrSelSubScopes"*/);
     972                TableBuilder tb = new TableBuilder("QNorm", "Qualities"/*, "PoSi"*/ /*,"MutRa"*/ /*,"Eli", "SelOp",*/ /*"MutOp"*//*, "NrSelSubScopes"*/);
    949973                foreach (IRun run in orderedRuns) {
    950974                  //string selector;
     
    959983                    ,((DoubleArray)run.Results["RunsAverageQualities"]).ToString()
    960984                    //,((IntValue)run.Parameters["PopulationSize"]).Value.ToString()
    961                     ,((DoubleValue)run.Parameters["MutationProbability"]).Value.ToString("0.0000")
     985                    //,((DoubleValue)run.Parameters["MutationProbability"]).Value.ToString("0.0000")
    962986                    //,((IntValue)run.Parameters["Elites"]).Value.ToString()
    963987                    //,Shorten(selector, 20)
    964                     ,Shorten(run.Parameters.ContainsKey("Mutator") ? run.Parameters["Mutator"].ToString() : "null", 40)
     988                    //,Shorten(run.Parameters.ContainsKey("Mutator") ? run.Parameters["Mutator"].ToString() : "null", 40)
    965989                    //,((ISelector)run.Parameters["Selector"]).NumberOfSelectedSubScopesParameter.Value.ToString()
    966990                    );
Note: See TracChangeset for help on using the changeset viewer.