22 lines
812 B
Python
22 lines
812 B
Python
from typing import List
|
|
|
|
from evaluator import Evaluator
|
|
from genome import Genome
|
|
from pool import Pool
|
|
|
|
evaluator: Evaluator = Evaluator([([i, j], [i ^ j]) for i in range(2) for j in range(2)])
|
|
pool: Pool = Pool(300, 2, 1)
|
|
generation: int = 1
|
|
top_genome: Genome = None
|
|
while True:
|
|
pool.evaluate_fitness(evaluator.evaluate)
|
|
top_genome: Genome = pool.get_top_genome()
|
|
print(f"Generation {generation} | Top Fitness: {top_genome.fitness} | Species: {len(pool.species)} | Total Genomes: {sum(len(s.genomes) for s in pool.species)}")
|
|
if top_genome.fitness > 3.9:
|
|
break
|
|
pool.breed_new_generation()
|
|
generation += 1
|
|
|
|
for network_input, _ in evaluator.test_cases:
|
|
network_output: List[float] = top_genome.evaluate_network(network_input)
|
|
print(network_input, "->", network_output)
|