public Object clone() { BitVectorIndividual myobj = (BitVectorIndividual) (super.clone()); // must clone the genome myobj.genome = (boolean[]) (genome.clone()); return myobj; }
/** Implements distance as hamming distance. */ public double distanceTo(Individual otherInd) { if (!(otherInd instanceof BitVectorIndividual)) return super.distanceTo(otherInd); // will return infinity! BitVectorIndividual other = (BitVectorIndividual) otherInd; boolean[] otherGenome = other.genome; double hammingDistance = 0; for (int i = 0; i < other.genomeLength(); i++) { if (genome[i] ^ otherGenome[i]) // ^ is xor hammingDistance++; } return hammingDistance; }