import matplotlib.pyplot as plt; plt.rcdefaults() import numpy as np import matplotlib.pyplot as plt from pylab import * import matplotlib.animation as animation TailleGrilleX = 15 TailleGrilleY = 15 GrilleInitiale = 0 HistoriqueGrille = list() StratsResultats = list() ListeStrategies = list() def matRecup(i, param): """array*str-> array Récupère la matrice avec seulement le paramètre stratégie pour chaque joueur , à litération i voulue""" matR = np.random.randint(0,1,(TailleGrilleX,TailleGrilleY)) matrice = HistoriqueGrilles[i] for ligne in range (0,TailleGrilleX): #int ligne for colonne in range (0, TailleGrilleY): #int colonne matR[ligne][colonne]=matrice[ligne][colonne][param] return matR def animation_strat(): fig=plt.figure() fig.suptitle('Animation des stratégies') cmap = mpl.colors.ListedColormap(["black","green" ,"red" ,"blue" ,"yellow"]) bounds=[0,1,2,3,4,5] norm=mpl.colors.BoundaryNorm(bounds, cmap.N) img=plt.imshow(matRecup(0, 'strategie'), interpolation = "nearest", cmap = cmap , norm = norm) cb=plt.colorbar(img , cmap=cmap , norm=norm , boundaries = bounds , ticks=bounds) labels = np.arange(1, 6, 1) cb.set_ticklabels(labels) def update(next_iteration,*args): img.set_array(matRecup(next_iteration , 'strategie')) return [img] anim = animation.FuncAnimation(fig, update, frames=range(MaxIterations), interval=1000, repeat = False) plt.show() def affichage_strats_resultats_totaux(): """array->graph Retourne les diagrammes en baton qui mettent en évidence le nombre moyen d'années de prison en fonction de la stratégie et le nombre d'utilisation de chaque stratégies """ #initialisation des paramètres #list gain gain=[] #list strat stratUtili=[] #nb_utilisations utilisateurs=list() #uti[strat][iter] = nb #iteration iteration=[] for i in range(5): gain.append(0) stratUtili.append(0) for i in range(0,len(ListeStrategies)): stratUtili[i]=StratsResultats[i][0] if StratsResultats[i][0]==0: gain[i] else: gain[i]=StratsResultats[i][1]/StratsResultats[i][0] utilisateurs.append([]) for i in range(0,MaxIterations+1): for j in range(0,len(ListeStrategies)): utilisateurs[j].append(StratsResultats[j][2][i][0]) print(StratsResultats[j][2][i][0]) iteration.append(i) print(utilisateurs[2]) #Diviser nb années de prison par le nb d'utilisatons de le stratégi (moyenne) Strat=('0','1', '2','3' ,'4') x_pos = np.arange(len(Strat)) plt.subplot(221) plt.title("Nombre d'utilisateurs en fonction d'une stratégie") plt.bar(x_pos, stratUtili, align='center' , color=CouleursStrat) plt.xlabel("Stratégies") plt.ylabel("Nombre individus ayant adopté stratégie") plt.xticks(x_pos,Strat) plt.subplot(222) plt.title(" Nombre moyen d'années de prison en fonctione d'une srtatégie") plt.bar(x_pos, gain, align='center', color=CouleursStrat ) plt.xlabel("Stratégies") plt.ylabel("Nombre moyen d'années de prison ") plt.xticks(x_pos,Strat) plt.subplot(223) plt.title("Evolution du nombre d'utilisateurs de chaque stratégie au cours des itérations") plt.ylabel("Nombre utilisateurs") for i in range(len(ListeStrategies)): plt.plot(iteration,utilisateurs[i], CouleursStrat[i] ,linewidth=5 ,label="Sratégie" + str(i)) plt.xlabel('Iterations') plt.show() plt.legend()