Saataa andagii !
This commit is contained in:
parent
da4d3dca5f
commit
4f43c149ee
5 changed files with 57 additions and 25 deletions
BIN
images/vari_ng.png
Normal file
BIN
images/vari_ng.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
|
@ -51,21 +51,24 @@ def new_individual(): # -> set(str)
|
|||
"chromozome": ""
|
||||
}
|
||||
|
||||
def get_fitness(population, individual) -> int:
|
||||
match population["fm"]:
|
||||
case 1:
|
||||
return fitness1(individual, population["pm"])
|
||||
case 2:
|
||||
return fitness2(individual, population["pm"], population["alpha"])
|
||||
case 3:
|
||||
return fitness3(individual, population["pm"])
|
||||
case _:
|
||||
return fitness1(individual, population["pm"])
|
||||
|
||||
def select(population) -> None:
|
||||
"""
|
||||
Methode qui sélectionne les meilleurs individus
|
||||
"""
|
||||
fitness_list = []
|
||||
for individual in population["individuals"]:
|
||||
match population["fm"]:
|
||||
case 1:
|
||||
fitness_list.append(fitness1(individual, population["pm"]))
|
||||
case 2:
|
||||
fitness_list.append(fitness2(individual, population["pm"], population["alpha"]))
|
||||
case 3:
|
||||
fitness_list.append(fitness3(individual, population["pm"]))
|
||||
case _:
|
||||
fitness_list.append(fitness1(individual, population["pm"]))
|
||||
fitness_list.append(get_fitness(population, individual))
|
||||
|
||||
for i in range(int((1 - population["ts"]) * population["n"])):
|
||||
least = min_i(fitness_list)
|
||||
|
@ -103,22 +106,20 @@ def mutate_pop(population) -> None:
|
|||
mutate(population["individuals"][to_mutate])
|
||||
mutated.append(to_mutate)
|
||||
|
||||
def get_best(population):
|
||||
"""
|
||||
Methode qui renvoie le meilleur individu de la population
|
||||
"""
|
||||
fitness_list = []
|
||||
for individual in population["individuals"]:
|
||||
fitness_list.append(get_fitness(population, individual))
|
||||
return population["individuals"][max_i(fitness_list)]
|
||||
|
||||
def print_best(population) -> None:
|
||||
"""
|
||||
Methode qui affiche le meilleur individu de la population
|
||||
"""
|
||||
fitness_list = []
|
||||
for individual in population["individuals"]:
|
||||
match population["fm"]:
|
||||
case 1:
|
||||
fitness_list.append(fitness1(individual, population["pm"]))
|
||||
case 2:
|
||||
fitness_list.append(fitness2(individual, population["pm"], population["alpha"]))
|
||||
case 3:
|
||||
fitness_list.append(fitness3(individual, population["pm"]))
|
||||
case _:
|
||||
fitness_list.append(fitness1(individual, population["pm"]))
|
||||
print(population["individuals"][max_i(fitness_list)]["chromozome"])
|
||||
print(get_best(population)["chromozome"])
|
||||
|
||||
def run(population) -> None:
|
||||
"""
|
||||
|
|
6
main.py
6
main.py
|
@ -15,9 +15,11 @@ FITNESS_METHOD = 1
|
|||
|
||||
# main function
|
||||
def main() -> None:
|
||||
pop = libobj.Population(pm = PM, ng = NG, n = N, ts = TS, tm = TM, alpha = ALPHA, fm = FITNESS_METHOD)
|
||||
pop.run()
|
||||
# object version
|
||||
# pop = libobj.Population(pm = PM, ng = NG, n = N, ts = TS, tm = TM, alpha = ALPHA, fm = FITNESS_METHOD)
|
||||
# pop.run()
|
||||
|
||||
# imperative version
|
||||
pop = libimp.new_population(PM, NG, N, TS, TM, ALPHA, FITNESS_METHOD)
|
||||
libimp.run(pop)
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Levenshtein==0.26.1
|
||||
RapidFuzz==3.10.1
|
31
tests.py
31
tests.py
|
@ -1,5 +1,32 @@
|
|||
# fichier de tests du projet
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# project libs importations
|
||||
import lib.ultra_mastermind_obj
|
||||
import lib.ultra_mastermind_imp
|
||||
import lib.ultra_mastermind_obj as libobj
|
||||
import lib.ultra_mastermind_imp as libimp
|
||||
|
||||
# Variation du nombre de générations
|
||||
PM = "Hello, world!"
|
||||
# NG = 2000
|
||||
N = 400
|
||||
TS = 0.5
|
||||
TM = 0.25
|
||||
ALPHA = 0.5
|
||||
FITNESS_METHOD = 1
|
||||
|
||||
fitness_ng = []
|
||||
all_ng = []
|
||||
|
||||
for i in range(1, 21):
|
||||
NG = i * 100
|
||||
all_ng.append(NG)
|
||||
pop = libimp.new_population(PM, NG, N, TS, TM, ALPHA, FITNESS_METHOD)
|
||||
libimp.run(pop)
|
||||
fitness_ng.append(libimp.get_fitness(pop, libimp.get_best(pop)))
|
||||
|
||||
plt.plot(all_ng, fitness_ng)
|
||||
plt.title("Fitness du meilleur individu en fonciton du nombre de générations")
|
||||
plt.xlabel("Nombre de générations")
|
||||
plt.ylabel("Fitness du meilleur individu")
|
||||
plt.show()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue