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.compile_functions(debug=True)
|
||||||
|
|
||||||
self.generation = 0
|
self.generation = 0
|
||||||
self.species_controller.speciate(self.pop_nodes, self.pop_connections,
|
self.species_controller.init_speciate(self.pop_nodes, self.pop_connections)
|
||||||
self.generation, self.o2o_distance, self.o2m_distance)
|
|
||||||
|
# self.species_controller.speciate(self.pop_nodes, self.pop_connections,
|
||||||
|
# self.generation, self.o2o_distance, self.o2m_distance)
|
||||||
|
|
||||||
self.best_fitness = float('-inf')
|
self.best_fitness = float('-inf')
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,20 @@ class SpeciesController:
|
|||||||
self.species_idxer = count(0)
|
self.species_idxer = count(0)
|
||||||
self.species: Dict[int, Species] = {} # species_id -> species
|
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,
|
def speciate(self, pop_nodes: NDArray, pop_connections: NDArray, generation: int,
|
||||||
o2o_distance: Callable, o2m_distance: Callable) -> None:
|
o2o_distance: Callable, o2m_distance: Callable) -> None:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ def evaluate(forward_func: Callable) -> List[float]:
|
|||||||
return fitnesses.tolist() # returns a list
|
return fitnesses.tolist() # returns a list
|
||||||
|
|
||||||
|
|
||||||
# @using_cprofile
|
@using_cprofile
|
||||||
@partial(using_cprofile, root_abs_path='/mnt/e/neat-jax/', replace_pattern="/mnt/e/neat-jax/")
|
# @partial(using_cprofile, root_abs_path='/mnt/e/neat-jax/', replace_pattern="/mnt/e/neat-jax/")
|
||||||
def main():
|
def main():
|
||||||
config = Configer.load_config()
|
config = Configer.load_config()
|
||||||
pipeline = Pipeline(config, seed=11323)
|
pipeline = Pipeline(config, seed=11323)
|
||||||
|
|||||||
Reference in New Issue
Block a user