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
|
||||
|
||||
import numpy
|
||||
import random
|
||||
import numpy as np
|
||||
import matplotlib as mpl
|
||||
from matplotlib import pyplot
|
||||
|
||||
######################
|
||||
### Variables Globales
|
||||
|
@ -47,6 +50,9 @@ ListeGenGrille = list()
|
|||
# génératrice de grille à utiliser
|
||||
TypeGrilleInitiale = 0
|
||||
|
||||
# nombre max d'itérations
|
||||
MaxIterations = 5
|
||||
|
||||
"""
|
||||
Types:
|
||||
Coord = tuple(x, y)
|
||||
|
@ -108,17 +114,52 @@ def partie1v1(joueur, adversaire):
|
|||
|
||||
return ans_prison
|
||||
|
||||
def partie8tours(coord_joueur):
|
||||
def partie8tours(x,y):
|
||||
"""
|
||||
Coord ->
|
||||
"""
|
||||
pass
|
||||
Coord -> NoneType
|
||||
|
||||
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
|
||||
|
@ -134,16 +175,17 @@ def simulation():
|
|||
|
||||
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)]
|
||||
|
||||
def matrice_init_meme_strat(strat):
|
||||
"""
|
||||
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
|
||||
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
|
||||
"""
|
||||
|
||||
histo_strat = [strat]
|
||||
|
@ -160,10 +202,11 @@ def matrice_init_meme_strat(strat):
|
|||
|
||||
def matrice_init_nie_sauf_un(strat):
|
||||
"""
|
||||
int -> array
|
||||
Crée la matrice des joueurs tel que chaque joueurs
|
||||
nie, sauf un qui avoue. Chaque joueur à la même
|
||||
stratégie
|
||||
int -> array
|
||||
|
||||
Crée la matrice des joueurs tel que chaque joueurs
|
||||
nie, sauf un qui avoue. Chaque joueur à la même
|
||||
stratégie
|
||||
"""
|
||||
|
||||
histo_strat = [strat]
|
||||
|
@ -182,9 +225,10 @@ def matrice_init_nie_sauf_un(strat):
|
|||
|
||||
def matrice_init_avoue_sauf_un(strat):
|
||||
"""
|
||||
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
|
||||
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
|
||||
"""
|
||||
|
||||
hito = [strat]
|
||||
|
@ -203,10 +247,9 @@ def matrice_init_avoue_sauf_un(strat):
|
|||
|
||||
def matrice_init_equitable():
|
||||
"""
|
||||
int*int*list[functions] -> array
|
||||
Crée la matrice des joueurs tel que le probabilité d'apparition de chaque
|
||||
stratégie est équitable. Les états initiaux de chaque
|
||||
joueur sont aléatoires.
|
||||
Crée la matrice des joueurs tel que le probabilité d'apparition de chaque
|
||||
stratégie est équitable. Les états initiaux de chaque
|
||||
joueur sont aléatoires.
|
||||
"""
|
||||
|
||||
matrice_strat = np.full((TailleGrilleX, TailleGrilleY), -1, dtype=int)
|
||||
|
@ -241,11 +284,12 @@ def matrice_init_equitable():
|
|||
|
||||
def matrice_init_pourcents_choisis(list_pourcent):
|
||||
"""
|
||||
int*int*list[functions]*list[float] -> array
|
||||
list_pourcent contient des float de 0.0 à 1.0.
|
||||
Crée la matrice des joueurs tel que le pourcentage de
|
||||
chaque stratégie est choisi. Les états initiaux sont
|
||||
choisis aléatoirement.
|
||||
list[float] -> array
|
||||
|
||||
list_pourcent contient des float de 0.0 à 1.0.
|
||||
Crée la matrice des joueurs tel que le pourcentage de
|
||||
chaque stratégie est choisi. Les états initiaux sont
|
||||
choisis aléatoirement.
|
||||
"""
|
||||
assert(len(list_pourcent) == len(ListeStrategies))
|
||||
|
||||
|
@ -379,4 +423,3 @@ def init_liste_strategies():
|
|||
ListeStrategies[4] = strat_principal_adversaire
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
|
Loading…
Reference in New Issue