- Timestamp:
- 05/01/11 22:02:28 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.MetaOptimization/HeuristicLab.MetaOptimization.Test/Program.cs
r6038 r6090 15 15 using HeuristicLab.Data; 16 16 using HeuristicLab.Encodings.RealVectorEncoding; 17 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 17 18 //using HeuristicLab.Hive.ExperimentManager; 18 19 using HeuristicLab.Optimization; … … 21 22 using HeuristicLab.PluginInfrastructure.Manager; 22 23 using HeuristicLab.Problems.DataAnalysis.Symbolic; 23 using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression;24 24 using HeuristicLab.Problems.MetaOptimization; 25 25 using HeuristicLab.Problems.TestFunctions; … … 42 42 [Application("TestApp")] 43 43 public class TestApp : ApplicationBase { 44 //private static int metaAlgorithmPopulationSize = 50;44 //private static int metaAlgorithmPopulationSize = 30; 45 45 //private static int metaAlgorithmMaxGenerations = 30; 46 //private static int metaProblemRepetitions = 5; 47 //private static int baseAlgorithmMaxGenerations = 1000; 46 //private static int metaProblemRepetitions = 3; 47 //private static int baseAlgorithmMaxGenerations = 500; 48 //private static double mutationProbability = 0.10; 48 49 49 50 private static int metaAlgorithmPopulationSize = 10; 50 51 private static int metaAlgorithmMaxGenerations = 20; 52 private static double metaAlgorithmMutationProbability = 0.10; 51 53 private static int metaProblemRepetitions = 2; 52 private static int baseAlgorithmMaxGenerations = 50;53 private static double mutationProbability = 0.10;54 54 private static int baseAlgorithmMaxGenerations = 10; 55 private static int baseAlgorithmPopulationSize = 10; 56 55 57 public override void Run() { 56 58 ContentManager.Initialize(new PersistenceContentManager()); … … 63 65 //TestDoubleSampling(); return; 64 66 //TestTypeDiscovery(); 65 TestOperators(); return;67 //TestOperators(); return; 66 68 //TestCombinations(); 67 69 //TestCombinations2(); … … 78 80 //TestSymbolicDataAnalysisGrammar(); return; 79 81 80 MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem(); 82 //MetaOptimizationProblem metaOptimizationProblem = LoadOptimizationProblem("Meta Optimization Problem (Genetic Programming - Symbolic Regression 3.4 scaled).hl"); 83 //var algorithmVc = metaOptimizationProblem.ParameterConfigurationTree; 84 85 var metaOptimizationProblem = new MetaOptimizationProblem(); 86 var algorithmVc = SetupGAAlgorithm(typeof(GeneticAlgorithm), metaOptimizationProblem); 87 81 88 metaOptimizationProblem.Repetitions = new IntValue(metaProblemRepetitions); 82 //GeneticAlgorithm metaLevelAlgorithm = Get MetaGA(metaOptimizationProblem);89 //GeneticAlgorithm metaLevelAlgorithm = GetSequentialMetaGA(metaOptimizationProblem); 83 90 GeneticAlgorithm metaLevelAlgorithm = GetParallelMetaGA(metaOptimizationProblem); 84 91 //GeneticAlgorithm metaLevelAlgorithm = GetHiveParallelMetaGA(metaOptimizationProblem); 85 86 92 //EvolutionStrategy metaLevelAlgorithm = GetMetaES(metaOptimizationProblem); 87 88 var algorithmVc = SetupGAAlgorithm(typeof(GeneticAlgorithm), metaOptimizationProblem);89 90 string info = algorithmVc.ParameterInfoString;91 93 92 94 //Console.WriteLine("Press enter to start"); … … 103 105 } 104 106 107 private MetaOptimizationProblem LoadOptimizationProblem(string filename) { 108 return (MetaOptimizationProblem)ContentManager.Load(filename); 109 } 110 105 111 private void TestSymbolicDataAnalysisGrammar() { 106 112 var random = new MersenneTwister(); … … 108 114 var grammar1 = new TypeCoherentExpressionGrammar(); 109 115 var grammar2 = new TypeCoherentExpressionGrammar(); 110 116 111 117 Console.WriteLine("========== Grammar1: =========="); 112 118 PrintGrammar(grammar1); … … 280 286 MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem(); 281 287 metaOptimizationProblem.Repetitions = new IntValue(metaProblemRepetitions); 282 GeneticAlgorithm metaLevelAlgorithm = Get MetaGA(metaOptimizationProblem);288 GeneticAlgorithm metaLevelAlgorithm = GetSequentialMetaGA(metaOptimizationProblem); 283 289 ParameterConfigurationTree algorithmVc = SetupGAAlgorithm(typeof(GeneticAlgorithm), metaOptimizationProblem); 284 290 Stopwatch sw = new Stopwatch(); … … 459 465 460 466 461 for (int i = 0; i < 1000 ; i++) {467 for (int i = 0; i < 10000; i++) { 462 468 GeneticAlgorithm clonedGa = (GeneticAlgorithm)ga.Clone(); 463 469 clonedGa.Name = "CLONED GA"; … … 479 485 } 480 486 sw.Reset(); 487 //Console.ReadLine(); 481 488 } 482 489 } … … 670 677 } 671 678 672 private static GeneticAlgorithm Get MetaGA(MetaOptimizationProblem metaOptimizationProblem) {679 private static GeneticAlgorithm GetSequentialMetaGA(MetaOptimizationProblem metaOptimizationProblem) { 673 680 GeneticAlgorithm metaLevelAlgorithm = new GeneticAlgorithm(); 674 681 metaLevelAlgorithm.PopulationSize.Value = metaAlgorithmPopulationSize; … … 681 688 //metaLevelAlgorithm.Mutator = ((OptionalConstrainedValueParameter<IManipulator>)((IAlgorithm)metaLevelAlgorithm).Parameters["Mutator"]).ValidValues.Where(x => x.GetType() == typeof(ParameterConfigurationAllPositionsManipulator)).Single(); 682 689 683 metaLevelAlgorithm.MutationProbability.Value = m utationProbability;690 metaLevelAlgorithm.MutationProbability.Value = metaAlgorithmMutationProbability; 684 691 //metaLevelAlgorithm.Selector = ((OptionalConstrainedValueParameter<ISelector>)((IAlgorithm)metaLevelAlgorithm).Parameters["Selector"]).ValidValues.Where(x => x.GetType() == typeof(LinearRankSelector)).Single(); 685 692 //metaLevelAlgorithm.Selector = ((OptionalConstrainedValueParameter<ISelector>)((IAlgorithm)metaLevelAlgorithm).Parameters["Selector"]).ValidValues.Where(x => x.GetType() == typeof(TournamentSelector)).Single(); 686 693 //metaLevelAlgorithm.Selector = ((OptionalConstrainedValueParameter<ISelector>)((IAlgorithm)metaLevelAlgorithm).Parameters["Selector"]).ValidValues.Where(x => x.GetType() == typeof(GenderSpecificSelector)).Single(); 687 694 //metaLevelAlgorithm.Selector = ((OptionalConstrainedValueParameter<ISelector>)((IAlgorithm)metaLevelAlgorithm).Parameters["Selector"]).ValidValues.Where(x => x.GetType() == typeof(BestSelector)).Single(); 688 metaLevelAlgorithm.Selector = ((OptionalConstrainedValueParameter<ISelector>)((IAlgorithm)metaLevelAlgorithm).Parameters["Selector"]).ValidValues.Where(x => x.GetType() == typeof(ProportionalSelector)).Single(); 695 metaLevelAlgorithm.Selector = ((OptionalConstrainedValueParameter<ISelector>)((IAlgorithm)metaLevelAlgorithm).Parameters["Selector"]).ValidValues.Where(x => x.GetType() == typeof(TournamentSelector)).Single(); 696 697 metaLevelAlgorithm.SetSeedRandomly.Value = false; 698 //metaLevelAlgorithm.Seed.Value = new MersenneTwister().Next(0, 1000000); 699 metaLevelAlgorithm.Seed.Value = 527875; 689 700 690 701 return metaLevelAlgorithm; … … 692 703 693 704 private static GeneticAlgorithm GetParallelMetaGA(MetaOptimizationProblem metaOptimizationProblem) { 694 GeneticAlgorithm metaLevelAlgorithm = Get MetaGA(metaOptimizationProblem);705 GeneticAlgorithm metaLevelAlgorithm = GetSequentialMetaGA(metaOptimizationProblem); 695 706 metaLevelAlgorithm.Engine = new ParallelEngine.ParallelEngine(); 696 707 return metaLevelAlgorithm; … … 722 733 private static ParameterConfigurationTree SetupGAAlgorithm(Type baseLevelAlgorithmType, MetaOptimizationProblem metaOptimizationProblem) { 723 734 metaOptimizationProblem.AlgorithmType.Value = baseLevelAlgorithmType; 735 736 //metaOptimizationProblem.ProblemType.Value = typeof(SingleObjectiveTestFunctionProblem); 724 737 //metaOptimizationProblem.Problems.Clear(); 725 726 //metaOptimizationProblem.ProblemType.Value = typeof(SingleObjectiveTestFunctionProblem);727 738 //metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() { 728 739 // Evaluator = new GriewankEvaluator(), … … 731 742 //metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() { 732 743 // Evaluator = new GriewankEvaluator(), 733 // ProblemSize = new IntValue( 20)744 // ProblemSize = new IntValue(50) 734 745 //}); 735 746 //metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() { … … 738 749 //}); 739 750 740 metaOptimizationProblem.ProblemType.Value = typeof(SymbolicRegressionSingleObjectiveProblem); 741 751 //metaOptimizationProblem.ProblemType.Value = typeof(SymbolicRegressionSingleObjectiveProblem); 752 //metaOptimizationProblem.Maximization.Value = true; 753 754 // tower problem 755 metaOptimizationProblem.ImportAlgorithm((IAlgorithm)ContentManager.Load("Genetic Programming - Symbolic Regression 3.4_scaled.hl")); 756 metaOptimizationProblem.Maximization.Value = true; 757 742 758 ParameterConfigurationTree algorithmVc = metaOptimizationProblem.ParameterConfigurationTree; 743 759 ((IntValue)algorithmVc.AlgorithmConfiguration.ParameterConfigurations.Single(x => x.Name == "MaximumGenerations").ActualValue.Value).Value = baseAlgorithmMaxGenerations; 744 745 //ConfigurePopulationSize(algorithmVc, 15, 20, 1); 760 ((IntValue)algorithmVc.AlgorithmConfiguration.ParameterConfigurations.Single(x => x.Name == "PopulationSize").ActualValue.Value).Value = baseAlgorithmPopulationSize; 761 762 //ConfigurePopulationSize(algorithmVc, 10, 100, 1); 746 763 //ConfigureMutationRate(algorithmVc, 0.0, 1.0, 0.01); 747 764 //ConfigureMutationOperator(algorithmVc); 748 //ConfigureElites(algorithmVc, 0, 8, 1);765 //ConfigureElites(algorithmVc, 0, 10, 1); 749 766 //ConfigureSelectionOperator(algorithmVc, true); 750 767 … … 772 789 private static void ConfigureSymbolicExpressionGrammarVc(SymbolicExpressionGrammarValueConfiguration symbolicExpressionGrammarVc) { 773 790 symbolicExpressionGrammarVc.Optimize = true; 774 foreach (var pc in symbolicExpressionGrammarVc.ParameterConfigurations) { 775 if (pc.Name != "Constant" 776 && pc.Name != "Variable" 777 && pc.Name != "ProgramRootSymbol" 778 && pc.Name != "StartSymbol") { 779 pc.Optimize = true; 780 } 781 } 782 //var additionPc = symbolicExpressionGrammarVc.ParameterConfigurations.Single(x => x.Name == "Addition"); 783 //additionPc.Optimize = true; 791 792 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Addition", 1.0); 793 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Subtraction", 1.0); 794 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Multiplication", 1.0); 795 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Division", 1.0); 796 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Average", 1.0); 797 798 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "IfThenElse", 0.0); 799 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "GreaterThan", 0.0); 800 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "LessThan", 0.0); 801 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "And", 0.0); 802 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Or", 0.0); 803 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Not", 0.0); 804 805 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Sine", 0.0); 806 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Cosine", 0.0); 807 SetInitialFrequencyValue(symbolicExpressionGrammarVc, "Tangent", 0.0); 808 809 OptimizeInitialFrequency(symbolicExpressionGrammarVc, "Logarithm", "InitialFrequency", 0.0, 5.0, 0.01); 810 OptimizeInitialFrequency(symbolicExpressionGrammarVc, "Power", "InitialFrequency", 0.0, 5.0, 0.01); 811 OptimizeInitialFrequency(symbolicExpressionGrammarVc, "Root", "InitialFrequency", 0.0, 5.0, 0.01); 812 813 OptimizeInitialFrequency(symbolicExpressionGrammarVc, "Variable", "WeightSigma", 0.01, 10.0, 0.01); 814 OptimizeInitialFrequency(symbolicExpressionGrammarVc, "Variable", "WeightManipulatorSigma", 0.01, 10.0, 0.01); 815 OptimizeInitialFrequency(symbolicExpressionGrammarVc, "Variable", "MultiplicativeWeightManipulatorSigma", 0.01, 10.0, 0.01); 816 817 OptimizeInitialFrequency(symbolicExpressionGrammarVc, "Constant", "ManipulatorSigma", 0.01, 10.0, 0.01); 818 OptimizeInitialFrequency(symbolicExpressionGrammarVc, "Constant", "MultiplicativeManipulatorSigma", 0.01, 10.0, 0.01); 819 } 820 821 private static void SetInitialFrequencyValue(SymbolicExpressionGrammarValueConfiguration symbolicExpressionGrammarVc, string symbolName, double value) { 822 ((Symbol)symbolicExpressionGrammarVc.ParameterConfigurations.Single(x => x.Name == symbolName).ActualValue.Value).InitialFrequency = value; 823 } 824 825 private static void OptimizeInitialFrequency(SymbolicExpressionGrammarValueConfiguration symbolicExpressionGrammarVc, string symbolName, string parameterName, double lower, double upper, double step) { 826 var pc = symbolicExpressionGrammarVc.ParameterConfigurations.Single(x => x.Name == symbolName); 827 pc.Optimize = true; 828 var vc = (SymbolValueConfiguration)pc.ValueConfigurations.Single(); 829 var parameterPc = vc.ParameterConfigurations.Single(x => x.Name == parameterName); 830 parameterPc.Optimize = true; 831 parameterPc.ValueConfigurations.Clear(); 832 var rvc = new RangeValueConfiguration(new DoubleValue(5.0), typeof(DoubleValue)); 833 rvc.Optimize = true; 834 ((DoubleValueRange)rvc.RangeConstraint).LowerBound.Value = lower; 835 ((DoubleValueRange)rvc.RangeConstraint).UpperBound.Value = upper; 836 ((DoubleValueRange)rvc.RangeConstraint).StepSize.Value = step; 837 parameterPc.ValueConfigurations.Add(rvc); 784 838 } 785 839 … … 937 991 string outputPath = Path.Combine(path, string.Format("{0} - Console.txt", id)); 938 992 939 ContentManager.Save((IStorableContent)metaLevelAlgorithm, resultPath +"-before.hl", true);940 993 ContentManager.Save((IStorableContent)metaLevelAlgorithm, resultPath + "-before.hl", true); 994 941 995 using (var sw = new StreamWriter(outputPath)) { 942 996 sw.AutoFlush = true; … … 947 1001 sb1.AppendFormat("Meta.Repetitions : {0}\n", metaProblemRepetitions); 948 1002 sb1.AppendFormat("Meta.MutProb : {0}\n", ((GeneticAlgorithm)metaLevelAlgorithm).MutationProbability.Value); 1003 sb1.AppendFormat("Meta.Seed : {0}\n", ((GeneticAlgorithm)metaLevelAlgorithm).Seed.Value); 949 1004 sb1.AppendFormat("Base.MaxGenerations: {0}\n", baseAlgorithmMaxGenerations); 1005 950 1006 sb1.AppendLine("Problems:"); 951 1007 foreach (var prob in ((MetaOptimizationProblem)metaLevelAlgorithm.Problem).Problems) { … … 988 1044 var orderedRuns = rc.OrderBy(x => x.Results["AverageQualityNormalized"]); 989 1045 990 TableBuilder tb = new TableBuilder("QNorm", "Qualities"/*, "PoSi"*/ /*,"MutRa"*/ /*,"Eli", "SelOp",*/ /*"MutOp"*//*, "NrSelSubScopes"*/); 1046 //TableBuilder tb = new TableBuilder("QNorm", "Qualities"/*, "PoSi"*/ /*,"MutRa"*/ /*,"Eli", "SelOp",*/ /*"MutOp"*//*, "NrSelSubScopes"*/); 1047 //foreach (IRun run in orderedRuns) { 1048 // //string selector; 1049 // //if (run.Parameters["Selector"] is TournamentSelector) { 1050 // // selector = string.Format("{0} ({1})", run.Parameters["Selector"].ToString(), ((TournamentSelector)run.Parameters["Selector"]).GroupSizeParameter.Value.ToString()); 1051 // //} else { 1052 // // selector = string.Format("{0}", run.Parameters["Selector"].ToString()); 1053 // //} 1054 1055 // tb.AppendRow( 1056 // ((DoubleValue)run.Results["AverageQualityNormalized"]).Value.ToString("#0.0000") 1057 // ,((DoubleArray)run.Results["RunsAverageQualities"]).ToString() 1058 // //,((IntValue)run.Parameters["PopulationSize"]).Value.ToString() 1059 // //,((DoubleValue)run.Parameters["MutationProbability"]).Value.ToString("0.0000") 1060 // //,((IntValue)run.Parameters["Elites"]).Value.ToString() 1061 // //,Shorten(selector, 20) 1062 // //,Shorten(run.Parameters.ContainsKey("Mutator") ? run.Parameters["Mutator"].ToString() : "null", 40) 1063 // //,((ISelector)run.Parameters["Selector"]).NumberOfSelectedSubScopesParameter.Value.ToString() 1064 // ); 1065 //} 1066 //sb.AppendLine(tb.ToString()); 1067 1068 var tb = new TableBuilder("QNorm", "Qualities", "StdDevs", "Evaluations", "Parameters"); 991 1069 foreach (IRun run in orderedRuns) { 992 //string selector;993 //if (run.Parameters["Selector"] is TournamentSelector) {994 // selector = string.Format("{0} ({1})", run.Parameters["Selector"].ToString(), ((TournamentSelector)run.Parameters["Selector"]).GroupSizeParameter.Value.ToString());995 //} else {996 // selector = string.Format("{0}", run.Parameters["Selector"].ToString());997 //}998 999 1070 tb.AppendRow( 1000 1071 ((DoubleValue)run.Results["AverageQualityNormalized"]).Value.ToString("#0.0000") 1001 ,((DoubleArray)run.Results["RunsAverageQualities"]).ToString() 1002 //,((IntValue)run.Parameters["PopulationSize"]).Value.ToString() 1003 //,((DoubleValue)run.Parameters["MutationProbability"]).Value.ToString("0.0000") 1004 //,((IntValue)run.Parameters["Elites"]).Value.ToString() 1005 //,Shorten(selector, 20) 1006 //,Shorten(run.Parameters.ContainsKey("Mutator") ? run.Parameters["Mutator"].ToString() : "null", 40) 1007 //,((ISelector)run.Parameters["Selector"]).NumberOfSelectedSubScopesParameter.Value.ToString() 1072 , ((DoubleArray)run.Results["RunsAverageQualities"]).ToString() 1073 , ((DoubleArray)run.Results["RunsQualityStandardDeviations"]).ToString() 1074 , ((DoubleArray)run.Results["RunsAverageEvaluatedSolutions"]).ToString() 1075 , run.Name 1008 1076 ); 1009 1077 }
Note: See TracChangeset
for help on using the changeset viewer.