""" The generator.py module contains classes describing genetic populations and methods to generate default aircraft. """ import random import concurrent.futures import creator import evaluator def default_fuselage(): pass def default_propulsion(): pass class Population(): """Represents a collection of aircraft.""" def __init__(self, size): self.aircrafts = [] for i in range(size): self.aircrafts.append(creator.base.Aircraft.from_default()) self.size = size self.results = None self.gen_number = 0 # incremented for every generation def evaluate(self): with concurrent.futures.ProcessPoolExecutor as executor: for aircraft in self.aircrafts: executor.submit(evaluator.analyze, aircraft) 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)"""