def evolve_generations_plateau(simulation_func, negligible, max_bad_gen_count, pop_size=60, num_fittest=5, num_random=10, num_elites=3):
    # Create start generation
    # While not done
    #	Simulate generation
    #	Check if should be done
    #	Spawn next generation
    Generator = GenFFANN
    num_params = (GenFFANN.INPUTSIZE * GenFFANN.HIDDENSIZE) + (GenFFANN.HIDDENSIZE * GenFFANN.OUTPUTSIZE)
    print num_params
    current_gen = Generation(Generator, simulation_func, pop_size, num_fittest, num_random, num_elites, num_params)
    current_gen.spawn_random_generation()

    best_fitness = -100000
    bad_gen_count = 0
    gen_num = 0
    while True:
        gen_num += 1

        print "Running generation {0}".format(gen_num)

        fitness = current_gen.run()

        print "Fitness is {0} compared to {1}".format(fitness, best_fitness)
        if fitness - best_fitness <= negligible:
            bad_gen_count += 1
            print "Bad Generation #{0}".format(bad_gen_count)
        else:
            bad_gen_count = 0
            best_generator = current_gen.fittest[0]
            best_fitness = best_generator.fitness

        if bad_gen_count >= max_bad_gen_count:
            return best_generator

        current_gen = current_gen.spawn_next_generation()