add init_speciate to accelerate the time cost of speciate in the first generation
This commit is contained in:
@@ -32,8 +32,10 @@ class Pipeline:
|
||||
self.compile_functions(debug=True)
|
||||
|
||||
self.generation = 0
|
||||
self.species_controller.speciate(self.pop_nodes, self.pop_connections,
|
||||
self.generation, self.o2o_distance, self.o2m_distance)
|
||||
self.species_controller.init_speciate(self.pop_nodes, self.pop_connections)
|
||||
|
||||
# self.species_controller.speciate(self.pop_nodes, self.pop_connections,
|
||||
# self.generation, self.o2o_distance, self.o2m_distance)
|
||||
|
||||
self.best_fitness = float('-inf')
|
||||
|
||||
|
||||
@@ -45,6 +45,20 @@ class SpeciesController:
|
||||
self.species_idxer = count(0)
|
||||
self.species: Dict[int, Species] = {} # species_id -> species
|
||||
|
||||
def init_speciate(self, pop_nodes: NDArray, pop_connections: NDArray):
|
||||
"""
|
||||
speciate for the first generation
|
||||
:param pop_connections:
|
||||
:param pop_nodes:
|
||||
:return:
|
||||
"""
|
||||
pop_size = pop_nodes.shape[0]
|
||||
species_id = next(self.species_idxer)
|
||||
s = Species(species_id, 0)
|
||||
members = list(range(pop_size))
|
||||
s.update((pop_nodes[0], pop_connections[0]), members)
|
||||
self.species[species_id] = s
|
||||
|
||||
def speciate(self, pop_nodes: NDArray, pop_connections: NDArray, generation: int,
|
||||
o2o_distance: Callable, o2m_distance: Callable) -> None:
|
||||
"""
|
||||
|
||||
@@ -23,8 +23,8 @@ def evaluate(forward_func: Callable) -> List[float]:
|
||||
return fitnesses.tolist() # returns a list
|
||||
|
||||
|
||||
# @using_cprofile
|
||||
@partial(using_cprofile, root_abs_path='/mnt/e/neat-jax/', replace_pattern="/mnt/e/neat-jax/")
|
||||
@using_cprofile
|
||||
# @partial(using_cprofile, root_abs_path='/mnt/e/neat-jax/', replace_pattern="/mnt/e/neat-jax/")
|
||||
def main():
|
||||
config = Configer.load_config()
|
||||
pipeline = Pipeline(config, seed=11323)
|
||||
|
||||
Reference in New Issue
Block a user