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