Skip to content
Snippets Groups Projects
Commit db399e5d authored by Gauthier Roy's avatar Gauthier Roy
Browse files

Merge branch 'master' of...

parents cf714845 6f372729
No related branches found
No related tags found
No related merge requests found
......@@ -42,7 +42,7 @@ Sont fournis :
Le groupe est composé de Loïc Busson, Claire Zhao, Sandra Ayumi, Rodrigo Kappes, Solal O'Sullivan, Chloé Muller, Gauthier Roy et Carlos Santos Garcia.
Pour utiliser notre algorithme génétique, appeler la fonction main() du fichier algogenetique.py en introduisant le nombre d'individus par générations, le nombre de générations, la probabilité de mutation et le nombre d'individus séléctionnés à chaque itération. L'algorithme évalue les individus sur la séquence de nucléotides choisie. Il affiche aussi la trajectoire de la séquence voulue avec la meilleure table de rotations générée par l'algorithme à la dernière étape.
Les fichiers introduits par nous sont:
- individu.py
-
- individu.py: Création de la classe Individu (attributs et méthodes) qui permettent de donner un score à chaque table de rotations et l'apparition de mutations.
- population.py: Création de la classe Population. Une population à un attribut "indiv" qui est une liste d'individus, chacun caractérisé par sa table de rotations. Cette classe permet de faire la séléction des individus à garder à chaque itération par de différentes méthodes et d'actualiser la population.
- algogenetique.py : Rassemble les fonctionnalités des autres algorithmes pour faire tourner l'algorithme génétique et afficher la trajectoire après l'algorithme génétique.
- croisement.py : Fonctions de croisement utilisées pour la génération des enfants au moment de la
No preview for this file type
......@@ -33,8 +33,11 @@ def main(N,tmax,pmutation, proportion):
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)
print(i,":",mini)
print(i,"avg:",avg,"best score:", mini)
plt.subplot(221)
plt.plot([i for i in range(tmax)], L)
......@@ -56,7 +59,7 @@ def main(N,tmax,pmutation, proportion):
lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
brin = ''.join(lineList[1:])
best,People = main(20,10,0.01,10)
best,People = main(50,20,0.05,25)
test = Traj3D()
test.compute(brin, best.table)
test.draw("first_plot")
......
......@@ -33,8 +33,9 @@ class Individu():
list_distance = []
begining = np.array(traj_array[0:2*numb_ajout])
end = np.array(traj_array[-2*numb_ajout:])
begining = traj_array[0:2*numb_ajout]
end = traj_array[-2*numb_ajout:]
for i in range(numb_ajout):
nuc_coordonate_beg = begining[i]
......@@ -97,7 +98,7 @@ class Individu():
table_rotation_not_seen.remove(doublet)
for coord in range(3):
value = table_rotations[doublet][coord] + np.random.uniform( low = - self.table.orta()[doublet][coord + 3]/10, high = - self.table.orta()[doublet][coord + 3]/10)
value = table_rotations[doublet][coord] + np.random.normal(0, self.table.orta()[doublet][coord + 3]/15)
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]:
......
......@@ -163,9 +163,7 @@ 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.mutation_close_values(proba_mutation, number_of_mutations = 2)
child.evaluate()
newself.append(couple_enfant[0])
newself.append(couple_enfant[1])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment