Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/21/11 00:46:33 (13 years ago)
Author:
cneumuel
Message:

#1215

  • implemented population diversity analysis
File:
1 edited

Legend:

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

    r5361 r5522  
    2323using HeuristicLab.Hive.ExperimentManager;
    2424using System.Threading.Tasks;
     25using HeuristicLab.PluginInfrastructure.Manager;
     26using System.Reflection;
    2527
    2628namespace HeuristicLab.MetaOptimization.Test {
    2729  class Program {
     30    static void Main(string[] args) {
     31      //PluginLoader.pluginAssemblies.Any();
     32      PluginManager pm = new PluginManager(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
     33      pm.DiscoverAndCheckPlugins();
     34
     35      pm.Run(pm.Applications.Where(x => x.Name == "TestApp").SingleOrDefault());
     36    }
     37  }
     38
     39  [Plugin("TestPlugin", "1.0.0.0")]
     40  [PluginFile("HeuristicLab.MetaOptimization.Test.exe", PluginFileType.Assembly)]
     41  public class TestPlugin : PluginBase { }
     42
     43  [Application("TestApp")]
     44  public class TestApp : ApplicationBase {
    2845    //private static int metaAlgorithmPopulationSize = 50;
    2946    //private static int metaAlgorithmMaxGenerations = 30;
     
    3148    //private static int baseAlgorithmMaxGenerations = 1000;
    3249
    33     private static int metaAlgorithmPopulationSize = 10;
    34     private static int metaAlgorithmMaxGenerations = 10;
     50    private static int metaAlgorithmPopulationSize = 20;
     51    private static int metaAlgorithmMaxGenerations = 20;
    3552    private static int metaProblemRepetitions = 2;
    36     private static int baseAlgorithmMaxGenerations = 20;
     53    private static int baseAlgorithmMaxGenerations = 10;
    3754    private static double mutationProbability = 0.10;
    3855
    39     static void Main(string[] args) {
     56    public override void Run() {
    4057      ContentManager.Initialize(new PersistenceContentManager());
    41      
     58
    4259      //TestTableBuilder();
    4360      //TestShorten();
    4461
     62      //TestSimilarities(); return;
    4563      //TestIntSampling();
    4664      //TestDoubleSampling(); return;
     
    5169      //TestCombinations3();
    5270      //TestEnumeratorCollectionEnumerator();
    53       TestCombinations4(); return;
     71      //TestCombinations4(); return;
    5472      //TestAlgorithmPerformanceIssue();
    5573      //TestWaitAny();
     
    5977      //TestItemDictionary();
    6078
    61      
     79
    6280
    6381      MetaOptimizationProblem metaOptimizationProblem = new MetaOptimizationProblem();
     
    87105    }
    88106
     107    private static void TestSimilarities() {
     108      Console.WriteLine("\nDoubleRange:");
     109      var doubleRange = new DoubleValueRange(new DoubleValue(0), new DoubleValue(10), new DoubleValue(1));
     110      var a = new DoubleValue(5.0);
     111
     112      for (double d = 0; d < 10; d += 0.1) {
     113        var similarity = doubleRange.CalculateSimilarity(a, new DoubleValue(d));
     114        Console.WriteLine("{0}: {1}", d, similarity);
     115      }
     116
     117      Console.WriteLine("\nPecentRange:");
     118      var percentRange = new PercentValueRange(new PercentValue(0), new PercentValue(1), new PercentValue(1));
     119      var b = new PercentValue(0.05);
     120
     121      for (double d = 0; d < 1; d += 0.01) {
     122        var similarity = percentRange.CalculateSimilarity(b, new PercentValue(d));
     123        Console.WriteLine("{0}: {1}", d, similarity);
     124      }
     125
     126      Console.WriteLine("\nIntRange:");
     127      var intRange = new IntValueRange(new IntValue(50), new IntValue(100), new IntValue(1));
     128      var c = new IntValue(90);
     129
     130      for (int i = 0; i < 100; i++) {
     131        var similarity = intRange.CalculateSimilarity(c, new IntValue(i));
     132        Console.WriteLine("{0}: {1}", i, similarity);
     133      }
     134
     135      Console.WriteLine("\nValueConfigurations:");
     136      var vc1 = SetupGAAlgorithm(typeof(GeneticAlgorithm), new MetaOptimizationProblem());
     137      vc1.ParameterConfigurations.Single(x => x.Name == "Elites").Optimize = true;
     138      vc1.ParameterConfigurations.Single(x => x.Name == "PopulationSize").Optimize = true;
     139      vc1.ParameterConfigurations.Single(x => x.Name == "MutationProbability").Optimize = true;
     140      vc1.ParameterConfigurations.Single(x => x.Name == "Selector").Optimize = true;
     141
     142      var vc2 = (IValueConfiguration)vc1.Clone();
     143      Console.WriteLine("Assert(1): {0}", vc1.CalculateSimilarity(vc2));
     144
     145      ((IntValue)vc2.ParameterConfigurations.Single(x => x.Name == "PopulationSize").ValueConfigurations[0].ActualValue.Value).Value = 75;
     146      Console.WriteLine("{0}", vc1.CalculateSimilarity(vc2));
     147
     148      ((PercentValue)vc2.ParameterConfigurations.Single(x => x.Name == "MutationProbability").ValueConfigurations[0].ActualValue.Value).Value = 0.15;
     149      Console.WriteLine("{0}", vc1.CalculateSimilarity(vc2));
     150
     151      ((PercentValue)vc2.ParameterConfigurations.Single(x => x.Name == "MutationProbability").ValueConfigurations[0].ActualValue.Value).Value = 0.25;
     152      Console.WriteLine("{0}", vc1.CalculateSimilarity(vc2));
     153      ((PercentValue)vc2.ParameterConfigurations.Single(x => x.Name == "MutationProbability").ValueConfigurations[0].ActualValue.Value).Value = 0.35;
     154      Console.WriteLine("{0}", vc1.CalculateSimilarity(vc2));
     155      ((PercentValue)vc2.ParameterConfigurations.Single(x => x.Name == "MutationProbability").ValueConfigurations[0].ActualValue.Value).Value = 0.45;
     156      Console.WriteLine("{0}", vc1.CalculateSimilarity(vc2));
     157      ((PercentValue)vc2.ParameterConfigurations.Single(x => x.Name == "MutationProbability").ValueConfigurations[0].ActualValue.Value).Value = 0.55;
     158      Console.WriteLine("{0}", vc1.CalculateSimilarity(vc2));
     159
     160      vc2.ParameterConfigurations.Single(x => x.Name == "Selector").ActualValueConfigurationIndex = 3;
     161      Console.WriteLine("{0}", vc1.CalculateSimilarity(vc2));
     162
     163      var random = new Random.MersenneTwister(0);
     164      for (int i = 0; i < 10; i++) {
     165        vc2.Randomize(random);
     166        Console.WriteLine("Randomized: {0}", vc1.CalculateSimilarity(vc2));
     167      }
     168    }
     169
    89170    private static void TestItemDictionary() {
    90171      var dict = new ItemDictionary<StringValue, RunCollection>();
     
    116197      using (var sw = new StreamWriter("normalCrossover-IntValue.txt")) {
    117198        for (int i = 0; i < 10000; i++) {
    118          sw.WriteLine(NormalIntValueCrossover.ApplyStatic(random, new IntValue(i1), new IntValue(i2), intRange));
     199          sw.WriteLine(NormalIntValueCrossover.ApplyStatic(random, new IntValue(i1), new IntValue(i2), intRange));
    119200        }
    120201      }
     
    557638        ProblemSize = new IntValue(2)
    558639      });
    559       metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() {
    560         Evaluator = new GriewankEvaluator(),
    561         ProblemSize = new IntValue(20)
    562       });
    563       metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() {
    564         Evaluator = new GriewankEvaluator(),
    565         ProblemSize = new IntValue(500)
    566       });
     640      //metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() {
     641      //  Evaluator = new GriewankEvaluator(),
     642      //  ProblemSize = new IntValue(20)
     643      //});
     644      //metaOptimizationProblem.Problems.Add(new HeuristicLab.Problems.TestFunctions.SingleObjectiveTestFunctionProblem() {
     645      //  Evaluator = new GriewankEvaluator(),
     646      //  ProblemSize = new IntValue(500)
     647      //});
    567648
    568649      ConfigurePopulationSize(algorithmVc, 0, 20, 1);
    569       //ConfigureMutationRate(algorithmVc, 0.0, 1.0, 0.01);
    570       //ConfigureMutationOperator(algorithmVc);
     650      ConfigureMutationRate(algorithmVc, 0.0, 1.0, 0.01);
     651      ConfigureMutationOperator(algorithmVc);
    571652      ConfigureElites(algorithmVc, 0, 30, 1);
    572       //ConfigureSelectionOperator(algorithmVc, true);
     653      ConfigureSelectionOperator(algorithmVc, true);
    573654      return algorithmVc;
    574655    }
Note: See TracChangeset for help on using the changeset viewer.