Changeset 5927 for branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs
- Timestamp:
- 04/01/11 17:15:41 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs
r5665 r5927 14 14 using HeuristicLab.Core; 15 15 using HeuristicLab.Data; 16 using HeuristicLab.Encodings.RealVectorEncoding; 16 17 using HeuristicLab.Hive.ExperimentManager; 17 18 using HeuristicLab.Optimization; … … 19 20 using HeuristicLab.PluginInfrastructure; 20 21 using HeuristicLab.PluginInfrastructure.Manager; 22 using HeuristicLab.Problems.DataAnalysis.Symbolic; 23 using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression; 21 24 using HeuristicLab.Problems.MetaOptimization; 22 25 using HeuristicLab.Problems.TestFunctions; … … 46 49 //private static int baseAlgorithmMaxGenerations = 1000; 47 50 48 private static int metaAlgorithmPopulationSize = 5;51 private static int metaAlgorithmPopulationSize = 10; 49 52 private static int metaAlgorithmMaxGenerations = 15; 50 private static int metaProblemRepetitions = 2;51 private static int baseAlgorithmMaxGenerations = 5;53 private static int metaProblemRepetitions = 3; 54 private static int baseAlgorithmMaxGenerations = 10; 52 55 private static double mutationProbability = 0.10; 53 56 … … 74 77 //TestNormalCrossover(); 75 78 //TestItemDictionary(); 76 79 80 //TestSymbolicDataAnalysisGrammar(); return; 81 77 82 MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem(); 78 83 metaOptimizationProblem.Repetitions = new IntValue(metaProblemRepetitions); … … 90 95 //Console.WriteLine("Press enter to start"); 91 96 //Console.ReadLine(); 92 TestConfiguration(algorithmVc, new GeneticAlgorithm() { Problem = new SingleObjectiveTestFunctionProblem() });97 TestConfiguration(algorithmVc, typeof(GeneticAlgorithm), metaOptimizationProblem.Problems.First()); 93 98 94 99 Console.WriteLine("Press enter to start"); … … 99 104 100 105 Console.ReadLine(); 106 } 107 108 private void TestSymbolicDataAnalysisGrammar() { 109 var random = new MersenneTwister(); 110 111 var grammar1 = new TypeCoherentExpressionGrammar(); 112 var grammar2 = new TypeCoherentExpressionGrammar(); 113 114 grammar2.Symbols.Single(x => x.Name == "Addition").InitialFrequency = 0.5; 115 116 Console.WriteLine("========== Grammar1: =========="); 117 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 } 134 135 } 136 137 private static void PrintGrammar(TypeCoherentExpressionGrammar grammar) { 138 foreach (var symbol in grammar.Symbols) { 139 Console.WriteLine("{0} ({1})", symbol.ToString(), symbol.InitialFrequency); 140 } 141 } 142 143 private static RealVector GetInitialFrequenciesAsRealVector(TypeCoherentExpressionGrammar grammar) { 144 var vector = new RealVector(grammar.Symbols.Count()); 145 for (int i = 0; i < grammar.Symbols.Count(); i++) { 146 vector[i] = grammar.Symbols.ElementAt(i).InitialFrequency; 147 } 148 return vector; 149 } 150 151 private static void SetInitialFrequenciesFromRealVector(TypeCoherentExpressionGrammar grammar, RealVector vector) { 152 for (int i = 0; i < grammar.Symbols.Count(); i++) { 153 grammar.Symbols.ElementAt(i).InitialFrequency = vector[i]; 154 } 101 155 } 102 156 … … 384 438 // because creating ThreadLocal<T> takes all the runtime. 385 439 // when the algs are not stored in a list however this effect does not occur. 386 440 387 441 388 442 for (int i = 0; i < 1000; i++) { … … 557 611 private static void TestTypeDiscovery() { 558 612 PluginLoader.pluginAssemblies.Any(); 559 613 560 614 var items = ApplicationManager.Manager.GetInstances(typeof(DoubleArray)).ToArray(); 561 615 … … 638 692 private static ParameterConfigurationTree SetupGAAlgorithm(Type baseLevelAlgorithmType, MetaOptimizationProblem metaOptimizationProblem) { 639 693 metaOptimizationProblem.AlgorithmType.Value = baseLevelAlgorithmType; 640 metaOptimizationProblem.ProblemType.Value = typeof(SingleObjectiveTestFunctionProblem); 641 ParameterConfigurationTree algorithmVc = metaOptimizationProblem.ParameterConfigurationTree; 642 ((IntValue)algorithmVc.AlgorithmConfiguration.ParameterConfigurations.Single(x => x.Name == "MaximumGenerations").ActualValue.Value).Value = baseAlgorithmMaxGenerations; 643 644 metaOptimizationProblem.Problems.Clear(); 645 metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() { 646 Evaluator = new GriewankEvaluator(), 647 ProblemSize = new IntValue(2) 648 }); 694 //metaOptimizationProblem.Problems.Clear(); 695 696 //metaOptimizationProblem.ProblemType.Value = typeof(SingleObjectiveTestFunctionProblem); 697 //metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() { 698 // Evaluator = new GriewankEvaluator(), 699 // ProblemSize = new IntValue(2) 700 //}); 649 701 //metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() { 650 702 // Evaluator = new GriewankEvaluator(), … … 656 708 //}); 657 709 658 ConfigurePopulationSize(algorithmVc, 15, 20, 1); 710 metaOptimizationProblem.ProblemType.Value = typeof(SymbolicRegressionSingleObjectiveProblem); 711 712 ParameterConfigurationTree algorithmVc = metaOptimizationProblem.ParameterConfigurationTree; 713 ((IntValue)algorithmVc.AlgorithmConfiguration.ParameterConfigurations.Single(x => x.Name == "MaximumGenerations").ActualValue.Value).Value = baseAlgorithmMaxGenerations; 714 715 //ConfigurePopulationSize(algorithmVc, 15, 20, 1); 659 716 ConfigureMutationRate(algorithmVc, 0.0, 1.0, 0.01); 660 //ConfigureMutationOperator(algorithmVc);717 ConfigureMutationOperator(algorithmVc); 661 718 //ConfigureElites(algorithmVc, 0, 8, 1); 662 719 //ConfigureSelectionOperator(algorithmVc, true); 720 721 ConfigureSymbolicExpressionGrammar(algorithmVc); 722 663 723 return algorithmVc; 664 724 } 665 725 666 private static void TestConfiguration(ParameterConfigurationTree algorithmVc, GeneticAlgorithm baseLevelAlgorithm) { 726 private static void ConfigureSymbolicExpressionGrammar(ParameterConfigurationTree vc) { 727 var pc = vc.ProblemConfiguration.ParameterConfigurations.Single(x => x.Name == "SymbolicExpressionTreeGrammar"); 728 pc.Optimize = true; 729 730 SymbolicExpressionGrammarValueConfiguration symbolicExpressionGrammarVc = null; 731 foreach (var valconf in pc.ValueConfigurations) { 732 if (valconf.ActualValue.Value.ItemName != "TypeCoherentExpressionGrammar") { 733 pc.ValueConfigurations.SetItemCheckedState(valconf, false); 734 } else { 735 symbolicExpressionGrammarVc = valconf as SymbolicExpressionGrammarValueConfiguration; 736 } 737 } 738 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; 744 } 745 746 private static void TestConfiguration(ParameterConfigurationTree algorithmVc, Type baseLevelAlgorithmType, IProblem problem) { 667 747 IRandom rand = new FastRandom(0); 748 var baseLevelAlgorithm = (GeneticAlgorithm)MetaOptimizationUtil.CreateParameterizedAlgorithmInstance(algorithmVc, baseLevelAlgorithmType, problem); 749 668 750 // set random values 669 751 for (int i = 0; i < 10; i++) { … … 739 821 740 822 // uncheck multiMutator to avoid Michalewicz issue 741 var multiMutator = mutationOperator.ValueConfigurations.Where(x => x.ActualValue.Value != null && x.ActualValue.Value.ItemName.StartsWith("Multi")).SingleOrDefault();742 if (multiMutator != null) {743 mutationOperator.ValueConfigurations.SetItemCheckedState(multiMutator, false);744 }823 //var multiMutator = mutationOperator.ValueConfigurations.Where(x => x.ActualValue.Value != null && x.ActualValue.Value.ItemName.StartsWith("Multi")).SingleOrDefault(); 824 //if (multiMutator != null) { 825 // mutationOperator.ValueConfigurations.SetItemCheckedState(multiMutator, false); 826 //} 745 827 746 828 // add another normal - don't do this with 'new', because ActualNames will not be set correctly. It should be copied from an existing one … … 864 946 var orderedRuns = rc.OrderBy(x => x.Results["AverageQualityNormalized"]); 865 947 866 TableBuilder tb = new TableBuilder("QNorm", "Qualities"/*, "PoSi" /* "MutRa", "Eli", "SelOp", "MutOp", "NrSelSubScopes"*/);948 TableBuilder tb = new TableBuilder("QNorm", "Qualities"/*, "PoSi"*/ ,"MutRa" /*,"Eli", "SelOp"*/, "MutOp"/*, "NrSelSubScopes"*/); 867 949 foreach (IRun run in orderedRuns) { 868 950 //string selector; … … 874 956 875 957 tb.AppendRow( 876 ((DoubleValue)run.Results["AverageQualityNormalized"]).Value.ToString("#0.0000") ,877 ((DoubleArray)run.Results["RunsAverageQualities"]).ToString()878 // ((IntValue)run.Parameters["PopulationSize"]).Value.ToString(),879 //((DoubleValue)run.Parameters["MutationProbability"]).Value.ToString("0.0000"),880 // ((IntValue)run.Parameters["Elites"]).Value.ToString(),881 // Shorten(selector, 20),882 //Shorten(run.Parameters.ContainsKey("Mutator") ? run.Parameters["Mutator"].ToString() : "null", 40),883 // ((ISelector)run.Parameters["Selector"]).NumberOfSelectedSubScopesParameter.Value.ToString()958 ((DoubleValue)run.Results["AverageQualityNormalized"]).Value.ToString("#0.0000") 959 ,((DoubleArray)run.Results["RunsAverageQualities"]).ToString() 960 //,((IntValue)run.Parameters["PopulationSize"]).Value.ToString() 961 ,((DoubleValue)run.Parameters["MutationProbability"]).Value.ToString("0.0000") 962 //,((IntValue)run.Parameters["Elites"]).Value.ToString() 963 //,Shorten(selector, 20) 964 ,Shorten(run.Parameters.ContainsKey("Mutator") ? run.Parameters["Mutator"].ToString() : "null", 40) 965 //,((ISelector)run.Parameters["Selector"]).NumberOfSelectedSubScopesParameter.Value.ToString() 884 966 ); 885 967 }
Note: See TracChangeset
for help on using the changeset viewer.