From bb61b56964416b8eb3d2a6b117f971c0492bae01 Mon Sep 17 00:00:00 2001 From: "G. Bomarito" Date: Wed, 10 Apr 2024 11:33:57 -0400 Subject: [PATCH] circumventing a memory leak with bingocpp by duplicating training data and fitness function --- bingo/evolutionary_optimizers/fitness_predictor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bingo/evolutionary_optimizers/fitness_predictor.py b/bingo/evolutionary_optimizers/fitness_predictor.py index 3b8ee700..466ce887 100644 --- a/bingo/evolutionary_optimizers/fitness_predictor.py +++ b/bingo/evolutionary_optimizers/fitness_predictor.py @@ -46,6 +46,7 @@ def __init__(self, training_data, full_fitness_function, self._next_trainer_to_update = 0 self.point_eval_count = 0 self._fitness_function = deepcopy(full_fitness_function) + self._full_fitness_function = deepcopy(full_fitness_function) self._trainers, self._true_fitness_for_trainers = \ self._make_initial_trainer_population(potential_trainers, num_trainers) @@ -129,8 +130,7 @@ def get_true_fitness_for_trainer(self, trainer): fitness : numeric true (full) fitness of trainer """ - self._fitness_function.training_data = self.training_data - predicted_fitness = self._fitness_function(trainer) + predicted_fitness = self._full_fitness_function(trainer) self.point_eval_count += len(self.training_data) return predicted_fitness