Free cookie consent management tool by TermsFeed Policy Generator

source: branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/BinaryVectorComparers/AverageBitBinaryVectorComparer.cs @ 8330

Last change on this file since 8330 was 8083, checked in by mkommend, 12 years ago

#1877: Corrected errors detected in unit test in HeuristicLab.FitnessLandscapeAnalysis.

File size: 1.2 KB
Line 
1using System.Linq;
2using HeuristicLab.Common;
3using HeuristicLab.Core;
4using HeuristicLab.Encodings.BinaryVectorEncoding;
5using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
6
7namespace HeuristicLab.Problems.NK {
8
9  [Item("Average Bit Binary Vector Comparer", "Compares two binary vectors by their average positive bit location")]
10  [StorableClass]
11  public sealed class AverageBitBinaryVectorComparer : BinaryVectorComparer {
12
13    [StorableConstructor]
14    private AverageBitBinaryVectorComparer(bool deserializing) : base(deserializing) { }
15    private AverageBitBinaryVectorComparer(AverageBitBinaryVectorComparer original, Cloner cloner)
16      : base(original, cloner) {
17    }
18    public AverageBitBinaryVectorComparer() { }
19    public override IDeepCloneable Clone(Cloner cloner) {
20      return new AverageBitBinaryVectorComparer(this, cloner);
21    }
22
23    public static double AverageBit(BinaryVector x) {
24      return x.Select((b, i) => new { b, i }).Where(v => v.b).Average(v => v.i);
25    }
26
27    public override int Compare(BinaryVector x, BinaryVector y) {
28      return (AverageBit(x) - AverageBit(y)).CompareTo(0);
29    }
30  }
31}
Note: See TracBrowser for help on using the repository browser.