Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/BenchmarkSuite/PushBenchmarkSuiteProblem.cs @ 15032

Last change on this file since 15032 was 15032, checked in by pkimmesw, 7 years ago

#2665 Fixed bias 0 issue, PushExpressionFrequencyAnalyzer, Fixed probability for ERC settings, Fixed enable/disable instructions, Added expression descriptions

File size: 2.5 KB
Line 
1namespace HeuristicLab.Problems.ProgramSynthesis.Push.Problem.BenchmarkSuite {
2  using Common;
3  using Configuration;
4  using Core;
5
6  using HeuristicLab.BenchmarkSuite;
7  using HeuristicLab.BenchmarkSuite.Problems;
8  using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions;
9
10  using Instances;
11  using Persistence.Default.CompositeSerializers.Storable;
12  using Stack;
13
14  [StorableClass]
15  [Creatable(CreatableAttribute.Categories.GeneticProgrammingProblems, Priority = 180)]
16  [Item("Push Problem", "")]
17  public class PushBenchmarkSuiteProblem : PushProblem, IProblemInstanceConsumer<ProblemData> {
18    public PushBenchmarkSuiteProblem() : base(new PushBenchmarkSuiteEvaluator()) {
19      Parameters.Add(PushEvaluator.DataParameter);
20      Parameters.Add(PushEvaluator.DataBoundsParameter);
21
22      if (PushEvaluator.Data == null) {
23        var defaultProblem = new NumberIO();
24        Load(defaultProblem.CreateProblemData());
25      }
26    }
27
28    [StorableConstructor]
29    protected PushBenchmarkSuiteProblem(bool deserializing)
30      : base(deserializing) {
31    }
32
33    protected PushBenchmarkSuiteProblem(PushBenchmarkSuiteProblem original, Cloner cloner)
34      : base(original, cloner) {
35    }
36
37    public override IDeepCloneable Clone(Cloner cloner) {
38      return new PushBenchmarkSuiteProblem(this, cloner);
39    }
40
41    public new PushBenchmarkSuiteEvaluator PushEvaluator { get { return (PushBenchmarkSuiteEvaluator)base.PushEvaluator; } }
42
43    public void Load(ProblemData data) {
44      PushEvaluator.LoadData(data);
45
46      Name = "Push Problem: " + data.Name;
47      Description = data.Description;
48      BestKnownQuality = data.BestResult;
49      config.MaxPointsInProgram = data.MaxSize;
50      config.EvalPushLimit = data.EvalLimit;
51      config.ErcOptions = data.ErcOptions;
52      config.FloatStringFormat = data.FloatStringFormat;
53
54      config.SetEnabledStacks((StackTypes)data.EnabledDataTypes);
55
56      Encoding.Bounds[0, 0] = 0;
57      Encoding.Bounds[0, 1] = config.EnabledExpressions.Count;
58
59      InitProgramLength = data.MaxSize / 2;
60    }
61
62    protected override PushSolution CreatePushSolution(
63      PushProgram program,
64      double bestQuality,
65      IRandom random,
66      IReadOnlyPushConfiguration config,
67      IPushEvaluator evaluator) {
68      return new PushBenchmarkSuiteSolution(program, bestQuality, random, (IReadOnlyPushConfiguration)config.Clone(), (PushBenchmarkSuiteEvaluator)PushEvaluator.Clone());
69    }
70  }
71}
Note: See TracBrowser for help on using the repository browser.