From 8b6f11119790c8c930734894a37d2a4aaa42462d Mon Sep 17 00:00:00 2001 From: blendoit Date: Fri, 1 Nov 2019 18:12:34 -0700 Subject: Start work on optimized multiprocessing random a/c gen. & eval. --- aircraftstudio/generator/generator.py | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 aircraftstudio/generator/generator.py (limited to 'aircraftstudio/generator/generator.py') diff --git a/aircraftstudio/generator/generator.py b/aircraftstudio/generator/generator.py new file mode 100644 index 0000000..898683a --- /dev/null +++ b/aircraftstudio/generator/generator.py @@ -0,0 +1,43 @@ +""" +The generator.py module contains classes describing genetic populations +and methods to generate default aircraft. +""" + +from aircraftstudio import creator + + +def default_fuselage(): + pass + + +def default_propulsion(): + pass + + +class Population(): + """Represents a collection of aircraft.""" + def __init__(self, size): + self.aircrafts = [] + for _ in range(size): + self.aircrafts.append(creator.base.Aircraft.from_random()) + self.size = size + self.results = None + self.gen_number = 0 # incremented for every generation + + #TODO class methods for default and random population + # def from_default(self, size): + # for i in range(size): + # self.aircrafts.append(creator.base.Aircraft.from_default()) + + # def from_random(self, size): + # for i in range(size): + # self.aircrafts.append(creator.base.Aircraft.from_random()) + + def mutate(self, prob_mt): + """Randomly mutate the genes of prob_mt % of the population.""" + def crossover(self, prob_cx): + """Combine the genes of prob_cx % of the population.""" + def reproduce(self, prob_rp): + """Pass on the genes of the fittest prob_rp % of the population.""" + def fitness(): + """Rate the fitness of an individual on a relative scale (0-100)""" -- cgit v1.2.3