diff --git a/best_genome b/best_genome index 90c5458..2b7a09a 100644 Binary files a/best_genome and b/best_genome differ diff --git a/best_genome.pkl b/best_genome.pkl deleted file mode 100644 index 83a77cc..0000000 Binary files a/best_genome.pkl and /dev/null differ diff --git a/src/ai/evaluation.py b/src/ai/evaluation.py index 1efec3a..3058ec5 100644 --- a/src/ai/evaluation.py +++ b/src/ai/evaluation.py @@ -1,16 +1,18 @@ +import time + import neat from loguru import logger from py2048 import Menu def eval_genomes(genomes, config: neat.Config): + app = Menu() + app.play() + app._game_active = False for genome_id, genome in genomes: genome.fitness = 0 - app = Menu() net = neat.nn.FeedForwardNetwork.create(genome, config) - - app.play() - app._game_active = False + start_time = time.perf_counter() while True: output = net.activate( @@ -35,9 +37,14 @@ def eval_genomes(genomes, config: neat.Config): app.game.draw(app._surface) max_val = app.game.board.max_val() - if app.game.board._is_full() or max_val >= 2048: + time_passed = time.perf_counter() - start_time + if ( + app.game.board.is_game_over() + or (app.game.board._is_full() and time_passed >= 0.1) + or max_val >= 2048 + ): calculate_fitness(genome, max_val) - logger.info(f"{max_val=}") + logger.info(f"{max_val=}\tscore={app.game.board.score}") app.game.restart() break