public static void main(String[] args) { IRandom random = new RandomWrapper(); SudokuGrid grid = new SudokuGrid( // 6, 0, 0, 0, 0, 0, 0, 4, 0, // 0, 0, 5, 0, 0, 2, 0, 0, 7, // 7, 2, 9, 0, 0, 0, 0, 0, 3, // 0, 9, 0, 0, 4, 0, 0, 0, 1, // 0, 0, 0, 0, 6, 0, 0, 0, 0, // 4, 0, 0, 0, 8, 0, 0, 7, 0, // 3, 0, 0, 0, 0, 0, 1, 6, 5, // 2, 0, 0, 4, 0, 0, 8, 0, 0, // 0, 5, 0, 0, 0, 0, 0, 0, 4 // ); IIndividualFactory individualFactory = IndividualFactories.getIndividualFactory( 100, grid.getNumBlanks(), grid.getSizeSquared(), random); Collection<IIndividual> individuals = individualFactory.getIndividuals(); IIndividualEvolver evolver = IndividualEvolvers.getEvolver(random, 0.01); SudokuSolver solver = new SudokuSolver(grid); long start = System.currentTimeMillis(); for (int generation = 0; generation < 50; generation++) { IStatistic stats = new Statistic(); if (!solver.updateFitnesses(individuals, stats)) { long duration = System.currentTimeMillis() - start; System.out.printf("Took %d milliconds and %d generations %n", duration, generation); break; } individuals = evolver.getNextGeneration(individuals); System.out.println(String.format("%d, individuals=%s%n", generation, individuals.toString())); } }