Changeset 17544 for branches/2521_ProblemRefactoring/HeuristicLab.Problems.Binary/3.3/DeceptiveTrapProblem.cs
- Timestamp:
- 05/18/20 18:55:08 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Problems.Binary/3.3/DeceptiveTrapProblem.cs
r17382 r17544 37 37 [Creatable(CreatableAttribute.Categories.CombinatorialProblems, Priority = 230)] 38 38 public class DeceptiveTrapProblem : BinaryVectorProblem { 39 [StorableConstructor] 40 protected DeceptiveTrapProblem(StorableConstructorFlag _) : base(_) { } 41 protected DeceptiveTrapProblem(DeceptiveTrapProblem original, Cloner cloner) 42 : base(original, cloner) { 43 } 44 public override IDeepCloneable Clone(Cloner cloner) { 45 return new DeceptiveTrapProblem(this, cloner); 46 } 47 48 private const string TrapSizeParameterName = "Trap Size"; 49 50 public IFixedValueParameter<IntValue> TrapSizeParameter { 51 get { return (IFixedValueParameter<IntValue>)Parameters[TrapSizeParameterName]; } 52 } 39 [Storable] public IFixedValueParameter<IntValue> TrapSizeParameter { get; private set; } 40 [Storable] public IFixedValueParameter<IntValue> NumberOfTrapsParameter { get; private set; } 53 41 54 42 public int TrapSize { 55 43 get { return TrapSizeParameter.Value.Value; } 56 44 set { TrapSizeParameter.Value.Value = value; } 45 } 46 47 public int NumberOfTraps { 48 get { return NumberOfTrapsParameter.Value.Value; } 49 set { NumberOfTrapsParameter.Value.Value = value; } 57 50 } 58 51 … … 63 56 public DeceptiveTrapProblem() : base() { 64 57 Maximization = true; 65 Parameters.Add(new FixedValueParameter<IntValue>(TrapSizeParameterName, "", new IntValue(7))); 66 Encoding.Length = 49; 58 Parameters.Add(TrapSizeParameter = new FixedValueParameter<IntValue>("Trap Size", "", new IntValue(7))); 59 Parameters.Add(NumberOfTrapsParameter = new FixedValueParameter<IntValue>("Number of Traps", "", new IntValue(7))); 60 Dimension = TrapSize * NumberOfTraps; 61 62 RegisterEventHandlers(); 67 63 } 68 64 … … 83 79 84 80 public override ISingleObjectiveEvaluationResult Evaluate(BinaryVector individual, IRandom random, CancellationToken cancellationToken) { 85 if (individual.Length != Length) throw new ArgumentException("The individual has not the correct length.");81 if (individual.Length != Dimension) throw new ArgumentException("The individual has not the correct length."); 86 82 int total = 0; 87 83 var trapSize = TrapSize; … … 92 88 return new SingleObjectiveEvaluationResult(quality); 93 89 } 90 91 [StorableConstructor] 92 protected DeceptiveTrapProblem(StorableConstructorFlag _) : base(_) { } 93 [StorableHook(HookType.AfterDeserialization)] 94 private void AfterDeserialization() { 95 RegisterEventHandlers(); 96 } 97 protected DeceptiveTrapProblem(DeceptiveTrapProblem original, Cloner cloner) 98 : base(original, cloner) { 99 TrapSizeParameter = cloner.Clone(original.TrapSizeParameter); 100 NumberOfTrapsParameter = cloner.Clone(original.NumberOfTrapsParameter); 101 102 RegisterEventHandlers(); 103 } 104 public override IDeepCloneable Clone(Cloner cloner) { 105 return new DeceptiveTrapProblem(this, cloner); 106 } 107 108 private void RegisterEventHandlers() { 109 TrapSizeParameter.Value.ValueChanged += TrapSizeOnChanged; 110 NumberOfTrapsParameter.Value.ValueChanged += NumberOfTrapsOnChanged; 111 } 112 113 protected virtual void TrapSizeOnChanged(object sender, EventArgs e) { 114 Dimension = TrapSize * NumberOfTraps; 115 } 116 117 private void NumberOfTrapsOnChanged(object sender, EventArgs e) { 118 Dimension = TrapSize * NumberOfTraps; 119 } 94 120 } 95 121 }
Note: See TracChangeset
for help on using the changeset viewer.