Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/StringVector/StringVectorConstantsErcValue.cs @ 14897

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

#2665 Dynamic ErcValues, Separate Push from BenchmarkSuite Push

File size: 1.9 KB
Line 
1using System.Linq;
2
3namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc.StringVector {
4  using System.Collections.Generic;
5
6  using HeuristicLab.Common;
7  using HeuristicLab.Core;
8  using HeuristicLab.Data;
9  using HeuristicLab.Parameters;
10  using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
11  using HeuristicLab.Random;
12
13  [StorableClass]
14  public class StringVectorConstantsErcValue : WeightedErcValueItem<IReadOnlyList<string>> {
15    private const string ConstantsParameterName = "Constants";
16
17    private readonly StringArray[] arrays; // perf opt: avoid using parameter getter
18
19    public StringVectorConstantsErcValue(params StringArray[] arrays) : this(true, arrays) { }
20
21    public StringVectorConstantsErcValue(bool isEnabled, params StringArray[] arrays) {
22      this.arrays = arrays;
23      IsEnabled = isEnabled;
24      Parameters.Add(new ValueParameter<ItemArray<StringArray>>(ConstantsParameterName, new ItemArray<StringArray>(arrays)));
25    }
26
27    [StorableConstructor]
28    private StringVectorConstantsErcValue(bool deserializing) : base(deserializing) { }
29
30    public StringVectorConstantsErcValue(StringVectorConstantsErcValue origin, Cloner cloner) : base(origin, cloner) { }
31
32    public IValueParameter<ItemArray<StringArray>> ConstantsParameter
33    {
34      get { return (IValueParameter<ItemArray<StringArray>>)Parameters[ConstantsParameterName]; }
35    }
36
37    public IEnumerable<StringArray> Constants
38    {
39      get { return ConstantsParameter.Value; }
40    }
41
42    public override IReadOnlyList<string> GetErcValue(IRandom random) {
43      // TODO: remove ToList when ValueTypeArray implements IReadOnlyList
44      return arrays.SampleRandom(random).ToList();
45    }
46
47    public override IDeepCloneable Clone(Cloner cloner) {
48      return new StringVectorConstantsErcValue(this, cloner);
49    }
50  }
51}
Note: See TracBrowser for help on using the repository browser.