diff --git a/__pycache__/RotTable.cpython-37.pyc b/__pycache__/RotTable.cpython-37.pyc index 306bef3707a8dfe8d997aa52208ffe660f6a4161..f25daa2be78dfa969b59255077ce90b2f4993ff2 100644 Binary files a/__pycache__/RotTable.cpython-37.pyc and b/__pycache__/RotTable.cpython-37.pyc differ diff --git a/__pycache__/Traj3D.cpython-37.pyc b/__pycache__/Traj3D.cpython-37.pyc index 9089d353fd2661eb0e1c444fe75a6b707a6ecd10..865cc612f429be0814ee850289aa455b69755f50 100644 Binary files a/__pycache__/Traj3D.cpython-37.pyc and b/__pycache__/Traj3D.cpython-37.pyc differ diff --git a/__pycache__/individu.cpython-37.pyc b/__pycache__/individu.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b4fb59ee832eef9ce7a2733b2fce8db621d7883 Binary files /dev/null and b/__pycache__/individu.cpython-37.pyc differ diff --git a/__pycache__/population.cpython-37.pyc b/__pycache__/population.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4c15af9fe50e86ecdb3fec1091fef3c0890d0a6e Binary files /dev/null and b/__pycache__/population.cpython-37.pyc differ diff --git a/algogenetique.py b/algogenetique.py new file mode 100644 index 0000000000000000000000000000000000000000..dbd21924dbc80a42ad7ad1200fe4bc0cc7ab1154 --- /dev/null +++ b/algogenetique.py @@ -0,0 +1,37 @@ +import mathutils +import math +import numpy +import RotTable +import individu +import population +import croisement +from Traj3D import * +from random import random +import matplotlib.pyplot as plt + + +def main(N,tmax,pmutation, proportion, selection="selection_duel", croisement="croisement_un_point",brin="plasmid_8k.fasta"): + '''lineList = [line.rstrip('\n') for line in open(brin)] + brin = ''.join(lineList[1:])''' + L=[] + People=Population(N) + for i in range(tmax): + max=0 + best=None + for individu in People.indiv: + individu.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA") + People.reproduction(selection,p = proportion,enfant=croisement) + for individu in People.indiv: + individu.mutation(pmutation) + for individu in People.indiv: + if individu.score>max: + best=individu + max=individu.score + L.append(max) + plt.plot([i for i in range(tmax)], L) + plt.show() + return(individu) + + +main(4,10,0.015,2) + diff --git a/population.py b/population.py index c1a1a413240574732ee27affacd13bb894d49c11..69e6bd8d9ec53803fc22e6753efb9996d0c0a7a5 100644 --- a/population.py +++ b/population.py @@ -58,7 +58,7 @@ class Population: echanger(tableau,debut,randint(debut,fin-1)) partition=debut for i in range(debut+1,fin): - if tableau[i] < tableau[debut]: + #if tableau[i] < tableau[debut]: if tableau[i].score<tableau[debut].score: partition+=1 echanger(tableau,i,partition)