diff --git a/__pycache__/RotTable.cpython-37.pyc b/__pycache__/RotTable.cpython-37.pyc
index 871a676fa8235c0400b419269ae9e4181252734d..d0d2bee9e71c849781de9a96c497f02788ecaaf7 100644
Binary files a/__pycache__/RotTable.cpython-37.pyc and b/__pycache__/RotTable.cpython-37.pyc differ
diff --git a/__pycache__/Traj3D.cpython-37.pyc b/__pycache__/Traj3D.cpython-37.pyc
index dea944e68cade651c52da0042ac2d62a176dc023..9f5f20ef7c01a060943e03ea5beaee567c92ae7e 100644
Binary files a/__pycache__/Traj3D.cpython-37.pyc and b/__pycache__/Traj3D.cpython-37.pyc differ
diff --git a/__pycache__/individu.cpython-37.pyc b/__pycache__/individu.cpython-37.pyc
index 96ed7d90f93ff50da4b4f4476bc9f4ce8555ea0f..35557e4070ba1d2d0c008c67f366796605baa71d 100644
Binary files a/__pycache__/individu.cpython-37.pyc and b/__pycache__/individu.cpython-37.pyc differ
diff --git a/individu.py b/individu.py
index 22f1a4d5b3d158b7a87944d80ba3fed8f3398eed..1d2a706a5acea6ae88b00cb210c140c981aa38f6 100644
--- a/individu.py
+++ b/individu.py
@@ -2,7 +2,7 @@ from RotTable import RotTable
 from Traj3D import Traj3D
 import numpy as np
 from math import sqrt, inf
-from random import random
+from random import random, choice
 
 P1 = 0.015
 
@@ -50,9 +50,8 @@ class Individu():
 
 
     def mutation(self, proba = P1):
-        '''Modifie des rotations dans la table des rotations en préservant les symétries'''
         table_rotations = self.table.rot_table
-        for doublet in table_rotations :
+        for doublet in sorted(table_rotations.keys()) :
             for coord in range(3):
                 tir = random()
                 if tir < proba :
@@ -64,17 +63,18 @@ 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):
+    def mutation_with_numbers(self, proba = P1, number_of_mutations = 1):
         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
+        table_rotation_not_seen = [i for i in sorted(table_rotations.keys())]
+        table_rotation_not_seen = table_rotation_not_seen[:8]
+
+        tir = random()
+        if tir < proba :
+            for i in range(0,number_of_mutations):
+                
+                doublet = choice(table_rotation_not_seen)
+                table_rotation_not_seen.remove(doublet)
+
                 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]
@@ -84,6 +84,34 @@ class Individu():
                         #sur l'axe z il y a un moins
                         table_rotations[doublet2][coord] = - table_rotations[doublet][coord]
 
+
+    def mutation_close_values(self, proba = P1, number_of_mutations = 1):
+        table_rotations = self.table.rot_table
+        table_rotation_not_seen = [i for i in sorted(table_rotations.keys())]
+        table_rotation_not_seen = table_rotation_not_seen[:8]
+
+        tir = random()
+        if tir < proba :
+            for i in range(0,number_of_mutations):
+
+                doublet = choice(table_rotation_not_seen)
+                table_rotation_not_seen.remove(doublet)
+
+                for coord in range(3):
+                    value = table_rotations[doublet][coord] + np.random.uniform( low = - self.table.orta()[doublet][coord + 3]/10, high = - self.table.orta()[doublet][coord + 3]/10)
+                    if value > self.table.orta()[doublet][coord] + self.table.orta()[doublet][coord + 3]:
+                        value = self.table.orta()[doublet][coord] + self.table.orta()[doublet][coord + 3]
+                    elif value < self.table.orta()[doublet][coord] - self.table.orta()[doublet][coord + 3]:
+                        value = self.table.orta()[doublet][coord] - self.table.orta()[doublet][coord + 3]
+                    table_rotations[doublet][coord] = value
+                    
+                    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()