private void run() {
    for (int i = 0; i < 50; i++) {
      System.out.println("Generation " + i);
      evaluator.evaluate(population);
      population.applySelector(eliteSelector);
      population.applyCrossover(quantileSelector);
      population.applyMutation(quantileSelector);
      population.nextGen();
    }

    List<ParametersIndividual> fittest = population.getFittest(10);
    for (ParametersIndividual p : fittest) {
      System.out.println(p);
    }
  }
 private void setUp() {
   evaluator = new EloEvaluator();
   population = Population.generateRandom(ParametersIndividual.GENERATOR, 100);
   quantileSelector = new QuantileSelector<>(0.2); // mutation and crossover rate at 20%
   eliteSelector = new EliteSelector<>(70);
 }