## Fichier : generation.py # Auteur : Jovian Hersemeule # Contient des fonctions qui construisent la génération suivante. from random import randint from random import uniform class Generateur : # Jovian 15 mars 2017 def __init__(self): # Jovian 15 mars 2017 """ Permet de créer un générateur avec les paramètres désirés. """ def cross_random(self, chromA, chromB): # Jovian 15 mars 2017 """ Retourne un chromosome dont chaque gène est choisi aléatoirement chez A ou B. """ def cross_mix(self, chromA, chromB): # Jovian 15 mars 2017 """ Retourne un chromosome dont chaque gène est la moyenne arithmétique des valeurs des chromosomes chez A et B. """ def mutate_total(self, chromA, nb = 1, inf = -1, sup = +1): # Jovian 31 mai 2017 """ Remplace certains gènes du chromosome par un poids aléatoire. Arg nb : le nombre de gènes à muter. """ n = len(chromA) for k in range(nb): gene = randint(0, n-1) new_value = uniform(inf, sup) chromA[gene] = new_value def mutate_diff(self, chromA, diff = 0.1, nb = 1, inf = -1, sup = +1): # Jovian 31 mai 2017 """ Modifie un certain nombre de gène par l'ajout d'une valeur aléatoire. Arg diff : la différence maximale ajoutée. Arg nb : le nombre de gènes à muter. """ n = len(chromA) for k in range(nb): gene = randint(0, n-1) new_diff = uniform(-diff, diff) chromA[gene] += new_diff if chromA[gene] >= sup : chromA[gene] = sup elif chromA[gene] <= inf : chromA[gene] = inf