From 9915f56d9ff2be14c46e6743e7e93bd20cee1000 Mon Sep 17 00:00:00 2001
From: Nihama Sandra Ayumi <sandra.nihama@student-cs.fr>
Date: Tue, 28 Jan 2020 14:39:55 +0100
Subject: [PATCH] croisement corrected

---
 __pycache__/RotTable.cpython-37.pyc | Bin 2038 -> 2637 bytes
 __pycache__/Traj3D.cpython-37.pyc   | Bin 1958 -> 1936 bytes
 __pycache__/individu.cpython-37.pyc | Bin 1514 -> 1532 bytes
 croisement.py                       |  63 +++++++++++++++++++++++-----
 4 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/__pycache__/RotTable.cpython-37.pyc b/__pycache__/RotTable.cpython-37.pyc
index c83b8f44bf8d032a00f01146a96d3e6db0a5d8f2..f7688497e760ed2dc47b7da1df73ee7c7583acb8 100644
GIT binary patch
delta 1384
zcmeyye^!LgiI<m)fq{WxmW4rF7|%pL2}Y}l>ZV-HjEoE^jKK_=EEBV281p8!KdaYG
zVNGF6VNYjE(VHU>#gd|*Vvu5(Vw7T>Vv=H-VwPf_Vv%B*VwGZ@Vv}N<Vh2{milz#r
z#yZ7*4p$UgibINH3qurpic^Yn3quq~ic5-X3qurVid%|%3qurFibslP3qurlidTwv
z3quqSUy4tPZwo^dZ;D?qgQoxHRg4LY^)F{JFfeEe++uQcyv5|`e2dA^{T7pB$So#k
z$6HL!&bOGH-ET2DhumUvcf7^q?tF{M-TfAmd&n)O5XW0gA<nm$LfmgLg@hC-FfcF_
z$$$t65Fr90<Uxcqh!6)6!XQEpL`Z=MF%aP+1R`ZYgd~U%1rdTECvg>ls3NdDSSQ#>
zusm2N*hsJ*uxTJ8Ci^h2iB)4@VEE<ZY!wq)oLW>IQ=FKWQWWEopIn-onpaXB;~X3l
zY#I|BViXe`665L_lbWfUm0DV%n_8BiQ(BUlpO=@IS(I8F6O>;Pl9-f}s#j2Xiz7Zh
zGcU6wKHhq=HH%I?3j+fKI|BoQGXn!daT@~zLq$UgLl&b8Lu^?sV?{v;Qwn1<h?i2!
zRKlFalEqrWki}NRD9KR6l)@y=Aj!bZfG(24+{;wUT*HvX4pGO-Ajwd}Y|g;UV8Z|s
z1(^?$0hz%Dk(_*nMOT-jh>3xL;g(!H%(?OL!TzDa@y`B1L9W38{(dfwe$KA9Sc?+#
z(o-i3uu9YyDS<**5fs8KMJgb+D#!%J%v-D}sW~NyMWFD55b7XVWtd07X`GRVk&jW2
zQH-&Q7iObgVoqveG9xGlFfcHHXb=X64I2Xk$n^}t44RC7nv5W;>lri|A=aYWbBiUv
zs3g%F6rvy>F(6w2k|D~1TarlOfEolaTlLVbP0lYW^22H^NM>>-tA!RQ#59>8t_B4b
zBy_+Afr983M|x^WNO@*)N%Z8?tf53H4^K@=PmP=G#TKeZ$aJ3c)DoA>qSRzi;!K=;
zmQ9(FZ}LYry#SELB4bb-X@dw25CMv<A|nvX1VosE2y+l&0V2RoMi3y!gVPTy$p0ym
zquJG*S(q5{K@KeP9LyXbz|6tR!OX#2#58##ySSe&$Uaa^MzNKEvXS8})`FtUypkeN
n%0mi3uxmgLxy50Vo1apelWGS_KE<Ha#=*$J$ic*y$i@T!mHQr5

delta 812
zcmX>r@{OO*iI<m)fq{X+_`QDISN4f~5{z~e)lIciSR@&m85tQ;7=sx!Szm%w_$7l#
z7#3w<U~phyU?`TG*!;|vC51JGErmUuEk$>ZKom=gUW$GTLlkR@L5g7uLlj$zQHpU3
zLlk?8Ns4I;Llj4fS&DfJLlkF<MKFV=<>qgU35-sf0=JkP9ix~Wouil>-J_TsL!y|R
z9iy0>ouinX-J_VCL!y}69iy1souioC-J_V?L!y{M9HW>*oTHdR+@qL6LMAJ+tZ^1&
zU|{%V<YE=$lAm0fo0?Zr3}VGQ2gkU2#s`NO#TdKzIqK#n7MG+J#RTP-gd`^Ar0Nw^
z-r|Ul&&<m#iI10_ti`I6%FMvP016mqkRQ_+7#J!NN*J;jT^M4+Y8fj6N|;g@n?XF6
zTBaI?Ean<UNroCGRt8Ci5|%91EH;o@h*%1fID;euHv_sz3Ue>h<lC&e_3TAV3=9lK
zLJSNHw^)l3^U_m`1i|dQ(%gc|TWm#%c`5n1x7bVbGSl*lay6NYL_q365pat!vk2s2
z2q6v<7G_{zPy)G`4HQ$1JdAvdRlIP2Cg!9jCWEX4NrGr5hRGf5npz;sHJK0wLkt8P
z4Kno>M|x^WNO@*)iP7ZS?4d*{4^K@=Pc@w!#SyAU$aJ3c)DoA>qSWM)%=|oy$#*%F
z8M!7ia_ZTDG!{v~yj7$CVu3tYqzqz#orfSm4h07#E6Dpglj}LvG?+QqIRrSEIher`
wMFI>A44UjwoVkf58KoteImNeFK+GbUNn8@5pg>3RH`rkD$+}#!%oc2n0LGoEL;wH)

diff --git a/__pycache__/Traj3D.cpython-37.pyc b/__pycache__/Traj3D.cpython-37.pyc
index 1c96963aabd1b568f33a524d629ac0fbd51f9518..f7109d9eed1cccc1d2977773da0f78ab514515c7 100644
GIT binary patch
delta 95
zcmZ3+KY^duiI<m)fq{WR<&Iul_(tAxM(1B%&Q>v@#i>QbF~x~_DMc|Z`N^fZsd**E
zG0wp;!KN|6Ax1I5Au+C=F{zolS*fKJx~XOPIi)3;`FVMXnMJ9^F`Mr)o@508q9Y+M

delta 99
zcmbQhzl@*PiI<m)fq{WR^^RVg$VT3BM#rzQ3=9nVp~b01#rnw^Ir*u%r8zmNMfxuJ
z$)&lec_qdAuF3g1sR}9TnR)4{XBzV|Q%j5VO%-$%f<uh-T|M<DuV)lz)ZcuZ@gyq%
Dz|bFE

diff --git a/__pycache__/individu.cpython-37.pyc b/__pycache__/individu.cpython-37.pyc
index b92864141ef1be69e4e4b528e4b1f8dedab9d277..be825d90f179f8f74c39814615316732592d10e7 100644
GIT binary patch
delta 619
zcmaFG{fC>^iI<m)fq{WxmW4swmx;WR(tZpK3@HpLj5!Rs3{eb>AU0DDV=iM9BjZF{
zUv{>TqQop?myJEbjEuaK7cgq@aWXJ4urM$%I5RLX6qiiC#+b>K!dk;7%}~P-&oQ}_
zNzszCh?#+bA&NaYKewQ?B(;d0fq~%`Q(nO>*2JQs#L6i4^wbiNu|*(bZZQ{^<`!`<
zFfeFxPJYA`W`Bz_C$YFBJ})shwFu-?2*C|9gCn&pF{d=KBvlY(w-Cr5jBJd2jC@Q2
zi~@`zOdO0H9FrF^%jkn_1Q`i-;}Zr3h8l(}hAhTfriyDdOfC$u=W3ZNPLwdEFg7!~
zFvRYe{D!%p9;9Re`$C2qW=V!xwi=cc=4__oH8m_LEZIy&hiaHW;x#Oi3^hzOY?2H$
zEH(^<G6+#_6!CC|LcVZ@6oz01O;*1mUXbUQZZYTNm)~N^$V|^DVq{=oC=vh(b3j6e
zv&bO7B)%juDJS(7Yf)ledTJ3XNDauNx7bVbGSl*la&NKZ7nLO5VoA;~D$-=1yqZN;
z{uX;merZxpYDpApa(;eMN)&TRW>FLeRM2ShT^30hHBexQfCGzzk&BU!k&TgqF@cef
zQGiiwG8d~OmnbM~nF0)p<R*u*s+q8GuyBYLv4LF2S;Pc#1t>aivF4TL7E~62UBr@`
cSdsybK8Q1wCa-5T<l<rEVB}%sVPatd0Aps2ZU6uP

delta 619
zcmeyv{fe8{iI<m)fq{WRj?*B{X(F$rxEBKhLkdF*V-7<uLlgreh|QG47&6h(mx)np
z<5XcrM()Wg88!HL7#J8>7#J9w85kIf7fim-m|0)Lkj0e6QNvNgF3upyP|I1vQo}02
zP|H=qUcy<!S;Hm4(9GD(Sj(NlTEkYuEzTg#P{R<<mBJ9rpvmS}#K^$F@RAus{Qv*|
z|4Swi3nZq=eTyxmC^5^}C5k;cKewQ?B(;d0fq~%`Q(i$7YhqDRVr3M2dTL3?<QYu7
z;<q@9@=M}N5|eULZ!sq(6&G<ZFfeHHOkTqjrWeJTlUQ65pO=`M8pQ)r1~o1viUY(e
zDN4+W;!4R(ON&p;OV63i!z`u95AvM^D1aE*82K3am;@LF7)6*k7&({(7&({)m?k?i
z%jmN)Fff4Z0f)sb1_p*2hAf6G##*L|o*E_>hS-)`=8C!!rWD3zMi++IqRBnX1^$IH
z;S7a*;S6B!Gy4_sg51e;i#aF1{1!__W_pGuJJ_2=A|SuA7A5ATrxvj?FfbGefdtq~
z^D@)&i*ln_@{39mHQ6SwW|4J@Vo%90P0C3viDFI8&o4@eVlK%nDgwnXgy070<j5^8
zNi50C&r<>U4HS(Gj2w(yjC_o2j2x3?SRJ{<K+2c`42z^Er?aY=FmbSOh!%nTsL5Fb
vik2cl1_p*G*1Xc(f=Y;MSaK6fGKxUS0pdjY$p={txi}a(7<m|Zm{^zqaubdu

diff --git a/croisement.py b/croisement.py
index 2bdb485..96f85a8 100644
--- a/croisement.py
+++ b/croisement.py
@@ -18,7 +18,7 @@ ROT_TABLE = {\
         "TA": [36, 0.9, 0, 1.1, 2, 0],\
         "TC": [36.9, 5.3, -120, 0.9, 6, 0],\
         "TG": [34.5, 3.5, 64, 0.9, 34, 0],\
-        "TT": [35.62, 7.2, 154, 0.06, 0.6, 0]\
+        "TT": [35.62, 7.2, -154, 0.06, 0.6, 0]\
             }
 
 
@@ -26,30 +26,71 @@ def croisement_un_point(parent1, parent2):
     enfant1 = Individu(RotTable())
     enfant2 = Individu(RotTable())
     comp = 0
-    point_crois= numpy.random.random_integers(0,16)
+    point_crois= numpy.random.random_integers(0,8)
     for doublet in ROT_TABLE:
+        if doublet == "GA":
+            break
         if comp < point_crois:
             enfant1.table.rot_table[doublet] = parent1.table.rot_table[doublet]
+            correspondent_doublet1 = enfant1.table.corr()[doublet]
+            enfant1.table.rot_table[correspondent_doublet1] = parent1.table.rot_table[correspondent_doublet1]
+            enfant1.table.rot_table[correspondent_doublet1][2] *= -1
+
             enfant2.table.rot_table[doublet] = parent2.table.rot_table[doublet]
+            correspondent_doublet2 = enfant2.table.corr()[doublet]
+            enfant2.table.rot_table[correspondent_doublet2] = parent2.table.rot_table[correspondent_doublet2]
+            enfant2.table.rot_table[correspondent_doublet2][2] *= -1
+        
         else :
             enfant1.table.rot_table[doublet] = parent2.table.rot_table[doublet]
+            correspondent_doublet1 = enfant1.table.corr()[doublet]
+            enfant1.table.rot_table[correspondent_doublet1] = parent2.table.rot_table[correspondent_doublet1]
+            enfant1.table.rot_table[correspondent_doublet1][2] *= -1
+
             enfant2.table.rot_table[doublet] = parent1.table.rot_table[doublet]
+            correspondent_doublet2 = enfant2.table.corr()[doublet]
+            enfant2.table.rot_table[correspondent_doublet2] = parent1.table.rot_table[correspondent_doublet1]
+            enfant2.table.rot_table[correspondent_doublet2][2] *= -1
+
         comp += 1
     return enfant1, enfant2
 
 
 def croisement_deux_points(parent1, parent2):
-    enfant1 = RotTable()
-    enfant2 = RotTable()
+    enfant1 = Individu(RotTable())
+    enfant2 = Individu(RotTable())
     comp = 0
-    point_crois1= numpy.random.random_integers(0,16)
-    point_crois2= numpy.random.random_integers(0,16)
+    point_crois1= numpy.random.random_integers(0,8)
+    point_crois2= numpy.random.random_integers(0,8)
     for doublet in ROT_TABLE:
         if comp < min(point_crois1,point_crois2) or comp > max(point_crois1,point_crois2):
-            enfant1.rot_table[doublet] = parent1.rot_table[doublet]
-            enfant2.rot_table[doublet] = parent2.rot_table[doublet]
+            enfant1.table.rot_table[doublet] = parent1.table.rot_table[doublet]
+            correspondent_doublet1 = enfant1.table.corr()[doublet]
+            enfant1.table.rot_table[correspondent_doublet1] = parent1.table.rot_table[correspondent_doublet1]
+            enfant1.table.rot_table[correspondent_doublet1][2] *= -1
+
+            enfant2.table.rot_table[doublet] = parent2.table.rot_table[doublet]
+            correspondent_doublet2 = enfant2.table.corr()[doublet]
+            enfant2.table.rot_table[correspondent_doublet2] = parent2.table.rot_table[correspondent_doublet2]
+            enfant2.table.rot_table[correspondent_doublet2][2] *= -1
+        
         else :
-            enfant1.rot_table[doublet] = parent2.rot_table[doublet]
-            enfant2.rot_table[doublet] = parent1.rot_table[doublet]
+            enfant1.table.rot_table[doublet] = parent2.table.rot_table[doublet]
+            correspondent_doublet1 = enfant1.table.corr()[doublet]
+            enfant1.table.rot_table[correspondent_doublet1] = parent2.table.rot_table[correspondent_doublet1]
+            enfant1.table.rot_table[correspondent_doublet1][2] *= -1
+
+            enfant2.table.rot_table[doublet] = parent1.table.rot_table[doublet]
+            correspondent_doublet2 = enfant2.table.corr()[doublet]
+            enfant2.table.rot_table[correspondent_doublet2] = parent1.table.rot_table[correspondent_doublet1]
+            enfant2.table.rot_table[correspondent_doublet2][2] *= -1
         comp += 1
-    return enfant1, enfant2
\ No newline at end of file
+    return enfant1, enfant2
+
+# parent1 = Individu(RotTable())
+# parent2 = Individu(RotTable())
+# print("parent1: ", parent1.table.rot_table)
+# print("parent2: ", parent2.table.rot_table)
+# enfant1, enfant2 = croisement_un_point(parent1, parent2)
+# print("enfant1: ", enfant1.table.rot_table)
+# print("enfant2: ", enfant2.table.rot_table)
\ No newline at end of file
-- 
GitLab