agents réactifs

75
Jean-Paul Sansonnet LIMSI-CNRS [email protected] Agents Réactifs Processus d’émergence de formes sur des populations d’agents à grain fin

Upload: others

Post on 19-Jun-2022

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Agents Réactifs

Jean-Paul Sansonnet

LIMSI-CNRS ― [email protected]

Agents Réactifs

Processus d’émergence de formes sur des populations d’agents à grain fin

Page 2: Agents Réactifs

J-P Sansonnet ― Agents réactifs

2Résumé du chapitrePlan

Automates à une Dimension– Automates à une dimension– Automates linéaires booléens– Evolution à partir d'une configuration aléatoire– Les trajectoires sont circulaires– CI fixes ― Fonctions f0 .. f127– CI fixes ― Fonctions f128 .. f255– CI variables : f250 et f192– CI variables : f80 et f35– Analyse des expérimentations– Interprétation en termes Sociobiologiques

Jeu de la vie– Principe du jeu de la vie– Exemples de trajectoires– Patterns typiques– Canon à Gliders– Eater– Eaters eat gliders

Automate de Langton– Automates autoreproducteurs– Forme initiale de Langton– Fonction de transition– Processus de reproduction– 400 étapes de Langton

Introduction– Agents Réactifs et Cognitifs– Problématique des agents réactifs– Modes de contrôle SIMD et MIMD– Modes de voisinage SIMD– Opérateur Nest– Itération de processus

Intelligence Collective– L’organicisme– La marche erratique de la fourmi– L’odorat des fourmis– Tri collectif des proies– Patterns de fouragement– Champ de phéromones– Champ phéromonal dynamique– Influence de la structure– Structure bornée ou torique– Effets de biaisage

Automates cellulaires– Espace substrat des états– Voisinages de base– Espace euclidien torique– Processus de lissage– Applications du lissage– Simulation sociale (1)– Simulation sociale (2)

Algorithmes Génétiques– Problèmes de difficulté exponentielle– Explorations évolutionistes– Principe des algorithmes génétiques– Génotype et phénotype– Population initiale– Phase de sélection-reproduction– Phase de Cross over– Visualisation d’une évolution– Histogramme de la population– Mauvaise population– Apport des mutations– Maxima locaux– Fonctions de lissage– Fonctions de lissage– Optimisation bidimentionnelle– Apprentissage supervisé– Application aux AGs– Tortues Logo– Phénotype des tortues– Exemple d’élevage de tortues– Types d’explorations– Un vrai labyrinthe

Conclusion

Page 3: Agents Réactifs

J-P Sansonnet ― Agents réactifs

3Agents Réactifs et CognitifsIntroduction

Les architectures d’agents sont généralement classés en deux catégories : – Les agents réactifs sont issus de la modélisation physicaliste du

monde : ils sont assimilés à des fonctions de transition– Les agents cognitifs sont issus de la modélisation mentaliste du

monde : ils sont assimilés à des systèmes experts.

Raisonnement surles représentations

Représentations- du monde- de soi (buts)

Actions sur le monde

St T St+1 = T(St)Fonction de

transitionSituation Retours d’effort

sur les actions

• Modèle de blackbox (fonctions)

• Comportements réflexes

• Représentations purement sensorimotrices

• Pas d’anticipation

• Comportements téléonomiques (liés à des buts)

• Représentations symboliques

• Planification

Page 4: Agents Réactifs

J-P Sansonnet ― Agents réactifs

4Problématique des agents réactifsIntroduction

Formemacroscopique

observée

La problématique des agents réactifs porte sur la notion très générale :

d’émergence d’une forme sur une population

– Population : • Ethologie : ensemble d’insectes, d’oiseaux,vers• Physique, chimie, biologie : gaz sur réseaux, mécanique

statistique, ensemble de grains de sable, de molécules, de protéines, de virus,

• Informatique : ensemble de robots, de programmes web• Sociologie : groupes, associations, collectifs d’humains, …

– Emergence :• Monde microscopique : propriétés connues / fixées des

composants / individus / entités / agents de la population• Monde macroscopique : propriétés observées sans connexion

directe avec les propriétés des composants

– Forme :• Géométrique : fleurs, cristaux, couleurs, dômes, cellules

hexagonales, bancs de poissons• Physique : molécules ⇒ gaz ⇒ eau ⇒ glace ; excitation ⇒

chaleur, vitesse ⇒ dureté de l’eau,• Structurelle : fonctions, organisations, rôles, • Comportementale : construction d’une toile d’araignée, d’un

dôme, murs du lac Huron, guerre des fourmis, oiseaux migrateurs, rats de Laborit, chef, bouc, altruisme, coopération, peur, amour, …

Processus d’itération d’une fonctionde transition T sur la population

Propriétémicroscopique

fixée

Population initiale d’agents à grain finhomogène = pas de forme globale observable

Page 5: Agents Réactifs

J-P Sansonnet ― Agents réactifs

5Modes de contrôle SIMD et MIMDIntroduction

SIMD MIMD

Dans le modèle SIMD, les agents ont tous la même structure : comme les instances d'une même classe, ils possèdent les mêmes variables d'état (slots) et le même comportement (mêmes méthodes). Au niveau de l'interaction avec les autres agents, on retrouve cette uniformité : le réseau interactif est régulier, homogène, symétrique et le protocole d'interaction est unique. Au cours du fonctionnement, seules les valeurs d'état des agents sont différentes et ce sont elles qui dessinent la forme du résultat attendu. On parle alors d'Emergence ou d'Intelligence Collective.

Dans le modèle MIMD, les agents ont tous une structure différente : ils ont des variables d'états différentes et ils exécutent des programmes différents. Au niveau de l'interaction, il en est de même ;les échanges sont hétérogènes : en temps, en vitesse, en quantité, en topologie ... Chaque agent possède en quelque sorte sa propre personnalité : il a sa propre spécialité, il peut résoudre un type de problème particulier. On parle alors de Sociétés d'Experts ou de Système Multi Agents (SMA).

Page 6: Agents Réactifs

J-P Sansonnet ― Agents réactifs

6Modes de voisinage SIMDIntroduction

Le modèle SIMD se décompose en trois sous-types selon le degré de contrainte topologique appliquée au domaine des agents :– Dans le premier modèle d'organisation, il n'y a pas de structure de voisinage, donc pas de topologie du domaine. On dispose alors d'une population d'agents munie de la

structure la plus faible, i.e. celle d'ensemble.– Dans le deuxième modèle d'organisation, l'ensemble des agents est aussi muni d'une topologie, définie par une structure de voisinage. Les agents sont libres de se déplacer

sur cette topologie. Ils sont mobiles ou dynamiques. Ce modèle est très utilisé pour modéliser les sociétés animales, en particulier les insectes ; on parle alors de Swarmintelligence.

– Dans le troisième modèle d'organisation, l'ensemble des agents est aussi muni d'une topologie. De plus, les agents occupent de manière fixe les points de cette topologie : ils sont statiques. On parle alors de réseau cellulaire, très proche des automates cellulaires.

Contrainte topologique MaximaleMinimale

Population Swarm Intelligence Réseau CellulaireEnsemble d’agents SIMD

sans topologie de voisinage : Agents SIMD dynamiques se

déplaçant sur une grille 2DAgents SIMD statiques munis

d’un voisinage 2D

Page 7: Agents Réactifs

J-P Sansonnet ― Agents réactifs

7Opérateur NestIntroduction

Exemple 1 : un compteurIci nous avons choisi d'utiliser, comme fonction f, une fonction pure : (#+1)&. Nous rappelons que "(...)&" est une abréviation syntaxique pour dénoter une fonction pure et que # représente l'argument de la fonction (auquel on ajoute 1 ici).

NestList[(#+1)&,0,25]=>{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}

Exemple 2 : la suite des puissances de deux On obtient la suite des puissances de 2 en multipliant par 2 à chaque itération l'élément précédent (représenté par #) :

NestList[(2*#)&,1,10]=> {1,2,4,8,16,32,64,128,256,512,1024}

Exemple 3 : un processus cycliqueSouvent les processus dynamiques produisent des cycles. Voici unexemple simple de cycle d'ordre 1 (la suite alterne entre deux valeurs) :

L’opérateur NestEn Mathematica, il existe un opérateur d'itération qui permet d'implémenter de manière aisée des processus dynamiques. C'est l'opérateur Nest. L'opérateur Nest prend trois arguments :

- une fonction de transfert F qui décrit le processus,- une condition initiale ,- un nombre entier positif d'itérations

L’opérateur NestListL'opérateur NestList fonctionne de la même manière mais il renvoie la liste des itérations intermédiaires, i.e. des sorties du processus

Clear@FD; Nest@F, x0, n = 4DF@F@F@F@x0DDDD

NestList@F, x0, 4Dx0F@x0DF@F@x0DDF@F@F@x0DDDF@F@F@F@x0DDDDF@F@F@F@F@x0DDDDDF F F F F F x0

NestListAikjj 1

#y{zz &, x, 10E

9x, 1

x, x,

1

x, x,

1

x, x,

1

x, x,

1

x, x=@ @ @ @ @ @ DDDDDD

Page 8: Agents Réactifs

J-P Sansonnet ― Agents réactifs

8Itération de processusIntroduction

Algorithme itératif des SumériensIl y a déjà 4000 ans, les Sumériens connaissaient un algorithme itératif pour calculer √a à partir des quatre opérations de base (+, -, *, /). Il s'agit de calculer la suite des (xi) telle que :

Pour calculer la liste l des valeurs successives de la suite (xi) il suffit d'utiliser l'opérateur d'itération NestList. On commence en posant x0= a. Voici les trois premières itérations effectuées de manière symbolique (a n'est pas défini)

Pour calculer √ 2, on pose x0 = a = 2. Ici, on effectue 6 itérations :

On voit qu’en valeur numérique on converge très vite :

{2.,1.5,1.41667,1.41422,1.41421,1.41421,1.41421}

xn+1 =1

2 ikjjxn +

a

xn

y{zz F@x_D :=1

2 Jx +

a

xN

NestList@F, a, 3Da1+a2

12I 2 a

1+a+ 1+a

2M

12

ikjjj 2 a2 a1+a + 1+a

2

+ 12I 2 a

1+a+ 1+a

2My{zzz

l = NestList@F, 2, 6D:2, 3

2,

17

12,

577

408,

665857

470832,

886731088897

627013566048,

1572584048032918633353217

1111984844349868137938112

0.2 0.4 0.6 0.8 1

0.2

0.4

0.6

0.8

1

zone de depart

λ = 4

-100

10

-20

0

20

0

10

20

30

40

-100

10

-20

0

20

Equation de May (Lapins)

>

Attracteur de Lorentz (Météo)

Transformation du Boulanger

Page 9: Agents Réactifs

J-P Sansonnet ― Agents réactifs

9

Introduction

Intelligence Collective

Automates Cellulaires

Automates à une Dimension

Le Jeu de la vie

Automate de Langton

Algorithmes Génétiques

Page 10: Agents Réactifs

J-P Sansonnet ― Agents réactifs

10L’organicismeIntelligence Collective

BichatL'organicisme représente au départ une conception biologique, illustrée en France par Bichat, qui insiste sur la spécificité des phénomènes que l'on peut observer au niveau d'un organisme entier. Cette conception s'oppose à l'associationnisme cartésien puis positiviste qui propose d'expliquer le Tout comme une association de Parties ; au contraire, l'organicisme prétend que c'est le Tout (Gestalt) qui explique les Parties.

Les philosophes grecs après la métaphore des membres et de l'estomac d'Esope, Platon et Aristote ont montré l'originalité du Tout par rapport à ses parties : "le tout n'est pas la somme des parties".Herbert Spencer : au 19ème siècle, après Schelling et en même temps que Fechner, Heackel ... il développe une théorie sociologique où la société est vue comme un organisme (1882). Il fait les analogies suivantes :

- la croissance inhérente, inéluctable (comme "onde porteuse"),- la différenciation des fonctions (division du travail),- la mutuelle détermination des parties (tout se tient),- la ressemblance à des niveaux différents (fractalisation),- la durée de vie (qui sous-entend la mortalité).

W.M. WheelerDans « The Ant colony as an organism » (1911), et même un superorganisme (1928). Ce concept sera repris par un autre entomologiste, Alfred E. Emerson (1939 - 1959). On peut finir avec le concept de Gaïa de James Lovelock (1972) qui suggère que la terre est un être vivant ...

Le behaviorisme de E. Rabaudle postulat fondamental est que la cause unique du comportement d'une société d'insectes se trouve dans l'individu ie au niveau local. Tous ses travaux ont consisté à montrer que l'individu se comporte comme s'il était seul, les phénomènes d'entraide, de division du travail, ... ne sont que des formes émergentes a posteriori.

Page 11: Agents Réactifs

J-P Sansonnet ― Agents réactifs

11La marche erratique de la fourmiIntelligence Collective

On considère un agent particulier : une fourmi (Ant). Ce qui apparaît à l'observation de son comportement habituel de "fouragement" (foraging) ce sont des déplacements qui semblent aléatoires au niveau local. On modélise une telle marche par une « random walk » d'un seul individu sur une topologie de grille à deux dimensions.

RandCoo[{x,y}]:= {new_x = Random[{x-1,x+1}],new_y = Random[{y-1,y+1}]}

On peut alors modéliser la marche erratique d'une fourmi par un processus, en itérant RandCoo (prise comme fonction de transition T) 2000 fois :

Nest[RandCoo, {50,50}, 2000]20 40 60 80 100

20

40

60

80

100

Départ

Page 12: Agents Réactifs

J-P Sansonnet ― Agents réactifs

12L’odorat des fourmisIntelligence Collective

La fourmi possède un bon odorat. Elle communique avec les autres fourmis de manière principale avec des odeurs portées par des substances appelées phéromones. Elle peut aussi sentir l'odeur des proies et déterminer ainsi leur position et leur quantité.La fonction Sensor simule le détecteur d'une fourmi située à la position {i,j} sur une grille bidimensionnelle t. Elle renvoie le nombre d'éléments (de proies potentielles) de type x qui se trouvent dans unvoisinage de Moore (les 8 cases voisines de {i,j}).

On considère une population SIMD mobile de fourmis qui se déplacent sur une arène dont la topologie est une grille bidimensionnelle. Ici, nous appellerons proie tout ce qui "intéresse" la fourmi et qu'elle peut saisir et éventuellement manger et/ou transporter. On suppose que dans l'arène T où se déplacent les fourmis il existe trois types de proies (●,□, ) qui sont dispersées au hasard de la manière suivante :

0 2 4 6 8 100

2

4

6

8

10

·

Ê

Ê

·

Û

Û

·

Û

Û

Ê

Ê

·

·

Û

·

Ê

·

Û

Ê

·

·

Û

Ê

Ê

·

Û

Ê

Û

·

·

·Voisinage de Moore : zone de détection des proies

Proie

Proie

Page 13: Agents Réactifs

J-P Sansonnet ― Agents réactifs

13Tri collectif des proiesIntelligence Collective

On veut faire effectuer à la population de fourmis une opération de tri : chaque type de proie (●,□, ) devra être regroupé en un ou plusieurs tas. Les fourmis ne se concertent pas (on parle de coaction plutôt que de coopération): elles ont un comportement individuel, autonome, local. Le tri doit apparaître comme un processus d'émergence sur le système : arène + proie + fourmis.Au comportement en « random walk », déjà vu, nous ajoutons les deux règles locales suivantes :— une proie est saisie avec une probabilité proportionnelle à son isolement dans le voisinage (de Moore),— une proie est lâchée avec une probabilité proportionnelle à sa présence dans le voisinage.

0 5 10 15 200

5

10

15

20

Ê

ÛÛ····

ÛÛ···

ÊÊÊ

····

ÛÛ···

ÊÊÊÊ

····

ÛÛ

·

ÊÊÊ

··

Û Û

Ê

·

Ê

ÊÊ

·

Û

·

ÊÊ

Ê

Ê··

Û·Û

·

ÛÛÛÛ

Û

Û

Û

Û

Û

Ê

Ê

Û

ÊÛ

ÊÊÊ

Û

ÊÊÊ

Ê

ÊÊ

Ê

ÛÛÛÊÊÊÊÊ

ÛÛ

Ê

ÊÊ

Ê

··

···

Û

Û

·

Û

ÛÛ

·Û

ÊÊÊÊ

Û

0 5 10 15 200

5

10

15

20

Ê

ÛÊÊÛ

·

Ê

ÊÊ

··

·Û

Û·

·

Û

Û

·

·

Ê

Ê

Ê

Ê

·

Û

·

Ê

·

·

Û

Ê

Ê·ÛÊ

·

·

Ê

ÛÊ

·Ê

Û·

·

Ê·

·Ê

Û

Û

·

ÊÛÊÛ

·Û

Ê

Û

Û

Ê

Ê

·

Ê

·

Û

Û

Ê

Ê

Ê

·

Ê

·

Ê

Ê

Ê

ÛÛ

·

Ê

Ê

Ê

·

·

Û

Ê

Û

Ê

·

Û

Ê

ÊÛ

Û

·ÛÛ·

ÛÛ

Ê

Ê

Û

·

·ÛÊÛ

Û

Ê

Ê

Ê

·

Û

Û

Tas

Tas

Tas

Configuration initiale Configuration après 10 000 pas

Page 14: Agents Réactifs

J-P Sansonnet ― Agents réactifs

14Patterns de fouragementIntelligence Collective

On considère une population d'agents constituée de fourmis. Une fourmi possède a priori un comportement erratique. Cependant en présence d'un champ de phéromones, une fourmi peut être attirée dans une direction privilégiée en fonction du gradient du champ.On appelle un tel comportement tropique.

La fonction RandEast simule une fourmi soumise à un tropisme Ouest → Est : la marche est aléatoire en vertical mais déterministe en horizontal, vers l'est. On affiche la marche tropique de 10 fourmis partant d'un même point.

Champ tropique

20 40 60 80 100

10

20

30

40

50

Cône de déflection

Page 15: Agents Réactifs

J-P Sansonnet ― Agents réactifs

15Champ de phéromonesIntelligence Collective

Les fourmis utilisent les odeurs à base de phéromones pour marquer leur déplacements et pour se diriger. En se déplaçant, elles déposent des phéromones qui leur servent plus tard pour revenir au nid. Au comportement erratique basique se superpose un comportement tropique phéromonal : une fourmi a tendance à aller là où il y a déjà eu un dépôt de phéromones.On constate que le champ tropique dépend des dépôts de phéromones qui eux-mêmes dépendent des déplacements qui dépendent du champ. On a donc affaire à un processus dynamique avec une boucle rétroactive. Le champ tropique n'est plus statique comme dans RandEast mais il est dynamique. Pour le modéliser, on utilise une variable qui représente la quantité ph(x,t) de phéromones au temps t d'un point x de l'arène où se déplacent les fourmis : ce sera classiquement un tableau à deux dimensions.

SimulationOn se donne un champ où les dépôts phéromonaux sont disposés régulièrement sur l'arène pour former un "échiquier" de tropismes Les fourmis suivent les "vallées" du champ (qui n'est pas tout a fait symétrique). Le résultat dépendant peu du choix du point de départ.

Tropisme

Tropisme

Pôle de Phéromones

0 20 40 60 80 1000

10

20

30

40

50

20 40 60 80 100

10

20

30

40

50

Page 16: Agents Réactifs

J-P Sansonnet ― Agents réactifs

16Champ phéromonal dynamiqueIntelligence Collective

On rend le champ phéromonal dynamique en le faisant construire pas àpas par les fourmis elles-mêmes : elles déposent à chaque pas une unitéde phéromone. La fonction PhWalk effectue une marche de n pas pour une fourmi partant du point {i0, j0}.On adoucit la fonction de choix RandeastPh avec un poids de libertésmooth = 0.25 qui fait que les fourmis ne ‘collent’ pas aussitôt au chemin précédent. On fait partir 50 fourmis à la queue leu leu du point {1, NC/2} qui correspond au nid.On trace les chemins en grisé en fonction du taux de phéromones déposées : on voit que dans le cône d'exploration il y a une trace noire (donc très odorante) qui se détache : c'est le chemin qui ramènera les fourmis au nid. 0 20 40 60 80 100

0

10

20

30

40

50

Ligne de renforcement : chemin de retour vers le nid

nid

Cône de fouragement

1020

30

40

50

2040

6080

100

010203040

1020

30

40

50

010203040

Cône de fouragement

Ligne de renforcement : chemin de retour vers le nid

nid

On visualise mieux le fait que les fourmis empruntent souvent le même chemin grâce à la fonction ListDensityPlot qui permet de montrer oùsont déposées les phéromones sur le champ Tph.

Page 17: Agents Réactifs

J-P Sansonnet ― Agents réactifs

17Influence de la structureIntelligence Collective

Nous voulons modéliser le comportement d'une population d'agents particuliers : des joueurs de football qui se déplacent sur un terrain de jeu, afin de simuler le phénomène d'usure de la pelouse. On considère que les joueurs traversent le terrain selon des droites tirées au hasard et l'usent au passage.

On construit la fonction de service RandDroite qui tire au sort une droite qui va traverser un terrain de dimensions {nl, nc}On peut tracer ce qui se passe sur le terrain pour 100 droites

2.5 5 7.5 10 12.5 15 17.5 20

2

4

6

8

10

Terrain de foot Modèle simplifié de simulation

Page 18: Agents Réactifs

J-P Sansonnet ― Agents réactifs

18Structure bornée ou toriqueIntelligence Collective

Pour vérifier que l'usure du terrain n'est pas uniforme, on construit une fonction MakeArea qui prend un terrain de dimensions {nl, nc} et qui l'use par k droites dont les points sont tirés au sort dans le domaine {nl, nc}.Chaque fois qu'un footballeur parcourt sa droite, il use le terrain t en ajoutant une unité là où il passe. Voila ce que cela donne pour un Arène carrée {30,30} au bout de 4000 passages :

Inversement, nous allons considérer que le terrain n'a pas de bord, i.e. pas de lignes de touche. En termes de topologie, un terrain sans lignes de touche est équivalent à un tore (une bouée). Nous modélisons ceci en "rebouclant" les droites tirées au sort sur le terrain : si on sort à gauche (car on a le droit puisqu'il n'y a pas de ligne de touche !) on re-rentre immédiatement de manière symétrique à droite. La fonction MakeToreeffectue ce mode particulier en utilisant un Modulo.Pour les mêmes conditions, l'usure est manifestement équirépartie sur la surface du terrain.

0 5 10 15 20 25 300

5

10

15

20

25

30

0 5 10 15 20 25 300

5

10

15

20

25

30

Avec les conventions prises l'usure apparaît en foncé. Il y a un effet marqué au centre.

Structure Bornée (touche) Structure Torique (pas de touche)

Page 19: Agents Réactifs

J-P Sansonnet ― Agents réactifs

19Effets de biaisageIntelligence Collective

Ces deux expériences montrent que l'on peut obtenir des effets morphogénétiques macroscopiques à partir d'un processus stochastique local très légèrement biaisé : le temps et l'itérateur font alors émerger le biais pour lui ‘donner forme’.

Nous donnons ci-dessous la marche aléatoire d'un agent qui part du centre d'une arène 100 x 100 et effectue 3000 pas aléatoires

Nous donnons ci-dessous la marche aléatoire d'un agent qui part du bord d'une arène 100 x 200 et effectue 3000 pas aléatoires à ceci près que nous avons introduit un biais d'environ 1/36ème (4%) dans la direction EST (i+1). Cela modélise en quelque sorte la probabilité de gain de la banque au jeu de la Roulette : une des 36 cases de la roue est dédiée à la banque (qui, elle, ne mise pas).On reprend la marche aléatoire pour 3000 pas. On voit qu'avec du temps, la banque gagne inexorablement.

20 40 60 80 100

20

40

60

80

100

Départ

25 50 75 100 125 150 175 200

20

40

60

80

100

Départ

Page 20: Agents Réactifs

J-P Sansonnet ― Agents réactifs

20

Introduction

Intelligence Collective

Automates Cellulaires

Automates à une Dimension

Le Jeu de la vie

Automate de Langton

Algorithmes Génétiques

Page 21: Agents Réactifs

J-P Sansonnet ― Agents réactifs

21Espace substrat des étatsAutomates Cellulaires

Les automates cellulaires ont pour caractéristique de posséder un espace substrat des états qui est muni d'une géométrie. Souvent, cette géométrie est de type euclidien (on dit aussi Manhattan) ; on travaille dans un tableau fini, à N dimensions :

- N = 1 : on a un vecteur,- N = 2 : on a une matrice,- etc.

On peut imaginer d'autres types de réseaux que le réseau “carré” :

Certains types de voisinages sont équivalents à des réseaux carrés ou bien présentent des dualités entre-eux.

Espace à voisinage hexagonal Espace à voisinage triangulaire

Espace Euclidien à 1 dimension

Espace Euclidien à 2 dimensions

Espace Euclidien à 3 dimensions

Page 22: Agents Réactifs

J-P Sansonnet ― Agents réactifs

22Voisinages de baseAutomates Cellulaires

Si on considère un espace euclidien à deux dimensions, i.e. une simple matrice, on eput définir plusieurs types de voisinages pour un point xi,j de la matrice :— des voisinages d'ordre 1 : les cases à une distance de d = 1 d'un point quelconque ,— des voisinages d'ordre k > 1 : toutes les cases à une distance d ≤ k d'un point quelconque xi,j,Pour un voisinage d'ordre 1 on considère généralement trois types de schémas classiques :

Xi,jXi,jXi,j

N

E

S

W

Voisinage NEWSou de Von Neumann

Voisinage en croix Voisinage de Moore

Le voisinage de Moore est l'union du voisinage NEWS(pour North, East, West, South) et du voisinage en croix.

Page 23: Agents Réactifs

J-P Sansonnet ― Agents réactifs

23Espace euclidien toriqueAutomates Cellulaires

Le problème principal de l’espace euclidien en grille N-Dimensionnelleest qu’il est borné : les bords provoquent alors des singularités (les lois de simulation ne sont pas les mêmes dans les cases du milieu et dans les cases du bord) qui compliquent singulièrement la programmation (test systématique des bords). C’est pourquoi on préfère généralement dans les simulations utiliser des espaces « sans bords » dont un exemple est fourni par les espaces toriques :

1 1 1 1

2 2 2 2

3 3 3 3

4 4 4 4

k-cycle k-cycle k-cycle k-cycle

k-cycle

k-cycle

k-cycle

k-cycle

1 2 3 4 5 6 7 8

On reboucle le dernier sur le premier

Tore 2D composé de k-cycles de dimension k=41

5

37

8 2

6 4

Un espace euclidien à 1 dimension est équivalent à

un anneau

M. Trott

Deux façons de visualiser unespace euclidien torique 1D.

La bouteille de Klein est un exemple supplémentaire d’espace torique en 3D.

Page 24: Agents Réactifs

J-P Sansonnet ― Agents réactifs

24Processus de lissageAutomates Cellulaires

Le processus de lissage Smooth est un processus discret. Au temps n+1, il fait la moyenne des valeurs entre une case x et ses quatre voisines en mode NEWS au temps n. Cela correspond à la formule :

24

62

46

00.250.50.751

24

6

xi,j n + & =1

2 xi,j n +

xi−1,j−1 HnL + xi+1,j HnL + xi,j−1 HnL + xi,j+1 HnL4

H L J H L N

pic =

ijjjjjjjjjjjjjjjjj0 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 1 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 0

yzzzzzzzzzzzzzzzzz;ConditionInitiale

k {

7 itérations

Page 25: Agents Réactifs

J-P Sansonnet ― Agents réactifs

25Applications du lissageAutomates Cellulaires

Lissage d’une image simpleSi on prend une forme bien reconnaissable, le processus de lissage a tendance à réduire le contraste.

Lissage d’une forme aléatoireInversement si on prend une forme complètement aléatoire, le processus de lissage a tendance à contraster cette forme c’est-à-dire tendre vers une forme fixe (ceci non pas en nominal mais en termes de premier ordre c’est-à-dire de la dérivée). La fonction MathematicaDensityPlot affiche des images en « recadrage dérivatif » ce qui permet de visualiser la forme émergente :

Condition initiale Condition

initiale : random

Dilution de la forme

Emergence de la forme

Page 26: Agents Réactifs

J-P Sansonnet ― Agents réactifs

26Simulation sociale (1)Automates Cellulaires

On considère une zone urbaine vierge où l'on installe deux groupes de population présentant une différence quelconque : un groupe est dit clair et l'autre foncé. Les deux groupes sont mélangés au départ. On considère que les habitants ont le comportement suivant selon la nature de leur voisinage immédiat

– Si leur voisinage leur ressemble, ils restent,– Si ils n'ont pas assez de voisins du même groupe, ils déménagent

un peu plus loin, là où il y a de la place.

En pratique, on considère une grille où le voisinage d'un habitant est celui de Moore. Le seuil de mobilité est déterminé par un paramètre p, tel que si le nombre de voisins de même groupe n < p alors l'habitant déménage vers une case voisine libre (si il y en a). Le nombre de voisins de Moore étant de 9 et la distribution initiale étant aléatoire entre : les cases vides (état 0) le groupe clair (état 1) et le groupe foncé (état 2), le nombre de voisins du même groupe n que peut espérer un habitant est un paramètre de la simulation p (par exemple, on peut poser : p = 3). Si ce seuil p n'est pas atteint, l’agent migre.L’objectif de la simulation est de voir si les agents distribués au départ de manière aléatoire ont tendance à se regrouper en quartiers monocolore ou non.

4 états :

HeureuxMalheureux

Les agents peuvent bouger sur le substrat

Page 27: Agents Réactifs

J-P Sansonnet ― Agents réactifs

27Simulation sociale (2)Automates Cellulaires

Expérimentation : On fait varier le paramètre de simulation selon trois valeurs p = 2, 3, 4 pour voir si il y a un effet statistique visible.

T0+50

Condition initiale : distribution aléatoire

T0

0 5 10 15 20 25 300

5

10

15

20

P = 3 : il y a plus d’agglomération0 5 10 15 20 25 30

0

5

10

15

20

T0+50T0+50

0 5 10 15 20 25 300

5

10

15

20

0 5 10 15 20 25 300

5

10

15

20

P = 2 : il y a un peu d’agglomération P = 4 : il n’y a pas d’agglomération

Page 28: Agents Réactifs

J-P Sansonnet ― Agents réactifs

28

Introduction

Intelligence Collective

Automates Cellulaires

Automates à une Dimension

Le Jeu de la vie

Automate de Langton

Algorithmes Génétiques

Page 29: Agents Réactifs

J-P Sansonnet ― Agents réactifs

29Automates à une dimensionAutomates à une dimension

Un automate linéaire ou à une dimension est composé d'une structure spatiale à une dimension (un vecteur) dont chaque élément possède un état local et d'une fonction de transition locale. Le processus lié àl'automate consiste à itérer la fonction de transition locale en parallèle sur tout le vecteur d'états.Dans un automate à une dimension, la structure de voisinage est très simple : chaque cellule possède un voisin de gauche et un voisin de droite. Concernant les bords, on peut prendre trois décisions :

a) Considérer que le vecteur est infini : il n'y a donc pas de bords,b) Considérer que le vecteur est de taille finie mais qu'il est organisé

en anneau : la dernière case est voisine de la première ; il n'y a donc pas de bord,

c) Considérer le vecteur tel quel et gérer les singularités aux bords.

Pas de bord

b) Automate fini à une dimension structuré en anneau

Case singulière :un seul voisin

Case singulière :un seul voisin

Si(t)

Etat local

Si(t+1)Si(t-1)… …Si(t)

Etat localc) Automate à une dimension fini.

a) Automate à une dimension à nombre d’états infini

Page 30: Agents Réactifs

J-P Sansonnet ― Agents réactifs

30Automates linéaires booléensAutomates à une dimension

Les automates linéaires booléens ont des états locaux ∈{0,1}. La fonction de transition locale prend trois entrées :– la valeur locale,– la valeur du voisin de gauche,– la valeur du voisin de droite.

Une configuration est donc représentée par un triplet de bits. Il existe donc 23 = 8 configurations d'entrée différentes. Une fonction de transition est définie en spécifiant pour chacune de ces 8 entrées l'état résultant ∈{0,1}. Il y a donc 28 combinaisons qui définissent 256 fonctions de transition locales possibles.

Case singulière :un seul voisin

Case singulière :un seul voisin

Si(t) Si(t+1)Si(t-1)

Voisin DroitVoisin Gauche{0,1} {0,1}){0,1}

Entrées : 000 001 010 011 100 101 110 111

Sorties : 0 1 0 1 1 0 1 0 La fonction n° 90

La fonction n° 90 soit « 010111010 » en binaire

Page 31: Agents Réactifs

J-P Sansonnet ― Agents réactifs

31Evolution à partir d'une configuration aléatoireAutomates à une dimension

On construit un automate linéaire L16 de 16 cases ayant pour condition initiale des valeurs aléatoires ∈ {0,1}.

L16 = Array[Rand[{0,1}]&,{16}]

⇒ {1,1,1,0,1,1,0,0,0,0,1,0,0,1,0,0}

Les fonctions de transition locales possibles sont numérotés de 0 à 255 i.e. vont de la configuration de trois entrées 00010= (0,0,0,0,0,0,0,0)2 à la configuration 25510 = (1,1,1,1,1,1,1,1)2. Pour obtenir la configuration n°i on peut utiliser l'opérateur :

F90 = IntegerDigits[i=90, base=2, longueur=8]

⇒ {0,1,0,1,1,0,1,0}

Une fois la fonction choisie et construite, il suffit d'itérer le processus LinearStep n fois sur la condition initiale L16. Comme il s'agit d'un processus discret, on peut utiliser l’opérateur NestList. On obtient une matrice M de n+1 lignes où la ligne k représente l'état de l'automate àl'étape k :

M16 = NestList[LinearStep[#,f90]&, L16, 10];

TableForm[M16,TableSpacing →{0,0}]

L161110110000100100

1010111001011011100010111001101111010010111110110100110010001010101111110101000000100001000010000101001010010100100011000110001111011110111101110101001010010100

Etape1Etape2…

Conditioninitiale : t0

Déroulement de la trajectoire du

processus

L100

Tra

ject

oire

t=0

t=100

Page 32: Agents Réactifs

J-P Sansonnet ― Agents réactifs

32Les trajectoires sont circulairesAutomates à une dimension

L'automate linéaire ayant un nombre de cases fini : n ∈ N, le nombre total d'états est lui aussi fini et égal à 2n. Il s'ensuit que la trajectoire du processus doit être circulaire : au bout de k ≤ 2n étapes, on doit repasser par une configuration déjà rencontrée.On utilise un automate de 8 cases qui possède donc 28 configurations initiales possibles. Pour chaque configuration initiale, on calcule la longueur de la trajectoire jusqu'à ce qu'on repasse par un état déjà rencontré.On voit que la longueur de trajectoire la plus longue (sans repasser par un état déjà parcouru) est de k =10 étapes, ce qui est très inférieur à la borne théorique : 28 = 256.

50 100 150 200 250

2

4

6

8

10

Fonctions

Longueurs

La fonction n° 52 reboucle sur l’état

initial au bout de deux étapes

seulement

Page 33: Agents Réactifs

J-P Sansonnet ― Agents réactifs

33CI fixes ― Fonctions f0 .. f127Automates à une dimension

Fonctions f64 à f127

f64

f127

Un automate

Expérimentation 1 : conditions initiales identiques pour tous les automates– Le nombre de cases est de 8. cela permet de choisir 28 = 256 conditions initiales possibles,– La condition initiale choisie est une séquence alternée de 0 et de 1 : {0, 1, 0, 1, 0, 1, 0, 1},– Le nombre de pas d’exécution est de 10.

Fonctions f0 à f63

f0

f63

10steps

Page 34: Agents Réactifs

J-P Sansonnet ― Agents réactifs

34CI fixes ― Fonctions f128 .. f255Automates à une dimension

On constate que chaque fonction réagit différemment aux conditions initiales : cela donne un certain nombre de patterns caractéristiques de ces fonctions. Bien sûr, il y a des symétries et certaines fonctions ont des patterns identiques ; cela est renforcé par la symétrie de la CI que nous avons choisie.

Fonctions f192 à f255

f192

f255Fonctions f128 à f191 f191

f128

Page 35: Agents Réactifs

J-P Sansonnet ― Agents réactifs

35CI variables : f250 et f192Automates à une dimension

Expérimentation 2 : toutes les conditions initiales possibles sont explorées– Le nombre de cases est de 8. cela permet de choisir 28 = 256 conditions initiales possibles,,– On construit les 256 automates correspondant aux 256 conditions initiales,– Le nombre de pas d’exécution est de 10,– On exécute cela pour seulement quelques fonctions arbitrairement choisies : f250, f192, f80, f35.

f250 f192

Page 36: Agents Réactifs

J-P Sansonnet ― Agents réactifs

36CI variables : f80 et f35Automates à une dimension

On constate que pour la très grande majorité des conditions initiales (considérées sur un espace de 8 cases seulement !), les trajectoires exhibent bien qualitativement la même forme. On peut donc dire que chaque fonction de transition a son “caractère” ; certaines fonctions ont plus de caractère que d'autres, au sens où :

– elles exhibent une forme très reconnaissable qui caractérise la fonction,– elles sont quasi-indépendantes des CIs.

f80 f35

Page 37: Agents Réactifs

J-P Sansonnet ― Agents réactifs

37Analyse des expérimentationsAutomates à une dimension

Espace des phases pour un automate à 8 cases

Considérons un automate à une dimension possédant 8 cases rebouclées, à 3 entrées. L'espace des phases global est l'ensemble de tous les états possibles. Il est fonction de :— la taille de l'automate : 8 cases ⇒ 256 états,— le nombre max d'itérations non circulaires : 256,— que multiplie le nombre de fonction à 3 entrées : 256.

Le nombre total de bits nécessaires à l'exploration exhaustive de ce processus est de 256 x 256 x 256 bits = 16 Méga bits, ce qui peut loger en mémoire d'un ordinateur moderne.

Analyse des comportements observés

Faute d'avoir pu effectuer l'exploration exhaustive de l'espace des phase global associé à un automate à une dimension possédant 8 cases rebouclées, et une fonction de transition locale à 3 entrées, nous avons effectué deux types d'expérimentations :— faire varier les fonctions de transition pour un CI fixée,— faire varier les CIs pour une fonction de transition fixée.

► On observe que la variation des fonctions de transition produit des comportements :— assez caractéristiques (ayant une forme décrivable),— classables en catégories (comportement quasi équivalents).

► On observe que la variation des CIs produit des comportements relativement homogènes, qui semblent caractéristiques de la fonction de transition fixée. Il ressort de tout ceci que les comportements observés sont plus le fait des fonctions de transition que des CIs choisies.

Espace globaldes phases

256 étapes maximum

256

fonc

tions

de

trans

ition

56 ét

ats po

ssibl

es

2

Page 38: Agents Réactifs

J-P Sansonnet ― Agents réactifs

38Interprétation en termes SociobiologiquesAutomates à une dimension

Nous pouvons essayer de nous servir de ce phénomène pour en tirer une interprétation portant sur des créatures vivantes:– possédant un génotype : l'inné,– plongées dans une culture, dans un environnement : l'acquis.

InterprétationsDeux interprétations complètement opposées de ce schéma sont possibles :

► Interprétation 1 : fonction = gènes, CIs = environnementOn considère que la fonction de transition est le "caractère" de la créature et que les CIs correspondent aux conditions contingentes de sa naissance. On en conclut que le caractère l'emporte sur l'environnement de naissance, i.e. que l'inné est plus fort que l'acquis.

► Interprétation 2 : fonction = environnement, CIs = gènesOn considère que la fonction de transition est le moteur environnemental (culturel) qui va façonner la créature à partir d'une donnée initiale : son phénotype propre, issu de ses gènes qui correspondent aux CIs. On en conclut que le modelage environnemental l'emporte sur le phénotype propre, i.e. que l'acquis est plus fort que l'inné.

Moralité : « le modèle est neutre ! »

Fonction de transition : fi

CIsPhénotype

observé

Page 39: Agents Réactifs

J-P Sansonnet ― Agents réactifs

39

Introduction

Intelligence Collective

Automates Cellulaires

Automates à une Dimension

Le Jeu de la vie

Automate de Langton

Algorithmes Génétiques

Page 40: Agents Réactifs

J-P Sansonnet ― Agents réactifs

40Principe du jeu de la vieLe jeu de la vie

En 1974, J. Conway a proposé un automate cellulaire dont le fonctionnement est très simple mais dont la richesse des comportements et la puissance de calcul formel étonnent encore.Le jeu de la Vie fonctionne sur une matrice booléenne (les valeurs d'une case ∈ {0,1}) rebouclée en tore à deux dimensions (il n'y a pas de bords). On part d'une configuration initiale aléatoire ou bien ad hoc et on itére le processus suivant :

Soit si,j(t) l'état de la case {i,j} à t.On calcule le nombre v de voisins à 1 dans le voisinage de Moore (8 voisins) de celle case. L'état si,j(t+1) est définit par :- si v = 2 : si,j(t),- si v = 3 : 1- sinon : 0.

Intuitivement, dans une vision PPSN (Parallel Problem Solving fromNature), cela correspond en fait à la modélisation du comportement naturel suivant :

–Si une cellule est à 0 et qu'elle est entourée de 3 voisins elle “naît”,– Si une cellule est à 1, elle reste à 1 si elle possède 2 ou 3 voisins à

1. Dans les autres cas, elle “meurt” d'isolement, (0 voisin à 1) ou d'étouffement (4, 5, 6, 7, 8 voisins à 1).

ikjjjjjjjjjjjjjjj0 0 0 0 0 00 0 1 0 0 00 0 1 1 1 00 1 1 1 1 00 0 0 0 1 00 0 0 0 0 0

y{zzzzzzzzzzzzzzz

Zone aléatoire

La fonction de service MakeRandLife construit une matrice initialisée avec des valeurs {0,1} choisies aléatoirement. Elle laisse tout autour de la matrice, une bordure d'épaisseur une-case remplie de valeurs 0.

MakeRandLife[6,6]

Dans notre implémentation, cette bordure permet de ne pas tenir compte des bords ce qui simplifie et accélère la fonction LifeStep qui effectue une transition du processus sur une matrice m.

Bordure de zéros

Page 41: Agents Réactifs

J-P Sansonnet ― Agents réactifs

41Exemples de trajectoiresLe jeu de la vie

On exécute 50 étapes à partir d’un situation initiale tirée au hasard. On voit que au bout d’un certain temps (à t32) , le système converge vers une forme fixe qui dès lors se répétera à l’infini. Cette propriété est appelée un point fixe, c’est-à-dire un état S tel que :

S(t+1) == F[S(t)]où F est la fonction de transition.

LifeTable[MakeRandLife[11,11], 49, 10]

Pattern point fixe

Page 42: Agents Réactifs

J-P Sansonnet ― Agents réactifs

42Patterns typiquesLe jeu de la vie

Points fixesOn étudie les points fixes pour eux-mêmes; Par exemple, ce pattern évolue vers un état stable : un carré

Ce pattern évolue aussi vers un état stable : rond ou nid d'abeille

Clignotants : Cycles de période 2Ce pattern évolue vers un cycle de période 2. On appelle ce type de patterns des clignotants

Gliders : quasi cyclesUn glider est un pattern qui a et n'a pas de période. En fait sa forme a une période fixe (n=4 dans l’exemple) mais elle se trouve translatée d'une case à droite et d'une case en bas. Ce déplacement linéaire en diagonale fait que ce pattern, placé sur une matrice infinie, possède une période infinie.

Nid d’abeille

Pattern identiquemais décalé de {1,1}

LifeTable Bikjjjjjjjjjjjjjj0 0 0 0 0 00 1 1 0 0 00 1 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0

y{zzzzzzzzzzzzzz, 4, 5F

LifeTable Bikjjjjjjjjjjjjjj0 0 0 0 0 00 0 0 0 0 00 0 0 1 0 00 1 1 1 0 00 0 0 0 0 00 0 0 0 0 0

y{zzzzzzzzzzzzzz, 4, 5F

LifeTable Bikjjjjjjjjjjjjjj0 0 0 0 0 00 0 0 1 0 00 0 1 0 1 00 0 0 0 0 00 0 0 1 0 00 0 0 0 0 0

y{zzzzzzzzzzzzzz, 5, 6F

Page 43: Agents Réactifs

J-P Sansonnet ― Agents réactifs

43Canon à GlidersLe jeu de la vie

t0

t39

t30Gliderenvoyé

t1 …On peut construire des configurations qui ont des comportements non triviaux : par exemple le "canon à gliders” ci-dessous est une configuration qui possède une quasi-période longue de 30 cycles et qui produit un glider. Ce glider se déplace et peut être vu comme "éjecté" du canon

On constate que la configuration 30 (encadrée) est égale à la configuration de départ à t0 à ceci près qu'elle a émis deux scories (deux nids d'abeilles fixes) et un glider que l'on voit planer vers le nord-est (configurations 31 à 39 ... etc.) alors que le canon reprend une phase de 30 cycles qui produira un nouveau glider.

GliderGun =

i

k

jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

1 1 0 0 0 1 1 0 00 1 1 1 1 1 0 0 00 1 1 0 1 1 0 0 00 1 1 0 1 1 0 0 00 0 1 1 1 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 1 1 1 0 00 0 0 0 1 1 1 0 00 0 0 1 0 0 0 1 00 0 1 0 0 0 0 0 10 0 0 1 0 0 0 1 00 0 0 0 1 1 1 0 0

y

{

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz;

Page 44: Agents Réactifs

J-P Sansonnet ― Agents réactifs

44EaterLe jeu de la vie

La configuration connue sous le nom de « Eater » (mangeur) possède une période 15 Cycles. Elle peut entrer en collision avec un glider et le détruire sans être pour autant elle-même perturbée.

La configuration Eater possède une période de 15 cycles. Elle passe par 14 formes différentes très caractéristiques :

Eater =

i

k

jjjjjjjjjjjjjjjjjjjjjjjjjjjjj

0 1 00 1 01 0 10 1 00 1 00 1 00 1 01 0 10 1 00 1 0

y

{

zzzzzzzzzzzzzzzzzzzzzzzzzzzzz;

Page 45: Agents Réactifs

J-P Sansonnet ― Agents réactifs

45Eaters eat glidersLe jeu de la vie

Séquence de quasi périodes de 4 cycles incluant une translation

diagonale {1,1}

Glider éjecté tous les 30 pas

Cycle : 30 pas

Le eater a « mangé » le glider et reprend son cycle normal.

On construit une situation (bien synchronisée !) où le glider éjectéarrive près d'un eater dans la position relative suivante :

Eater

Glider Gun

Page 46: Agents Réactifs

J-P Sansonnet ― Agents réactifs

46

Introduction

Intelligence Collective

Automates Cellulaires

Automates à une Dimension

Le Jeu de la vie

Automate de Langton

Algorithmes Génétiques

Page 47: Agents Réactifs

J-P Sansonnet ― Agents réactifs

47Automates autoreproducteursLangton

Automate autoreproducteur de John Von NeumannAu début des années 50, John Von Neumann a étudié le problème de l'autoreproduction des automates cellulaires. Il s'agit de construire un automate cellulaire capable de reproduire la forme initiale qu'il possède sur sa matrice cellulaire. Cette forme initiale est formée de l'image des états internes de l'automate. John Von Neumann a découvert un automate à 29 états qui possède cette propriété mais sa table de transition est d'une complexitéextrême.

Automate autoreproducteur de LangtonEn 1984, C. Langton a proposé un automate cellulaire capable de se reproduire et ne possédant que 8 états internes : 0, 1, 2, 3, 4, 5, 7. Dans les années 80, cet automate est devenu le fer de lance de l'école « Artificial Life » auquel il a servi de paradigme (depuis, Byl a proposé une version ayant moins d'états mais elle est moins ‘lisible’).L'automate de Langton est un système dynamique discret : Le temps se déroule en étapes énumérables : à chaque nouvelle étape n+1 correspond une nouvelle matrice M[n+1] = LF[M[n]] où LF est la fonction de transition spécifique à l'automate de Langton.

Forme initiale Forme autoreproduite

123

1

2 31

2 3

Au bout de quelques étapes …

Page 48: Agents Réactifs

J-P Sansonnet ― Agents réactifs

48Forme initiale de LangtonLangton

La forme initiale de l'automate de Langton est donnée par la matrice 10 x 15 d'états suivante :

Ce qui donne sous forme plus lisible, où les états ayant pour valeur 0 sont représentés par des ‘.’

On peut aussi représenter l’automate avec des états colorés ou encore exprimés en trois dimensions :

.22222222......217.14.142.....2.222222.2.....272....212.....212....212.....2.2....212.....272....212.....21222222122222.2.71.71.7111112.2222222222222.

Langton =

i

k

jjjjjjjjjjjjjjjjjjjjjjjjjjj

0 2 2 2 2 2 2 2 2 0 0 0 0 0 02 1 7 0 1 4 0 1 4 2 0 0 0 0 02 0 2 2 2 2 2 2 0 2 0 0 0 0 02 7 2 0 0 0 0 2 1 2 0 0 0 0 02 1 2 0 0 0 0 2 1 2 0 0 0 0 02 0 2 0 0 0 0 2 1 2 0 0 0 0 02 7 2 0 0 0 0 2 1 2 0 0 0 0 02 1 2 2 2 2 2 2 1 2 2 2 2 2 02 0 7 1 0 7 1 0 7 1 1 1 1 1 20 2 2 2 2 2 2 2 2 2 2 2 2 2 0

y

{

zzzzzzzzzzzzzzzzzzzzzzzzzzz;

0 5 10 15 20 25 300

2.5

5

7.5

10

12.5

15

1

2

7

4

0

510

1520

5

10

15

0246

510

1520

5

10

15

Page 49: Agents Réactifs

J-P Sansonnet ― Agents réactifs

49Fonction de transitionLangton

LangtonTable={(** 1 **) {07214,04421,07252,04321,07721,04221,07521,07512,06251,07212,07000,06212,07221,07621,03212,04212,11000,15100,11010,16212,11100,13221,16112,11110,12221,12120,12111,12210,13212,12100,15112,16000,15122,12211,12121,12001,26112,23202,25520,27000,34000,35102,34200,32010,42220,43220,63121,62000,61000,72220,75022,73202},(** 2 **) {02100,07002,01100,02001,06200,03202,07200,06002,02010,03001,01000,05220,15211,24002,24220,25120,22011,22201,27200,22010,27420,27222,26220,25200,24122,27221,25210,27206,27122,24203,22211,27220,27720,24221,21000,24201,24000,27201,22001,22020,22100,23020,23002,25020,26002,27120,24422,22120,22221,25021,26122,22210,23120,27722,22000,22220,25001,27022,26224,26221,25221,24202,27202,25024,22200,25502,25220,27002,27622,26202,32000,36200,54212,52020,57212,52120,52000,55021,57002,53002,52121,57202},(** 3 **) {06000,16022,27020,24200,31000,32001},(** 4 **){14112,14002,16402,14202,14122,14222,14322,14022,14212,14012,14232,54022},(** 5 **) {02120,05200,05212,07251,17252,15242,27205,27005,52100,52200,62121,62221,75202},(** 6 **) {12020,16202,23220,23200,23210,37000,43202},(** 7 **) {17212,13202,15422,17222,17022,16242,17002,17122,17012,15420,17232,17202,17026,17000,17112,25100,77000}};(** sinon 0 **)

La fonction de Transition de l'automate de langton, LangtonFunction, est de type classique : Pour un élément (t) de la matrice cellulaire à l'instant t, la valeur de cet élément à l'instant t+1 est calculé en fonction de la valeur v de cet élément à l'instant t et des valeurs des 4 voisins (voisinage NEWS) à l'instant t.

La table contient 5 entrées et une sortie :

LangtonTable = {

{liste des configurations (v,n,e,s,w) → état 1},

{liste des configurations (v,n,e,s,w) → état 2},...

{liste des configurations (v,n,e,s,w) → état 7}} (** sinon l'état est 0 par défaut **)

LangtonFunction[v, n, e, s, w]

V(t)

N

E

S

W V(t+1)

Page 50: Agents Réactifs

J-P Sansonnet ― Agents réactifs

50Processus de reproductionLangton

On donne les 8 premières étapes sous la forme textuelle : Au bout de 100 étapes, l’automate a fait pousser une nouvelle branche :

Une reproduction complète prend environ 150 étapes. On obtient deux formes égales, en rotation par rapport à la forme initiale qui donneront 2 nouvelles formes au bout de 150 nouvelles étapes etc.

0 5 10 15 20 25 300

2.55

7.510

12.515

0 5 10 15 20 25 300

2.55

7.510

12.51522222222217 14 1422 222222 2272 212212 2122 2 212272 212212222221222222 71 71 71111122222222222222

2222222327 14 14 221222222122 2 212272 212212 2122 2 2122722222272222221 71 71 7111122222222222222

222222222 14 14 122722222212212 2122 2 212272 212212 2722 222222 22222271 71 71 711122222222222222

22222222214 14 1122 22222212272 212212 2122 2 272272 2 2212222221222222 71 71 71 71122222222222222

2222222224 14 111221222222122 2 212272 272212 2 22 2 2122722222272222221 71 71 71 7122222222222222

222222223 14 111122422222212212 2722 2 2 2272 212212 2722 222222 22222271 71 71 71 722222222222222

22222222214 1111122 22222272242 2 2212 2122 2 272272 2 2212222221222222 71 71 71 71112222222222222

2222222224 111117221222222 22 2 212242 272212 2 22 2 21227222222722222221 71 71 71 711222222222222222

222222223 111117 22422222212212 2722 2 2 2242 212212 2722 222222 222222271 71 71 71 71222222222222222

t0 t1 t2

t3 t4 t5

t6 t7 t8

Page 51: Agents Réactifs

J-P Sansonnet ― Agents réactifs

51400 étapes de LangtonLangton

0 10 20 30 40 50 600

10

20

30

40

Page 52: Agents Réactifs

J-P Sansonnet ― Agents réactifs

52

Introduction

Intelligence Collective

Automates Cellulaires

Automates à une Dimension

Le Jeu de la vie

Automate de Langton

Algorithmes Génétiques

Page 53: Agents Réactifs

J-P Sansonnet ― Agents réactifs

53Problèmes de difficulté exponentielleAlgorithmes génétiques

126241207205040403203628803628800399168004790016006227020800871782912001307674368000209227898880003556874280960006402373705728000121645100408832000243290200817664000051090942171709440000112400072777760768000025852016738884976640000620448401733239439360000155112100433309859840000004032914611266056355840000001088886945041835216076800000030488834461171386050150400000088417619937397019545436160000002652528598121910586363084800000008222838654177922817725562880000000263130836933693530167218012160000000868331761881188649551819440128000000029523279903960414084761860964352000000010333147966386144929666651337523200000000

De nombreux problèmes possèdent des solutions simples du point de vue algorithmique mais, souvent, l'espace des solutions à explorer est une fonction exponentielle de la taille du problème.

Exemple : le Problème du Voyageur de Commerce (PVC)Ce problème, très classique,consiste à trouver le circuit de longueur minimale qui passe par N villes une fois et une seule.Explorer toutes la combinatoire des solutions est très simple, mais il faut calculer la mesure de (N-1) ! circuits. Voici comment évolue le nombre de circuits à mesurer. Pour N = 35 villes le nombre de circuits à explorer possède plus de 40 chiffres soit plus que le nombre d'atomes de l'Univers (?).

Les Heuristiques d'OptimisationLes algorithmes combinatoires construisent toutes les solutions possibles et les mesurent ; il suffit de prendre le maximum (ou le minimum selon les cas) pour produire la meilleure solution.

Lorsque l'espace des solutions croît de manière exponentielle, il n'est plus question de construire toutes les solutions. On a alors recours à des heuristiques. Une heuristique ne donne souvent qu'une solution approchée mais le temps de calcul reste raisonnable. On distingue trois types d'heuristiques :

– Les explorations combinatoires partielles : il s'agit de limiter autant que possible l'espace exploré, grâce à une connaissance spécifique du domaine qui permet d'élaguer la combinatoire,

– Les explorations de gradients : si le problème peut être exprimé sous la forme d'une fonction continue dérivable, alors on recherche les extréma de cette fonction en utilisant sa dérivée,

– Les explorations stochastiques : à partir d'une solution choisie au hasard, on essaye de l'améliorer en effectuant des modifications locales, elles mêmes choisies au hasard. Eventuellement, on introduit la notion de température pour contrôler le rôle du hasard au cours du processus (Recuit).

Problèmeà résoudre

Espace de toutes les solutions

Meilleuresolution

35 villes

Page 54: Agents Réactifs

J-P Sansonnet ― Agents réactifs

54Explorations évolutionistesAlgorithmes génétiques

Inconvénients des heuristiques classiques– Les explorations combinatoires partielles : il faut posséder des connaissances spécifiques du domaine,– Les explorations de gradients : le problème doit être exprimable sous forme d'une fonction continue

dérivable (existence d'un gradient) ; la descente du gradient peut se bloquer dans un minimum local,– Les explorations stochastiques : la convergence du processus d'amélioration dépend parfois trop de la

condition initiale tirée au sort et d'un bon réglage de paramètres comme la « température » (nécessité de ré-introduire des connaissances du domaine dans le paramétrage de la simulation).

Apport des Algorithmes évolutionistes (ou génétiques)– Un Algorithme génétique est une heuristique : on reprend les principes de base des explorations

stochastiques avec deux différences essentielles qui s'appuient sur une métaphore inspirée de la génétique des populations

– Population de configurations : on ne travaille plus sur une seule configuration que l'on tente d'améliorer mais sur une population de configurations qui peut ‘couvrir’ plus facilement le domaine à explorer,

– Croisement des configurations : à chaque étape du processus d'affinage, il est possible de ‘mixer’ entre elles les configurations ce qui ouvre une très grande diversité exploratoire.

Page 55: Agents Réactifs

J-P Sansonnet ― Agents réactifs

55Principe des algorithmes génétiquesAlgorithmes génétiques

Fonction de mesure (fit)

Mesure d’un individu grâce à une fonction de fit

Les individus sont alors re répartis dans la nouvelle population en proportion de leur performance relative aux autres

Processus itéré jusqu’àobtenir un individu qui

ait une bonne performance

On se donne une population initiale avec un

ADN tiré au sort

1. Phase de mesure

2. Phase de sélection

3. Phase de croisement

4. Phase de mutation

Page 56: Agents Réactifs

J-P Sansonnet ― Agents réactifs

56Génotype et phénotypeAlgorithmes génétiques

Définition d’un problème simplePour montrer le fonctionnement pas à pas d'un algorithme génétique, nous allons poser un problème très simple, dont nous pouvons connaître aisément la solution.

« trouver l'entier x ∈ [0, 31] tel que x2 soit le plus grand possible. »

L'intervalle sur lequel on cherche la solution est [0, 31]. De plus on veut un x entier. L'espace de toutes les configurations possibles est donc relativement limité :

Range[0,31]⇒ {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}

Le plot de la fonction x2 sur l'intervalle où on cherche la solution montre clairement que la solution est à droite de l'axe des x, soit la valeur : x* = 32.

Génotype et PhénotypePar analogie avec la nature (en particulier avec le rôle de l'ADN dans les cellules vivantes), on appellera génotype une chaîne qui décrit le potentiel morphogénétique d'un individu et phénotype le résultat, la mesure, de l'application de la fonction F àmaximiser.

Pour résoudre le problème de la maximisation de la fonction sur l'intervalle [0,31] avec un algorithme génétique, il nous faut exprimer une solution possible sous la forme d'un individu de la population :

Individu = Chaîne de bits

Pour notre problème, un individu est un entier ∈ [0, 31]. Comment le représenter par une chaîne ADN ? on choisit de le représenter par une chaîne de bits :

- La solution x = 0 sera représentée par le génotype : "00000",- La solution x = 1 sera représentée par le génotype : "00001",- ...,- La solution x = 31 sera représentée par le génotype : "11111".

Génotype :Chaîne d’ADN

Développement :application de la

fonction F à maximiserPhénotype :

Résultat de Fn(ADN)

Fn

5 10 15 20 25 30

200

400

600

800

Plot @x2, 8x, 0, 31<D;

x*

Page 57: Agents Réactifs

J-P Sansonnet ― Agents réactifs

57Population initialeAlgorithmes génétiques

La fonction AGMAke[n,k] construit une population de chaînes initiale contenant n individus de k bits. Les bits sont tirés au sort. Nous construisons une population initiale pop1 de n=8 individus (8 génotypes ou 8 chaînes, ou encore 8 listes) ayant chacun une longueur de k=5 bits. Nous pouvons la représenter par une matrice oùchaque ligne correspond au génotype d'un individu :pop1 = AGMake[8,5]

On peut évaluer la performance de chaque individu avec la fonction de mesure phénotypique fit :

lpi = fit/@pop1⇒ {529,676,49,49,169,289,9,64}

La performance globale pg de la population pop1 est la somme des performances individuelles :

pg = Plus@@lpi⇒ 1834

Représentation du génotype par une liste de bitsOn dispose d'un opérateur qui transforme un entier en une liste de bits de longueurfixée

IntegerDigits[entier=10,base=2,longueur=5]⇒ {0,1,0,1,0}

On peut représenter tous les entiers e [0, 31] au moyen d'une liste de 5 bits allant de {0,0,0,0,0} à {1,1,1,1,1}. On a alors tous les ADN possibles des individus du petit monde de la manière suivante :

IntegerDigits[#,2,5]& /@ Range[0,31]⇒{{0,0,0,0,0},{0,0,0,0,1},{0,0,0,1,0},{0,0,0,1,1},{0,0,1,0,0},{0,0,1,0,1},{0,0,1,1,0},{0,0,1,1,1},{0,1,0,0,0},{0,1,0,0,1},{0,1,0,1,0},{0,1,0,1,1},{0,1,1,0,0},{0,1,1,0,1},{0,1,1,1,0},{0,1,1,1,1},{1,0,0,0,0},{1,0,0,0,1},{1,0,0,1,0},{1,0,0,1,1},{1,0,1,0,0},{1,0,1,0,1},{1,0,1,1,0},{1,0,1,1,1},{1,1,0,0,0},{1,1,0,0,1},{1,1,0,1,0},{1,1,0,1,1},{1,1,1,0,0},{1,1,1,0,1},{1,1,1,1,0},{1,1,1,1,1}}

Mesure de la performance d’un individu : fitInversement, à partir d'un génotype, exprimé sous forme d'une liste de bits, on peut reconstruire un entier grâce à l'opérateur FromDigits[valeur, base] puis calculer son carré. On définit ainsi la fonction de mesure phénotypique fit :

fit[s_]:=With[{x=FromDigits[s,2]},x2]

Appliquée à un individu quelconque de la population (par exemple : {0,1,0,1,1}), fit donne la mesure de sa performance par rapport à notre problème sous forme d’un entier :fit[{0,1,0,1,1}]⇒ 121

jjjjjjjjjjjjjjjjjjjj1 0 1 1 11 1 0 1 00 0 1 1 10 0 1 1 10 1 1 0 11 0 0 0 10 0 0 1 10 1 0 0 0

yzzzzzzzzzzzzzzzzzzzzz

ADNiUn individu

kj

{Population initiale : pop1

Page 58: Agents Réactifs

J-P Sansonnet ― Agents réactifs

58Phase de sélection-reproductionAlgorithmes génétiques

Chaque individu peut être affecté d'un coefficient entre 0 et 1 selon sa participation à la performance globale pg :

lc = N[lpi/pg]

⇒ {0.288441,0.368593,0.0267176,0.0267176,0.0921483,0.157579,0.00490731,0.0348964}

La liste des coefficients individuels lc est une distribution de probabilitécar sa somme vaut 1.

Plus@@lc

⇒ 1.

La phase de sélection-reproduction produit une nouvelle population pop2 où chaque ancien individu va se reproduire avec une probabilitédéfinie par son coefficient de performance, i.e. selon la distribution de probabilités lc. On utilise pour cela l'opérateur RandomDistribution [liste de probabilité] qui renvoie les indices des éléments tirés au sort avec un poids correspondant à la liste de probabilités.

0.288441

0.368593

0.0267176

0.0267176

0.0921483

0.157579

0.00490731

0.0348964

5/8

1/8

i

kjjjjjjjjjjjjjjjjjjjjj1 0 1 1 11 1 0 1 00 0 1 1 10 0 1 1 10 1 1 0 11 0 0 0 10 0 0 1 10 1 0 0 0

y

{zzzzzzzzzzzzzzzzzzzzz

ijjjjjjjjjjjjjjjjjjjjj1 1 0 1 01 0 1 1 11 1 0 1 01 1 0 1 01 1 0 1 01 0 1 1 11 0 0 0 11 1 0 1 0

yzzzzzzzzzzzzzzzzzzzzz

Mesure

pop1 2/8

pop2

kReproduction différentielle

{

Page 59: Agents Réactifs

J-P Sansonnet ― Agents réactifs

59Phase de Cross overAlgorithmes génétiques

ijjjjjjjjjjjjjjjjjjjjj1 1 0 1 01 0 1 1 11 1 0 1 01 1 0 1 01 1 0 1 01 0 1 1 11 0 0 0 11 1 0 1 0

yzzzzzzzzzzzzzzzzzzzzzk {

La phase de croisement (ou Cross Over) consiste à mélanger les solutions qui ont été sélectionnée lors de la phase précédente. La procédure de mélange classique se fait en « échangeant deux brins d'ADN ».

On a deux phases :– Il faut d’abord tirer au sort pour chaque couple un point de coupure,– Ensuite on échange les deux sous brins d’ADN à gauche du point de coupure.

Dans notre implémentation on ne tire pas les couples au sort, on se contente de partitionner la population en couples successifs (il faut que le nombre d’individus de la population initiale soit un pair) puis on croise 1 avec 2, puis 3 avec 4 puis 5 avec 6 enfin 7 et 8. Le hasard n'est pas nécessaire.

pop2idem

1. Tirage au sort des points de coupure 2. Inversion des segments d’ADN

ijjjjjjjjjjjjjjjjjjjjjj1 1 0 1 11 0 1 1 01 1 0 1 01 1 0 1 01 1 0 1 11 0 1 1 01 0 0 1 01 1 0 0 1

yzzzzzzzzzzzzzzzzzzzzzzk {

Page 60: Agents Réactifs

J-P Sansonnet ― Agents réactifs

60Visualisation d’une évolution

Nous avons réuni toutes ses procédures en un seul algorithme AGRun qui permet de visualiser le comportement de la population pendant que le processus se déroule. On l'applique à la population pop1 définie plus haut avec la fonction de mesure phénotypique fit :

Par défaut, AGRun exécute 10 étapes d’évolution. L'option AGView →AGShowBits permet d'afficher les matrices de bits successives (les carrés noirs sont des 1 et les carrés blancs des 0). Le premier dessin est la population initiale (tirée au sort) et le dernier dessin montre l'évolution de la performance moyenne de la population (courbe rouge en bas) et l'évolution de la performance du meilleur élément de la population (courbe bleue en haut). Les traits verticaux sont les position de Cross Over et les points indiquent les mutations.On constate que la performance du meilleur élément augmente ainsi que la performance moyenne de la population. Cela est dû au fait que le génotype du meilleur envahit la population (cela se remarque sur les dessins par l'homogénéisation des patterns). 2 4 6 8 10

200400600800

AGRun[pop1, fit, AGView → AGShowBits]

pop1

Performance moyenne de la population

Performance du meilleur individu

t1 t2 t3 …

MutationAlgorithmes génétiques

Page 61: Agents Réactifs

J-P Sansonnet ― Agents réactifs

61Histogramme de la populationAlgorithmes génétiques

Par défaut, AGRun montre l'évolution de la population sous la forme d'histogramme. Il existe aussi un autre mode d’affichage où les dessins montrent selon l'axe x le domaine total des configurations possibles soit x ∈ [0, 31] et affichent, pour chaque x, une ligne verticale dont la longueur indique combien il y a dans la population courante d'individus dont le phénotype est égal à x. (les points indiquent des mutations).On constate qu'au départ (en haut à gauche), les individus sont équirépartis par tirage au sort sur le domaine global des configurations possibles. Peu à peu, les individus situés à droite l'emportent et l'ensemble de la population se déplace vers l'optimum absolu : x*=32.

5 10 15 20200400600800

Optimum

initiale t1 t2 t3 …

t22AGRun[AGMake[16,5],fit, AGCycles → 22, AGViewSlicing → 6]

Page 62: Agents Réactifs

J-P Sansonnet ― Agents réactifs

62Mauvaise populationAlgorithmes génétiques

2 4 6 8 10200400600800

Blocage

La meilleure façon de construire un mauvais tirage au sort est encore de se le donner directement. La population badpop ci-dessous ne possède pas d'individus situés dans le demi-domaine droit de l'espace des configurations

Dans les deux cas d’expérimentation le processus se bloque dans un minimum local : x* = 15 au lieu de 31. Comme faute de cross over et de mutation il n'y a pas création de nouveaux individus, c'est l'individu le meilleur dans la configuration initiale qui envahit toute la population.

Le cross over n’arrange rien !

coupe en 1 : {0,0,1,0,1} ⇒ {0,1,0,1,0}coupe en 2 : {0,1,1,0,1} ⇒ {0,0,0,1,0}coupe en 3 : {0,1,0,0,1} ⇒ {0,0,1,1,0}coupe en 4 : {0,1,0,1,1} ⇒ {0,0,1,0,0}

La colonne un ne possède pas de « 0 »

badpop =

ijjjjjjjjjjjjjjjjjjjjjjjjjjj

0 0 1 0 10 1 0 0 00 0 1 1 10 0 1 0 00 0 1 0 00 0 1 1 00 1 0 1 00 0 1 1 10 0 0 0 10 1 0 1 1

yzzzzzzzzzzzzzzzzzzzzzzzzzzz;

On applique AGRun sur badpop en désactivant le cross over et la mutation (options : AGMutationRate→ 0, AGCrossOverRate→ 0).k {

2 4 6 8 10200400600800

Blocage

On applique AGRun sur badpop en rétablissant le cross over et en désactivant la mutation (options : AGMutationRate→0, AGCrossOverRate→1).

Page 63: Agents Réactifs

J-P Sansonnet ― Agents réactifs

63Apport des mutationsAlgorithmes génétiques

2 4 6 8101214200400600800

2 4 6 8 10200400600800

Blocage

Optimum

L'intérêt principal des mutations c'est qu'elles peuvent apporter une information qui n'était pas à l'origine dans la population ou bien qui a été perdue parce qu'elle était portée par des individus éliminés à cause de leur performance faible.

Expérience 1 : mutation sans cross overOn voit que dès qu'une mutation favorable apparaît (point dans la partie droite du domaine) elle engendre un monstre prometteur qui va envahir le domaine. Cependant, ceci ne permet que d'atteindre la meilleure mutation et non l'optimum.

Expérience 2 : mutation + cross overPour aller vers l'optimum il faut activer le cross over qui va mélanger la mutation avec le reste de la population et ainsi permettre de passer la barrière du minimum local.

Page 64: Agents Réactifs

J-P Sansonnet ― Agents réactifs

64Maxima locaux

2 4 6 81012142468

1012

2.557.51012.51517.52468

1012

Algorithmes génétiquesExécution 1

Exécution 2

Maximalocal

Maximaabsolu

Nous construisons une fonction bimodale (i.e. à deux bosses) en interpolant des points. La fonction d'interpolation est camel qui a la propriété d’avoir deux maxima très proches :

camel = Interpolation[{{0,0},{10,10},{15,5},{20,10},{31,0}}]

A partir de camel on peut construire une fonction de mesure de performances fit2 :fit2[s_]:= With[{x=FromDigits[s,2]},camel[x]]

On voit que lors de la première exécution la population converge vers la bosse de gauche alors que lors de la deuxième exécution elle converge vers la bosse de droite. Dans les deux exécution, au début, début elle hésite entre les deux voies.

5 10 15 20 25 30

2468

1012

Maximaabsolu

Maximalocal

Page 65: Agents Réactifs

J-P Sansonnet ― Agents réactifs

65Fonctions de lissageAlgorithmes génétiques

On voit que la population se dirige souvent vers le minimum local (ceci en fonction des Conditions initiales tirées au sort) et qu'elle ne tire pas profit des mutations qui se produisent pourtant très près du maximum global.Ce qu'il faudrait, c'est ralentir la propagation de l’individu dominant, ralentir la convergence (vers un minimum qui peut être local). Pour cela on emploie des fonctions de ‘lissage’ qui atténuent les différences de performances entre les individus.Ce que nous voulons c'est adoucir la distribution de probabilités qui résulte de la phase d'évaluation des performances. Pour cela nous avons définit la fonction AGSmooth[lp,c] qui prend une liste lp de distribution de probabilités et un coefficient de force de lissage : 0 ≤ c ≤ 1. Elle utilise une variable globale AGCount qui varie de 1 à n si on exécute n cycles de AGRun. Celle variable va servir ‘d‘horloge’ pour contrôler la température d'adoucissement qui va être élevée au départ (AGCount = 1) pour tomber vers zéro (lorsque AGCount = n).

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

C=0.8

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

1.5 2 2.5 3 3.5 4

0.20.30.40.5

C=0.2

Pour montrer comment évolue la fonction de lissage au cours du processus de l'algorithme génétique, on utilise la liste de distribution de probabilités :

lp = {0.05,0.2,0.5,0.25}

et on effectue 9 cycles. On montre pour chacune des 9 étapes lp en rouge (courbe supérieure) et lp lissée en bleu (courbe inférieure). On commence avec c = 0.8

Au début, le lissage agit fortement pour s'annuler quasiment au dernier cycle (lps= lp) où les deux courbes sont quasiment identiques. La même exécution mais avec c = 0.2 montre que l'on peut aussi contrôler l'amplitude (la force) du lissage pour une expérience donnée.

Page 66: Agents Réactifs

J-P Sansonnet ― Agents réactifs

66Fonctions de lissageAlgorithmes génétiques

Considérons la population badpop2 de 4 individus. Elle est construite de telle manière à ce qu'elle ne contienne pas le bit de fort poids nécessaire à son évolution vers le demi-domaine de droite où est situé l'optimum de la fonction camel.

Nous avons vu qu'avec la sélection et le cross over on ne pouvait pas générer ce bit mais qu'avec la mutation il pouvait apparaître et refaire partir la population dans le demi-domaine de droite. Cependant, si la convergence est très rapide et que les individus performants envahissent exponentiellement la population, une mutation, même favorable, n'a pas le temps de se répandre avant qu'elle ne soit écrasée par la majorité « bien pensante » (l’individu dominant, bloqué dans son minimum local).

2468101214246810

12 510152024681012

On arriveà droite

On démarreà gauche

On démarreà gauche

Passage vers la droite stabilisé

passage

badpop2 =

0 0 1 0 00 1 0 0 00 1 0 1 10 0 1 0 1

;

En ajoutant une fonction de lissage (bien peaufinée et c’est souvent un travail de longue haleine !) on obtient un résultat parfait

On arriveà gauche

Page 67: Agents Réactifs

J-P Sansonnet ― Agents réactifs

67Optimisation bidimentionnelleAlgorithmes génétiques

On lance AGRun avec des options montrant seulement le dernier graphique, ceci sur une population de 10 individus de 8 bits(x=4, y=4) pour 50 cycles :

On voit que la moyenne de la population (courbe inférieure) se rapproche très vite du meilleur individu de la population qui lui-même, est proche de l'optimum (0.999147). Ci-dessous on visualise l’évolution vue « de dessus »— en vert (points moyens) les positions initiales de la population,— en bleu (petits points) la position du meilleur élément,— en rouge (le gros point) le dernier meilleur élément.

01

23 0

1

2

3

00.250.5

0.751

01

23

Si on veut calculer l'élément maximal d'une fonction de deux (ou même de plusieurs) variables, il faut partitionner la chaîne représentant un individu de façon à ce que chaque variable soit représentée. Voici deux exemples de codage pour une fonction f(x,y) de deux coordonnées x et y:

Pour définir la fonction de mesure de performances fit, nous avons choisi le codage juxtaposé. Attention, le nombre de bits de la chaîne doit être pair. Nous posons :

fit(x, y) = Sin(x) . Sin(y)

La fonction AGOptimumFunction[f, b, n] calcule l'élément maximal d'une fonction de mesure de performance f travaillant sur un chaîne en base b de longueur n. Appliquée à fit, elle donne la hauteur du dôme :AGOptimumFunction[f4,2,10]⇒ 0.999147

{ 1, 0, 1, 1, 0, 0 } { 1, 0, 1, 1, 0, 0 }

yx y x

Codage juxtaposé Codage entrelacé

?

0 10 20 30 40 500.30.40.50.60.70.80.9

1

MoyenneBest

5 10 15 20 25 30

5

10

15

20

25

30

Optimum

Page 68: Agents Réactifs

J-P Sansonnet ― Agents réactifs

68Apprentissage superviséAlgorithmes génétiques

Les algorithmes génétiques sont avant tout une technique particulière d'optimisation. Mais ce qui fait leur intérêt sur le plan cognitif (en dehors de la métaphore dont ils sont issus) c'est aussi la possibilité d'appliquer cette technique pour pratiquer l'apprentissage supervisé.On appelle apprentissage supervisé (ou plus généralement apprentissage) un type d'heuristique où on dispose de quatre entités :

– un opérateur humain qui supervise le processus,– un ensemble de données d'entrée E (ou stimuli),– un ensemble de données de sortie S (ou réponses),– une « boîte noire » qui reçoit les stimuli et émet les réponses.

L'opérateur humain définit la relation entre E et S sous la forme d'une fonction F : E → S. Il définit aussi une fonction de dressage P qui– mesure la performance de la boîte comme une fonction de l'écart entre la sortie effective et la sortie désirée (définie par F),– applique en feed back une modification adéquate des paramètres de contrôle de la boîte noire : ‘récompense’ ou ‘punition’.

Sorties désirées : DF[e1], F[e2], F[e3], F[e4], F[e5], F[e6], F[e7], …

Boîte noire

Humain superviseuril désire F[e1], F[e1], …

∆[Di,Si]±

Entrées : E

e1, e2, e3, e4, e5, …

s1, s2, s3, s4, s5, s6, s7, …

Sorties effectives : S

Algo génétique

Page 69: Agents Réactifs

J-P Sansonnet ― Agents réactifs

69Application aux AGsAlgorithmes génétiques

Processus d'Apprentissage ⇒ Optimisation ⇒ Algorithmes Génétiques

Le processus d'apprentissage consiste à itérer la séquence suivante jusqu'à ce que l'humain considère que les réponses de la boîte sont satisfaisantes :

1. présenter à la boîte une donnée (tirée au sort) e ∈ E,2. recueillir la réponse s de la boîte,3. mesurer l'écart ∆ avec la bonne réponse F(e),4. appliquer le feedback P(∆) sur les paramètres de contrôle

On appelle cela de l'apprentissage car l'humain ne programme pas de manière explicite (sous forme impérative, i.e. en Fortran, en C,...) la fonction F dans la boîte. Ainsi, même si on change E, S, F et P on E', S', F' et P', on peut garder le même mécanisme général et appliquer à la boîte noire une nouveau processus d'apprentissage au terme duquel la boîte noire se comportera comme F' (on dit : aura appris F').

Comment transformer un problème d'apprentissage en problème d'optimisation ?On veut que notre machine M apprenne la fonction F : E → S. Cela revient à dire qu'on veut qu'elle minimise l'erreur qu'elle fait entre ses sorties M(e) et les ‘bonnes’ sorties que nous avons posées a priori comme étant F().Exprimé en termes d'algorithmes génétiques, cela revient à dire que les individus qui donnent une réponse proche de la bonne réponse vont se reproduire plus vite que ceux qui donnent une réponse éloignée. La fonction fit est alors simplement la mesure de l’écart entre ce fournit un individu et ce qu’attend l’humain superviseur.

Page 70: Agents Réactifs

J-P Sansonnet ― Agents réactifs

70Tortues LogoAlgorithmes génétiques

Codage du génotype de la tortueLe codage de la chaîne binaire associée à ce problème est un peu spécial : pour chaque case de la matrice où peut se trouver la tortue, il faut qu'elle puisse prendre une décision de se déplacer :

Pour coder ces quatre possibilités, il faut 2 bits. Comme il y a AreneSize x AreneSize cases (on inclut les obstacles), la taille d'une chaîne ADN sera :2 × AreneSize2 bits soit 2 × 52 = 50 bits d’ADN. Population : pop =

On veut apprendre à un petit robot (une sorte de tortue logo) à se déplacer dans une arène fermée d'un point de départ à un point d'arrivée en évitant les obstacles éventuels.

On modélise brutalement cette arène par une discrétisation matricielle carrée de dimensions AreneSize x AreneSize où les éléments ayant la valeur 0 représentent les emplacements où la créature a le droit d'aller et où les éléments ayant la valeur 1 représentent des obstacles.Voici une arène 5 x 5 avec un obstacle au centre. On pose = {0, 0} soit le point de départ en haut à gauche de l'arène et = {5, 5} soit en bas à droite.

Arène fermée

x0

y0

Obstacle

But

Départ

{0,0}

{0,1}

{1,1}

{1,0}

0 10 20 30 40 500

5

10

15

20 50 bits d’ADN

20 individus

AreneSize = 5; Arene =

0 0 0 0 00 0 0 0 00 0 1 0 00 0 0 0 00 0 0 0 0

;

Départ

But

Page 71: Agents Réactifs

J-P Sansonnet ― Agents réactifs

71Phénotype des tortuesAlgorithmes génétiques

Evaluation du phénotype d’une tortueLa fonction de mesure de performances fit extrait les coordonnées de la chaîne et exécute le phénotype de la tortue c'est-à-dire que la tortue va se déplacer sur la matrice à partir de la case de départ x0 = {1,1} en utilisant pour chaque case où elle passe le contenu de sa chaîne correspondant à cette case pour dire qu'elle sera la case suivante.

– Si on se retrouve en dehors des bornes, ou bien si on rencontre un obstacle, c'est un échec : on arrête ; la performance est alors celle de la case où on est -1.

– Si on arrive à la case cible (lorsque i+j = 2. AreneSize) on arrête aussi avec la performance maximale.

– Dans les autres cas, on mesure la performance comme la somme des indices i+j au bout de 20 cycles soit plus du double de la distance entre le départ et l’arrivée attendue c’est-à-dire le point y0= {5,5}.

Visualisation du phénotype d’un individuPour visualiser le phénotype d'un individu i de la population, nous avons défini la fonction LogoList[i] qui affiche le trajet de la tortue i au lieu de calculer sa performance. Le génotype du premier élément de la population pop[[1]] est une chaîne de 50 bits :{1,1,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,1,0,0,1,1,1,0,0,1,1,1,0,0}

Ce qui correspond à la suite de choix directionnels suivante :{S,E,W,E,N,W,S,N,N,S,W,N,N,S,W,N,W,E,E,N,S,W,E,S,N}La fonction LogoList renvoie les coordonnées successives de la trajectoire de la première tortue de la population :LogoList[pop[[1]]]⇒ {{1,1},{2,1},{2,0}}On voit qu'au bout de deux déplacements à partir de {1,1} la tortue échoue en {2, 0} qui est en dehors des bornes.

Visualisation graphique du phénotypeLa fonction LogoShow affiche la trajectoire d'une tortue. Le départ est en bas àgauche et l'arrivée en haut à droite. Les points rouges (en gros) sont les obstacles. La trajectoire de la tortue n° 1 de la population pop n'est pas très longue :

Par contre celle de l’individu n° 15 est bien meilleure (5 pas avant de sortir) :

1 2 3 4 5 6

1

2

3

4

5

6

Depart

But

1 2 3 4 5 6

1

2

3

4

5

6

Depart

But

Page 72: Agents Réactifs

J-P Sansonnet ― Agents réactifs

72Exemple d’élevage de tortuesAlgorithmes génétiques

2.557.51012.51517.5246810 1 2 3 4 5 6

1

2

34

56

Depart

But

obstacle

Au fur et à mesure que le processus avance, on voit la population s'homogénéiser : les matrices ont des lignes verticales de plus en plus régulières. Le meilleur score possible (10) n'est pas atteint.

Visualisation de la meilleure trajectoireSachant que AGBest donne le meilleur élément obtenu au cours d'un processus AGRun (ce n'est pas forcément à la fin !), on peut visualiser la meilleure tortue obtenue plus haut avec LogoShow.

LogoShow[AGBest]

AGBest

Page 73: Agents Réactifs

J-P Sansonnet ― Agents réactifs

73Types d’explorationsAlgorithmes génétiques

Exploration en profondeurA partir de maintenant, effectue des essais sans cumul et en ne visualisant que les statistiques. cela permet d'augmenter le nombre de cycles de la simulation. Les tortues obtenues sont meilleures.Pour l’exploration en profondeur, on se contente ici d'une nouvelle population qui ne possède que 8 individus seulement mais on explore beaucoup plus longtemps (100 cycles).

Exploration en largeurInversement, pour l’exploration en largeur, on traite une population de 50 individuspendant 20 cycles seulement. Il semble que cela marche beaucoup mieux, puisque cette fois on atteint une solution avec une bonne probabilité et une meilleure convergence.

2.5 5 7.5 1012.51517.5202468

10AGBest

0 20 40 60 80 10023456789 AGBest

1 2 3 4 5 6

1

2

3

4

5

6

Depart

ButAGBest

1 2 3 4 5 6

1

2

3

4

5

6

Depart

But

AGBest

Page 74: Agents Réactifs

J-P Sansonnet ― Agents réactifs

74Un vrai labyrintheAlgorithmes génétiques

Malheureusement, la meilleure des tortue n’atteint pas le but : elle se bloque dans un minimum local (derrière la barrière) et ne peut pas trouver le passage :

On se donne une nouvelle arène, plus grande, ayant plus d'obstacles disposés de manière à former un couloir, où la performance maximale est de 16 pas.L’arène est définie par (on la voit tournée de 90°) :

On explore en largeur avec une grande population de 50 individuspendant 50 cycles :

AreneSize = 8; Arene =

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 1 0 0 0 00 0 1 0 0 0 0 11 1 0 0 0 0 1 00 0 0 0 1 1 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0

;

0 10 20 30 40 502

4

6

8

10Optimum = 16

2 4 6 8

2

4

6

8

Depart

But

AGBest

Page 75: Agents Réactifs

J-P Sansonnet ― Agents réactifs

75ConclusionConclusion

Dans ce chapitre nous avons étudié :L’application d’un processus d’itération d’une fonction de transition sur un domaine non scalaire : population sans topologie ou au contraire tableaux 1D ou 2D d’entités individuelles simples :

– Populations• Intelligence Collective

– Tableaux• Automates Cellulaires• Automates à une Dimension• Le Jeu de la vie• Automate de Langton• Algorithmes Génétiques.

Autres approfondissements possibles :– Processus dynamiques

• Processus convergents : Pi, Fibonacci (nombre d’or), Collatz• Processus chaotiques : May• Attracteurs étranges : Hénon, Lorentz, Boulanger.

– Morphogenèse formelle• Formes fractales : arbres, Koch, Snake, Hilbert, Sierpinski, Fern• L-Systèmes : Anabea, Pascal, Ammonite

– Optimisation sur une population• Agents compétitifs : équilibre de Nash, dilemme du prisonnier, Axelrod• Enchères, négociation

F0 F1 F2 F3 …

… F8