20 lines
672 B
Python
20 lines
672 B
Python
from typing import List, Tuple
|
|
|
|
from genome import Genome
|
|
|
|
TestCase = Tuple[List[float], List[float]]
|
|
|
|
|
|
class Evaluator:
|
|
def __init__(self, test_cases: List[TestCase]):
|
|
self.test_cases: List[TestCase] = test_cases
|
|
|
|
def evaluate(self, genome: Genome) -> float:
|
|
fitness: float = 0
|
|
for network_input, expected_output in self.test_cases:
|
|
network_output: List[float] = genome.evaluate_network(network_input)
|
|
error: float = 0
|
|
for expected, actual in zip(expected_output, network_output):
|
|
error += abs(expected - actual)
|
|
fitness += genome.output_nodes - error
|
|
return fitness
|