diff --git a/__pycache__/RotTable.cpython-36.pyc b/__pycache__/RotTable.cpython-36.pyc
index a8064bb45dbaad46db289f9e730b7dd816423ae4..459e4374c306aebaf525b830c17f00a8820843ca 100644
Binary files a/__pycache__/RotTable.cpython-36.pyc and b/__pycache__/RotTable.cpython-36.pyc differ
diff --git a/algogenetique.py b/algogenetique.py
index 7c49cd2af0e82ae43dddb7524e47373f1c611d4c..138d8a15f2efd56a7fa7bf34bc150bc638c53cbf 100644
--- a/algogenetique.py
+++ b/algogenetique.py
@@ -8,7 +8,7 @@ import croisement
 from Traj3D import *
 from random import random
 import matplotlib.pyplot as plt
-import time 
+import time
 
 # def main(N,tmax,pmutation, proportion,brin="plasmid_8k.fasta"):
 #     '''lineList = [line.rstrip('\n') for line in open(brin)]
@@ -29,8 +29,8 @@ import time
 #     plt.plot([i for i in range(tmax)], L, label = str(pmutation))
 #     return(best)
 
-
 def main(N,tmax,pmutation, proportion):
+
     L=[]
     lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
     brin = ''.join(lineList[1:])
@@ -41,7 +41,7 @@ def main(N,tmax,pmutation, proportion):
         # S1.append(int(individu.score))
     # maximum=int(max(S1))
     for i in range(tmax):
-        print(i)
+        #print(i)
         mini=People.indiv[0].score
         best=People.indiv[0]
         People.reproduction(p = proportion, proba_mutation= pmutation)
diff --git a/individu.py b/individu.py
index 20958d3de778f360a6da39856777dffe233336bf..08744e8f0dc9a3ca276c4ff3b75c3ab6dd5cb4be 100644
--- a/individu.py
+++ b/individu.py
@@ -9,37 +9,41 @@ P1 = 0.015
 class Individu():
 
     def __init__(self, table):
+        lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
+        brin = ''.join(lineList[1:])
         self.table = table
-        self.score = self.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
-    
-    def evaluate(self, brin):
+        lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
+        self.brin = ''.join(lineList[1:])
+        #self.brin = "AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA"
+        self.score = self.evaluate()
+
+    def evaluate(self):
         traj = Traj3D()
 
-        numb_ajout = 3
+        numb_ajout = 6
 
-        fisrt_seq = brin[0:numb_ajout]
-        last_seq = brin[-numb_ajout:]
+        fisrt_seq = self.brin[0:numb_ajout]
+        last_seq = self.brin[-numb_ajout:]
 
-        traj.compute(last_seq + brin + fisrt_seq, self.table)
+        traj.compute(last_seq + self.brin + fisrt_seq, self.table)
         traj_array = np.array(traj.getTraj())
+
         list_distance = []
 
-        for i in range(numb_ajout):
-                first_nuc_coordonate = traj_array[numb_ajout+i, 0:3]
-                first_nuc_coordonate_compute = traj_array[-(numb_ajout-i), 0:3]
-                
-                last_nuc_coordonate = traj_array[-(2*numb_ajout-i), 0:3]
-                last_nuc_coordonate_compute = traj_array[i, 0:3]
+        begining = traj_array[0:2*numb_ajout, 0:3]
+        end = traj_array[-2*numb_ajout:, 0:3]
 
-                distance_first_nuc = np.linalg.norm(first_nuc_coordonate - first_nuc_coordonate_compute, ord=2)
-                distance_last_nuc = np.linalg.norm(last_nuc_coordonate - last_nuc_coordonate_compute, ord=2)
+        for i in range(numb_ajout):
 
-                list_distance += [distance_first_nuc, distance_last_nuc]
+                nuc_coordonate_beg = begining[i]
+                nuc_coordonate_end = end[i]
+                distance_nuc = np.linalg.norm(nuc_coordonate_beg - nuc_coordonate_end, ord=2)
+                list_distance += [distance_nuc]
 
 
         self.score = max(list_distance)
 
-        return max(list_distance)
+        #return max(list_distance)
 
 
     def mutation(self, proba = P1):
@@ -56,15 +60,34 @@ class Individu():
                         #sur l'axe z il y a un moins
                         table_rotations[doublet2][coord] = - table_rotations[doublet][coord]
 
+    def mutation_with_numbers(self, proba = P1, number_of_mutations = 5):
+        table_rotations = self.table.rot_table
+        for i in range(0,number_of_mutations):
+            tir = random()
+            if tir < proba :
+                doubletNumber = randrange(0,8)
+                counter = 0
+                for doublet in table_rotations:
+                    if counter==doubletNumber:
+                        break
+                    counter+=1
+                for coord in range(3):
+                    table_rotations[doublet][coord] =np.random.uniform(low = self.table.orta()[doublet][coord] - self.table.orta()[doublet][coord + 3], high = self.table.orta()[doublet][coord] + self.table.orta()[doublet][coord + 3])
+                    doublet2 = self.table.corr()[doublet]
+                    if coord == 0 or coord == 1 :
+                        table_rotations[doublet2][coord] = table_rotations[doublet][coord]
+                    else :
+                        #sur l'axe z il y a un moins
+                        table_rotations[doublet2][coord] = - table_rotations[doublet][coord]
 
 # individu1 = Individu(RotTable())
 # print(individu1.table.rot_table)
 # individu1.mutation()
 
-# table = RotTable()
-# test = Individu(table)
-# test.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
-# print(test.score)
+table = RotTable()
+test = Individu(table)
+test.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
+print(test.score)
 
 
 # qqun=Individu(RotTable())
diff --git a/population.py b/population.py
index 104f66bb97b274d923f7dcf554ea4fe3599ef717..7d2507349ff1cdf2d946cdb03a6cdf7eca96da7a 100644
--- a/population.py
+++ b/population.py
@@ -15,7 +15,7 @@ class Population:
         self.n = len(liste_individus)
         self.indiv = liste_individus
         for i in range(0,self.n):
-            self.indiv[i].evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
+            self.indiv[i].evaluate()
 
         return self
 
@@ -68,7 +68,7 @@ class Population:
         meilleur = self.indiv[0]
         for individu in self.indiv :
             if meilleur.score > individu.score:
-                print("meilleur, individu: ", meilleur.score, individu.score)
+                #print("meilleur, individu: ", meilleur.score, individu.score)
                 meilleur = individu
         newself = [meilleur]
         vu=set()                        
@@ -83,7 +83,7 @@ class Population:
             
             x=self.indiv[m]
             y=self.indiv[t]
-            if x.score<y.score:
+            if x.score<=y.score:
                 newself.append(x)
             else:
                 newself.append(y)
@@ -170,7 +170,7 @@ class Population:
                 lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
                 brin = ''.join(lineList[1:])
                 child.mutation(proba_mutation)
-                child.evaluate(brin)
+                child.evaluate()
             newself.append(couple_enfant[0])
             newself.append(couple_enfant[1])
         self = self.modifier_population(newself)
@@ -186,7 +186,7 @@ def test():
     popu = Population(4)
     print("\n POPULATION INITIALE \n")
     for individu in popu.indiv :
-        individu.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
+        individu.evaluate()
     afficher(popu)
     popu.reproduction(selection = popu.selection_duel)
     print("\n REPRODUCTION \n")