module special.voisinage_evolution#

Inheritance diagram of ensae_teaching_cs.special.voisinage_evolution

Short summary#

module ensae_teaching_cs.special.voisinage_evolution

Implémente une simulation d’évolution des catégories de population selon un modèle de Schelling.

source on GitHub

Classes#

class

truncated documentation

Ville

Définit une ville qui va évoluer par la suite.

VilleImage

Définit une ville à partir d’une image (donc non aléatoire).

Functions#

function

truncated documentation

display

affichage

pygame_simulation

Simulation graphique. Illuste la résolution du puzzle

round

arrondit chaque couleur

Methods#

method

truncated documentation

__init__

constructeur

__init__

constructeur

_initialisation

_voisinage

calcul de la répartition du voisiage

_voisinage

calcul de la répartition du voisiage

count

count

evolution

évolution d’une itération à l’autre

evolution

évolution d’une itération à l’autre

Documentation#

@file @brief Implémente une simulation d’évolution des catégories de population selon un modèle de Schelling.

class ensae_teaching_cs.special.voisinage_evolution.Ville(cote=100, group=3, taille=3, riche=False, th2=1.2, renouvellement=0.15, delay=1)#

Bases : object

Définit une ville qui va évoluer par la suite.

@param colors couleurs vivessimulation sans tenir compte de riches ou pauvres,

seulement regroupement

@param colors_grade simulation en tenant compte des riches, du plus foncé

au plus clair (riches)

constructeur

@param cote côté du carré utilisé pour la simulation @param group nombre de catégories de gens @param taille chaque individu regarde ses voisins à +/- taille près @param riche simulation avec riche ou non @param th2 le voisin le plus pauvre peut être contaminé,

si la différence de classes est importante (cl1 > cl2 * th2)

@param renouvellement à chaque itération, une certaine proportion des pâtés sont mis à jour,

cette proportion correspond au renouvellement

@param delay la simulation prend en compte la ville lors des « delay » dernières itérations

On tire au hasard la classe d’un pâté de maison dans un disque de rayon cote.

__init__(cote=100, group=3, taille=3, riche=False, th2=1.2, renouvellement=0.15, delay=1)#

constructeur

@param cote côté du carré utilisé pour la simulation @param group nombre de catégories de gens @param taille chaque individu regarde ses voisins à +/- taille près @param riche simulation avec riche ou non @param th2 le voisin le plus pauvre peut être contaminé,

si la différence de classes est importante (cl1 > cl2 * th2)

@param renouvellement à chaque itération, une certaine proportion des pâtés sont mis à jour,

cette proportion correspond au renouvellement

@param delay la simulation prend en compte la ville lors des « delay » dernières itérations

On tire au hasard la classe d’un pâté de maison dans un disque de rayon cote.

_voisinage(i, j, mat)#

calcul de la répartition du voisiage

@param i i,j coordonnées @param j @param mat matrice @return dictionnaire { classe:nombre }

count()#

@return la population

evolution()#

évolution d’une itération à l’autre

@return nb1,nb2

class ensae_teaching_cs.special.voisinage_evolution.VilleImage(image, cote=100, group=3, taille=3, riche=False, th2=1.2, renouvellement=0.15, delay=1)#

Bases : Ville

Définit une ville à partir d’une image (donc non aléatoire).

constructeur

@param image nom d’une image pour définir l’initialisation @param cote cote du carré utilisé pour la simulation @param group nombre de catégories de gens @param taille chaque individu regarde ses voisins à +- taille près @param riche simulation avec riche ou non @param th2 le voisin le plus pauvre peut-être contaminé,

si la différence de classes est importante (cl1 > cl2 * th2)

@param renouvellement à chaque itération, une certaine proportion des pâtés sont mis à jour,

cette proportion correspond à renouvellement

@param delay la simulation prend en compte la ville lors des « delay » dernières itérations

On tire au hasard la classe d’un pâté de maison dans un disque de rayon cote.

__init__(image, cote=100, group=3, taille=3, riche=False, th2=1.2, renouvellement=0.15, delay=1)#

constructeur

@param image nom d’une image pour définir l’initialisation @param cote cote du carré utilisé pour la simulation @param group nombre de catégories de gens @param taille chaque individu regarde ses voisins à +- taille près @param riche simulation avec riche ou non @param th2 le voisin le plus pauvre peut-être contaminé,

si la différence de classes est importante (cl1 > cl2 * th2)

@param renouvellement à chaque itération, une certaine proportion des pâtés sont mis à jour,

cette proportion correspond à renouvellement

@param delay la simulation prend en compte la ville lors des « delay » dernières itérations

On tire au hasard la classe d’un pâté de maison dans un disque de rayon cote.

_initialisation(im)#
ensae_teaching_cs.special.voisinage_evolution.display(self, screen, x, pygame)#

affichage @param screen écran @param x dimension d’un pâté de maison

ensae_teaching_cs.special.voisinage_evolution.pygame_simulation(pygame, first_click=False, folder=None, x=6, nb=100, group=6, max_iter=150, th2=1.75, image=None, flags=0, fLOG=<function noLOG>)#

Simulation graphique. Illuste la résolution du puzzle

@param pygame module pygame @param first_click attend la pression d’un clic de souris avant de commencer @param folder répertoire où stocker les images de la simulation @param size taille de l’écran @param delay delay between two tries @param x pour l’affichage, taille d’un pâté de maison à l’écran @param group … @param nb taille du carré de la simulation en nombre de pâtés de maisons @param th2 … @param max_iter nombre d’itérations @param image définition de la ville @param flags see pygame.display.set_mode @param fLOG logging function @return @see cl Ville

La simulation ressemble à ceci :

Pour lancer la simulation:

from ensae_teaching_cs.special.voisinage_evolution import pygame_simulation
import pygame
pygame_simulation(pygame)

Voir Evolution d’un voisinage, d’une population.

ensae_teaching_cs.special.voisinage_evolution.round(r, g, b)#

arrondit chaque couleur