diff --git a/src/main/java/MainClasses/GeneticAlgorithm.java b/src/main/java/MainClasses/GeneticAlgorithm.java index fb2725b93bef99e62d91f0422064c11958b15cfb..16f6c3daf1710a68da542e434aed1daec1c55630 100644 --- a/src/main/java/MainClasses/GeneticAlgorithm.java +++ b/src/main/java/MainClasses/GeneticAlgorithm.java @@ -126,7 +126,7 @@ public class GeneticAlgorithm { } else if (config.getSelectionMethod().equals(SelectionMethods.Tournament)) { this.selector = new Tournament(this.config, this.rand); } else if (config.getSelectionMethod().equals(SelectionMethods.OnlyBest)) { - this.selector = new OnlyBest(this.isHydrophobic); + this.selector = new OnlyBest(); } } diff --git a/src/main/java/Selectors/OnlyBest.java b/src/main/java/Selectors/OnlyBest.java index 4f0980bf5ba0b432a6f298c859a1b0fa445b76c3..721dd557591b09f79c892d9815701c7bfe727556 100644 --- a/src/main/java/Selectors/OnlyBest.java +++ b/src/main/java/Selectors/OnlyBest.java @@ -7,31 +7,21 @@ import java.util.Random; public class OnlyBest implements Selector { - int[] isHydrophobic; - - public OnlyBest(int[] isHydrophobic) { - this.isHydrophobic = isHydrophobic; + public OnlyBest() { } @Override - public Candidate[] selectNewPopulation(Candidate[] population, double[] fitness, double totalFitness) { - int populationSize = population.length; - - int bestIndex = 0; - double bestFitness = 0; - - for (int i = 0; i < populationSize; i++) { - if (fitness[i] >= bestFitness) { - bestFitness = fitness[i]; - bestIndex = i; + public Candidate[] selectNewPopulation(Candidate[] generation) { + Candidate bestCandidate = generation[0]; + for (Candidate candidate: generation) { + if (candidate.getFitness() >= bestCandidate.getFitness()) { + bestCandidate = candidate; } } - Candidate[] newPopulation = new Candidate[populationSize]; - int[] bestFolding = population[bestIndex].getFolding(); - - for (int i = 0; i < populationSize; i++) { - newPopulation[i] = new Candidate(bestFolding); + Candidate[] newPopulation = new Candidate[generation.length]; + for (int i = 0; i < generation.length; i++) { + newPopulation[i] = new Candidate(bestCandidate.getFolding()); } return newPopulation;