diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..6ff5f5a98092a23fdd0b88d61529be1f32fa19b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.pyc +__pycache__/ +*.png \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 395ba2d31e295f66eef5e2bd3db334975a462037..31e7ddfdf3472dbdd1b04dd753c498bc2995fd54 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "python.pythonPath": "D:\\Programmes\\Anaconda3\\python.exe" + "python.pythonPath": "/Users/gauthierroy/anaconda3/bin/python" } \ No newline at end of file diff --git a/__pycache__/population.cpython-37.pyc b/__pycache__/population.cpython-37.pyc index 0a6a330d28c49e773950856fc4d57e01af3ba167..cc5599e44a6d95a4bb0948d49a52bd4a8258716e 100644 Binary files a/__pycache__/population.cpython-37.pyc and b/__pycache__/population.cpython-37.pyc differ diff --git a/algogenetique.py b/algogenetique.py index 76fab257900c4312b38b442075b151debc48e374..50b8dd32560cdb65f6e8ceb7832bc5e74acacd15 100644 --- a/algogenetique.py +++ b/algogenetique.py @@ -10,25 +10,24 @@ from random import random import matplotlib.pyplot as plt +# def main(N,tmax,pmutation, proportion,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): +# print(i) +# max=0 +# best=None +# People.reproduction(p = proportion, proba_mutation= pmutation) +# for individu in People.indiv: +# if individu.score>max: +# best=individu +# max=individu.score +# L.append(max) -def main(N,tmax,pmutation, proportion,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): - print(i) - max=0 - best=None - People.reproduction(p = proportion, proba_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, label = str(pmutation)) - return(best) +# plt.plot([i for i in range(tmax)], L, label = str(pmutation)) +# return(best) def test_mutation(): plt.figure() @@ -40,5 +39,62 @@ def test_mutation(): plt.ylabel("Score du meilleur individu") plt.title("Comparaison en fonction du taux de mutation") plt.show() + + +import time + +# Debut du decompte du temps +start_time = time.time() test_mutation() + + +def main(N,tmax,pmutation, proportion): + L=[] + lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")] + brin = ''.join(lineList[1:]) + People=Population(N) + # S1=[] + for individu in People.indiv: + individu.evaluate(brin) + # S1.append(int(individu.score)) + # maximum=int(max(S1)) + for i in range(tmax): + print(i) + 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 + L.append(mini) + + # plt.subplot(221) + plt.plot([i for i in range(tmax)], L, label = str(pmutation)) + + + # 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) + + + # 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(10,10,0.01,5) +# test = Traj3D() +# test.compute(brin, best.table) +# test.draw("first_plot") + + +# Affichage du temps d execution +print("Temps d'execution : %s secondes " % (time.time() - start_time)) diff --git a/individu.py b/individu.py index 24193810b0c780eb4bc09bdd034a82094d59f376..20958d3de778f360a6da39856777dffe233336bf 100644 --- a/individu.py +++ b/individu.py @@ -37,9 +37,9 @@ class Individu(): list_distance += [distance_first_nuc, distance_last_nuc] - self.score = 1/max(list_distance) + self.score = max(list_distance) - return 1/max(list_distance) + return max(list_distance) def mutation(self, proba = P1): diff --git a/population.py b/population.py index 828caac54389b4296f47305d41e41a990b3b09dd..e615f16dda0e2739e637955af70bffeda42c7cf9 100644 --- a/population.py +++ b/population.py @@ -67,7 +67,11 @@ class Population: p = (self.n)//2 meilleur = self.indiv[0] for individu in self.indiv : +<<<<<<< HEAD if meilleur.score < individu.score: +======= + if meilleur.score > individu.score: +>>>>>>> 69e8a061d6fd93996d67f8b97e2c0e9d1e93f60a print("meilleur, individu: ", meilleur.score, individu.score) meilleur = individu newself = [meilleur] @@ -83,7 +87,11 @@ class Population: x=self.indiv[m] y=self.indiv[t] +<<<<<<< HEAD if x.score>=y.score: +======= + if x.score<y.score: +>>>>>>> 69e8a061d6fd93996d67f8b97e2c0e9d1e93f60a newself.append(x) else: newself.append(y) @@ -167,8 +175,10 @@ class Population: y=copy.deepcopy(newself[t]) couple_enfant = enfant(x,y) for child in couple_enfant : + lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")] + brin = ''.join(lineList[1:]) child.mutation(proba_mutation) - child.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA") + child.evaluate(brin) newself.append(couple_enfant[0]) newself.append(couple_enfant[1]) self = self.modifier_population(newself)