Update ARE-DYNAMIC.py

This commit is contained in:
julianb0 2017-03-08 11:19:45 +01:00 committed by GitHub
parent 690313d11b
commit 0b6af27592
1 changed files with 72 additions and 29 deletions

View File

@ -15,7 +15,10 @@
###################### ######################
### Importations ### Importations
import numpy import random
import numpy as np
import matplotlib as mpl
from matplotlib import pyplot
###################### ######################
### Variables Globales ### Variables Globales
@ -47,6 +50,9 @@ ListeGenGrille = list()
# génératrice de grille à utiliser # génératrice de grille à utiliser
TypeGrilleInitiale = 0 TypeGrilleInitiale = 0
# nombre max d'itérations
MaxIterations = 5
""" """
Types: Types:
Coord = tuple(x, y) Coord = tuple(x, y)
@ -108,17 +114,52 @@ def partie1v1(joueur, adversaire):
return ans_prison return ans_prison
def partie8tours(coord_joueur): def partie8tours(x,y):
""" """
Coord -> Coord -> NoneType
"""
pass
def partie_globale(mat): Effectue huit parties 1v1 entre le joueur et chacun de ses voisins l'un après l'autre
""" """
GrilleJoueurs -> GrilleJoueurs for i in range (-1,2):
for j in range (-1,2): #(i,j) sont les coordonnées de l'adversaire
if (0 <= x+i and x+i < len(Grille)) and (0 <= y+j and y+j < len(Grille[0])) and i != 0 and j != 0:
partie1v1(Grille[x][y], Grille[x+i][y+j])
def partie_globale():
""" """
pass Effectue une partie de huit par joueur
"""
global HistoriqueGrilles
HistoriqueGrilles += [Grille]
for i in range(len(Grille)):
for j in range(len(Grille[0])):
partie8tours(i,j)
# Changement des stratégies
# On parcourt une copie de la grille pour avoir accès aux anciennes stratégies et non pas aux nouvelles adoptées
copie_grille = numpy.copy(Grille)
for x in range(len(copie_grille)):
for y in range(len(copie_grille)[0]):
#(x,y) : joueur dont on va modifier la stratégie, si besoin
min_prison = joueur["annees_de_prison"]
new_strat = joueur["strategie"]
for i in range (-1,2):
for j in range (-1,2): #(i,j) : adversaires autour de (x,y)
(i,j) = adversaire
if min_prison > adversaire["annees_de_prison"]:
new_strat = adversaire["strategie"]
global Grille
Grille[x][y]["strategie"] = new_strat # on modifie la stratégie du joueur dans la Grille et pas dans la copie
# Réinitialisation du nb d'années de prison
for j in range(len(Grille)[0]):
Grille[i][j]['annees_de_prison'] = 0
return Grille
############## ##############
### Simulation ### Simulation
@ -134,16 +175,17 @@ def simulation():
def matrice_init_vide(): def matrice_init_vide():
""" """
Crée une matrice contenant des dicts vides {} Crée une matrice contenant des dicts vides {}
""" """
return [[dict() for x in range(TailleGrilleX)] for y in range(TailleGrilleY)] return [[dict() for x in range(TailleGrilleX)] for y in range(TailleGrilleY)]
def matrice_init_meme_strat(strat): def matrice_init_meme_strat(strat):
""" """
int -> array int -> array
Crée la matrice des joueurs chacun a la même stratégie
mais commence avec des statuts différents, générés aléatoirement Crée la matrice des joueurs chacun a la même stratégie
mais commence avec des statuts différents, générés aléatoirement
""" """
histo_strat = [strat] histo_strat = [strat]
@ -160,10 +202,11 @@ def matrice_init_meme_strat(strat):
def matrice_init_nie_sauf_un(strat): def matrice_init_nie_sauf_un(strat):
""" """
int -> array int -> array
Crée la matrice des joueurs tel que chaque joueurs
nie, sauf un qui avoue. Chaque joueur à la même Crée la matrice des joueurs tel que chaque joueurs
stratégie nie, sauf un qui avoue. Chaque joueur à la même
stratégie
""" """
histo_strat = [strat] histo_strat = [strat]
@ -182,9 +225,10 @@ def matrice_init_nie_sauf_un(strat):
def matrice_init_avoue_sauf_un(strat): def matrice_init_avoue_sauf_un(strat):
""" """
int -> array int -> array
Créer la matrice des joueurs tel que chaque joueur avoue,
sauf un qui nie. Tous les joueurs ont la même strategie Créer la matrice des joueurs tel que chaque joueur avoue,
sauf un qui nie. Tous les joueurs ont la même strategie
""" """
hito = [strat] hito = [strat]
@ -203,10 +247,9 @@ def matrice_init_avoue_sauf_un(strat):
def matrice_init_equitable(): def matrice_init_equitable():
""" """
int*int*list[functions] -> array Crée la matrice des joueurs tel que le probabilité d'apparition de chaque
Crée la matrice des joueurs tel que le probabilité d'apparition de chaque stratégie est équitable. Les états initiaux de chaque
stratégie est équitable. Les états initiaux de chaque joueur sont aléatoires.
joueur sont aléatoires.
""" """
matrice_strat = np.full((TailleGrilleX, TailleGrilleY), -1, dtype=int) matrice_strat = np.full((TailleGrilleX, TailleGrilleY), -1, dtype=int)
@ -241,11 +284,12 @@ def matrice_init_equitable():
def matrice_init_pourcents_choisis(list_pourcent): def matrice_init_pourcents_choisis(list_pourcent):
""" """
int*int*list[functions]*list[float] -> array list[float] -> array
list_pourcent contient des float de 0.0 à 1.0.
Crée la matrice des joueurs tel que le pourcentage de list_pourcent contient des float de 0.0 à 1.0.
chaque stratégie est choisi. Les états initiaux sont Crée la matrice des joueurs tel que le pourcentage de
choisis aléatoirement. chaque stratégie est choisi. Les états initiaux sont
choisis aléatoirement.
""" """
assert(len(list_pourcent) == len(ListeStrategies)) assert(len(list_pourcent) == len(ListeStrategies))
@ -379,4 +423,3 @@ def init_liste_strategies():
ListeStrategies[4] = strat_principal_adversaire ListeStrategies[4] = strat_principal_adversaire
############################################################################### ###############################################################################