From abcb19f8b0c807ce6a27184d787d8c2e744fb628 Mon Sep 17 00:00:00 2001 From: SimpleArt <71458112+SimpleArt@users.noreply.github.com> Date: Fri, 20 Nov 2020 09:16:30 -0500 Subject: [PATCH] Split the process into function decorators --- src/initialization/initialization_methods.py | 38 +++++++++++++------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/initialization/initialization_methods.py b/src/initialization/initialization_methods.py index 152fa24..9fb4206 100644 --- a/src/initialization/initialization_methods.py +++ b/src/initialization/initialization_methods.py @@ -1,6 +1,27 @@ +def chromosomes_to_population(initialize): + return lambda ga: ga.make_population([initialize(ga) for _ in range(ga.population_size)]) + +def genes_to_chromosome(initialize): + return lambda ga: ga.make_chromosome([genes for genes in initialize(ga)]) + +def value_to_gene(initialize): + return lambda ga: (ga.make_gene(value) for value in initialize(ga)) + + class Initialization_Methods: """Initialization examples that are used as defaults and examples""" + def __chromosomes_to_population(initialize): + return chromosomes_to_population(initialize) + def __genes_to_chromosome(initialize): + return genes_to_chromosome(initialize) + def __value_to_gene(initialize): + return value_to_gene(initialize) + + + @chromosomes_to_population + @genes_to_chromosome + @value_to_gene def random_initialization(ga): """Takes the initialization inputs and - return a new population @@ -10,21 +31,14 @@ class Initialization_Methods: # Using the chromosome_impl to set every index inside of the chromosome if ga.chromosome_impl is not None: - return ga.make_population([ - ga.make_chromosome([ - ga.make_gene(value) - for value in ga.chromosome_impl()]) - for i in range(ga.population_size)]) + for value in ga.chromosome_impl(): + yield value # Using the gene_impl to set every gene to be the same elif ga.gene_impl is not None: - return ga.make_population([ - ga.make_chromosome([ - ga.make_gene(ga.gene_impl()) - for j in range(ga.chromosome_length)]) - for i in range(ga.population_size)]) + for _ in range(ga.population_size): + yield ga.gene_impl() # Exit because no gene creation method specified else: - print("You did not specify any initialization constraints.") - return None + raise Exception("Did not specify any initialization constraints.")