Changeset 14552 for branches/MemPRAlgorithm/HeuristicLab.Problems.Binary/3.3/AlternatingBitsProblem.cs
- Timestamp:
- 01/09/17 00:36:20 (7 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/MemPRAlgorithm/HeuristicLab.Problems.Binary/3.3/AlternatingBitsProblem.cs
r14543 r14552 20 20 #endregion 21 21 22 using System;23 using System.Linq;24 22 using HeuristicLab.Common; 25 23 using HeuristicLab.Core; … … 28 26 29 27 namespace HeuristicLab.Problems.Binary { 30 [Item(" One Max Problem", "Represents a problem whose objective is to maximize the number of true values.")]31 [Creatable(CreatableAttribute.Categories.CombinatorialProblems, Priority = 2 10)]28 [Item("Alternating Bits Problem", "Represents a problem whose objective is to achieve an alternating sequence of bits, long sequences of consecutive bits receive a penalty.")] 29 [Creatable(CreatableAttribute.Categories.CombinatorialProblems, Priority = 220)] 32 30 [StorableClass] 33 public class OneMaxProblem : BinaryProblem {31 public class AlternatingBitsProblem : BinaryProblem { 34 32 public override bool Maximization { 35 get { return true; }33 get { return false; } 36 34 } 37 35 38 public OneMaxProblem()36 public AlternatingBitsProblem() 39 37 : base() { 40 Encoding.Length = 10;41 BestKnownQuality = Encoding.Length;38 Encoding.Length = 256; 39 BestKnownQuality = 0; 42 40 } 43 41 44 42 [StorableConstructor] 45 protected OneMaxProblem(bool deserializing) : base(deserializing) { } 46 47 protected OneMaxProblem(OneMaxProblem original, Cloner cloner) : base(original, cloner) { } 43 protected AlternatingBitsProblem(bool deserializing) : base(deserializing) { } 44 protected AlternatingBitsProblem(AlternatingBitsProblem original, Cloner cloner) : base(original, cloner) { } 48 45 public override IDeepCloneable Clone(Cloner cloner) { 49 return new OneMaxProblem(this, cloner);46 return new AlternatingBitsProblem(this, cloner); 50 47 } 51 48 52 49 public override double Evaluate(BinaryVector vector, IRandom random) { 53 return vector.Count(b => b); 54 } 55 56 protected override void LengthParameter_ValueChanged(object sender, EventArgs e) { 57 base.LengthParameter_ValueChanged(sender, e); 58 BestKnownQuality = Length; 50 var quality = 0.0; 51 var curr = vector[0]; 52 var lastOk = 0; 53 for (var i = 1; i < vector.Length; i++) { 54 if (curr && !vector[i] || !curr && vector[i]) { 55 lastOk = i; 56 } else quality += (i - lastOk); 57 curr = vector[i]; 58 } 59 return quality; 59 60 } 60 61 }
Note: See TracChangeset
for help on using the changeset viewer.