From 1179c3abdb189839885e8170279bc13a8983168b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Chlo=C3=A9=20Muller?= <chloe.muller@student-cs.fr>
Date: Tue, 28 Jan 2020 09:41:07 +0100
Subject: [PATCH] Changements sur individu.py

---
 __pycache__/Initialisation.cpython-37.pyc | Bin 0 -> 1840 bytes
 __pycache__/RotTable.cpython-37.pyc       | Bin 1687 -> 2086 bytes
 __pycache__/Traj3D.cpython-37.pyc         | Bin 0 -> 1958 bytes
 individu.py                               |  22 +----------
 selection_par_rang.py                     |  45 ++++++++++++++++++++++
 5 files changed, 46 insertions(+), 21 deletions(-)
 create mode 100644 __pycache__/Initialisation.cpython-37.pyc
 create mode 100644 __pycache__/Traj3D.cpython-37.pyc
 create mode 100644 selection_par_rang.py

diff --git a/__pycache__/Initialisation.cpython-37.pyc b/__pycache__/Initialisation.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e986e03a10e3574402c013796cf8296d4a58eb32
GIT binary patch
literal 1840
zcmZ?b<>g{vU|`UBtRMHBlY!wehy%l-3=9ko3=9m#YK#mFDGVu$ISf$@DNHHMDJ&_h
zDQqbW>1-+NDI6)BDO@SsU>;8jZwg-ue~JK@Czv9X!jQs|!UyIFr--D8rii78gLx7u
zk||Ot(kYT)o=l1?SS3H02QoztZi;-0LW*LFSc(!@PC11;MI}WwMGedYnW7Fi1>_bD
zxLY(+#K2}kYzLX51vdrc7Hzm&P<^B`M<9yPogqaxMX!Y+MX#ADipiZJML)%$g(1Zt
zm8qFIiaC|JnIVcLl{J+mi!H@ak|B$|nURqpg)x{x)958A^!(EM4}H~$Iq&F@e)bFq
z$T(!C{r~?zeTQ7@>%blB?9+|G;4zHh=#V~ZCJ21Af7#E#zyQ_u#r`ELhzC}@*&1e=
zg2PKDkTA$928JK@FPY)I278zy7Ke1Oyn`c@!NB8?c>v@Hh?Cyfzf=Ng`=$}of9R?M
zOdEqk=5dgsH-R9xZnTHG#1<wm<?!+!NFMB@VkZZvPedJFRxmIyykr9r8X#f|$Z)VK
z<Inc#X<+ch{-q@Y14Cxv|NsAAs(@G>AQmW*X$st8a&(Mha&(Sja&(Vkatw)La(0Yj
za(0ela(0hmat?`Na(9eka(9kma(9nnau11O3UQ2L3UQ8N3UQBO3JFODdlyQ8!Utq*
zu?PbLLn=cQV+unQQwn1WQwu{Ba|&}XgC@%@j-vdM#FEVXykwASkVX&<3UFsos_$W7
zU?^e8V$5PHVXk46WJqC@WPq}mBpD=NY!p#(h7{&rrW%HL78IQ<aGk73I#ER7I$5E1
zut_r1FvPRfFxD`{v!^fwGib8=6)`d}Fcg7YsL2$?oReQ3#gdVkp79bS{E`JE2O=~%
zZn5T-<`z^&u@xoerR3*Ev6tp$rsWsq-V*W;@^ts~bM%Q1@(+m*adh%=y~S8@i?Q++
zW7RG8l>E}9oYWFcrduq<sX1vy5)2FsD;bKU7#JA7rZO-v=!X`k78UC!XXNCk=9cE<
zq!#JB<R_QrrskCt>$@iB=cFp6sAuM-r=Drd%S<gT(l=GmRR|6-(s%XLPtDZLN-eF>
zO)bmMDFp?3USeiZYO%g&US>&VVoqi;I41N8DsOSb$7kkcmc+-4gJOXL6fcZcj8=?%
zj8%fL7}JBP@dL$Ue0*MFZfbn|Ew1?Z-29Z%91xo)KEALtF$W@3Bm)W@kVnA2fe_Ll
zF#!e!1~HIDpt$E?ECTUKPDy+viAg!B@i5mVgW?11ZUzPhkh$RW1WJjJ6j;LG!q5zg
zS4MEWGW)?bfE0tGFc{<_kh3xwY8YbqY8guyY8aatYZxap6|w|FqC^woSWTu|OnL_3
zxPo{K>`Rc}esS5PWG0s+=jRsK$%708na;*grH$%Zcv$M$<m4wO<`moMA@pf76@lD+
ziv?toCS#E#D9pe%fC-Q_;INg0na{vjC62><KTVb*S&)8^;v$fXz*>=9jWAPzfq?;}
zwix7Q4#px7zlfiKfkBg_NEl=W$W`FT0!u})f$cQB#ad95nO9Pz3{nEBzpxp8i^B$z
aO6)-KR17MuIGFhu@j(%0K6U{XHbwx2=fo2L

literal 0
HcmV?d00001

diff --git a/__pycache__/RotTable.cpython-37.pyc b/__pycache__/RotTable.cpython-37.pyc
index eace4b1c9a198d349c22181322d81371595ca2d7..306bef3707a8dfe8d997aa52208ffe660f6a4161 100644
GIT binary patch
delta 959
zcmbQvyG(%3iI<m)fq{Wx=L`L~?d%izBwXwm7#LC*QW$d>q98P56eF0=6vgDukiwM0
z+`^E;+{_fkoXXtH5XF+pn#z*Jmck;*(9Folkir<upvgMXPli!$W41UWPl|a9LlkF<
zMKFV=<>ofVBu3s_OpcCGOpeY`OpfkRlfN=~GFnZxXEv0rVOYStkb#jQg&~+hlgY1$
zje&tdljRm?QGQ8$$>a&l8uhnW5_3`$HJNU)6sP8--Qr2f%qvaKNzE_GOi5kIP$b5{
z!0<Jmfq_9kv^ce>SU))<CqFf}G$$vuNZ%ztximL5ucTPtH90>gRUt(^GcP^$Ok-YV
zYH5+ase-OTaEOt<tEYZyrfybhX@zcTS$<AwNoIatUSeiZYO#J$eu+{@Vp2}3UP0w8
zj`;Y@yv&mLcxeU(hGGs-_%X6E@-WIwR%8*aX9V#X7#Nrt7#Kid>kLwq#=yW(kx;^r
z#puEi8&=C$5m3UE!q^PrxzsY%Fk~^;FiJAiFtIX7GL*1nv1YM>)I!8kn8X<*8MqnH
zMN*i1namlO8EhB|#ljg1Il{qVSFg$9SH#M|zyJwBrYPo|{PHN4jLh^5P4*%tkc1Ee
z1H&!WqQt!P)FMGJJFhgipfZZBC^0W3KR1fKG%qtPzbIFexkv=0UKFH;F%ulZ5JDUz
zEX=^bpak+9D5@A3c^LT^t9XNW@=G8A1&XZ6rYsg(AnP=l5Jo|a07X|3$eddo>8T|l
z<(b7LMw6$rgc7AZJT)af)pW8LYp5O}(|OWUOI$LGQj<ZkX)$>wt1=_k<h`tV&LE9N
z5-^Vx$$(gLAVMBQfSrdRKn?{59w=msbr={JI2c)&CmXVfO}1y_E@tNt;9%xp2CFC%
z0Hs{^D9+r(l8n-l%$(v|EFfl)6v$jq1VpiwfRd8oE!Kjf%)AnC93TY>*jA8*w>WHa
a^HWN5Qtd!#su+}*I2bt?Ihgn?*cbsVOwNk{

delta 541
zcmZ1`FrAmriI<m)fq{XcM^roRC+kE$2@NF%28I-d6viBeC<x6M#puqE!j!_?!jQt;
z%oN3x!Whh;$ucoZhEZ%|yEr3DFoUM~=2eVIjJ#1yj*d}Gj?Pg`j_$W6OEP;h8cj}S
zHdIJq2xib^@+)FvU|`T>juMFv$}b5?Ov*`(2eINqCU0ccn0%jEGDU=ef#H{ti&czE
zesXDUYF<e(h!yV~9OLR49~@#7W9;JRsGFNuT#{N812aUgpz;<+e0*kJW=VX!6axc8
zF~}YUMm9zs#wtO$DwvANGg&RP1VJugDiUH~U?>s>5g?n3z=S9R1H&zj^wg4&^338A
zt;xSxLy1xzo|=-Lsyn%gEmV(?={)JFB`%posmUdo`FRGD|FS7Fa!yuc*E0ucED{5`
zM;t^*f(Ve0AT9$t4@`jESj5D@z`z3XuGZvkb`4(v4rUH!u%IS$6lZQ?Nk(Z&W=`=f
f77!CGj?I)?95%W6DWy57c8nmSK<05Uaxeh^OzU<W

diff --git a/__pycache__/Traj3D.cpython-37.pyc b/__pycache__/Traj3D.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9089d353fd2661eb0e1c444fe75a6b707a6ecd10
GIT binary patch
literal 1958
zcmZ?b<>g{vU|>+aqZcQ_#lY|w#DQUE1_lNP1_p*=KL!Sd6owSW9EK<e%^1Z9<}*bx
zgK3sr)+jbckQ`GEdoD*52bj&A!<ow!#m&gz&XB^A!rH=+!rIIf#goDq%%I8k5@d^?
zCgUwO$BNWqV;4=vTinU{IXS7xC7Jno#mOLP7=}B<hJk@0l>uaV6jKUg6mu#|7V84G
z6sCoYQS2$qDJ(4vQ5-3(DQqnaQJg94DI6^fQCumUDO@cKQQRrq!3>%_x7b3860?k5
zs-%Ka3yM;UQ}arS6%rMUT@*@+60=g1OY(~<HCfVOHX|5Z*B2Mqa{ac4ihQt7W`rsN
z(M${s49=jS0)=KKLk&YbLkdGMgC--$hy3vnJL93WCgUxZ;?$h9l?+Af3=9lkV;LA2
z^h1kNi;DG=Gjj4%b4zn_Qj7Fm@{>z*LGIIcP0r6rRY+0K%u7!_)0mf;T3V!Us-UY7
z9Ac#J>ZzZashgErTA`a-mY-7!3cb9<%%ap{eTc1k1(mlr;^Q;(GE3s)g+OiuIhKL3
ziXSQulSA<k$Wvesu`w_()G%bhJX6HVz`&r%SOgLVyB<PtFfcIOVoy&k0huX^WC<Tg
zz}Q6(DwPb1N>I3gG=RbiY=;yh149YJ0>*_5wag_93z$+E7c!<Z)-c2~XEM~XWHQvU
zR(vaANnt8stzm3tY-Vy{h<#GaR>N4smck^#Ajtq?Niv8t)UwyG*RW)>7hNe~$YNZ;
zR>Ho3qlRe#XAS#8#uR30hJ}ovbhwbYhNXtxh5<zl7g!CO1Y8Y@EH_A&8zRTPkXZmp
zZwgxt(*m$=gkAxL8di`EHOw^(Sv&#^Ap0a4AfjNJrG_0$gJo+$s+bq>f>kr8aDZeM
zGBPq0>V-oR5vL#46bTAO5QeA7m!L>{35wm9ETH&cjCvUbrXz|#GMaq1ICB$AGD=G_
zbBb@V`6iYWWmZJ7g@F@2I9_kD7A5ATr`}@DNzIGm2+A)>1f`~1EFfLC*ozWVG86NP
zqc}iuS)N&362+6ATH=yf1j({s@$l4?^we8|(1acz@9P*6<QWkka*Hjopdd9bMUw-Z
za-!H%@)F~VQwwi#7Uh@3mn0_Tq(<?S<d-Do#OFfX#SNyDQ;Xw+s-n2yoWNU*nNd6`
znR%tjIjQ+2nJKA|1PIDVMW94=i#<6%x1h8nRRWX>K?DOc2QwcN3nL4Y2$KjC2crs0
z5{CjK2XhrHZ9+99gF+4zpde#F$sC+E8yFyIvxXsyX(3}RQ#vSfGu1GqFr+ZFGNmx4
zF-bDOc}yrgW)P2=fr+7(xt67twS;*A%R+`)wi>o9R!}-jVe4fArPu{*HJ}v9x{#TX
zp@ew>`$7gV%~8V$N(JCzgxwDugGJm73=Bm)3=9k}^BEWzqL_?RG#R6~3X1YUC0AyC
zo+jrlro4h%tcgWMiItEjWiH4miDFC3OfM};jp9yBNr^8mO)ALAFNtCSk+)ciGxE!$
z*oza(QqwZiq49HzBP}y0H7_wYHHx{Svg#IN#Vy9lTZ~mv%xRhFx0n(u&;y+%r6{r7
z8WiFJpb%u_VPs=8VdP-sW8`DxV65VXmI5GEewsX>@(5&jeEco0`1suXl+v8k`1o5q
z@$rSFi8)Xi_W1ae{N(ufB0-R+K?PS7$e6t19B`^E5(f!$f(TGKQX~yxseuS^Qa})(
z*en9&2T-^bg9r{r7G@qM4rUH!4rQ>6CNIPiP{DPJHLo<cpt4976u^SHi6x*=%E?U9
zE2spqqSzpGkvvFVB)1?Zz9c_CCp)vGST7f(z&ND{l#akj7R1lVOez8udbgNzlfjlD
d1s&LtAotzkuz`ev9Y`<KksQn%j65L73;>ra%vt~d

literal 0
HcmV?d00001

diff --git a/individu.py b/individu.py
index 57da3ff..9d8cc44 100644
--- a/individu.py
+++ b/individu.py
@@ -29,26 +29,6 @@ class Individu():
         diff_angle = sum(abs(rot_computed - rot_traj))
 
         self.score = 1/(distance + diff_angle)
-        
-    
-    __ORIGINAL_ROT_TABLE = {\
-        "AA": [35.62, 7.2, -154, 0.06, 0.6, 0],\
-        "AC": [34.4, 1.1, 143, 1.3, 5, 0],\
-        "AG": [27.7, 8.4, 2, 1.5, 3, 0],\
-        "AT": [31.5, 2.6, 0, 1.1, 2, 0],\
-        "CA": [34.5, 3.5, -64, 0.9, 34, 0],\
-        "CC": [33.67, 2.1, -57, 0.07, 2.1, 0],\
-        "CG": [29.8, 6.7, 0, 1.1, 1.5, 0],\
-        "CT": [27.7, 8.4, -2, 1.5, 3, 0],\
-        "GA": [36.9, 5.3, 120, 0.9, 6, 0],\
-        "GC": [40, 5, 180, 1.2, 1.275, 0],\
-        "GG": [33.67, 2.1, 57, 0.07, 2.1, 0],\
-        "GT": [34.4, 1.1, -143, 1.3, 5, 0],\
-        "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]\
-        }
 
 
     def mutation(self, proba = P1):
@@ -59,7 +39,7 @@ class Individu():
                 if tir < proba :
                     print("mutation", doublet, coord)
                     print("table", table_rotations[doublet][coord])
-                    table_rotations[doublet][coord] =np.random.uniform(low = Individu.__ORIGINAL_ROT_TABLE[doublet][coord] - Individu.__ORIGINAL_ROT_TABLE[doublet][coord + 3], high = Individu.__ORIGINAL_ROT_TABLE[doublet][coord] + Individu.__ORIGINAL_ROT_TABLE[doublet][coord + 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])
                     print("table", table_rotations[doublet][coord])
 
 individu1 = Individu(RotTable())
diff --git a/selection_par_rang.py b/selection_par_rang.py
new file mode 100644
index 0000000..ded5567
--- /dev/null
+++ b/selection_par_rang.py
@@ -0,0 +1,45 @@
+from random import random
+
+def creer_population(self, liste_individus):
+    self.n = len(liste_individus)
+    self.indiv = set(liste_individus)
+    return self
+
+def selection_par_rang(self, p = n//2):
+    set_individus = self.indiv
+    n = self.n
+
+    def partitionner(tableau,debut,fin):
+        echanger(tableau,debut,random.randint(debut,fin-1)) 
+        partition=debut
+        for i in range(debut+1,fin):
+            if tableau[i].score<tableau[debut].score: 
+                partition+=1 
+                echanger(tableau,i,partition) 
+        echanger(tableau,debut,partition) 
+        return partition
+
+    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 = list(set_individus)
+    tri_rapide(liste)
+    individus_selectionnes = []
+
+    for _ in range(p):
+        curseur = random()*n*(n+1)/2
+        j = 1
+        while j*(j+1)/2 < curseur :
+            j+=1 
+        #on doit prendre l'individu avec le jème score 
+        individus_selectionnes.append(liste[j])
+    self = creer_population(self, liste_individus)
+
+
+    
\ No newline at end of file
-- 
GitLab