ultra-mastermind-implementa.../analyse.py
2025-01-07 23:05:40 +01:00

103 lines
2.6 KiB
Python

# fichier de tests du projet
import matplotlib.pyplot as plt
import random
# project libs importations
import lib.ultra_mastermind_obj as libobj
import lib.ultra_mastermind_imp as libimp
import lib.ultra_mastermind_pp_imp as libppimp
PM = "Hello, world!"
NG = 4000
N = 400
TS = 0.7
TM = 0.25
ALPHA = 0.5
FITNESS_METHOD = 3
# Variation de la taille de la phrase
length_ng = []
length = []
for i in range(5, 26, 3):
print(f"Step {i}:")
length.append(i)
vals = []
for j in range(5):
print(f" Part {j}")
PM = "".join([chr(random.randint(0, 255)) for _ in range(i)])
pop = libppimp.new_population(PM, NG, N, TS, TM, ALPHA, FITNESS_METHOD)
ng = libppimp.run(pop)
vals.append(ng)
length_ng.append(sum(vals) / len(vals))
plt.plot(length, length_ng)
plt.title("Nombre de générations nécéssaires en fonction de la taille de la phrase.")
plt.xlabel("Taille de la phrase")
plt.ylabel("Nombre de générations")
plt.show()
# Variation de la taille de la population
n_ng = []
n = []
for i in range(50, 1000, 100):
print(f"Step {i}:")
n.append(i)
vals = []
for j in range(5):
print(f" Part {j}")
pop = libppimp.new_population(PM, NG, i, TS, TM, ALPHA, FITNESS_METHOD)
ng = libppimp.run(pop)
vals.append(ng)
n_ng.append(sum(vals) / len(vals))
plt.plot(n, n_ng)
plt.title("Nombre de générations nécéssaires en fonction de la taille de la population.")
plt.xlabel("Taille de la population")
plt.ylabel("Nombre de générations")
plt.show()
# Variation du taut de sélection
ts_ng = []
ts = []
for i in range(1, 9, 1):
print(f"Step {i / 10}:")
ts.append(i / 10)
vals = []
for j in range(5):
print(f" Part {j}")
pop = libppimp.new_population(PM, NG, N, i / 10, TM, ALPHA, FITNESS_METHOD)
ng = libppimp.run(pop)
vals.append(ng)
ts_ng.append(sum(vals) / len(vals))
plt.plot(ts, ts_ng)
plt.title("Nombre de générations nécéssaires en fonction du taut de sélection.")
plt.xlabel("Taut de sélection")
plt.ylabel("Nombre de générations")
plt.show()
# Variation du taut de mutation
tm_ng = []
tm = []
for i in range(10, 40, 5):
print(f"Step {i / 100}:")
tm.append(i / 100)
vals = []
for j in range(5):
print(f" Part {j}")
pop = libppimp.new_population(PM, NG, N, TS, i / 100, ALPHA, FITNESS_METHOD)
ng = libppimp.run(pop)
vals.append(ng)
tm_ng.append(sum(vals) / len(vals))
plt.plot(tm, tm_ng)
plt.title("Nombre de générations nécéssaires en fonction du taut de mutation.")
plt.xlabel("Taut de mutation")
plt.ylabel("Nombre de générations")
plt.show()