Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/28/17 22:52:08 (7 years ago)
Author:
pkimmesw
Message:

#2665 Dynamic ErcValues, Separate Push from BenchmarkSuite Push

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Problem/PushSolution.cs

    r14875 r14897  
    11namespace HeuristicLab.Problems.ProgramSynthesis.Push.Problem {
    2   using HeuristicLab.BenchmarkSuite.Problems;
    3   using HeuristicLab.Common;
    4   using HeuristicLab.Core;
    5   using HeuristicLab.Encodings.IntegerVectorEncoding;
    6   using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    7   using HeuristicLab.Problems.ProgramSynthesis.Push.Configuration;
     2  using Common;
     3  using Configuration;
     4  using Core;
     5  using Encodings.IntegerVectorEncoding;
     6  using Expressions;
     7  using Persistence.Default.CompositeSerializers.Storable;
    88
    99  [StorableClass]
     
    1414    public readonly IntegerVector IntegerVector;
    1515    [Storable]
    16     public readonly ProblemData Data;
    17     [Storable]
    1816    public readonly IRandom Random;
    1917    [Storable]
    2018    public readonly IReadOnlyPushConfiguration Config;
     19
    2120    [Storable]
    22     public readonly int DataStart;
    23     [Storable]
    24     public readonly int DataEnd;
    25     [Storable]
    26     public readonly bool Simplify;
     21    public readonly IPushEvaluator Evaluator;
    2722
    28     public PushSolution(IntegerVector integerVector, double quality, ProblemData data, IRandom random, IReadOnlyPushConfiguration config, int dataStart, int dataEnd, bool simplify = false)
     23    public readonly PushProgram Program;
     24
     25    public PushSolution(IntegerVector integerVector, double quality, IRandom random, IReadOnlyPushConfiguration config, IPushEvaluator evaluator, bool simplify = false)
    2926      : base("Solution", "A push solution.") {
    3027      IntegerVector = integerVector;
    3128      Quality = quality;
    32       Data = data;
    3329      Random = random;
    3430      Config = config;
    35       DataStart = dataStart;
    36       DataEnd = dataEnd;
    37       Simplify = simplify;
     31      Evaluator = evaluator;
     32
     33      Program = IntegerVector.ToPushProgram(config);
     34
     35      if (simplify)
     36        Program = Simplifier.Simplifier.Simplify(Program, p => Evaluator.EvaluateTraining(config, p, random).TotalQuality);
    3837    }
    3938
    4039    public PushSolution(PushSolution origin, Cloner cloner) : base(origin, cloner) {
     40      Quality = origin.Quality;
    4141      IntegerVector = cloner.Clone(origin.IntegerVector);
    42       Quality = origin.Quality;
    43       Data = cloner.Clone(origin.Data);
    4442      Random = cloner.Clone(origin.Random);
    4543      Config = cloner.Clone(origin.Config);
    46       DataStart = origin.DataStart;
    47       DataEnd = origin.DataEnd;
    48       Simplify = origin.Simplify;
     44    }
     45
     46    public virtual PushSolution Simplify() {
     47      return new PushSolution(IntegerVector, Quality, Random, Config, Evaluator, true);
    4948    }
    5049
    5150    [StorableConstructor]
    52     private PushSolution(bool deserializing) : base(deserializing) { }
     51    protected PushSolution(bool deserializing) : base(deserializing) { }
    5352
    5453    public override IDeepCloneable Clone(Cloner cloner) {
Note: See TracChangeset for help on using the changeset viewer.