Free cookie consent management tool by TermsFeed Policy Generator

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

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

#2665 Run Hl General, Essential tests and applied fixes for errors

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    public StringVectorConstantsErcValue() : this(false, 1d) { }
18    public StringVectorConstantsErcValue(params StringArray[] arrays) : this(true, 1d, arrays) { }
19
20    public StringVectorConstantsErcValue(bool isEnabled, double weight = 1d, params StringArray[] arrays) : base(isEnabled, weight) {
21      Name = "String vector constants";
22      IsEnabled = isEnabled;
23      Parameters.Add(new ValueParameter<ItemCollection<StringArray>>(ConstantsParameterName, new ItemCollection<StringArray>(arrays)));
24    }
25
26    [StorableConstructor]
27    protected StringVectorConstantsErcValue(bool deserializing) : base(deserializing) { }
28
29    public StringVectorConstantsErcValue(StringVectorConstantsErcValue origin, Cloner cloner) : base(origin, cloner) { }
30
31    public IValueParameter<ItemCollection<StringArray>> ConstantsParameter
32    {
33      get { return (IValueParameter<ItemCollection<StringArray>>)Parameters[ConstantsParameterName]; }
34    }
35
36    public IEnumerable<StringArray> Constants
37    {
38      get { return ConstantsParameter.Value; }
39    }
40
41    public override IReadOnlyList<string> GetErcValue(IRandom random) {
42      // TODO: remove ToArray when ValueTypeArray implements IReadOnlyList
43      return Constants.SampleRandom(random).ToArray();
44    }
45
46    public override IDeepCloneable Clone(Cloner cloner) {
47      return new StringVectorConstantsErcValue(this, cloner);
48    }
49  }
50}
Note: See TracBrowser for help on using the repository browser.