diff --git a/population.py b/population.py index 25f612d53f3e06512efb23ac15e5ed3426e9fbc7..9d8b171aa909eaa341897efb77fe206d7d5e1f39 100644 --- a/population.py +++ b/population.py @@ -15,6 +15,22 @@ class Population: self.indiv = liste_individus return self + def selection_p_best(self,p=self.n//2): + def tri_rapide_aux(tableau,debut,fin): + if debut < fin-1: + positionPivot=partitionner(tableau,debut,fin) + tri_rapide_aux(tableau,debut,positionPivot) + tri_rapide_aux(tableau,positionPivot+1,fin) + + def tri_rapide(tableau): + tri_rapide_aux(tableau,0,len(tableau)) + + liste_individus=self.indiv + tri_rapide(liste_individus) + individus_selectionnes = [element for element in liste_individus[:p]] + self = self.modifier_population(individus_selectionnes) + + def selection_duel_pondere(self,p=None): if p == None : p = (self.n)//2 @@ -69,6 +85,8 @@ class Population: print(newself[i].score) self = self.modifier_population(newself) + + def selection_par_rang(self,p = None): if p == None : p = (self.n)//2