1 package net.bmahe.genetics4j.core.util;
2
3 import java.util.BitSet;
4 import java.util.Objects;
5
6 import org.apache.commons.lang3.Validate;
7
8 import net.bmahe.genetics4j.core.chromosomes.BitChromosome;
9
10 public class BitChromosomeUtils {
11
12 public static int hammingDistance(final BitChromosome bc1, final BitChromosome bc2) {
13 Objects.requireNonNull(bc1);
14 Objects.requireNonNull(bc2);
15 Validate.isTrue(bc1.getNumAlleles() == bc2.getNumAlleles());
16
17 final BitSet bitSet1 = bc1.getBitSet();
18 final BitSet bitSet2 = bc2.getBitSet();
19
20 int distance = 0;
21 for (int i = 0; i < bc1.getNumAlleles(); i++) {
22 if (bitSet1.get(i) != bitSet2.get(i)) {
23 distance += 1;
24 }
25 }
26
27 return distance;
28 }
29 }