Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/FloatVectorErcOptions.cs @ 14875

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

#2665 BenchmarkSuite, all examples, partially tested, VectorExpressions added

File size: 1.7 KB
Line 
1using System.Linq;
2
3namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
4  using System.Collections.Generic;
5
6  using Common;
7  using Core;
8  using Data;
9
10  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Interfaces;
11  using Parameters;
12  using Persistence.Default.CompositeSerializers.Storable;
13
14  [StorableClass]
15  public class FloatVectorErcOptions : ErcOption, IReadOnlyVectorErcOptions<double> {
16    private const string ConstantsParameterName = "Constants";
17
18    public FloatVectorErcOptions() : this(new double[0][]) {
19    }
20
21    public FloatVectorErcOptions(double[][] constants) {
22      IsEnabled = true;
23      var mappedConstants = constants.Select(c => new DoubleArray(c));
24      Parameters.Add(new ValueParameter<ItemArray<DoubleArray>>(ConstantsParameterName, new ItemArray<DoubleArray>(mappedConstants)));
25    }
26
27    [StorableConstructor]
28    private FloatVectorErcOptions(bool deserializing) : base(deserializing) { }
29
30    public FloatVectorErcOptions(FloatVectorErcOptions origin, Cloner cloner) : base(origin, cloner) { }
31
32    public IValueParameter<ItemArray<DoubleArray>> ConstantsParameter
33    {
34      get { return (IValueParameter<ItemArray<DoubleArray>>)Parameters[ConstantsParameterName]; }
35    }
36
37    public IEnumerable<IReadOnlyList<double>> Constants
38    {
39      get { return ConstantsParameter.Value.Select(v => v.Data); }
40      set
41      {
42        var mappedConstants = value.Select(c => new DoubleArray(c.ToArray()));
43        ConstantsParameter.Value = new ItemArray<DoubleArray>(mappedConstants);
44      }
45    }
46
47    public override IDeepCloneable Clone(Cloner cloner) {
48      return new FloatVectorErcOptions(this, cloner);
49    }
50  }
51}
Note: See TracBrowser for help on using the repository browser.