View Javadoc
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  }