Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
EI Jeux Evolutionnaires
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Santos Garcia Carlos
EI Jeux Evolutionnaires
Commits
2075ad6c
Commit
2075ad6c
authored
5 years ago
by
Muller Sacha
Browse files
Options
Downloads
Patches
Plain Diff
Rajout du fichier qui permet de tracer certains graphes du benchmarking
parent
5241d085
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
trace_graphe.py
+316
-0
316 additions, 0 deletions
trace_graphe.py
with
316 additions
and
0 deletions
trace_graphe.py
0 → 100644
+
316
−
0
View file @
2075ad6c
import
csv
import
numpy
import
matplotlib.pyplot
as
plt
from
copy
import
deepcopy
def
extract_data1
(
filename
):
f
=
open
(
filename
,
newline
=
''
)
liste_selections
=
[
"
selection_p_best
"
,
"
selection_duel_pondere
"
,
"
selection_duel
"
,
"
selection_par_rang
"
,
"
selection_proportionnelle
"
]
listedeliste
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
ligne
=
f
.
readline
()
while
ligne
!=
""
:
row
=
ligne
.
split
(
"
,
"
)
if
row
[
1
]
in
liste_selections
:
listedeliste
[
liste_selections
.
index
(
row
[
1
])].
append
(
row
[
3
])
ligne
=
f
.
readline
()
numpy
.
save
(
"
choix_selection
"
,
listedeliste
)
def
trace_histogramme_selections
(
listedeliste
):
listedeliste
=
[[
float
(
element
)
for
element
in
numpy
.
load
(
listedeliste
)[
i
]]
for
i
in
range
(
5
)]
liste_selections
=
[
"
selection_p_best
"
,
"
selection_duel_pondere
"
,
"
selection_duel
"
,
"
selection_par_rang
"
,
"
selection_proportionnelle
"
]
plt
.
figure
()
for
i
in
range
(
len
(
liste_selections
))
:
moy
=
moyenne
(
listedeliste
[
i
])
mediane
=
sorted
(
listedeliste
[
i
])[
len
(
listedeliste
[
i
])
//
2
]
plt
.
subplot
(
2
,
3
,
i
+
1
)
n
,
bins
,
patches
=
plt
.
hist
(
listedeliste
[
i
],
bins
=
40
)
plt
.
plot
([
moy
,
moy
],
[
0
,
max
(
n
)],
label
=
"
Moyenne
"
)
plt
.
plot
([
mediane
,
mediane
],
[
0
,
max
(
n
)],
label
=
"
Médiane
"
)
plt
.
legend
()
plt
.
title
(
liste_selections
[
i
])
plt
.
show
()
def
moyenne
(
liste
):
somme
=
0
for
element
in
liste
:
somme
+=
element
return
somme
/
len
(
liste
)
# extract_data1("Resultatgroupé_final.csv")
# trace_histogramme_selections("choix_selection.npy")
# >>> On choisit la séléction duel et selections ponderés car elles ont la meilleure moyenne/médiane
def
extract_data2
(
filename
):
f
=
open
(
filename
,
newline
=
''
)
liste_selections
=
[
"
selection_duel_pondere
"
,
"
selection_duel
"
]
dictscore
=
[{}
for
i
in
range
(
len
(
liste_selections
))]
listesurvivants
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
listescore
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
ligne
=
f
.
readline
()
while
ligne
!=
""
:
row
=
ligne
.
split
(
"
,
"
)
if
row
[
1
]
in
liste_selections
:
rapport_survivants
=
float
(
row
[
7
])
/
float
(
row
[
4
])
listesurvivants
[
liste_selections
.
index
(
row
[
1
])].
append
(
rapport_survivants
)
listescore
[
liste_selections
.
index
(
row
[
1
])].
append
(
float
(
row
[
3
]))
if
rapport_survivants
not
in
dictscore
[
liste_selections
.
index
(
row
[
1
])]
:
dictscore
[
liste_selections
.
index
(
row
[
1
])][
rapport_survivants
]
=
[]
dictscore
[
liste_selections
.
index
(
row
[
1
])][
rapport_survivants
].
append
(
float
(
row
[
3
]))
ligne
=
f
.
readline
()
moyenne_score
=
[[],
[]]
liste_survivants
=
[[],
[]]
for
i
in
range
(
2
):
liste_survivants
[
i
]
=
sorted
(
list
(
dictscore
[
i
].
keys
()))
for
rapport
in
deepcopy
(
liste_survivants
[
i
])
:
if
len
(
dictscore
[
i
][
rapport
])
>
1
:
#Cette condition permet de supprimer les jeu de données que nous n'avons pas eu le temps de répéter
#On estime alors que le résultat n'est pas représentatif en moyenne et on ne le prend pas en compte
moyenne_score
[
i
].
append
(
moyenne
(
dictscore
[
i
][
rapport
]))
elif
len
(
dictscore
[
i
][
rapport
])
==
1
:
liste_survivants
[
i
].
remove
(
rapport
)
numpy
.
save
(
"
choix_survivants
"
,
[
moyenne_score
,
liste_survivants
,
listesurvivants
,
listescore
])
def
choix_survivant
(
listedeliste
):
[
moyenne_score
,
liste_survivants
,
listesurvivants
,
listescore
]
=
numpy
.
load
(
listedeliste
,
allow_pickle
=
True
)
liste_selections
=
[
"
selection_duel_pondere
"
,
"
selection_duel
"
]
plt
.
figure
()
for
i
in
range
(
len
(
liste_selections
))
:
plt
.
subplot
(
1
,
2
,
i
+
1
)
plt
.
plot
(
liste_survivants
[
i
],
moyenne_score
[
i
],
label
=
"
moyenne
"
)
plt
.
plot
(
listesurvivants
[
i
],
listescore
[
i
],
"
.
"
)
plt
.
legend
()
plt
.
title
(
liste_selections
[
i
])
plt
.
xlabel
(
"
Taux de survivants
"
)
plt
.
ylabel
(
"
Score
"
)
plt
.
show
()
# extract_data2("Resultatgroupé_final.csv")
# choix_survivant("choix_survivants.npy")
# >>> Choix proportion survivant = 0.2
def
extract_data3
(
filename
):
f
=
open
(
filename
,
newline
=
''
)
liste_selections
=
[
"
selection_duel_pondere
"
,
"
selection_duel
"
]
dictscore
=
[{}
for
i
in
range
(
len
(
liste_selections
))]
listemutations
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
listescore
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
ligne
=
f
.
readline
()
while
ligne
!=
""
:
row
=
ligne
.
split
(
"
,
"
)
if
row
[
1
]
in
liste_selections
:
mutation
=
float
(
row
[
6
])
listemutations
[
liste_selections
.
index
(
row
[
1
])].
append
(
mutation
)
listescore
[
liste_selections
.
index
(
row
[
1
])].
append
(
float
(
row
[
3
]))
if
mutation
not
in
dictscore
[
liste_selections
.
index
(
row
[
1
])]
:
dictscore
[
liste_selections
.
index
(
row
[
1
])][
mutation
]
=
[]
dictscore
[
liste_selections
.
index
(
row
[
1
])][
mutation
].
append
(
float
(
row
[
3
]))
ligne
=
f
.
readline
()
moyenne_score
=
[[],
[]]
liste_mut
=
[[],
[]]
for
i
in
range
(
2
):
liste_mut
[
i
]
=
sorted
(
list
(
dictscore
[
i
].
keys
()))
for
mut
in
deepcopy
(
liste_mut
[
i
])
:
if
len
(
dictscore
[
i
][
mut
])
>
1
:
#Cette condition permet de supprimer les jeu de données que nous n'avons pas eu le temps de répéter
#On estime alors que le résultat n'est pas représentatif en moyenne et on ne le prend pas en compte
moyenne_score
[
i
].
append
(
moyenne
(
dictscore
[
i
][
mut
]))
elif
len
(
dictscore
[
i
][
mut
])
==
1
:
liste_mut
[
i
].
remove
(
mut
)
numpy
.
save
(
"
choix_mutation
"
,
[
moyenne_score
,
liste_mut
,
listemutations
,
listescore
])
def
choix_mutation
(
listedeliste
):
[
moyenne_score
,
liste_survivants
,
listesurvivants
,
listescore
]
=
numpy
.
load
(
listedeliste
,
allow_pickle
=
True
)
liste_selections
=
[
"
selection_duel_pondere
"
,
"
selection_duel
"
]
plt
.
figure
()
for
i
in
range
(
len
(
liste_selections
))
:
plt
.
subplot
(
1
,
2
,
i
+
1
)
plt
.
plot
(
liste_survivants
[
i
],
moyenne_score
[
i
],
label
=
"
moyenne
"
)
plt
.
plot
(
listesurvivants
[
i
],
listescore
[
i
],
"
.
"
)
plt
.
legend
()
plt
.
title
(
liste_selections
[
i
])
plt
.
xlabel
(
"
Mutations
"
)
plt
.
ylabel
(
"
Score
"
)
plt
.
show
()
# extract_data3("Resultatgroupé_final.csv")
# choix_mutation("choix_mutation.npy")
# >>> Les résultats ne sont pas hyper concluants mais selon le graphe on a 0.005 meilleur pour duel et 0.01 meilleur pour duel ponderé
# on voulait tracer un graphique en 3d cependant ce projet a été abandonné par manque de temps
#Les deux fonctions suivantes ne marchent donc pas
# from mpl_toolkits.mplot3d import axes3d
#Structure de donnée utilisée : dict1 = {x:{y:[z1, z2]}} et dict2 = {y:{x:[z1, z2]}}
# def extract_data4(filename):
# f = open(filename, newline = '')
# liste_selections = ["selection_duel_pondere", "selection_duel"]
# liste_mutations = [0.005, 0.01]
# survivants = 0.2
# liste_dict1 = [{}, {}]
# liste_dict2 = [{}, {}]
# ligne = f.readline()
# while ligne != "" :
# row = ligne.split(",")
# if row[1] in liste_selections:
# i = liste_selections.index(row[1])
# if liste_mutations[i] == float(row[6]) and survivants == float(row[7])/float(row[4]):
# x = float(row[4])
# y = float(row[5])
# z = float(row[3])
# if x not in liste_dict1[i]:
# liste_dict1[i][x] = {}
# if y not in liste_dict1[i][x]:
# liste_dict1[i][x][y] = []
# liste_dict1[i][x][y].append(z)
# if y not in liste_dict2[i]:
# liste_dict2[i][y] = {}
# if x not in liste_dict2[i][y]:
# liste_dict2[i][y][x] = []
# liste_dict2[i][y][x].append(z)
# ligne = f.readline()
# LISTE = []
# for i in range(2):
# X = [0 for k in range(len(liste_dict1[i].keys())) for j in range(len(liste_dict2[i].keys()))]
# Y = [0 for k in range(len(liste_dict2[i].keys())) for j in range(len(liste_dict1[i].keys()))]
# Z = [
# for x in sorted(liste_dict1[i]) :
# Y.append([])
# Z.append([])
# for y in liste_dict1[i][x]:
# Y[-1].append(y)
# Z[-1].append(moyenne(liste_dict1[i][x][y]))
# for y in liste_dict2[i] :
# X.append([])
# for x in liste_dict2[i][y]:
# X[-1].append(x)
# LISTE.append((X,Y,Z))
# return LISTE
# def graphe(filename):
# LISTE = extract_data4(filename)
# for i in range(2):
# X, Y, Z = LISTE[i]
# print(X)
# print(Y)
# print(Z)
# fig = plt.figure()
# ax = fig.add_subplot(111, projection='3d')
# ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
# plt.show()
# graphe("Resultatgroupé_final.csv") >>> Cette fonction a échoué, on abandonne l'idée du graphe 3d par manque de temps
def
extract_data5
(
filename
):
f
=
open
(
filename
,
newline
=
''
)
liste_selections
=
[
"
selection_duel_pondere
"
,
"
selection_duel
"
]
dictscore
=
[{}
for
i
in
range
(
len
(
liste_selections
))]
listeindividus
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
listescore
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
ligne
=
f
.
readline
()
while
ligne
!=
""
:
row
=
ligne
.
split
(
"
,
"
)
if
row
[
1
]
in
liste_selections
:
individu
=
float
(
row
[
4
])
listeindividus
[
liste_selections
.
index
(
row
[
1
])].
append
(
individu
)
listescore
[
liste_selections
.
index
(
row
[
1
])].
append
(
float
(
row
[
3
]))
if
individu
not
in
dictscore
[
liste_selections
.
index
(
row
[
1
])]
:
dictscore
[
liste_selections
.
index
(
row
[
1
])][
individu
]
=
[]
dictscore
[
liste_selections
.
index
(
row
[
1
])][
individu
].
append
(
float
(
row
[
3
]))
ligne
=
f
.
readline
()
moyenne_score
=
[[],
[]]
liste_mut
=
[[],
[]]
for
i
in
range
(
2
):
liste_mut
[
i
]
=
sorted
(
list
(
dictscore
[
i
].
keys
()))
for
mut
in
deepcopy
(
liste_mut
[
i
])
:
if
len
(
dictscore
[
i
][
mut
])
>
1
:
#Cette condition permet de supprimer les jeu de données que nous n'avons pas eu le temps de répéter
#On estime alors que le résultat n'est pas représentatif en moyenne et on ne le prend pas en compte
moyenne_score
[
i
].
append
(
moyenne
(
dictscore
[
i
][
mut
]))
elif
len
(
dictscore
[
i
][
mut
])
==
1
:
liste_mut
[
i
].
remove
(
mut
)
numpy
.
save
(
"
choix_individus
"
,
[
moyenne_score
,
liste_mut
,
listeindividus
,
listescore
])
def
choix_individu
(
listedeliste
):
[
moyenne_score
,
liste_survivants
,
listesurvivants
,
listescore
]
=
numpy
.
load
(
listedeliste
,
allow_pickle
=
True
)
liste_selections
=
[
"
selection_duel_pondere
"
,
"
selection_duel
"
]
plt
.
figure
()
for
i
in
range
(
len
(
liste_selections
))
:
plt
.
subplot
(
1
,
2
,
i
+
1
)
plt
.
plot
(
liste_survivants
[
i
],
moyenne_score
[
i
],
label
=
"
moyenne
"
)
plt
.
plot
(
listesurvivants
[
i
],
listescore
[
i
],
"
.
"
)
plt
.
legend
()
plt
.
title
(
liste_selections
[
i
])
plt
.
xlabel
(
"
Taille de la population
"
)
plt
.
ylabel
(
"
Score
"
)
plt
.
show
()
# extract_data5("Resultatgroupé_final.csv")
# choix_individu("choix_individus.npy")
def
extract_data6
(
filename
):
f
=
open
(
filename
,
newline
=
''
)
liste_selections
=
[
"
selection_duel_pondere
"
,
"
selection_duel
"
]
dictscore
=
[{}
for
i
in
range
(
len
(
liste_selections
))]
listegenerations
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
listescore
=
[[]
for
i
in
range
(
len
(
liste_selections
))]
ligne
=
f
.
readline
()
while
ligne
!=
""
:
row
=
ligne
.
split
(
"
,
"
)
if
row
[
1
]
in
liste_selections
:
generation
=
float
(
row
[
5
])
listegenerations
[
liste_selections
.
index
(
row
[
1
])].
append
(
generation
)
listescore
[
liste_selections
.
index
(
row
[
1
])].
append
(
float
(
row
[
3
]))
if
generation
not
in
dictscore
[
liste_selections
.
index
(
row
[
1
])]
:
dictscore
[
liste_selections
.
index
(
row
[
1
])][
generation
]
=
[]
dictscore
[
liste_selections
.
index
(
row
[
1
])][
generation
].
append
(
float
(
row
[
3
]))
ligne
=
f
.
readline
()
moyenne_score
=
[[],
[]]
liste_mut
=
[[],
[]]
for
i
in
range
(
2
):
liste_mut
[
i
]
=
sorted
(
list
(
dictscore
[
i
].
keys
()))
for
mut
in
deepcopy
(
liste_mut
[
i
])
:
if
len
(
dictscore
[
i
][
mut
])
>
1
:
#Cette condition permet de supprimer les jeu de données que nous n'avons pas eu le temps de répéter
#On estime alors que le résultat n'est pas représentatif en moyenne et on ne le prend pas en compte
moyenne_score
[
i
].
append
(
moyenne
(
dictscore
[
i
][
mut
]))
elif
len
(
dictscore
[
i
][
mut
])
==
1
:
liste_mut
[
i
].
remove
(
mut
)
numpy
.
save
(
"
choix_generations
"
,
[
moyenne_score
,
liste_mut
,
listegenerations
,
listescore
])
def
choix_generation
(
listedeliste
):
[
moyenne_score
,
liste_survivants
,
listesurvivants
,
listescore
]
=
numpy
.
load
(
listedeliste
,
allow_pickle
=
True
)
liste_selections
=
[
"
selection_duel_pondere
"
,
"
selection_duel
"
]
plt
.
figure
()
for
i
in
range
(
len
(
liste_selections
))
:
plt
.
subplot
(
1
,
2
,
i
+
1
)
plt
.
plot
(
liste_survivants
[
i
],
moyenne_score
[
i
],
label
=
"
moyenne
"
)
plt
.
plot
(
listesurvivants
[
i
],
listescore
[
i
],
"
.
"
)
plt
.
legend
()
plt
.
title
(
liste_selections
[
i
])
plt
.
xlabel
(
"
Nombre de génération
"
)
plt
.
ylabel
(
"
Score
"
)
plt
.
show
()
# extract_data6("Resultatgroupé_final.csv")
# choix_generation("choix_generations.npy")
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment