diff --git a/ARE-DYNAMIC.py b/ARE-DYNAMIC.py index 79db2ce..260b07c 100644 --- a/ARE-DYNAMIC.py +++ b/ARE-DYNAMIC.py @@ -59,7 +59,7 @@ TypeGrilleInitiale = 3 Iteration = 0 # nombre max d'itérations -MaxIterations = 2 +MaxIterations = 4 # stratégie par défaut StratParDefaut = 0 @@ -132,6 +132,9 @@ def partie1v1(joueur, adversaire): StratsResultats[adversaire["strategie"]][2][Iteration][1] += 1 StratsResultats[adversaire["strategie"]][2][Iteration][2] += ans_prison[0] + joueur["etat"] = etatj + adversaire["etat"] = etata + joueur["annees_de_prison"] += ans_prison[0] adversaire["annees_de_prison"] += ans_prison[1] @@ -477,7 +480,166 @@ def simulation(): return Grille +############################################################################### +### Affichage dynamique et graphiques + + +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 + +#Couleurs des Stratégies +CouleursStrat=['b','r','black','g','purple'] + +def afficher_strat_dynamique(): + fig=plt.figure() + fig.suptitle('Animation des stratégies') + + cmap = mpl.colors.ListedColormap(["b","r" ,"black" ,"g" ,"purple"]) + + 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(0, 5, 1) + cb.set_ticklabels(labels) + + def update(next_iteration,*args): + img.set_array(matRecup(next_iteration , 'etat')) + return [img] + + anim = animation.FuncAnimation(fig, update, frames=range(MaxIterations), interval=500, 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]) + + iteration.append(i) + + Strat=('0','1', '2','3' ,'4') + + x_pos = np.arange(len(Strat)) + + plt.subplot(221) + plt.title("Nombre d'adoptions de chaque 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 de chaque straté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.xlabel('Iterations') + plt.ylabel("Nombre utilisateurs") + + for i in range(len(ListeStrategies)): + plt.plot(iteration,utilisateurs[i], CouleursStrat[i] ,linewidth=5 ,label="Stratégie" + str(i)) + + plt.show() + plt.legend() + + + + + + + + + init_complete() +simulation() +affichage_strats_resultats_totaux() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ def _ext(M):