1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- ## 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
-
|