Update ARE-DYNAMIC.py

This commit is contained in:
NicolasBSN 2017-04-11 11:33:52 +02:00 committed by GitHub
parent fbff925f67
commit 277716e692
1 changed files with 23 additions and 20 deletions

View File

@ -73,7 +73,7 @@ AffichageDynamique = True
ListePourcents = list() ListePourcents = list()
#Couleurs des Stratégies #Couleurs des Stratégies
CouleursStrat=['b','r','black','g','purple'] CouleursStrat=['b','r','black','g','purple','yellow']
# Vitesse de défilement des images dans l'affichage dynamique en millisecondes # Vitesse de défilement des images dans l'affichage dynamique en millisecondes
Vitesse = 1 Vitesse = 1
@ -683,32 +683,35 @@ def simulation():
def matRecup(i, param): def matRecup(i, param):
"""array*str-> array """array*str-> array
Récupère la matrice avec seulement le paramètre stratégie pour chaque joueur , à litération i voulue""" Récupère la grille avec seulement la valeur de la clef "stratégie" pour chaque joueur , à litération i voulue"""
#on initialise la matrice résultat avec que des 0
matR = np.random.randint(0,1,(TailleGrilleX,TailleGrilleY)) matR = np.random.randint(0,1,(TailleGrilleX,TailleGrilleY))
#on récupère la grille à l'itération i voulue
matrice = HistoriqueGrilles[i] matrice = HistoriqueGrilles[i]
#on parcourt toute la grille
for ligne in range (0,TailleGrilleX): #int ligne for ligne in range (0,TailleGrilleX): #int ligne
for colonne in range (0, TailleGrilleY): #int colonne for colonne in range (0, TailleGrilleY): #int colonne
matR[ligne][colonne]=matrice[ligne][colonne][param] matR[ligne][colonne]=matrice[ligne][colonne][param] #on place à l'indice (ligne,colonne) de matR la valeur de la clef "stratégie" de la grille pour l'individu (ligne,colonne)
return matR return matR
def afficher_strat_dynamique(): def afficher_strat_dynamique():
"""Affichage dynamique de l'évolution de la stratégie dans une fenêtre, avec des couleurs"""
fig=plt.figure() fig=plt.figure()
fig.suptitle('Animation des stratégies') fig.suptitle('Animation des stratégies')
cmap = mpl.colors.ListedColormap(["b","r" ,"black" ,"g" ,"purple", "yellow"]) cmap = mpl.colors.ListedColormap(["b","r" ,"black" ,"g" ,"purple", "yellow"])
bounds=[0,1,2,3,4,5] bounds=[0,1,2,3,4,5,6]
norm=mpl.colors.BoundaryNorm(bounds, cmap.N) norm=mpl.colors.BoundaryNorm(bounds, cmap.N)
img=plt.imshow(matRecup(0, 'strategie'), interpolation = "nearest", cmap = cmap , norm = norm) img=plt.imshow(matRecup(0, 'strategie'), interpolation = "nearest", cmap = cmap , norm = norm)
cb=plt.colorbar(img , cmap=cmap , norm=norm , boundaries = bounds , ticks=bounds) cb=plt.colorbar(img , cmap=cmap , norm=norm , boundaries = bounds , ticks=bounds)
labels = np.arange(0, 5, 1) labels = np.arange(0, 6, 1)
cb.set_ticklabels(labels) cb.set_ticklabels(labels)
def update(next_iteration,*args): def update(next_iteration,*args):
@ -721,6 +724,7 @@ def afficher_strat_dynamique():
def afficher_etat_dynamique(): def afficher_etat_dynamique():
"""Affichage dynamique de l'évolution des états des individus dans une fenêtre, avec des couleurs"""
fig=plt.figure() fig=plt.figure()
fig.suptitle('Animation des états') fig.suptitle('Animation des états')
@ -757,28 +761,28 @@ def affichage_strats_resultats_totaux():
#nb_utilisations #nb_utilisations
utilisateurs=list() utilisateurs=list()
#uti[strat][iter] = nb #utilisateurs[strat][iter] = nombre d'utilisateur dune stratégie à une itération
#iteration #iteration
iteration=[] iteration=[]
#on ajoute des 0 dans les listes gain() et stratUtili() autant qu'il y a de stratégies
for i in range(6): for i in range(6):
gain.append(0) gain.append(0)
stratUtili.append(0) stratUtili.append(0)
for i in range(0,len(ListeStrategies)): for i in range(0,len(ListeStrategies)): #on parcourt les stratégies
stratUtili[i]=StratsResultats[i][0] stratUtili[i]=StratsResultats[i][0] #L'indice i de la liste stratUtili vaut le nombre total d'utilisations de la stratégie i
if StratsResultats[i][0]==0: if StratsResultats[i][0]==0: #si la stratégie a été utilisée 0 fois
gain[i] gain[i] #le gain ne change pas
else: else:
gain[i]=StratsResultats[i][1]/StratsResultats[i][0] gain[i]=StratsResultats[i][1]/StratsResultats[i][0] #Sinon le gain pour la stratégie i vaut le nombre d'années de prison pour une stratégie divisée par son utilisation (pour avoir une moyenne)
utilisateurs.append([]) utilisateurs.append([]) #on initialise une liste vide dans la liste utilisateurs afin de s'en servir juste après
for i in range(0,MaxIterations+1): for i in range(0,MaxIterations+1): #on parcourt toutes les itréations
for j in range(0,len(ListeStrategies)): for j in range(0,len(ListeStrategies)): #on parcourt toutes les stratégies
utilisateurs[j].append(StratsResultats[j][2][i][0]) utilisateurs[j].append(StratsResultats[j][2][i][0]) #on ajoute à lindice j de la liste utilisateurs le nombre d'utilisateurs d'une stratégie donnée j à l'itération i
iteration.append(i) iteration.append(i) #on ajoute à la liste itération l'indice i
Strat=('0','1', '2','3' ,'4') Strat=('0','1', '2','3' ,'4')
@ -810,7 +814,6 @@ def affichage_strats_resultats_totaux():
plt.show() plt.show()
plt.legend() plt.legend()
####################### #######################
# SCRIPT # SCRIPT
####################### #######################