//Evolve population public static Population evolvePopulation(Population pop) { Population newPopulation = new Population(pop.size(), false); Individual fittestOfThisPop = null; //keep your best individual if (Elitism) { //get fittest of the CURRENT pop fittestOfThisPop = newPopulation.saveIndividual(0, FitnessCalc.getFittest()); //SAVE best of the algorithm if (bestSolution != null) { if (betterFitness(bestSolution, fittestOfThisPop)) { bestSolution = fittestOfThisPop; } } else { bestSolution = fittestOfThisPop; } } //Crossover population int elitismOffset; if (Elitism) { elitismOffset = 1; } else { elitismOffset = 0; } //loop over tje population size and create new individuals with crossover for (int i = elitismOffset; i < pop.size(); i++) { Individual indiv1 = rouletteSelection(pop); Individual indiv2 = rouletteSelection(pop); Individual newIndiv = crossover(indiv1, indiv2); newPopulation.saveIndividual(i, newIndiv); } //Mutate population for (int i = elitismOffset; i < newPopulation.size(); i++) { mutate(newPopulation.getIndividual(i)); } // fitless die & replace by fittest if (DieFactor) { if (elitism) { newPopulation.saveIndividual(FitnessCalc.getFitlessIndex(), fittestOfThisPop); } else { newPopulation.saveIndividual(FitnessCalc.getFitlessIndex(), FitnessCalc.getFittest()); } } return(newPopulation); }
//Evolve population public static Population evolvePopulation(Population pop) { Population newPopulation = new Population(pop.size(), false); Individual fittestOfThisPop = null; //keep your best individual if (Elitism) { //get fittest of the CURRENT pop fittestOfThisPop = newPopulation.saveIndividual(0, FitnessCalc.getFittest()); //SAVE best of the algorithm if(bestSolution != null) { if (betterFitness(bestSolution, fittestOfThisPop)) { bestSolution = fittestOfThisPop; } } else { bestSolution = fittestOfThisPop; } } //Crossover population int elitismOffset; if (Elitism) { elitismOffset = 1; } else { elitismOffset = 0; } //loop over tje population size and create new individuals with crossover for(int i = elitismOffset; i<pop.size();i++) { Individual indiv1 = rouletteSelection(pop); Individual indiv2 = rouletteSelection(pop); Individual newIndiv = crossover(indiv1, indiv2); newPopulation.saveIndividual(i, newIndiv); } //Mutate population for (int i=elitismOffset; i<newPopulation.size();i++) { mutate(newPopulation.getIndividual(i)); } // fitless die & replace by fittest if (DieFactor) { if (elitism) { newPopulation.saveIndividual(FitnessCalc.getFitlessIndex(), fittestOfThisPop); } else { newPopulation.saveIndividual(FitnessCalc.getFitlessIndex(), FitnessCalc.getFittest()); } } return newPopulation; }