diff options
author | blendoit <blendoit@gmail.com> | 2019-10-20 19:33:53 -0700 |
---|---|---|
committer | blendoit <blendoit@gmail.com> | 2019-10-20 19:33:53 -0700 |
commit | 5e82dedea4c56eafc1bba4f3ec8677b15f51c03f (patch) | |
tree | d754b30ae1f7a892cd22ce092b5c1a8f5ebca847 /generator/generator.py | |
parent | 87f2d5da23a0bb7159d64827390b5083b80f1375 (diff) |
Commence declassification of Evaluator
Pointless to have a separate object for the Evaluator when a collection
of evaluator.py methods does the trick.
Diffstat (limited to 'generator/generator.py')
-rw-r--r-- | generator/generator.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/generator/generator.py b/generator/generator.py new file mode 100644 index 0000000..3af4850 --- /dev/null +++ b/generator/generator.py @@ -0,0 +1,47 @@ +""" +The generator.py module contains classes describing genetic populations +and methods to generate default aircraft. +""" + +import random + +import creator +import evaluator + + +def default_aircraft(evaluator_instance): + """Generate a default aircraft with a random name.""" + name = 'default_aircraft_' + str(random.randrange(1000, 9999)) + aircraft = creator.base.Aircraft(evaluator_instance, name) + airfoil = creator.wing.Airfoil(aircraft, 'default_airfoil') + airfoil.add_naca(2412) + soar1 = creator.wing.Spar(airfoil, 'default_spar_1', 0.30) + soar2 = creator.wing.Spar(airfoil, 'default_spar_2', 0.60) + stringer = creator.wing.Stringer(airfoil, 'default_stringer') + return aircraft + + +def default_fuselage(): + pass + + +def default_propulsion(): + pass + + +class Population(): + """Collection of random airfoils.""" + def __init__(self, size): + af = creator.Airfoil + # print(af) + self.size = size + self.gen_number = 0 # incremented for every generation + + 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)""" |