Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Individual pickRandomIndividual(List<Individual> pool) {
- Double totalScore = 0d;
- Double runningScore = 0d;
- for (Individual ind : pool) {
- totalScore += ind.fitnessValue;
- }
- Double rnd = Math.random() * totalScore;
- for (Individual ind : pool) {
- if (rnd >= runningScore &&
- rnd <= runningScore + ind.fitnessValue) {
- return ind;
- }
- runningScore += ind.fitnessValue;
- }
- return null;
- }
- Double fitnessSum = genePool.stream()
- .mapToDouble(individual -> individual.fitnessValue)
- .sum();
- Double runningScore = 0d;
- Double rnd = random() * fitnessSum;
- for (Individual g : genePool) {
- if (rnd >= runningScore && rnd <= runningScore + g.fitnessValue) {
- return g;
- }
- runningScore += g.fitnessValue;
- }
- return null;
Add Comment
Please, Sign In to add comment