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
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
@ -142,6 +183,7 @@ def matrice_init_vide():
def matrice_init_meme_strat(strat):
"""
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
"""
@ -161,6 +203,7 @@ 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
@ -183,6 +226,7 @@ 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
"""
@ -203,7 +247,6 @@ 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.
@ -241,7 +284,8 @@ def matrice_init_equitable():
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
chaque stratégie est choisi. Les états initiaux sont
@ -379,4 +423,3 @@ def init_liste_strategies():
ListeStrategies[4] = strat_principal_adversaire
###############################################################################