Skip to content

Commit

Permalink
fix some errors
Browse files Browse the repository at this point in the history
  • Loading branch information
kasyanovse committed Dec 11, 2023
1 parent afc608b commit e219730
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 7 deletions.
8 changes: 5 additions & 3 deletions golem/core/optimisers/common_optimizer/common_optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class CommonOptimizer(PopulationalOptimizer):
'graph_optimizer_params', 'history', 'stages', '_run',
'generations', 'population', 'evaluator')
__parameters_allowed_to_change = ('requirements', 'graph_generation_params',
'graph_optimizer_params', 'stages', '_run')
'graph_optimizer_params', 'stages', '_run', 'new_population')

def __init__(self,
objective: Objective,
Expand Down Expand Up @@ -85,7 +85,8 @@ def parameters(self, parameters: CommonOptimizerParameters):
if not isinstance(parameters, CommonOptimizerParameters):
raise TypeError(f"parameters should be `CommonOptimizerParameters`, got {type(parameters)} instead")
for attr in self.__parameters_allowed_to_change:
setattr(self, attr, getattr(parameters, attr))
if hasattr(parameters, attr):
setattr(self, attr, getattr(parameters, attr))

# def optimise(self, objective: ObjectiveFunction):
# while self._run:
Expand All @@ -98,9 +99,10 @@ def _initial_population(self, evaluator: EvaluationOperator):

def _evolve_population(self, evaluator: EvaluationOperator) -> PopulationT:
""" Method realizing full evolution cycle """
# TODO rebuild population

self.evaluator = evaluator

for i_stage in range(len(self.stages)):
self.parameters = self.stages[i_stage].run(self.parameters)
print(1)
return self.new_population
1 change: 1 addition & 0 deletions golem/core/optimisers/common_optimizer/nodes/evaluator.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class EvaluatorTask(TaskMixin):
def __init__(self, parameters: 'CommonOptimizerParameters'):
super().__init__(parameters)
self.evaluator = parameters.evaluator
self.generation = parameters.population

def update_parameters(self, parameters: 'CommonOptimizerParameters'):
return super().update_parameters(parameters)
Expand Down
5 changes: 3 additions & 2 deletions golem/core/optimisers/common_optimizer/old_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
that reproduces behavior of default GOLEM
genetic optimization """
from collections import defaultdict
from itertools import chain

from golem.core.optimisers.common_optimizer.nodes.evaluator import Evaluator
from golem.core.optimisers.common_optimizer.nodes.old_crossover import Crossover, CrossoverTask
Expand Down Expand Up @@ -43,10 +44,10 @@ def update_parameters(self, parameters: 'CommonOptimizerParameters'):
stop_fun = lambda f, a: a and len(f) >= a[0].graph_optimizer_params.pop_size

def parameter_updater(finished_tasks, parameters):
parameters.new_population = [task.generation for task in finished_tasks]
parameters.new_population = list(chain(*[task.generation for task in finished_tasks]))
return parameters

runner = OneThreadRunner()
# runner = ParallelRunner()
runner = ParallelRunner()
default_stages.append(Stage(runner=runner, nodes=nodes, task_builder=EvolvePopulationTask,
scheme=scheme, stop_fun=stop_fun, parameter_updater=parameter_updater))
5 changes: 3 additions & 2 deletions golem/core/optimisers/common_optimizer/runner.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import time
from abc import abstractmethod
from collections import deque
from copy import copy
from dataclasses import dataclass
from multiprocessing import Manager
from queue import Empty
Expand Down Expand Up @@ -82,7 +83,7 @@ def __init__(self,
worker_cycle_sleep_seconds: float = 0.02,
**kwargs):
super().__init__(*args, **kwargs)
self.n_jobs = n_jobs
self.n_jobs = determine_n_jobs(n_jobs)
self.main_cycle_sleep_seconds = main_cycle_sleep_seconds
self.worker_cycle_sleep_seconds = worker_cycle_sleep_seconds

Expand All @@ -93,7 +94,7 @@ def run(self, scheme: Scheme, task: Task, nodes: List[Node], stop_fun: Callable)
queued_tasks=queued_tasks, processed_tasks=processed_tasks,
sleep_time=self.worker_cycle_sleep_seconds)
with Parallel(n_jobs=self.n_jobs, prefer='processes', return_as='generator') as parallel:
_ = parallel(delayed(worker)(randint(0, int(2 ** 32 - 1))) for _ in range(self.n_jobs))
gen = parallel(delayed(worker)(randint(0, int(2 ** 32 - 1))) for _ in range(self.n_jobs))
finished_tasks, all_tasks = list(), list()
while not stop_fun(finished_tasks, all_tasks):
time.sleep(self.main_cycle_sleep_seconds)
Expand Down

0 comments on commit e219730

Please sign in to comment.