From 6f6a45c8446222cbe9ca6b7e4974d837e2ba3952 Mon Sep 17 00:00:00 2001 From: Kappes Marques Rodrigo <rodrigo.kappes@student-cs.fr> Date: Wed, 29 Jan 2020 16:49:12 +0100 Subject: [PATCH] changed the algogenetique so it would merge the 2 versions --- __pycache__/RotTable.cpython-37.pyc | Bin 2604 -> 2578 bytes __pycache__/Traj3D.cpython-37.pyc | Bin 1958 -> 1932 bytes __pycache__/croisement.cpython-37.pyc | Bin 2706 -> 2680 bytes __pycache__/individu.cpython-37.pyc | Bin 3987 -> 3877 bytes __pycache__/population.cpython-37.pyc | Bin 5908 -> 5882 bytes algogenetique.py | 66 +++++++++++--------------- first_plot.png | Bin 2412 -> 2411 bytes individu.py | 6 +-- 8 files changed, 29 insertions(+), 43 deletions(-) diff --git a/__pycache__/RotTable.cpython-37.pyc b/__pycache__/RotTable.cpython-37.pyc index 5c8368cc7a9d3c5cfa285024e6597788d9b34b53..d0d2bee9e71c849781de9a96c497f02788ecaaf7 100644 GIT binary patch delta 92 zcmZ1@GD(EbiI<m)fq{X+(bF)_nP(&4W)}Nj9?4cQp~b01#WCKA1qG?aF)pda*(Lb} vF(F>Msbw+AiA6d2#WAUwx>>2E6}qWq`8lN}nfZBniJ3*I#W9<uScO;tHGv-q delta 117 zcmbOvvPOi@iI<m)fq{YHl&N9dE$)qcn^_{i#xpQ5=!X`k78UC!XXNCk=9cE<q!#JB z<R_QrrskCt>$@iB=cFp6sAuM-r=Drd%S<gT(l=GmRR|6-(s%XLPtDZLN-eF>O)bmM VDJ{v&&&x~9EJ`ib-^41!3ILpTClLSu diff --git a/__pycache__/Traj3D.cpython-37.pyc b/__pycache__/Traj3D.cpython-37.pyc index c5fc3b6a0451eccc80a592b48b4d6d430bbd9432..cf10de94215a889844b8498bfa1adceac74c8132 100644 GIT binary patch delta 104 zcmZ3+-^0)6#LLUYz`(%Z=xG?I%e|4WjM4s=Te4M5XmM&$ag29jK|yM9j7w^9c1eCg zOo*3mYFSKjVo^?haZGBaZdPh(g>GtDeokpgW`15?VrEflam?nsjB+fDQIr3$US`yt Ie1Yv60I!B5lK=n! delta 130 zcmeC-U&hbp#LLUYz`($8%G5CKDc456GRDZSu?!3h`k}?CMaBBb89Di>xurQdsYUuO z`N^fZsd**E`mV|OIjIUM>X~`zsb?DVGE+;7^i36X6@o*I^j$smQ!{n5QcEjzQ_J#m jN=q{H^YRiii&BgAHy>t{V`02C`4Q`7M!m_~*scKprHCyG diff --git a/__pycache__/croisement.cpython-37.pyc b/__pycache__/croisement.cpython-37.pyc index 32aa8054c9bf4394aa2cc4dd70c8392a65cdfb6c..14137ab2a364a8f37a255767bdb564b07c910feb 100644 GIT binary patch delta 91 zcmbOv`a^`*iI<m)fq{X6uih|j{YKtztoFaWlC5Gwi&Kk=W4sd!3Q~(>TvCg(OY#e1 vLcDZS%VLrfi*oXdV^TA9vr<bdbW_Xnb4p7x^Yii&GmBD-V>ZXInXv!>ePkeG delta 117 zcmew%GD(!ziI<m)0R*}X<GeQVeq)XNn#jPwpdVVCT2!o`oRO2Cnp>KalUk(jlAm0f zo0?ZrtnZqfpOdPPqMn(To_eM+FEh2YNZ(XJS0OmWNZ-{{KQ&V~E48#jH?=H3r?ez9 SKQAvavnaJ#f3p*t84CcBA}09& diff --git a/__pycache__/individu.cpython-37.pyc b/__pycache__/individu.cpython-37.pyc index 511c39dc9171fe22debb9b7099e4280bc25823aa..b5e349ab4911f800f7576808eaf3ee7522919618 100644 GIT binary patch delta 889 zcmbO%zf_LTiI<m)fq{V`f4O0txa3B@T1H)F1_lOJ1_lOa1_p*=8wLi38paxic!m_l z6s8u262=tfW=0o=X2x2k6qW@{lkYG}aMduxv!*ZvGib6+{=pa={>vlTDkiizwWv78 zJF%c3wK&ElwK%&ZzaS>WOE<MFCONSvC%-r*HB&b$wX{MvwJblUv?Mb>FE25(D782y zGcP5xEHkB4ub}c5mrYJ)aY=H1Zh;-|<ULGY&YEnuSW6O<a#C-x<QJso-D1hg&&<2U zl2nwLcZ;<+Iln0N7Dq~EaY<rca;hftEtcZcoU|e#1_p*(966bJsXm#-C6m`O%khCd z&B(?m#3;hV#yI&lvnJ!c$*e3pwMy8s*t0llSZkOh89-zTyEp?kgCv6lLkdd@TQ5@$ zLp*m1b1;J@$K)d{F6JO}iWnIf82nx`F)%Q^{P+L=e@(_)%=twrMS=_r44OPepztgb z1v!Bo<dM>n)FPqDR;>D*MdBa@yhRd|b6J<M34?-LVX`EfA`=(mW-B&pMoqB0Ig9d3 z;vrsUE6y(}Nlm%MlAT&vT%^Fjz)-{nA`~ajW0z)>n7oTUn9+DMAIDloMzzVl%;JpB zlVf=0CTnr?O#a6yAFlzjj;Tl!q(uuvKphCOrbrtkpaUXwK?K-bunp`Wm$Mb6=H{2B z7Ab<{^gx6@h%f+|$W<f(VjE7b;gU2q0;v`UJ2$>4za$Y9ukm^LCGo|nsd+`FAcblm z!WcxDfC#h6I()JqH!?bI{=^l?1a*4k<QQK2dJB*WQ1BLk9A6|2;u7uZB1@2Rkdtq* z<>eRUCgv0&T+I!2HAsmShyb~~$Qr~#xKar2%v-Ewi8-aIMIhH|GKNnM<ExjH0x4Dp vd6+4{u*e+517(*Y`^oS4v=})iOY+MzDo(cKmt%7Q$#G16$0t6ygkK&2($Ui; delta 924 zcmZ1~H(8#~iI<m)fq{WRz1uLZL1H6cEn__k0|Nsq0|SFI0|P^G6axc83S$aW3quJ* z3Uf1~3qvzwEmI210>&Dq6xI}mRwhY?g^ab#HH<Y3@k}XfgjCir#51Qb)G)-eq%Z_C zXtMhyGlHyVU|?W^T08j-qhtNocm@Ur{m|mnqGJ8zjGX+`+|rz!)FOSC{N&Qy)Vz{n zeb?mtoK%Gr^~}8V)H98FnW?2k`lbrH3c(>p`mUb(shPT2sihUVsb%>&r6rm9d3lMM zMXAO5nRzLhWtl0ZdIgogxNLGVi%XL8a|`TvKz;?efQ_L_)iZDMBqp25w;7E@i#Qn= z7&IA+Kw+fGRK(4|z)-|9*^g7)lOLf&ll2x$enD#9EtahO%)DEyC5cHnskc~?ia?y= z<ou#kO_p0M#i==IMIsCg47WIPGV@Y>GK))!L>U+uCJQpl34rWpU=(5$Vq{|!ViaMT zY|E_4xNCAc^G>!DW>7dy_F{2iWSiX2A|<ZLUBnD>2S{@iJIMK^C8<RslaI3KvuN@b ziBJB^vWyL6QL)_Qm8^=J&#+oEGKx&*V3*~V1L<P}5%QA_*rgf8C;PAmGn#B(z`mA| zQ3d2LMwiL&c;qJU;o_M*fm1$S4di{MB6W}!4G<v+65s**qev4ZpamkdK?K-bunp`W zU$PaY=H{2B7RiI;bU=hIh|mKWz*Qs;V(U-l<C0`Fn5@AiD{2f9PyrE!Ai@Ylm`vWs zE6ZD+S&|W-SDKrYT2$<`xrHl`3F_3S$?tgV>&-waL5Zjc<k**>cqt;<l||+t-5@94 zV#~`f%1z8ELb#F}>PnCj3lL!dA}m1!!nHzh=iXv1OUx-vEdse(lQClQ3*LH3NswYy vP;f8>7#5j=cvc|7ZgK;k79;26)qL`d@{>>V$+3ZQTM@_P20ro0Z2a;7Z+Xjy diff --git a/__pycache__/population.cpython-37.pyc b/__pycache__/population.cpython-37.pyc index 037163fdebd2a013e0b24fa10c0ea6f91cff2c10..a2d00a0f413706a094887ce7f0dfe4f1e70ccd5f 100644 GIT binary patch delta 201 zcmbQD_e+=0iI<m)fq{YH(=x+2J&BEc&lv50c_mxLgche36~}ld78Ilw$GD^xXP4v` z#DsY1rk2GdCl=-87ssS#>Sm>uR_Lad<>!=^Waj7PC1w_-7RPM%Ws2u#jM}_bP@0j^ zVe(0#+l+3LmkMuGbYWm%DB=SV)*!+SL^yy5eFg>wO{OB($>k#Ej2@fUi?lKdffa+5 gn1N(jid-kViTN-FO`a@f#SIqs0BH@Hd_&9z067LZLI3~& delta 231 zcmeyRJ4KJriI<m)fq{YH%{0Tf0`ZM}&ln@WCNeNE=!X`k78UC!XXNCk=9cE<q!#JB z<R_QrrskCt>$@iB=cFp6sAuM-r=Drd%S<gT(l=GmRR|6-(s%XLPtDZLN-eF>O)bmM zDJ{v&&&x~9EJ`ib-)zhj&(C;k^JGD3Mn=cU>xFJJx=-#F-l*uxz`#(%2O_LNggc0E z1QGfS3=En~MQ)R0Ma&sJH%}F5WfTG{1}iZG$+8r=P1X_fVGN#JDQ3kD7WV{c4W7JS KNPO~DF;xJzok5fU diff --git a/algogenetique.py b/algogenetique.py index ad4ca27..29f0985 100644 --- a/algogenetique.py +++ b/algogenetique.py @@ -4,79 +4,67 @@ import numpy import RotTable from individu import Individu from population import Population, afficher -from croisement import * +import croisement from Traj3D import * from random import random import matplotlib.pyplot as plt import time -from copy import deepcopy -def main(N,tmax,pmutation, proportion, indice_selection, population_initiale, enfant = croisement_un_point): +# Debut du decompte du temps +start_time = time.time() - + +def main(N,tmax,pmutation, proportion): + + L=[] lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")] brin = ''.join(lineList[1:]) - People=deepcopy(population_initiale) - # S1=[] + People=Population(N) + S1=[] for individu in People.indiv: individu.evaluate() - # S1.append(int(individu.score)) - # maximum=int(max(S1)) - mini=People.indiv[0].score - for individu in People.indiv: - if individu.score<mini: - mini=individu.score - # L=[mini] + S1.append(int(individu.score)) + maximum=int(max(S1)) for i in range(tmax): - print(i) - People.reproduction(p = proportion, proba_mutation= pmutation, selection = indice_selection, enfant = enfant) mini=People.indiv[0].score best=People.indiv[0] + People.reproduction(p = proportion, proba_mutation= pmutation) for individu in People.indiv: if individu.score<mini: best=individu mini=individu.score - # S2=[individu.score for individu in People.indiv] - # avg = sum(S2)/len(S2) - # L.append(mini) + S2=[individu.score for individu in People.indiv] + avg = sum(S2)/len(S2) + L.append(mini) + print(i,"avg:",avg,"best score:", mini) - # plt.subplot(221) - # liste_selections = ["selection_p_best", "selection_duel_pondere", "selection_duel", "selection_par_rang", "selection_proportionnelle"] - # plt.plot([j for j in range(len(L))], L, label = liste_selections[indice_selection]) + plt.subplot(221) + plt.plot([i for i in range(tmax)], L) - # plt.subplot(223) - # plt.hist(S1, range = (0, maximum+10), bins = 20, color = 'red') + plt.subplot(223) + plt.hist(S1, range = (0, maximum+10), bins = 20, color = 'red') S2=[individu.score for individu in People.indiv] print("Score final: ",best.score) + print("Distance finale: ", best.distance) print("Avg:", sum(S2)/len(S2)) - print("Distance final: ",best.distance) - - # plt.subplot(224) - # plt.hist(S2, range = (0,maximum+10), bins = 20, color = 'blue') - # plt.show() + plt.subplot(224) + plt.hist(S2, range = (0,maximum+10), bins = 20, color = 'blue') + plt.show() return(best,People) lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")] brin = ''.join(lineList[1:]) -best,People = main(100,10,0.05,10) +best,People = main(60,60,0.05,30) test = Traj3D() test.compute(brin, best.table) test.draw("first_plot") -# [['selection_p_best' '22.637820959091187' '116.30569654472626'] -# ['selection_duel_pondere' '22.636890172958374' '46.6242321955727'] -# ['selection_duel' '22.21168804168701' '234.7640748029787'] -# ['selection_par_rang' '22.180259227752686' '190.0163752068961'] -# ['selection_proportionnelle' '22.329176902770996' '315.7030719673908']] -# [['selection_p_best' '22.775274991989136' '106.89365704155766'] -# ['selection_duel_pondere' '22.716803073883057' '284.11538487097084'] -# ['selection_duel' '23.19036889076233' '155.83887357033393'] -# ['selection_par_rang' '22.752396821975708' '118.6068497149259'] -# ['selection_proportionnelle' '22.71982979774475' '151.80114914793427']] \ No newline at end of file +# Affichage du temps d execution +print("Temps d'execution : %s secondes " % (time.time() - start_time)) diff --git a/first_plot.png b/first_plot.png index 0e536fb530ea40bc82a9395940755ad27a030609..f9294f16e9e6dc29674f763436bc6927a5b6bbb7 100644 GIT binary patch delta 29 lcmaDO^jc_wC!@tgFL_pDJwrW%iTM&NTi>>eZ|r`^0RWae3Vr|p delta 30 mcmaDY^hRicC!^&=FL^cvBRxYsqltMEET-H)Pi*XZ$N>PDo(f<9 diff --git a/individu.py b/individu.py index 253b874..00766d2 100644 --- a/individu.py +++ b/individu.py @@ -9,8 +9,6 @@ P1 = 0.015 class Individu(): ''' Un individu est caractérisé par sa table de rotations (individu.table)''' def __init__(self, table): - lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")] - brin = ''.join(lineList[1:]) self.table = table lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")] self.brin = ''.join(lineList[1:]) @@ -24,7 +22,7 @@ class Individu(): traj = Traj3D() - numb_ajout = 100 + numb_ajout = 10 fisrt_seq = self.brin[0:numb_ajout] last_seq = self.brin[-numb_ajout:] @@ -99,7 +97,7 @@ class Individu(): table_rotation_not_seen.remove(doublet) for coord in range(3): - value = table_rotations[doublet][coord] + np.random.normal(0, self.table.orta()[doublet][coord + 3]/15) + value = table_rotations[doublet][coord] + np.random.normal(0, 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]: -- GitLab