Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis.Base/Erc/CharErcOptions.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: 2.3 KB
Line 
1namespace HeuristicLab.Problems.ProgramSynthesis.Base.Erc {
2  using System;
3  using System.Collections.Generic;
4  using System.Linq;
5  using Base.Erc.Interfaces;
6  using Common;
7  using Core;
8  using Data;
9  using Parameters;
10  using Persistence.Default.CompositeSerializers.Storable;
11
12  [StorableClass]
13  public class CharErcOptions : ErcOption, IReadOnlyCharErcOptions {
14    private const string ConstantsParameterName = "Constants";
15    private const string RangeParameterName = "Range";
16
17    public CharErcOptions() : this('A', 'z') {
18      IsEnabled = false;
19    }
20
21    public CharErcOptions(int start, int end) : this(start, end, new char[0]) {
22    }
23
24    public CharErcOptions(char[] constants) : this(default(int), default(int), constants) {
25    }
26
27    public CharErcOptions(int start, int end, char[] constants) {
28      if (start > end) {
29        throw new InvalidOperationException("start > end");
30      }
31
32      IsEnabled = true;
33      Parameters.Add(new ValueParameter<StringValue>(ConstantsParameterName, new StringValue(new string(constants))));
34      Parameters.Add(new FixedValueParameter<IntRange>(RangeParameterName, new IntRange(start, end)));
35    }
36
37    [StorableConstructor]
38    private CharErcOptions(bool deserializing) : base(deserializing) { }
39
40    public CharErcOptions(CharErcOptions origin, Cloner cloner) : base(origin, cloner) { }
41
42    public override IDeepCloneable Clone(Cloner cloner) {
43      return new CharErcOptions(this, cloner);
44    }
45
46    public IValueParameter<StringValue> ConstantsParameter
47    {
48      get { return (IValueParameter<StringValue>)Parameters[ConstantsParameterName]; }
49    }
50
51    public IReadOnlyList<char> Constants
52    {
53      get { return ConstantsParameter.Value.Value.ToCharArray(); }
54      set { ConstantsParameter.Value.Value = new string(value.ToArray()); }
55    }
56
57    public IValueParameter<IntRange> RangeParameter
58    {
59      get { return (IValueParameter<IntRange>)Parameters[RangeParameterName]; }
60    }
61
62    public int Start
63    {
64      get { return RangeParameter.Value.Start; }
65      set { RangeParameter.Value.Start = value; }
66    }
67
68    public int End
69    {
70      get { return RangeParameter.Value.End; }
71      set { RangeParameter.Value.End = value; }
72    }
73  }
74}
Note: See TracBrowser for help on using the repository browser.