Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/28/17 09:03:34 (7 years ago)
Author:
pkimmesw
Message:

#2665 Testet Problems, Improved Performance

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/Push.Thesis/Program.cs

    r15334 r15341  
    33
    44namespace Push.Thesis {
     5  using System.Collections.Generic;
    56  using System.IO;
     7  using System.Threading;
    68  using System.Threading.Tasks;
    79
    810  using HeuristicLab.Algorithms.GeneticAlgorithm;
    911  using HeuristicLab.BenchmarkSuite;
     12  using HeuristicLab.Clients.Hive;
     13  using HeuristicLab.Core;
     14  using HeuristicLab.MainForm;
    1015  using HeuristicLab.Optimization;
    1116  using HeuristicLab.ParallelEngine;
    1217  using HeuristicLab.Persistence.Default.Xml;
     18  using HeuristicLab.Problems.Instances;
    1319  using HeuristicLab.Problems.ProgramSynthesis.Push.Analyzer;
    1420  using HeuristicLab.Problems.ProgramSynthesis.Push.Crossover;
     
    1824  using HeuristicLab.Problems.ProgramSynthesis.Push.Problem.BenchmarkSuite;
    1925  using HeuristicLab.Problems.ProgramSynthesis.Push.Selector;
     26  using HeuristicLab.SequentialEngine;
    2027
    2128  class Program {
     
    2330      //BuildListOfInstructions();
    2431      GenerateRuns();
    25       GenerateExperiments();
     32      //GenerateExperiments(false);
     33      //GenerateHiveHJobs();
    2634      //GenerateExperimentWithAllProblems();
     35
     36      //var cancellationTokenSource = new CancellationTokenSource();
     37      //var progress = UploadHiveJob(new Median(), cancellationTokenSource.Token);
     38      //progress.ProgressStateChanged += (sender, a) => {
     39      //  if (progress.ProgressState == ProgressState.Finished) {
     40      //    Environment.Exit(0);
     41      //  }
     42      //};
     43
     44      //Console.ReadKey(false);
    2745    }
    2846
     
    5472    }
    5573
    56     static void GenerateExperiments() {
     74    static void GenerateExperiments(bool parallel = true) {
    5775      var provider = new BenchmarkSuiteInstanceProvider();
    5876      var descriptors = provider.GetDataDescriptors();
     
    6078      Parallel.ForEach(descriptors, descriptor => {
    6179        var benchmarkSuiteProblemDescriptor = (BenchmarkSuiteDataDescriptor)descriptor;
    62         var alg = GetAlgorithm(benchmarkSuiteProblemDescriptor);
    63         var experiment = GetExperiment(alg, 10);
     80        var alg = GetAlgorithm(benchmarkSuiteProblemDescriptor, parallel);
     81        var experiment = GetExperiment(alg, 50);
    6482
    6583        XmlGenerator.Serialize(experiment, $@"C:\tmp\Plush - GA\Experiments\Experiment_{descriptor.Name}.hl");
     
    6785    }
    6886
     87    static IProgress UploadHiveJob(IBenchmarkSuiteDataDescriptor descriptor, CancellationToken token) {
     88      var job = GenerateHiveJob(descriptor);
     89      HiveClient.StartJob(e => { }, job, token);
     90
     91      return job.Progress;
     92    }
     93
     94    static IEnumerable<RefreshableJob> GenerateHiveHJobs() {
     95      var provider = new BenchmarkSuiteInstanceProvider();
     96      var descriptors = provider.GetDataDescriptors();
     97      var jobs = descriptors
     98        .AsParallel()
     99        .Select(GenerateHiveJob);
     100
     101      return jobs;
     102    }
     103
     104    static RefreshableJob GenerateHiveJob(IDataDescriptor descriptor) {
     105      var alg = GetAlgorithm((IBenchmarkSuiteDataDescriptor)descriptor, false);
     106      var experiment = GetExperiment(alg, 50);
     107      var job = GenerateHiveJob(experiment);
     108
     109      return job;
     110    }
     111
     112    static RefreshableJob GenerateHiveJob(IOptimizer optimizer) {
     113      var hiveTask = ItemTask.GetItemTaskForItem(optimizer);
     114      var task = hiveTask.CreateHiveTask();
     115      var job = new RefreshableJob {
     116        Job =
     117          {
     118            Name = "[SFL][pkimmesw] - " + optimizer.Name,
     119            ResourceNames = "HEAL;Labs"
     120          }
     121      };
     122
     123      task.ItemTask.ComputeInParallel = true;
     124
     125      return job;
     126    }
     127
    69128    static Experiment GetExperiment(IAlgorithm alg, int repeats) {
    70       var experiment = new Experiment("Experiment: " + alg.Problem.Name);
     129      var experiment = new Experiment(alg.Problem.Name);
    71130      experiment.Optimizers.Add(new BatchRun {
    72131        Optimizer = alg,
     
    77136    }
    78137
    79     static IAlgorithm GetAlgorithm(IBenchmarkSuiteDataDescriptor descriptor) {
     138    static IAlgorithm GetAlgorithm(IBenchmarkSuiteDataDescriptor descriptor, bool parallel = true) {
    80139      var ga = new GeneticAlgorithm();
    81140
     
    128187      }
    129188
    130       ga.Engine = new ParallelEngine();
     189      ga.Engine = parallel
     190        ? (IEngine)new ParallelEngine()
     191        : (IEngine)new SequentialEngine();
    131192
    132193      return ga;
Note: See TracChangeset for help on using the changeset viewer.