-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathGeneticProgramProcess.py
More file actions
35 lines (25 loc) · 1.3 KB
/
GeneticProgramProcess.py
File metadata and controls
35 lines (25 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import multiprocessing as mp
from multiprocessing import Queue
from GeneticProgram.GeneticProgram import GeneticProgram
class GeneticProgramProcess(mp.Process):
def __init__(self, gen_program: GeneticProgram, population_queue: Queue, best_queue: Queue):
super().__init__()
self.gen_program = gen_program
self.best = None
self.population_queue = population_queue
self.best_queue = best_queue
class GeneticProgramProcessCreate(GeneticProgramProcess):
def __init__(self, gen_program: GeneticProgram, population_queue: Queue, best_queue: Queue):
super().__init__(gen_program, population_queue, best_queue)
def run(self) -> None:
self.best = self.gen_program.create_population()
self.best_queue.put(self.best)
self.population_queue.put(self.gen_program.population)
class GeneticProgramProcessRegenerate(GeneticProgramProcess):
def __init__(self, gen_program: GeneticProgram, population_queue: Queue, best_queue: Queue, best):
super().__init__(gen_program, population_queue, best_queue)
self.best = best
def run(self) -> None:
self.gen_program.population = self.population_queue.get()
self.best_queue.put(self.gen_program.regenerate(self.best))
self.population_queue.put(self.gen_program.population)