public float getFitness() { float fitness = 1; for (int i = 0; i < getGenomeSize(); i++) { if (lociPattern.getLocusType(i) == LociPattern.LocusType.Fitness) { FitnessLocus locus = (FitnessLocus) getLocus(i); fitness *= locus.getFitnessEffect(); } } return fitness; }
public void mutateMutationRate(int nMutatorMutation, int nAntiMutMutation) { // MutatorLocus locus = getRandomMutatorLocus(); int position = lociPattern.getRandomMutatorPosition(); MutatorLocus locus = (MutatorLocus) loci[position]; for (int i = 0; i < nMutatorMutation; i++) { locus.increaseStrength(); } for (int j = 0; j < nAntiMutMutation; j++) { locus.decreaseStrength(); } }
public OnePair getNMutations() { int nDeleteriousMutations = 0; int nBeneficialMutations = 0; for (int i = 0; i < getGenomeSize(); i++) { if (lociPattern.getLocusType(i) == LociPattern.LocusType.Fitness) { FitnessLocus locus = (FitnessLocus) getLocus(i); nDeleteriousMutations += locus.getNDeleteriousMutations(); nBeneficialMutations += locus.getNBeneficialMutations(); } } return new OnePair(nDeleteriousMutations, nBeneficialMutations); }
public float getRecombinationStrength() { // TODO: multiple all recombination strength values int recombinationLocusPosition = lociPattern.getRecombinationLociPositions()[0]; return ((RecombinationLocus) getLocus(recombinationLocusPosition)).getStrength(); // refactor }
public double getMutatorStrength() { // TODO: multiple all mutator strength values int mutatorLocusPosition = lociPattern.getMutatorLociPositions()[0]; return ((MutatorLocus) getLocus(mutatorLocusPosition)).getStrength(); // refactor }
private OnePair getRandomFitnessLocus() { int position = lociPattern.getRandomFitnessPosition(); return new OnePair((FitnessLocus) getLocus(position), position); }
// TODO: modify getRandomXXLocus to remove redundant codes; extract new methods private MutatorLocus getRandomMutatorLocus() { int position = lociPattern.getRandomMutatorPosition(); return (MutatorLocus) getLocus(position); }
public Individual(LociPattern pattern) { lociPattern = pattern; loci = new Locus[lociPattern.getGenomeSize()]; alive = true; }