fix bug for record the best genome.

This commit is contained in:
wls2002
2024-05-31 15:36:47 +08:00
parent 6aa9011043
commit 47b1cacb57
3 changed files with 8 additions and 8 deletions

View File

@@ -113,9 +113,6 @@ class DefaultSpecies(BaseSpecies):
return state.pop_nodes, state.pop_conns return state.pop_nodes, state.pop_conns
def update_species(self, state, fitness): def update_species(self, state, fitness):
# set nan to -inf
fitness = jnp.where(jnp.isnan(fitness), -jnp.inf, fitness)
# update the fitness of each species # update the fitness of each species
state, species_fitness = self.update_species_fitness(state, fitness) state, species_fitness = self.update_species_fitness(state, fitness)

View File

@@ -19,10 +19,10 @@ if __name__ == "__main__":
), ),
output_transform=Act.sigmoid, # the activation function for output node output_transform=Act.sigmoid, # the activation function for output node
mutation=DefaultMutation( mutation=DefaultMutation(
node_add=0.05, node_add=0.1,
conn_add=0.05, conn_add=0.1,
node_delete=0.05, node_delete=0.1,
conn_delete=0.05, conn_delete=0.1,
), ),
), ),
pop_size=1000, pop_size=1000,

View File

@@ -116,6 +116,9 @@ class Pipeline:
state, keys, self.algorithm.forward, pop_transformed state, keys, self.algorithm.forward, pop_transformed
) )
# replace nan with -inf
fitnesses = jnp.where(jnp.isnan(fitnesses), -jnp.inf, fitnesses)
state = self.algorithm.tell(state, fitnesses) state = self.algorithm.tell(state, fitnesses)
return state.update(randkey=randkey), fitnesses return state.update(randkey=randkey), fitnesses
@@ -149,7 +152,7 @@ class Pipeline:
def analysis(self, state, pop, fitnesses): def analysis(self, state, pop, fitnesses):
valid_fitnesses = fitnesses[~np.isnan(fitnesses)] valid_fitnesses = fitnesses[~np.isinf(fitnesses)]
max_f, min_f, mean_f, std_f = ( max_f, min_f, mean_f, std_f = (
max(valid_fitnesses), max(valid_fitnesses),