Changeset 12396 for branches/LinearLinkage/HeuristicLab.Encodings.LinearLinkageEncoding/3.3/Manipulators/GraftManipulator.cs
- Timestamp:
- 05/21/15 16:30:14 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/LinearLinkage/HeuristicLab.Encodings.LinearLinkageEncoding/3.3/Manipulators/GraftManipulator.cs
r12288 r12396 24 24 using HeuristicLab.Common; 25 25 using HeuristicLab.Core; 26 using HeuristicLab.Data;27 using HeuristicLab.Parameters;28 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 27 … … 33 31 public sealed class GraftManipulator : LinearLinkageManipulator { 34 32 35 public IValueLookupParameter<IntValue> MaxGroupsParameter {36 get { return (IValueLookupParameter<IntValue>)Parameters["MaxGroups"]; }37 }38 39 33 [StorableConstructor] 40 34 private GraftManipulator(bool deserializing) : base(deserializing) { } 41 35 private GraftManipulator(GraftManipulator original, Cloner cloner) : base(original, cloner) { } 42 public GraftManipulator() { 43 Parameters.Add(new ValueLookupParameter<IntValue>("MaxGroups", "The maximum number of groups. If a value less or equal than 0 is used the number of groups is not limited.", new IntValue(-1))); 44 } 45 public GraftManipulator(int maxGroups) 46 : this() { 47 MaxGroupsParameter.Value = new IntValue(maxGroups); 48 } 36 public GraftManipulator() { } 49 37 50 38 public override IDeepCloneable Clone(Cloner cloner) { … … 52 40 } 53 41 54 public static void Apply(IRandom random, LinearLinkage lle , int maxGroups) {42 public static void Apply(IRandom random, LinearLinkage lle) { 55 43 int tries = lle.Length; 56 44 var index = random.Next(lle.Length); … … 59 47 tries--; 60 48 } 61 if (lle[index] != index) Apply(random, lle, maxGroups,index);49 if (lle[index] != index) Apply(random, lle, index); 62 50 } 63 51 64 public static void Apply(IRandom random, LinearLinkage lle, int maxGroups, intindex) {52 public static void Apply(IRandom random, LinearLinkage lle, int index) { 65 53 var groups = lle.Select((val, idx) => Tuple.Create(idx, val)) 66 54 .Where(x => x.Item1 == x.Item2) … … 84 72 85 73 protected override void Manipulate(IRandom random, LinearLinkage lle) { 86 var maxGroups = MaxGroupsParameter.ActualValue.Value; 87 Apply(random, lle, maxGroups <= 0 ? int.MaxValue : maxGroups); 74 Apply(random, lle); 88 75 } 89 76 }
Note: See TracChangeset
for help on using the changeset viewer.