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