From 5dd13cd9098a816777040810efd4852d998c69fb Mon Sep 17 00:00:00 2001 From: Nihama Sandra Ayumi <sandra.nihama@student-cs.fr> Date: Tue, 28 Jan 2020 16:58:00 +0100 Subject: [PATCH] optimization in selection duel --- __pycache__/RotTable.cpython-37.pyc | Bin 2508 -> 2598 bytes __pycache__/Traj3D.cpython-37.pyc | Bin 1972 -> 1936 bytes __pycache__/individu.cpython-37.pyc | Bin 1568 -> 1532 bytes algogenetique.py | 4 ++-- inutile.py | 2 +- population.py | 25 ++++++++++++++----------- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/__pycache__/RotTable.cpython-37.pyc b/__pycache__/RotTable.cpython-37.pyc index e6bef50c3581cf2f06a53777c7291030d276cecd..64b41c9070f8c3bcccf58f1c80d64aa9e723cf13 100644 GIT binary patch delta 746 zcmX>jyiA18iI<m)fq{V`+SwpZn`a`Q1f#)3b$#U&#$X0bmX{zIzhn>z!=elf3=Rwo z48?gHC(AH~>!%o`7^WDd7^j$|n5LMgSfp5|*w5jLVoPyIacp6TVoz~Oac*IV;z)5x zacyCU;!JT%ac^OW;!5#I@oZs;;!g2O@or&=;z{vI@oiy<;!W`jX3+HC{D$#6qoF2O zkst#DLy-`O5C#z<AOhrsA~6t497ITh2q_RDJNW_gX02a7&Q>v@#i>QbF~x~_DMc|Z z`N^fZsd**EG0wp;!KN|6Ax1I5Au+C=lOM9^F<MU+VAZK-VPIfjXJBA(26?TGfq|i- zp@boe(S;$ltd_B&poA%fu^Gfmsbwl*&SJ@8En&!Ft6`L6s9{QB5@(QP;ATJ<Nn!3~ zs%5TW$YO`6V`Y$Js9`o|U}msk0EvRk2g!iUV1r0bUdXCj&r!t0z`$@zE<Px~BqT8@ zCpA7k*grHl-q}AW$Tc{?-_OO-&)M}BYf)ledg?9Kywco)%3EwjiFqmcxwqI$^D@)& zi*k#UKmnr2z`&r%QltW6tAY$=%)G^#lA2SJSfmCL0~6{XmNLxmTs)wdX5?YyW7K05 zo2<tc#^^n{m93P~Z}M-pQpV`Xh3u7#agz(#B_=a-q%tN>&g4*L<eS{fVXSEkGDsUl zXn+Wikwr!zmI;V31rg>T!ea6h4n>X>1_lNWMi%DDf}B#5)j8F?m>AI^2Qvo<Fmv#7 zFmo`2gGH0|7H4i^Nk(Z&W=`=f77(*Y7i1_X%%a#zK;dOLc_yba4+q$M4n__pzC-|w C{GieR delta 636 zcmZ1`az>cXiI<m)fq{YHu#G|7ajuDc5{zCG)%6upSyNdSuq|Y0W@Kalv9s7ySR}!` z6vki%P1cDqGK?V`D`gmM?Nc0D7^2ux98;WH7^2uyoKsv{7@{~*TvOay7@{~++*3SS z7^1jRJX5?{7^1jSyi<Hy7@~Mme1jP@{Wia0{LVO8oMnUG*IWh$24}07(Bjmh;+W*b zqMZB~m;B_?+|<01;uz=PnBWkjn2?OaEAxvoQx#HDixs?5ODkerJ;AhsYgv9yX-Q^& zUS48mQEKtzk1TqO`jZt{byArb7#Ki4bY@^+C{ANwV5mqaVaQ^1VTcW@WvmD&VM<|a z2Ju{KnQ9oam}?j%8ETkV86+7>Sh85N*g$F_Vku1G43Z4o4Co>$%)LyLFS6<;uop2g zFfbG;F)%RPVl7I{OHVCQ1hex>a|<eOu@xoerR3+{VlU0hOv^9I)nqPG0jXC7sbS14 zQUh_oggS_&%)r244stUaD0&!q82Ki5vV}3)PJX~v%IGlp0h{RLZ1x03-^pj#D;WbO zpJA7n9LJH$7(Dq1hcYAY<QE*qDuy6)G(ZH%up$Ex%Lqgmg9uX)VK&)?Q;{Qpfq{X8 zk%f73A*a;jc1|@P4h{}B4rUHs4rUH!h_3`07#K7;ZgJ)&mSmKcWabp#VgWIWbU>zn s{2j$sl9-f}YIuvapeQr11Y#S=|C7ISDhu#{ZQx+!VB!mAW8`5101m*ISO5S3 diff --git a/__pycache__/Traj3D.cpython-37.pyc b/__pycache__/Traj3D.cpython-37.pyc index 865cc612f429be0814ee850289aa455b69755f50..5bcb4d8418f4525b71a8bb56bf694fb3e384bafb 100644 GIT binary patch delta 66 zcmdnOKY^dqiI<m)fq{WRWg}-bqt-7kXRDad;?$zznBv5|l%g1y{N&Qy)Vz}780X-a WVAGi35TlsjkQi6b&6gM-u>t^pofT{V delta 102 zcmbQhzlEREiI<m)fq{WRcq3;uqu<wT1_lOatC-N@)S}{;<iw(!{1}(~<kH;KyprM= z=ir#&5TlrojKeGQi!xIcQc{Z*yi!XmVq87Jw1R6{eokpgW`15?VrEfl@#b}mk5~ak Cm?HN8 diff --git a/__pycache__/individu.cpython-37.pyc b/__pycache__/individu.cpython-37.pyc index af04e82760def202853d9a3c799aeaa8eb2c20f9..40c376d68717c46fb59d812ec0e07760c3dfa49e 100644 GIT binary patch delta 70 zcmZ3$^M{+)iI<m)fq{V`+SwrP(?(urMy+2y&Q>v@#i>QbF~x~_DMc|Z`N^fZsd**E aG0wp;!KN|6Ax1I5Au+C=o98h$u>b)5rWW)7 delta 106 zcmeyvy?}?;iI<m)fq{YHvyDOAmyNv6jDBBp85kIxtztrpQ;UjYk`s$^@?%``lS^|` z^Gb?ioP%S6LyTfVG7hiIFUm|+NJ%YL@JcPMh;j7<(+aL-`8lN}nfZBniJ3*I#ha@b Gn^*u$5hWu4 diff --git a/algogenetique.py b/algogenetique.py index cbcde63..2dab902 100644 --- a/algogenetique.py +++ b/algogenetique.py @@ -31,7 +31,7 @@ def main(N,tmax,pmutation, proportion,brin="plasmid_8k.fasta"): if individu.score>max: best=individu max=individu.score - afficher(People) + # afficher(People) L.append(max) #print(L) plt.plot([i for i in range(tmax)], L) @@ -39,7 +39,7 @@ def main(N,tmax,pmutation, proportion,brin="plasmid_8k.fasta"): return(best) -main(10,50,0,5) +main(6,8,0.01,2) diff --git a/inutile.py b/inutile.py index 1a2947e..420a646 100644 --- a/inutile.py +++ b/inutile.py @@ -31,7 +31,7 @@ class table_rotation(rotation): self.dict = {doublet : rotation(doublet) for doublet in ORIGINAL_ROT_TABLE} table1 = table_rotation() -print(table1.dict["AA"].x) +# print(table1.dict["AA"].x) #table1.dict --> {'AA': <__main__.rotation object at 0x000001A722E1BAC8>, 'AC': <__main__.rotation object at 0x000001A722E1BB00>, 'AG': <__main__.rotation object at 0x000001A729A66A58>, 'AT': <__main__.rotation object at 0x000001A729A66A20>, 'CA': <__main__.rotation object at 0x000001A729A669E8>, 'CC': <__main__.rotation object at 0x000001A729A66A90>, 'CG': <__main__.rotation object at 0x000001A729A66B00>, 'CT': <__main__.rotation object at 0x000001A729A66B70>, 'GA': <__main__.rotation object at 0x000001A729B88D68>, 'GC': <__main__.rotation object at 0x000001A729B88DA0>, 'GG': <__main__.rotation object at 0x000001A729B88DD8>, 'GT': <__main__.rotation object at 0x000001A729B88E10>, 'TA': <__main__.rotation object at 0x000001A729B88E48>, 'TC': <__main__.rotation object at 0x000001A729B88E80>, 'TG': <__main__.rotation object at 0x000001A729B88EB8>, 'TT': <__main__.rotation object at 0x000001A729B88EF0>} #table1.dict["AA"] ---> <__main__.rotation object at 0x000001A722E1BAC8> (qui est l'object rotation) diff --git a/population.py b/population.py index dc51f8c..25f612d 100644 --- a/population.py +++ b/population.py @@ -1,5 +1,5 @@ -import random -from random import random, randint, randrange + +from random import * from individu import Individu from RotTable import RotTable from croisement import croisement_un_point, croisement_deux_points @@ -45,25 +45,28 @@ class Population: meilleur = self.indiv[0] for individu in self.indiv : if meilleur.score < individu.score: + print("meilleur, individu: ", meilleur.score, individu.score) meilleur = individu newself = [meilleur] - print("\n \n \nmeilleur", meilleur.table.rot_table, "\n \nscore", meilleur.score) - vu=set() + # print("\n \n \nmeilleur", meilleur.table.rot_table, "\n \nscore", meilleur.score) + t=randrange(0,self.n) - m=randrange(0,self.n) + m=randrange(0,self.n) + non_vu = [i for i in range(0, self.n)] while len(newself)<p: - while m in vu: - m=randrange(0,self.n) - while t in vu: - t=randrange(0,self.n) + m = choice(non_vu) + non_vu.remove(m) + t = choice(non_vu) + non_vu.remove(t) + x=self.indiv[m] y=self.indiv[t] - vu.add(t) - vu.add(m) if x.score>=y.score: newself.append(x) else: newself.append(y) + for i in range(0, len(newself)): + print(newself[i].score) self = self.modifier_population(newself) def selection_par_rang(self,p = None): -- GitLab