Update ARE-DYNAMIC.py
This commit is contained in:
parent
690313d11b
commit
0b6af27592
101
ARE-DYNAMIC.py
101
ARE-DYNAMIC.py
|
@ -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 où 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 où 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
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue