04.07.2015 Views

Modèles de programmation et architectures multi-agents de JP ...

Modèles de programmation et architectures multi-agents de JP ...

Modèles de programmation et architectures multi-agents de JP ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Modèles <strong>de</strong> <strong>programmation</strong> <strong>et</strong><br />

Architectures Multi Agents<br />

Approches Concurrentes <strong>et</strong> Cellulaires<br />

Jean-Paul Sansonn<strong>et</strong><br />

LIMSI-CNRS ― jps@limsi.fr


Résumé du cours<br />

Modèles <strong>de</strong> Programmation agent<br />

– Le parallélisme<br />

– Les <strong>de</strong>ux mythes du parallélisme<br />

– Pourquoi distribuer l’intelligence ?<br />

– Les <strong>de</strong>ux approches du parallélisme<br />

– Mo<strong>de</strong>s <strong>de</strong> contrôle SIMD <strong>et</strong> MIMD<br />

– Systèmes concurrents<br />

– Contrôle Distribué<br />

– Style <strong>de</strong> <strong>programmation</strong> concurrente<br />

– La Machine Mega<br />

– Algorithmique Parallèle<br />

– Contrôle centralisé<br />

– Opérateur Nest<br />

– Itération <strong>de</strong> processus<br />

– Style <strong>de</strong> <strong>programmation</strong> data parallèle<br />

– La Connection Machine<br />

– Mo<strong>de</strong>s <strong>de</strong> voisinage SIMD<br />

Architectures agent<br />

– Gran<strong>de</strong>s approches <strong>agents</strong><br />

– Approches Opérationnelles <strong>et</strong> Informationnelles<br />

– Agents Composants<br />

– Agents Informationnels<br />

– Agents réactifs <strong>et</strong> cognitifs<br />

– Exemple d’agent réactif <strong>et</strong> cognitif<br />

– Problématique <strong>de</strong>s <strong>agents</strong> réactifs<br />

– Organisation ascendante : Gestalt<br />

– Analyse <strong>de</strong>scendante : Agentification<br />

– Architectures à Blackboards<br />

– Architectures à Règles <strong>de</strong> Production<br />

– Architectures <strong>de</strong> Subsomption<br />

– Architectures dynamiques <strong>de</strong> contrôleurs<br />

– Les Véhicules <strong>de</strong> Braitenberg<br />

– La Société <strong>de</strong> l’esprit<br />

Intelligence Collective<br />

– L’organicisme<br />

– La marche erratique <strong>de</strong> la fourmi<br />

– L’odorat <strong>de</strong>s fourmis<br />

– Tri collectif <strong>de</strong>s proies<br />

– Patterns <strong>de</strong> fouragement<br />

– Champ <strong>de</strong> phéromones<br />

– Champ phéromonal dynamique<br />

– Influence <strong>de</strong> la structure<br />

– Structure bornée ou torique<br />

– Eff<strong>et</strong>s <strong>de</strong> biaisage<br />

– Simulation sociale (1)<br />

– Simulation sociale (2)<br />

Automates Cellulaires<br />

– Espace substrat <strong>de</strong>s états<br />

– Voisinages <strong>de</strong> base<br />

– Espace euclidien torique<br />

– Automates à une dimension<br />

– Automates linéaires booléens<br />

– Evolution à partir d'une configuration aléatoire<br />

– Les trajectoires sont circulaires<br />

– CI fixes ― Fonctions f0 .. f127<br />

– CI fixes ― Fonctions f128 .. f255<br />

– CI variables : f250 <strong>et</strong> f192<br />

– CI variables : f80 <strong>et</strong> f35<br />

– Analyse <strong>de</strong>s expérimentations<br />

– Interprétation en termes Sociobiologiques<br />

– Principe du jeu <strong>de</strong> la vie<br />

– Exemples <strong>de</strong> trajectoires<br />

– Patterns typiques<br />

– Canon à Gli<strong>de</strong>rs<br />

– Eater<br />

– Eaters eat gli<strong>de</strong>rs<br />

– Automates autoreproducteurs<br />

– Forme initiale <strong>de</strong> Langton<br />

– Fonction <strong>de</strong> transition<br />

– Processus <strong>de</strong> reproduction<br />

– 400 étapes <strong>de</strong> Langton<br />

Conclusion<br />

2<br />

Plan<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Modèles <strong>de</strong> Programmation agent<br />

3<br />

1. Modèles <strong>de</strong> Programmation agent<br />

2. Architectures agent<br />

3. Intelligence Collective<br />

4. Automates Cellulaires<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Le parallélisme<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

4<br />

En 1657, dans son "Histoire Comique <strong>de</strong>s Etats <strong>et</strong> Empires <strong>de</strong><br />

la Lune", Savinien <strong>de</strong> Cyrano <strong>de</strong> Bergerac inventait mille<br />

façons <strong>de</strong> voyager vers les planètes... Son réseau savamment<br />

équilibré d'oies travaillant en parallèle montre qu'il voyait plus<br />

loin que le bout <strong>de</strong> son nez. Le Parallélisme est une <strong>de</strong>s plus<br />

vieilles techniques employées par la Nature <strong>et</strong> par L'Homme.<br />

Dès le début <strong>de</strong>s années cinquante, J. Von Neumann a imaginé,<br />

en même temps qu'il <strong>de</strong>ssinait les ébauches <strong>de</strong> son calculateur<br />

séquentiel, <strong>de</strong>s machines parallèles fondées sur le concept <strong>de</strong>s<br />

automates cellulaires. La pauvr<strong>et</strong>é <strong>de</strong>s ressources<br />

technologiques <strong>de</strong> l'époque n'a pas permis <strong>de</strong> réaliser ces<br />

premières idées <strong>de</strong> machines parallèles. Aujourd'hui, la<br />

puissance technologique dont nous disposons rend possible la<br />

réalisation <strong>de</strong> machines parallèles. En même temps, la<br />

stabilisation <strong>de</strong>s concepts <strong>de</strong>s langages <strong>de</strong> <strong>programmation</strong><br />

autour <strong>de</strong>s langages fonctionnels lexicaux (C, Scheme ...) <strong>et</strong> <strong>de</strong>s<br />

concepts architecturaux <strong>de</strong>s machines classiques autour du<br />

modèle RISC fait que les chercheurs s'orientent <strong>de</strong> plus en plus<br />

vers <strong>de</strong> nouveaux domaines à explorer. C'est pourquoi la<br />

recherche en informatique ouvre actuellement une nouvelle ère<br />

avec un foisonnement d'étu<strong>de</strong>s sur les modèles <strong>de</strong> calcul, les<br />

langages <strong>et</strong> les <strong>architectures</strong> parallèles.<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Les <strong>de</strong>ux mythes du parallélisme<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

5<br />

Gain en temps d’exécution<br />

Ligne <strong>de</strong> gain optimal<br />

Nombre <strong>de</strong> Processeurs<br />

Gain en faisabilité<br />

Nombre <strong>de</strong> Processeurs<br />

Efficacité<br />

Expressivité<br />

La première raison qui pousse les informaticiens vers le parallélisme c'est le mythe <strong>de</strong><br />

la Vitesse qui s'intéresse à la puissance <strong>de</strong> calcul que peut produire un ordinateur<br />

parallèle. En eff<strong>et</strong> <strong>de</strong> nombreuses applications scientifiques, techniques, médicales,<br />

militaires... ont <strong>de</strong>s besoins énormes en puissance <strong>de</strong> calcul qui ne peuvent pas être<br />

satisfaits par les machines séquentielles classiques, aussi performantes soient-elles.<br />

Ces besoins ont conduit dans les années soixante puis soixante-dix à la réalisation <strong>de</strong>s<br />

Supercalculateurs utilisant à la fois les technologies les plus performantes <strong>et</strong> le<br />

parallélisme simple <strong>de</strong> Cyrano (attelages <strong>de</strong> <strong>de</strong>ux, quatre ... processeurs plus ou moins<br />

conventionnels) pour augmenter la puissance <strong>de</strong> calcul <strong>de</strong>s systèmes. L'idée <strong>de</strong> base<br />

est <strong>de</strong> <strong>multi</strong>plier les ressources matérielles (les processeurs <strong>de</strong> calcul) pour diviser le<br />

temps d'exécution d'autant. Le facteur <strong>de</strong> gain linéaire (on va N fois plus vite si on<br />

utilise N processeurs) n'est pas facile à maintenir en pratique dès que le nombre <strong>de</strong><br />

processeurs <strong>de</strong>vient grand.<br />

La secon<strong>de</strong> raison qui pousse les informaticiens vers le parallélisme c'est le mythe du<br />

Holisme qui s'intéresse avant tout à la puissance expressive <strong>de</strong>s modèles <strong>de</strong> calcul<br />

parallèles. C<strong>et</strong>te approche a donné naissance à <strong>de</strong>s modèles <strong>de</strong> calcul différents du<br />

modèle séquentiel classique : par exemple, ils ne comportent pas <strong>de</strong> compteur ordinal<br />

(Data Driven / Demand Driven ...) ou bien ils utilisent une organisation bien<br />

particulière (Cellulaire, Neuronal ...). Bien entendu, c<strong>et</strong>te approche ne rej<strong>et</strong>te pas les<br />

gains <strong>de</strong> performance induits par ces modèles mais cela reste une préoccupation<br />

secondaire. L'objectif est <strong>de</strong> montrer qu'une approche intrinsèquement parallèle <strong>de</strong>s<br />

problèmes peut déboucher sur <strong>de</strong>s solutions originales (nouveaux modèles , nouveaux<br />

algorithmes...). Au gain en vitesse d'exécution s'ajoute aussi un gain ‘conceptuel’ qui,<br />

au <strong>de</strong>là d'un certain <strong>de</strong>gré <strong>de</strong> parallélisme (exprimé en grains logiques que sont les<br />

processus), doit perm<strong>et</strong>tre la résolution <strong>de</strong> problèmes jusqu'ici impossible à m<strong>et</strong>tre en<br />

oeuvre sur une machine séquentielle.<br />

– Question : Si un Chinois creuse un trou pour planter un arbre en une<br />

heure, combien m<strong>et</strong>tront mille Chinois ?<br />

– Question : L'ensemble <strong>de</strong>s parties peut-il être plus grand que la somme <strong>de</strong>s<br />

parties ?<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Pourquoi distribuer l’intelligence ?<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

6<br />

Le mon<strong>de</strong> est intrinsèquement Ouvert, Complexe <strong>et</strong> Ubiquiste<br />

1. Les problèmes sont intrinsèquement physiquement distribués<br />

– Nature intrinsèquement parallèle <strong>de</strong> la biologie <strong>et</strong> <strong>de</strong> la physique<br />

– Nature intrinsèquement concurrente <strong>de</strong> la sociologie <strong>et</strong> <strong>de</strong> la psychologie<br />

2. Les problèmes sont intrinsèquement fonctionnellement distribués<br />

– Ingénierie : satellite = <strong>multi</strong> savoir-faire / <strong>multi</strong> expertises<br />

– Hétérogénéité <strong>de</strong>s savoirs<br />

3. Les réseaux <strong>de</strong> communication imposent une vision distribuée<br />

– Intern<strong>et</strong>, Bases <strong>de</strong> données mondiales, Web Sémantique<br />

– « Penser global agir local »<br />

4. La complexité impose une vision locale<br />

– Notion d’espace informationnel ⇒ Topologie : local ≠ global<br />

– Méthodologie Global → Local (répartir) <strong>et</strong> Local → Global (Apprendre)<br />

5. Nécessité d’adaptation (locale)<br />

– Changer un central téléphonique ne m<strong>et</strong> pas en péril le réseau mondial<br />

– Pas « d’eff<strong>et</strong> papillon ».<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Les <strong>de</strong>ux approches du parallélisme<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

7<br />

Systèmes<br />

intrinsèquement<br />

concurrents<br />

Systèmes<br />

intrinsèquement<br />

parallèles<br />

Systèmes Concurrents<br />

Algorithmique Parallèle<br />

Exploitation du parallélisme<br />

<strong>de</strong> contrôle<br />

Exploitation du parallélisme<br />

<strong>de</strong> données<br />

Modèles <strong>de</strong> calcul <strong>et</strong> langages<br />

concurrents<br />

Modèles <strong>de</strong> calcul <strong>et</strong> langages<br />

Parallèles<br />

Machines concurrentes<br />

(MIMD)<br />

Machines parallèles<br />

(SIMD)<br />

L'étu<strong>de</strong> du parallélisme a commencé avec l'informatique dans les années 50 <strong>et</strong>, dès le début, on a vu apparaître <strong>de</strong>ux courants <strong>de</strong> pensée qui existent toujours <strong>et</strong> qui ont<br />

profondément marqué les modèles <strong>et</strong> les machines parallèles. Il s'agit du mo<strong>de</strong> <strong>de</strong> pensée issu <strong>de</strong> l'étu<strong>de</strong> <strong>de</strong>s systèmes concurrents <strong>et</strong> du mo<strong>de</strong> <strong>de</strong> pensée issu <strong>de</strong> l'étu<strong>de</strong> <strong>de</strong><br />

l'algorithmique parallèle. Ce qui fon<strong>de</strong> chacune <strong>de</strong>s ces <strong>de</strong>ux approches c'est la volonté d'exploiter une <strong>de</strong>s <strong>de</strong>ux sources du parallélisme. Les systèmes concurrents se sont attaqué<br />

surtout à l'exploitation du parallélisme <strong>de</strong> contrôle qui m<strong>et</strong> l'accent sur les actions à réaliser. L'algorithmique Parallèle s'est attaqué surtout à l'exploitation du parallélisme <strong>de</strong><br />

données qui m<strong>et</strong> l'accent sur l'organisation <strong>de</strong>s données. Les <strong>de</strong>ux écoles ont donc développé séparément <strong>de</strong>s modèles <strong>de</strong> calcul <strong>et</strong> <strong>de</strong>s langages concurrents ou parallèles. Au niveau<br />

<strong>de</strong> l'Architecture <strong>de</strong>s machines on r<strong>et</strong>rouve ce clivage <strong>de</strong> manière très distincte <strong>et</strong> M.J. Flynn l'a observé dès les années 60, lorsqu'il a proposé un classification <strong>de</strong>s ordinateurs basée<br />

sur les flux <strong>de</strong> contrôle <strong>et</strong> <strong>de</strong> données : dans c<strong>et</strong>te classification, les machines MIMD correspon<strong>de</strong>nt au mo<strong>de</strong> <strong>de</strong> pensée concurrent alors que les machines SIMD correspon<strong>de</strong>nt au<br />

mo<strong>de</strong> <strong>de</strong> pensée parallèle.<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Mo<strong>de</strong>s <strong>de</strong> contrôle SIMD <strong>et</strong> MIMD<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

8<br />

SIMD<br />

MIMD<br />

Dans le modèle SIMD, les <strong>agents</strong> ont tous la même structure : comme les instances<br />

d'une même classe, ils possè<strong>de</strong>nt les mêmes variables d'état (slots) <strong>et</strong> le même<br />

comportement (mêmes métho<strong>de</strong>s). Au niveau <strong>de</strong> l'interaction avec les autres <strong>agents</strong>,<br />

on r<strong>et</strong>rouve c<strong>et</strong>te uniformité : le réseau interactif est régulier, homogène, symétrique <strong>et</strong><br />

le protocole d'interaction est unique. Au cours du fonctionnement, seules les valeurs<br />

d'état <strong>de</strong>s <strong>agents</strong> sont différentes <strong>et</strong> ce sont elles qui <strong>de</strong>ssinent la forme du résultat<br />

attendu. On parle alors d'Emergence ou d'Intelligence Collective.<br />

Dans le modèle MIMD, les <strong>agents</strong> ont tous une structure différente : ils ont <strong>de</strong>s<br />

variables d'états différentes <strong>et</strong> ils exécutent <strong>de</strong>s programmes différents. Au niveau <strong>de</strong><br />

l'interaction, il en est <strong>de</strong> même ;les échanges sont hétérogènes : en temps, en vitesse,<br />

en quantité, en topologie ... Chaque agent possè<strong>de</strong> en quelque sorte sa propre<br />

personnalité : il a sa propre spécialité, il peut résoudre un type <strong>de</strong> problème particulier.<br />

On parle alors <strong>de</strong> Sociétés d'Experts ou <strong>de</strong> Système Multi Agents (SMA).<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Systèmes concurrents<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

9<br />

• Psycho-socio :<br />

– Parallélisme intrinsèquement concurrent<br />

– Parallélisme à gros grain (tâches)<br />

Les approches inspirées <strong>de</strong> la modélisation psychologique <strong>et</strong>/ou sociale<br />

ont une structure qui est intrinsèquement concurrente. La<br />

parallélisation est donc très simplifiée :<br />

SMA<br />

t3<br />

t1<br />

Tâches<br />

t5<br />

t2<br />

t4<br />

P1 P2 P3 P4 P5<br />

Réseau<br />

Ether Spatio-temporel<br />

Placement<br />

Processeurs<br />

un agent = une tâche = un processus = un processeur<br />

L'école <strong>de</strong>s systèmes concurrents a fondé ses travaux sur le concept <strong>de</strong><br />

substrat spatio-temporel asynchrone ou Ether. Dans ce type<br />

d'applications, il n'y a pas forcément une relation simple entre la<br />

structure <strong>de</strong> l'application <strong>et</strong> un espace Euclidien. Les actions <strong>et</strong> les<br />

données <strong>de</strong> l'application sont traitées comme <strong>de</strong>s entités autonomes<br />

dans l'espace (par exemple, elles peuvent avoir <strong>de</strong>s tailles différentes) <strong>et</strong><br />

dans le temps (chaque action possè<strong>de</strong> son propre référentiel temporel).<br />

Le « Tissu » obtenu n'a pas <strong>de</strong> structure régulière dans l'espace <strong>et</strong> dans<br />

le temps.<br />

La gestion <strong>de</strong>s communications suit exactement la structure <strong>de</strong><br />

substrats. Dans le cas d'un tissu, les communications sont organisées <strong>de</strong><br />

manière régulière le long <strong>de</strong>s dimensions du tissu (voisinage spatial <strong>et</strong><br />

temporel) ; pour cela il est nécessaire qu'elles soient statiques (toutes<br />

connues au départ). Par contre, dans le cas d'un Ether, les<br />

communications sont irrégulières, statiques ou dynamiques ; cela<br />

impose en pratique que le substrat soit capable <strong>de</strong> m<strong>et</strong>tre en relation<br />

<strong>de</strong>ux actions quelconques si besoin est : c'est c<strong>et</strong>te propriété qui l'a fait<br />

appeler un Ether.<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Contrôle Distribué<br />

10<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

Domaine : Applications distribuées<br />

Principe : Processus Concurrents Distribués<br />

Pratiques<br />

n<br />

Knowledge level<br />

Polices<br />

n<br />

Collection dynamique<br />

d’<strong>agents</strong><br />

Transactions<br />

2<br />

Software level<br />

Graphe statique <strong>de</strong><br />

tâches<br />

T2<br />

T1<br />

T3<br />

T4<br />

T..<br />

Multitâches<br />

Communication<br />

Protocoles<br />

Routage<br />

CSP <strong>de</strong> Hoare<br />

RMI<br />

CORBA …<br />

hardware level<br />

M1<br />

M2<br />

Réseau matériel <strong>de</strong><br />

machines<br />

M3<br />

M…<br />

M…<br />

Réseaux intran<strong>et</strong><br />

Intern<strong>et</strong> global (Web)<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Style <strong>de</strong> <strong>programmation</strong> concurrente<br />

11<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

Dans le style <strong>de</strong> <strong>programmation</strong> concurrente, on définit <strong>de</strong>s <strong>agents</strong> comme <strong>de</strong>s processus<br />

(tâches) qui s’exécutent en parallèle sur un seul processeur matériel (mo<strong>de</strong> entrelacé –<br />

<strong>multi</strong> threads) ou bien autant <strong>de</strong> processeurs matériels que <strong>de</strong> processus. Dans tous les<br />

cas, les actions sont physiquement entrelacées <strong>et</strong> asynchrones les unes par rapport aux<br />

autres.<br />

Exemple<br />

Soit un frigo composé <strong>de</strong> quatre processus :<br />

– L’environnement ENV : augmente régulièrement la température T <strong>de</strong> 0.1° par<br />

minute tout le temps<br />

– Un capteur SENSOR qui détecte que la température T dépasse 6° <strong>et</strong> alors lance<br />

le compresseur pour 10 cycles<br />

– Le compresseur qui diminue régulièrement la température <strong>de</strong> 0.3° par minute<br />

lorsqu’il fonctionne (CPT décompte son temps <strong>de</strong> fonctionnement)<br />

– L’humain HUMAN qui ouvre <strong>et</strong> ferme la porte provoquant à chaque fois une<br />

augmentation moyenne <strong>de</strong> température <strong>de</strong> 0.6°. Il est simulé par un processus<br />

randomisé (il ouvre en moyenne une fois sur 10).<br />

Cela donne le programme concurrent suivant :<br />

Par[<br />

ENV[T=T+0.1],<br />

SENSOR[If[T>=6 ∧ CPT==0, CPT=10]],<br />

COMPR[If[CPT>0], CPT―; T=T-0.3]],<br />

HUMAN[Random[10]==1, T=T+0.6]<br />

]<br />

En raison <strong>de</strong> l’opérateur Random (qui simule très grossièrement le fait qu’on n’a pas<br />

accès à l’état mental <strong>de</strong> l’humain ― on ne sait pas quand il va ouvrir la porte) les<br />

exécutions successives <strong>de</strong> ce programme concurrent ne sont pas déterministes. De plus,<br />

Dans le Par, l’ordre d’exécution <strong>de</strong>s quatre processus introduit un facteur<br />

d’indéterminisme supplémentaire.<br />

Temps<br />

(minutes)<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

11<br />

12<br />

13<br />

14<br />

15<br />

16<br />

17<br />

18<br />

19<br />

20<br />

21<br />

22<br />

23<br />

24<br />

25<br />

26<br />

27<br />

28<br />

92<br />

30<br />

T °c<br />

5<br />

5.1<br />

5.2<br />

5.9<br />

6<br />

5.8<br />

5.6<br />

5.4<br />

5.2<br />

5<br />

4.8<br />

4.6<br />

4.4<br />

4.2<br />

4<br />

4.1<br />

4.2<br />

4.3<br />

5<br />

5.1<br />

5.2<br />

5.3<br />

5.9<br />

6<br />

5.8<br />

5.6<br />

5.4<br />

5.2<br />

5<br />

4.8<br />

CPT<br />

0<br />

0<br />

0<br />

0<br />

0<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

Processus<br />

ENV<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

+<br />

SENSOR<br />

-<br />

-<br />

-<br />

-<br />

HIT<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

HIT<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

COMPR<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

-0.3<br />

Evènement<br />

RAND<br />

Dans un système asynchrone, il existe toujours une horloge minimale<br />

(qui divise toutes les autres) . Ici c’est la minute.<br />

2<br />

9<br />

0<br />

1<br />

3<br />

6<br />

3<br />

0<br />

9<br />

0<br />

3<br />

2<br />

8<br />

6<br />

4<br />

7<br />

0<br />

1<br />

7<br />

3<br />

7<br />

1<br />

2<br />

4<br />

8<br />

0<br />

3<br />

5<br />

6<br />

0<br />

HUMAN<br />

-<br />

-<br />

-<br />

OPEN<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

OPEN<br />

-<br />

-<br />

-<br />

OPEN<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

-<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


La Machine Mega<br />

12<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

En octobre 1988, D. Etiemble <strong>et</strong> J-P. Sansonn<strong>et</strong> ont fondé une équipe <strong>de</strong> recherche au sein du LRI à<br />

l'Université <strong>de</strong> paris XI. l'équipe s'est orientée vers l'étu<strong>de</strong> d'<strong>architectures</strong> massivement parallèles pour<br />

l'Intelligence Artificielle. C'est dans ce cadre que s'est développé le proj<strong>et</strong> <strong>de</strong> recherche MEGA<br />

(Machines pour l'Expérimentation <strong>de</strong>s Gran<strong>de</strong>s Architectures).<br />

Les objectifs du proj<strong>et</strong> Mega concernent l'étu<strong>de</strong> <strong>de</strong> faisabilité pour toute une famille d'<strong>architectures</strong><br />

MIMD à Passage <strong>de</strong> Messages capables <strong>de</strong> supporter un très grand nombre <strong>de</strong> p<strong>et</strong>its processus<br />

concurrents. En eff<strong>et</strong>, les applications parallèles <strong>de</strong> l'Intelligence Artificielle nécessitent la mise en<br />

oeuvre <strong>de</strong> Réseaux <strong>de</strong> Processus Dynamiques (RPDs) <strong>de</strong> gran<strong>de</strong> taille, par exemple pour l'exploration<br />

d'arbres d'états. La machine Mega accueille <strong>de</strong>ux environnements <strong>de</strong> <strong>programmation</strong> concurrents :<br />

MegaLisp (<strong>de</strong> la famille <strong>de</strong>s Multi-Lisp) <strong>et</strong> OAL un langage d’acteurs.<br />

Les machines <strong>de</strong> la famille Mega ont toutes la même architecture générale. C'est une topologie physique<br />

<strong>de</strong> grille tridimensionnelle dont l'arête peut varier continûment <strong>de</strong> 10 noeuds (soit 1000 PEs) à 100<br />

noeuds (soit un million <strong>de</strong> PEs). La grille a été choisie pour sa gran<strong>de</strong> régularité, sa "scalabilité" <strong>et</strong> ses<br />

bonnes propriétés vis à vis <strong>de</strong> la technologie. La figure (a) présente une "p<strong>et</strong>ite" machine Mega, d'arête<br />

12 qui contient près <strong>de</strong> 2000 PEs dans un volume <strong>de</strong> 15 litres seulement. La machine Mega peut<br />

supporter jusqu’à 2 32 processus Lisp ou acteurs en même temps.<br />

Afin <strong>de</strong> perm<strong>et</strong>tre aux machines <strong>de</strong> la famille Mega <strong>de</strong> croître régulièrement jusqu'à un million <strong>de</strong> PEs<br />

sans discontinuités introduites par <strong>de</strong>s ruptures <strong>de</strong> cartes, <strong>de</strong> racks ou d'armoires, la grille 3D est réalisée<br />

au moyen d'un composant unique conçu spécialement pour le montage tridimensionnel : le MegaPack<br />

(b). Il s'agit d'un support <strong>de</strong> circuit VLSI pouvant s'interconnecter directement dans les trois dimensions<br />

sans recourir aux moyens <strong>de</strong> montage mécanique classiques. C<strong>et</strong>te technique a l'avantage d'être<br />

régulière, scalable <strong>et</strong> compacte. Les machines <strong>de</strong> la famille Mega utilisent <strong>de</strong>s PEs monochip (c).<br />

Chaque PE est constitué <strong>de</strong> trois entités :<br />

– Le CPU est <strong>de</strong> type RISC, d'abord pour <strong>de</strong>s raisons <strong>de</strong> compacité. Il travaille sur 16 bits <strong>et</strong> peut<br />

adresser 64 k oct<strong>et</strong>s <strong>de</strong> mémoire locale <strong>et</strong> 2 32 processus.<br />

– La Mémoire Locale a une taille maximale <strong>de</strong> 64k oct<strong>et</strong>s. Elle peut contenir jusqu'à 4k processus<br />

<strong>de</strong> 16 oct<strong>et</strong>s <strong>de</strong> taille moyenne.<br />

– Le Routeur est relié à la mémoire locale <strong>et</strong> aux 6 voisins grâce à un p<strong>et</strong>it Crossbar matériel 7 x 7.<br />

Il assure <strong>de</strong> manière complètement matérielle le routage <strong>de</strong>s messages sur la grille 3D.<br />

10 6 processeurs<br />

élémentaires<br />

2 32 processus<br />

Lisp concurrents<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Algorithmique Parallèle<br />

13<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

Bio-physique :<br />

– Parallélisme intrinsèquement data-parallèle<br />

– Parallélisme à grain très fin (tableaux)<br />

Les approches inspirées <strong>de</strong> la nature physique <strong>et</strong>/ou biologique (par<br />

exemple, la Swarm Intelligence) ont généralement une structure qui est<br />

intrinsèquement data parallèle, c’est-à-dire qui s’exprime directement<br />

sous forme <strong>de</strong> topologies régulières à grain très fin, comme <strong>de</strong>s tableaux :<br />

Temps<br />

discr<strong>et</strong><br />

Une fourmi = un agent = une case <strong>de</strong> tableau = un entier<br />

Une neurone = un agent = une case <strong>de</strong> tableau = un réel<br />

T 3<br />

…<br />

T 2<br />

T 1<br />

T 0<br />

Topologie discrète<br />

Tissu Spatio-temporel<br />

Espace<br />

L'école d'algorithmique parallèle a fondé ses travaux sur le concept <strong>de</strong><br />

substrat spatio-temporel synchrone ou « Tissu ». L'idée consiste à<br />

rechercher <strong>de</strong>s applications où il est possible <strong>de</strong> déterminer une relation<br />

simple entre la structure <strong>de</strong> l'application <strong>et</strong> un espace Euclidien à N<br />

dimensions (souvent N = 1, 2, 3). C<strong>et</strong>te correspondance est fréquemment<br />

obtenue après une discrétisation du problème à traiter (par exemple en<br />

physique : éléments finis, Weather co<strong>de</strong> ...). Les dimensions <strong>de</strong> l'espace<br />

Euclidien sont alors mappées (avec d'éventuels repliages) sur les<br />

dimensions du Tissu. Le Tissu comporte une composante spatiale : le<br />

nombre <strong>de</strong> processeurs élémentaires (PEs), organisé en une ou plusieurs<br />

dimensions ; il comporte aussi une composante temporelle : les cycles <strong>de</strong><br />

calcul. Le Tissu est un substrat <strong>de</strong> calcul synchrone dans le temps : à<br />

chaque cycle, une opération est effectuée sur tous les points du tissu pour<br />

générer un nouveau tissu ; il est aussi « synchrone dans l'espace » : par<br />

analogie, pour exprimer le régularité <strong>de</strong> la distribution <strong>de</strong>s données sur<br />

l'espace.<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Contrôle centralisé<br />

14<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

Domaine : Modélisation <strong>et</strong> simulation<br />

Principe : Algorithme itératif (Nest) sur une seule machine.<br />

NEST [f, S 0<br />

, n]<br />

Situation S 0<br />

Scalaire<br />

Multiple<br />

Newton<br />

Recuit<br />

May, …<br />

Topologie : Array<br />

Voisinage<br />

Interactions statiques<br />

Contrôle synchrone<br />

¬ Topologie : S<strong>et</strong><br />

¬ Voisinage (Ether)<br />

Interactions random<br />

Contrôle asynchrone<br />

1<br />

λ = 2.9<br />

ACs, ALife, RNs, AGs, …<br />

Cham, Gamma<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

Point <strong>de</strong> <strong>de</strong>part<br />

.<br />

/<br />

.<br />

0.2 0.4 0.6 0.8 1<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Opérateur Nest<br />

15<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

L’opérateur Nest<br />

En Mathematica, il existe un opérateur d'itération qui perm<strong>et</strong><br />

d'implémenter <strong>de</strong> manière aisée <strong>de</strong>s processus dynamiques. C'est<br />

l'opérateur Nest. L'opérateur Nest prend trois arguments :<br />

- une fonction <strong>de</strong> transfert F qui décrit le processus,<br />

- une condition initiale ,<br />

- un nombre entier positif d'itérations<br />

Clear@FD; Nest@F, x 0 ,n= 4D<br />

F@F@F@F@x 0 DDDD<br />

L’opérateur NestList<br />

L'opérateur NestList fonctionne <strong>de</strong> la même manière mais il renvoie<br />

la liste <strong>de</strong>s itérations intermédiaires, i.e. <strong>de</strong>s sorties du processus<br />

NestList@F, x 0 ,4D<br />

x 0<br />

F@x 0 D<br />

F@F@x 0 DD<br />

F@F@F@x 0 DDD<br />

F@F@F@F@x 0 DDDD<br />

F@F@F@F@F@x 0 DDDDD<br />

F@F@F@F@F@F@x 0 DDDDDD<br />

Exemple 1 : un compteur<br />

Ici nous avons choisi d'utiliser, comme fonction f, une fonction pure :<br />

(#+1)&. Nous rappelons que "(...)&" est une abréviation syntaxique<br />

pour dénoter une fonction pure <strong>et</strong> que # représente l'argument <strong>de</strong> la<br />

fonction (auquel on ajoute 1 ici).<br />

NestList[(#+1)&,0,25]<br />

=>{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,<br />

18,19,20,21,22,23,24,25}<br />

Exemple 2 : la suite <strong>de</strong>s puissances <strong>de</strong> <strong>de</strong>ux<br />

On obtient la suite <strong>de</strong>s puissances <strong>de</strong> 2 en <strong>multi</strong>pliant par 2 à chaque<br />

itération l'élément précé<strong>de</strong>nt (représenté par #) :<br />

NestList[(2*#)&,1,10]<br />

=> {1,2,4,8,16,32,64,128,256,512,1024}<br />

Exemple 3 : un processus cyclique<br />

Souvent les processus dynamiques produisent <strong>de</strong>s cycles. Voici un<br />

exemple simple <strong>de</strong> cycle d'ordre 1 (la suite alterne entre <strong>de</strong>ux valeurs) :<br />

NestListA i j <br />

1 y<br />

z &, x, 10E<br />

k # {<br />

9x, <br />

1<br />

x ,x, <br />

1<br />

x ,x, <br />

1<br />

x ,x, <br />

1 x ,x, <br />

1<br />

x ,x=<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Itération <strong>de</strong> processus<br />

16<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

Algorithme itératif <strong>de</strong>s Sumériens<br />

Il y a déjà 4000 ans, les Sumériens connaissaient un algorithme itératif pour calculer √<br />

a à partir <strong>de</strong>s quatre opérations <strong>de</strong> base (+, -, *, /). Il s'agit <strong>de</strong> calculer la suite <strong>de</strong>s (x i<br />

)<br />

telle que :<br />

1<br />

0.8<br />

λ = 4<br />

-20<br />

0<br />

20<br />

x n+1 = 1 <br />

2<br />

i<br />

jx n +<br />

k<br />

<br />

a y<br />

z F@x_D := <br />

1<br />

x n {<br />

2 Jx + <br />

a<br />

x N<br />

Pour calculer la liste l <strong>de</strong>s valeurs successives <strong>de</strong> la suite (x i<br />

) il suffit d'utiliser<br />

l'opérateur d'itération NestList. On commence en posant x 0<br />

= a. Voici les trois<br />

premières itérations effectuées <strong>de</strong> manière symbolique (a n'est pas défini)<br />

NestList@F, a, 3D<br />

a<br />

1+a<br />

<br />

2<br />

1<br />

<br />

I <br />

2a + <br />

1+a M<br />

2 1+a 2<br />

1<br />

<br />

2<br />

i 2a<br />

j <br />

<br />

2a<br />

k 1+a + <br />

1+a + <br />

1<br />

2<br />

I <br />

2a + <br />

1+a<br />

2 1+a<br />

My 2<br />

z<br />

{<br />

0.6<br />

0.4<br />

0.2<br />

zone <strong>de</strong> <strong>de</strong>part<br />

0.2 0.4 0.6 0.8 1<br />

Equation <strong>de</strong> May (Lapins)<br />

40<br />

30<br />

20<br />

10<br />

0<br />

-10<br />

0<br />

10<br />

Attracteur <strong>de</strong> Lorentz (Météo)<br />

Pour calculer √ 2, on pose x 0<br />

= a = 2. Ici, on effectue 6 itérations :<br />

l = NestList@F, 2, 6D<br />

:2, <br />

3<br />

2 , <br />

17<br />

12 , <br />

577<br />

408 , <br />

665857<br />

470832 , <br />

886731088897<br />

627013566048 , <br />

1572584048032918633353217<br />

<br />

><br />

1111984844349868137938112<br />

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

{2.,1.5,1.41667,1.41422,1.41421,1.41421,1.41421}<br />

Transformation du Boulanger<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Style <strong>de</strong> <strong>programmation</strong> data parallèle<br />

17<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

Dans le style <strong>de</strong> <strong>programmation</strong> data parallèle, on travaille <strong>de</strong> manière séquentielle sur <strong>de</strong>s données essentiellement non scalaires. C’est par exemple<br />

<strong>de</strong>s tableaux à N dimensions. La <strong>programmation</strong> data parallèle propose <strong>de</strong>s opérateurs spécifiques sur ces données comme l’α-notation, la β-<br />

réduction, la δ-diffusion <strong>et</strong>c. De même, les opérateurs <strong>de</strong> contrôle séquentiels comme IF sont étendus à leur analogue data parallèle : WHEN.<br />

Float x, y, z, s, m, r, k<br />

Float A[1000], B[1000], C[1000], D[1000],<br />

cycles<br />

1. x=1.0<br />

2. y=2.0<br />

3. z=x+y<br />

4. A=z<br />

5. A=A+B<br />

6. C=A*1.123<br />

7. D=A+C<br />

8. s=SUM(C)<br />

9. m=s/1000<br />

10. WHEN D(i) >m<br />

THEN<br />

11. A=A+B<br />

12. k=k+1.0<br />

ELSE<br />

13. A=A+B<br />

14. k=k-1.0<br />

ENDWHEN<br />

15. r=SUM(A)<br />

16. r=r/m<br />

17. …<br />

Yes<br />

Actif<br />

Opération scalaire<br />

δ-Diffusion : passage d’un scalaire à un tableau<br />

Inactif<br />

α-notation (1000 opérations + sont<br />

exécutées en un seul cycle<br />

machine)<br />

β-réduction : passage d’un tableau à un scalaire<br />

No<br />

β-réduction pour simplifier on considère qu’une<br />

β-réduction prend un seul cycle mais c’est<br />

souvent en Log(n)<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


La Connection Machine<br />

18<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

A la fin <strong>de</strong>s années 1970, un jeune étudiant du MIT, Daniel Hillis, qui travaillait dans le<br />

Laboratoire d'Intelligence Artificielle a eu l'idée d'une machine parallèle ayant plusieurs<br />

dizaines <strong>de</strong> milliers <strong>de</strong> processeurs : la Connection Machine. Le premier prototype,<br />

financé par le ministère <strong>de</strong> la Défense a été construit en 1985.<br />

• La CM-1 qui vient tout droit du prototype construit au MIT est une architecture très<br />

originale qui allie un mo<strong>de</strong> <strong>de</strong> fonctionnement SIMD à grain fin, proche <strong>de</strong>s machines<br />

Cellulaires, à un mo<strong>de</strong> <strong>de</strong> communication à Passage <strong>de</strong> Messages très sophistiqué. La<br />

philosophie <strong>de</strong> c<strong>et</strong>te machine peut être résumée par « calculer avec <strong>de</strong>s connexions ».<br />

• La CM-2, puis la CM-200, superpose à l'architecture <strong>de</strong> la CM-1 un mo<strong>de</strong> <strong>de</strong> calcul<br />

flottant 32 bits qui perm<strong>et</strong> à c<strong>et</strong>te machine <strong>de</strong> traiter réellement <strong>de</strong> gran<strong>de</strong>s applications<br />

<strong>de</strong> traitement numérique intensif. C'est c<strong>et</strong>te nouvelle mouture qui a fait le succès<br />

commercial <strong>de</strong> TMC.<br />

Ce qui distingue fondamentalement la Connection Machine <strong>de</strong>s autres ordinateurs<br />

parallèles c'est la finesse du grain <strong>de</strong> parallélisme. Un ordinateur parallèle classique<br />

possè<strong>de</strong> généralement quelques processeurs (<strong>de</strong> 4 à 16 en général) dont la structure est<br />

proche <strong>de</strong> celle d'un ordinateur séquentiel. Les tâches qui sont exécutées en parallèle sur<br />

les processeurs ressemblent aussi par leur taille <strong>et</strong> par leur structure aux programmes<br />

<strong>de</strong>s ordinateurs séquentiels. On peut donc considérer que les ordinateurs parallèles<br />

classiques sont <strong>de</strong>s extensions <strong>de</strong>s ordinateurs séquentiels. Dans la Connection<br />

Machine, D. Hillis a pris un parti radicalement différent en utilisant <strong>de</strong>s processeurs<br />

beaucoup plus p<strong>et</strong>its <strong>et</strong> <strong>de</strong>s tâches beaucoup plus p<strong>et</strong>ites : contrairement aux processeurs<br />

<strong>de</strong>s autres ordinateurs qui traitent <strong>de</strong>s informations sur 32 bits, un processeur <strong>de</strong> la<br />

Connectio Machine n'est capable <strong>de</strong> traiter que <strong>de</strong>s informations sur un seul bit ; <strong>de</strong><br />

même, les tâches que peut effectuer un processeur <strong>de</strong> la Connection Machine sont<br />

extrêmement simplifiées par rapport à celles <strong>de</strong>s processeurs classiques. Il résulte <strong>de</strong><br />

tout cela que les processeurs <strong>de</strong> la Connection Machine ont une très faible puissance <strong>de</strong><br />

calcul, en revanche leur structure matérielle est très simple ce qui perm<strong>et</strong> d'en m<strong>et</strong>tre<br />

beaucoup : la version actuellement commercialisée possè<strong>de</strong> 2 16 Processeurs<br />

Elémentaires (PE). La puissance <strong>de</strong> calcul est obtenue par la mise en parallèle non plus<br />

d'une dizaine <strong>de</strong> tâches mais <strong>de</strong> dizaines <strong>de</strong> milliers <strong>de</strong> tâches !<br />

2 16 processeurs monobits<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Mo<strong>de</strong>s <strong>de</strong> voisinage SIMD<br />

19<br />

Modèles <strong>de</strong> <strong>programmation</strong> agent<br />

Le modèle SIMD se décompose en trois sous-types selon le <strong>de</strong>gré <strong>de</strong> contrainte topologique appliquée au domaine <strong>de</strong>s <strong>agents</strong> :<br />

– Dans le premier modèle d'organisation, il n'y a pas <strong>de</strong> structure <strong>de</strong> voisinage, donc pas <strong>de</strong> topologie du domaine. On dispose alors d'une population d'<strong>agents</strong> munie <strong>de</strong> la<br />

structure la plus faible, i.e. celle d'ensemble.<br />

– Dans le <strong>de</strong>uxième modèle d'organisation, l'ensemble <strong>de</strong>s <strong>agents</strong> est aussi muni d'une topologie, définie par une structure <strong>de</strong> voisinage. Les <strong>agents</strong> sont libres <strong>de</strong> se déplacer<br />

sur c<strong>et</strong>te 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 <strong>de</strong> Swarm<br />

intelligence.<br />

– Dans le troisième modèle d'organisation, l'ensemble <strong>de</strong>s <strong>agents</strong> est aussi muni d'une topologie. De plus, les <strong>agents</strong> occupent <strong>de</strong> manière fixe les points <strong>de</strong> c<strong>et</strong>te topologie : ils<br />

sont statiques. On parle alors <strong>de</strong> réseau cellulaire, très proche <strong>de</strong>s automates cellulaires.<br />

Minimale<br />

Contrainte topologique<br />

Maximale<br />

Population Swarm Intelligence Réseau Cellulaire<br />

Ensemble d’<strong>agents</strong> SIMD<br />

sans topologie <strong>de</strong> voisinage :<br />

Agents SIMD dynamiques se<br />

déplaçant sur une grille 2D<br />

Agents SIMD statiques munis<br />

d’un voisinage 2D<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Architectures agent<br />

20<br />

1. Modèles <strong>de</strong> Programmation agent<br />

2. Architectures agent<br />

3. Intelligence Collective<br />

4. Automates Cellulaires<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Gran<strong>de</strong>s approches <strong>agents</strong><br />

21<br />

Approches <strong>agents</strong><br />

1. Approches opérationnelles <strong>et</strong> informationnelles<br />

– Agents = composant (<strong>agents</strong> procéduraux)<br />

– Agents = Kbase (<strong>agents</strong> épistémiques)<br />

2. Approches réactives <strong>et</strong> cognitives<br />

– Agents : sans représentation (micro <strong>agents</strong>)<br />

– Agents : avec représentations (macro-<strong>agents</strong>)<br />

T-3 = ***<br />

T-2 = ***<br />

T-1= ***<br />

Chronique<br />

Markovien<br />

3. Approches <strong>de</strong>scendantes <strong>et</strong> ascendantes<br />

– Analyse <strong>de</strong>scendante = <strong>programmation</strong> orientée agent (<strong>agents</strong> obj<strong>et</strong>s)<br />

– Organisation ascendante = émergence <strong>de</strong> formes (simulation <strong>de</strong> populations d’<strong>agents</strong>)<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Approches Opérationnelles <strong>et</strong> Informationnelles<br />

22<br />

Approches <strong>agents</strong><br />

De manière analogue à un ordinateur qui est composé <strong>de</strong> <strong>de</strong>ux entités essentielles exprimant <strong>de</strong>ux phénomènes différents <strong>et</strong><br />

complémentaires : l’unité <strong>de</strong> calcul <strong>et</strong> l’unité <strong>de</strong> mémoire, on peut considérer les <strong>agents</strong> selon <strong>de</strong>ux gran<strong>de</strong>s approches :<br />

Approche Opérationnelle<br />

Les <strong>agents</strong> vus comme <strong>de</strong>s<br />

Composants actifs<br />

Approche Informationnelle<br />

Les <strong>agents</strong> vus comme <strong>de</strong>s<br />

Knowledge bases<br />

- Architecture : plateformes <strong>agents</strong><br />

- CORBA,<br />

- Multiprocessing,<br />

- Agents mobiles, <strong>et</strong>c.<br />

- Problématique : coopération, coordination <strong>et</strong><br />

compétition pour accomplir une tâche.<br />

- Architecture : Knowledge bases (Kbase)<br />

distribuées<br />

- Problématique : hétérogénéité<br />

- Des représentations (langages support différents)<br />

- Des concepts (ontologies différentes)<br />

- Des connaissances (point <strong>de</strong> vue local sur un mon<strong>de</strong><br />

ouvert = croyances)<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Agents Composants<br />

23<br />

Approches <strong>agents</strong><br />

Souvent les concepteurs d’<strong>agents</strong>composants<br />

n’ont pas hésité à tomber<br />

dans la ‘boxologie’, proposant <strong>de</strong><br />

véritables usines à gaz toujours en<br />

manque d’un module : un problème ?<br />

Yaka ajouter un module<br />

Unité <strong>de</strong> décision<br />

Gestion <strong>de</strong>s<br />

buts, intentions<br />

Mémoire à<br />

court terme<br />

(runtime)<br />

Mémoire à long<br />

terme (Ontologies)<br />

Mémoire à long<br />

terme (Procédures)<br />

Interprétation<br />

<strong>de</strong>s captions<br />

Modélisation<br />

<strong>de</strong> la situation<br />

Unité <strong>de</strong><br />

planification<br />

<strong>de</strong>s tâches<br />

Accès aux mémoires<br />

Raisonnement<br />

à partir <strong>de</strong> cas<br />

Module<br />

d’Apprentissage<br />

Capteur<br />

Capteur<br />

Capteur<br />

Capteur<br />

Synthèse <strong>de</strong>s captions<br />

Appendice<br />

(ne sert plus<br />

àrien)<br />

Interprétation<br />

<strong>de</strong>s<br />

messages<br />

Unité <strong>de</strong><br />

Production<br />

<strong>de</strong>s réponses<br />

Emission <strong>et</strong> réception <strong>de</strong>s messages<br />

Gestion <strong>de</strong>s canaux <strong>de</strong> communication<br />

Unité <strong>de</strong> contrôle <strong>et</strong><br />

<strong>de</strong> coordination <strong>de</strong>s<br />

affecteurs<br />

Unité <strong>de</strong> contrôle <strong>et</strong> <strong>de</strong><br />

coordination <strong>de</strong>s capteurs<br />

Affecteur<br />

Affecteur<br />

Affecteur<br />

Affecteur<br />

Canal<br />

Canal<br />

Canal<br />

Canal<br />

Un composant<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Agents Informationnels<br />

24<br />

Approches <strong>agents</strong><br />

Agent = Kbase<br />

Un agent Informationnel est réduit à sa Kbase (Knowledge base). On utilise c<strong>et</strong>te approche pour<br />

- faire <strong>de</strong>s simulations <strong>de</strong> communautés <strong>agents</strong> dites épistémiques<br />

- raisonner sur les représentations internes <strong>de</strong>s <strong>agents</strong>.<br />

Les autres<br />

<strong>agents</strong> du<br />

collectif<br />

CHbase : Liste<br />

<strong>de</strong>s canaux vers<br />

les <strong>agents</strong><br />

connus par A<br />

X<br />

Y<br />

K<br />

W<br />

Kbase : Liste<br />

<strong>de</strong>s faits connus<br />

par A<br />

Rbase : Liste<br />

<strong>de</strong>s règles<br />

connues par A<br />

P(x)<br />

R(a, b, c)<br />

NOT Q(x)<br />

père(x_) homme(x)<br />

arc(x_, y_) AND arc(y_, z_) arc(x, z)<br />

Expressions<br />

en LPO<br />

Agents<br />

Informationnels<br />

du Toolkit Buzz<br />

Gbase : Liste<br />

<strong>de</strong>s buts <strong>de</strong> A<br />

A<br />

QUERY [ _P ]<br />

QUERY [ R(a_, _, _) ]<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Agents réactifs <strong>et</strong> cognitifs<br />

25<br />

Approches <strong>agents</strong><br />

Les <strong>architectures</strong> d’<strong>agents</strong> sont généralement classés en <strong>de</strong>ux catégories :<br />

– Les <strong>agents</strong> réactifs sont issus <strong>de</strong> la modélisation physicaliste du<br />

mon<strong>de</strong> : ils sont assimilés à <strong>de</strong>s fonctions <strong>de</strong> transition<br />

– Les <strong>agents</strong> cognitifs sont issus <strong>de</strong> la modélisation mentaliste du<br />

mon<strong>de</strong> : ils sont assimilés à <strong>de</strong>s systèmes experts.<br />

Raisonnement sur<br />

les représentations<br />

Actions sur<br />

le mon<strong>de</strong><br />

S t T S t+1 = T(S t )<br />

Situation<br />

Fonction <strong>de</strong><br />

transition<br />

Représentations<br />

- du mon<strong>de</strong><br />

- <strong>de</strong> soi (buts)<br />

R<strong>et</strong>ours d’effort<br />

sur les actions<br />

• Modèle <strong>de</strong> blackbox (fonctions)<br />

• Comportements réflexes<br />

• Représentations purement sensorimotrices<br />

• Pas d’anticipation<br />

• Comportements téléonomiques (liés à <strong>de</strong>s buts)<br />

• Représentations symboliques<br />

• Planification<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Exemple d’agent réactif <strong>et</strong> cognitif<br />

26<br />

Approches <strong>agents</strong><br />

Problème : « Rob doit<br />

sortir <strong>de</strong> la pièce ».<br />

DC<br />

Rob<br />

Serrure<br />

Porte ouverte : PO<br />

Porte Fermée : PF<br />

Porte Fermée à clé : PFC<br />

DP<br />

Rob possè<strong>de</strong> la clé : C<br />

Rob ne possè<strong>de</strong> pas la clé : ¬ C<br />

Porte<br />

Position DP = Devant la Porte<br />

Position DC = Devant la Clé<br />

Rob réactif<br />

la fonction <strong>de</strong> transition T est un ensemble non ordonné <strong>de</strong> règles <strong>de</strong> type<br />

Si condition alors action<br />

qui sont exécutées dans une boucle infinie <strong>et</strong> non déterministe :<br />

Si DP ∧ PO<br />

Si DP ∧ PF<br />

Si DP ∧ PFC ∧ C<br />

Si DP ∧ PFC<br />

Si DC ∧ C<br />

Si DC ∧ ¬ C<br />

Alors SORTIR<br />

Alors OUVRIR<br />

Alors DEVEROUILLER<br />

Alors RANDOM-WALK<br />

Alors RANDOM-WALK<br />

Alors PRENDRE-CLE<br />

Question : prouver que le système {règles + CI} où CI = conditions initiales<br />

quelconques, converge c’est-à-dire que Rob finit bien par sortir au bout d’un «<br />

certain temps ».<br />

Rob cognitif<br />

L’agent possè<strong>de</strong> un plan P pour sortir qu’il exécute <strong>de</strong> manière séquentielle <strong>et</strong><br />

déterministe quelle que soit sa position <strong>de</strong> départ <strong>et</strong> quel que soit l’état initial du<br />

mon<strong>de</strong> :<br />

ALLER-A DP ― appel du sous-plan ALLER-A(x,y)<br />

Si PO Alors SORTIR<br />

Sinon Si PF Alors OUVRIR;SORTIR<br />

Sinon Si PFC<br />

Alors Si C Alors DEVEROUILLER;OUVRIR;SORTIR<br />

Sinon ALLER-A DC<br />

PRENDRE-CLE<br />

ALLER-A DP<br />

DEVEROUILLER;OUVRIR;SORTIR<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Problématique <strong>de</strong>s <strong>agents</strong> réactifs<br />

27<br />

Approches <strong>agents</strong><br />

La problématique <strong>de</strong>s <strong>agents</strong> réactifs porte sur la notion très générale :<br />

d’émergence d’une forme sur une population<br />

Population :<br />

– Ethologie : ensemble d’insectes, d’oiseaux,vers<br />

– Physique, chimie, biologie : gaz sur réseaux, mécanique<br />

statistique, ensemble <strong>de</strong> grains <strong>de</strong> sable, <strong>de</strong> molécules, <strong>de</strong><br />

protéines, <strong>de</strong> virus,<br />

– Informatique : ensemble <strong>de</strong> robots, <strong>de</strong> programmes web<br />

– Sociologie : groupes, associations, collectifs d’humains, …<br />

Emergence :<br />

– Mon<strong>de</strong> microscopique : propriétés connues / fixées <strong>de</strong>s<br />

composants / individus / entités / <strong>agents</strong> <strong>de</strong> la population<br />

– Mon<strong>de</strong> macroscopique : propriétés observées sans connexion<br />

directe avec les propriétés <strong>de</strong>s composants<br />

Forme :<br />

– Géométrique : fleurs, cristaux, couleurs, dômes, cellules<br />

hexagonales, bancs <strong>de</strong> poissons<br />

– Physique : molécules ⇒ gaz ⇒ eau ⇒ glace ; excitation ⇒<br />

chaleur, vitesse ⇒ dur<strong>et</strong>é <strong>de</strong> l’eau,<br />

– Structurelle : fonctions, organisations, rôles,<br />

– Comportementale : construction d’une toile d’araignée, d’un<br />

dôme, murs du lac Huron, guerre <strong>de</strong>s fourmis, oiseaux<br />

migrateurs, rats <strong>de</strong> Laborit, chef, bouc, altruisme, coopération,<br />

peur, amour, …<br />

Forme<br />

macroscopique<br />

observée<br />

Processus d’itération d’une fonction<br />

<strong>de</strong> transition T sur la population<br />

Population initiale d’<strong>agents</strong> à grain fin<br />

homogène = pas <strong>de</strong> forme globale observable<br />

Propriété<br />

microscopique<br />

fixée<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Organisation ascendante : Gestalt<br />

28<br />

Approches <strong>agents</strong><br />

« Une organisation peut être définie comme un agencement <strong>de</strong> relations entre composants ou individus qui<br />

produit une unité, ou système, dotée <strong>de</strong> qualités inconnues au niveau <strong>de</strong>s composants ou individus. L’organisation<br />

lie <strong>de</strong> façon interrelationnelle <strong>de</strong>s éléments ou <strong>de</strong>s événements ou individus divers qui dès lors <strong>de</strong>viennent <strong>de</strong>s<br />

composants d’un tout. Elle assure solidarité <strong>et</strong> solidité relative donc assure au système une certaine possibilité <strong>de</strong><br />

durée en dépit <strong>de</strong> perturbations aléatoires. »<br />

Edgar Morin, La Métho<strong>de</strong> (1), 1977<br />

Niveau<br />

macroscopique<br />

TOUT = Organisation<br />

« Le Tout est la résultante <strong>de</strong>s<br />

parties » Piag<strong>et</strong><br />

Niveau<br />

microscopique<br />

Forces <strong>de</strong><br />

cohésion<br />

Qualités <strong>et</strong> quantités locales<br />

Gestalt Théorie (Guillaume 1930) :<br />

« Le tout est plus que la somme <strong>de</strong>s parties »<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Analyse <strong>de</strong>scendante : Agentification<br />

29<br />

Approches <strong>agents</strong><br />

Analyse fonctionnelle<br />

Analyse structurale<br />

L’analyse fonctionnelle d’une organisation connue a priori conduit à l’i<strong>de</strong>ntification<br />

<strong>de</strong>s principales fonctions que les composants (entités physiques) doivent remplir.<br />

Exemples <strong>de</strong> fonctions :<br />

– Fonction représentationnelle<br />

– Fonction <strong>de</strong> contrôle (scheduling <strong>de</strong> tâches)<br />

– Fonction conative : gestion <strong>de</strong> l’action vers l’extérieur (buts, contrats)<br />

– Fonction communicationnelle<br />

– Fonction opératoire : ce que l’agent rend comme service<br />

– Fonction végétative : métabolisme, intendance.<br />

L’analyse structurale d’une organisation correspond au problème classique <strong>de</strong><br />

l’organisation <strong>de</strong>s entreprises :<br />

– Structure horizontale : orienté savoir-faire (spécialisation <strong>de</strong>s tâches),<br />

– Structure verticale : orienté proj<strong>et</strong> (but, mission)<br />

Agent mission<br />

Agent-organe ?<br />

Agent-fonction ? Fonction <strong>de</strong> placement Agent 1<br />

Fonctions<br />

Fonction <strong>de</strong> transport Agent 2<br />

Fonction <strong>de</strong> recherche<br />

Agent 3<br />

Organes<br />

La problématique <strong>de</strong> la relation fonction ⇔ organe<br />

Fonction …<br />

Agent n<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Architectures à Blackboards<br />

30<br />

Architectures <strong>agents</strong><br />

L’origine <strong>de</strong>s <strong>architectures</strong> <strong>de</strong> systèmes <strong>multi</strong> <strong>agents</strong> à base <strong>de</strong> tableaux noirs (blackboard) vient du proj<strong>et</strong> HEARSAY II (Erman <strong>et</strong> al 1980) qui était<br />

un système <strong>multi</strong>-experts pour la reconnaissance <strong>de</strong> la parole. Chaque expert <strong>de</strong> HEARSAY II était un module d’IA classique spécialisé dans un <strong>de</strong>s<br />

domaines <strong>de</strong> la reconnaissance <strong>de</strong> la parole.<br />

Une architecture à tableau noir comprend trois sous-systèmes (Hayes Roth 1985) :<br />

– Un ensemble <strong>de</strong> Knowledge Sources (KSi),<br />

– Une base <strong>de</strong> connaissances partagée ou BlackBoard (BB),<br />

– Un dispositif <strong>de</strong> contrôle d’accès <strong>de</strong> Ksi au BB.<br />

Blackboard<br />

(connaissances partagées)<br />

Contrôle<br />

d’accès<br />

KS 1<br />

KS 2<br />

KS 3<br />

KS ..<br />

KS n<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Architectures à Règles <strong>de</strong> Production<br />

31<br />

Architectures <strong>agents</strong><br />

Dans les <strong>architectures</strong> à base <strong>de</strong> Règles, on assigne un système expert (ou<br />

système <strong>de</strong> règles) à un seul agent. Un système expert est composé <strong>de</strong><br />

trois parties essentielles :<br />

– Une base <strong>de</strong> faits (BF) qui contient la <strong>de</strong>scription <strong>de</strong>s états<br />

physiques <strong>et</strong> mentaux du mon<strong>de</strong>,<br />

– Une base <strong>de</strong> règles (BR) qui perm<strong>et</strong> <strong>de</strong> déduire <strong>de</strong>s faits à partir<br />

d’autres faits,<br />

– Un moteur d’inférence : ensemble d’heuristiques <strong>de</strong> planification<br />

qui utilisent BF <strong>et</strong> BR pour effectuer une tâche donnée.<br />

Base <strong>de</strong> faits (BF) :<br />

∃ T en 1<br />

∃ C en 2<br />

∃ GC en 3<br />

∃ B en 3<br />

∃ T en 1<br />

upon[B,GC]<br />

Rob : agent expert<br />

B<br />

Base <strong>de</strong> règles (BR) :<br />

Les règles sont <strong>de</strong> la forme : If Then <br />

Exemple : un plan en trois règles pour Poser T sur GC.<br />

If free(T) ∧ free(GC) then PUTON(T,GC)<br />

If ¬ free(T) Then MOVETO(X⏐upon(T,X), Y⏐free(Y))<br />

If ¬ free(GC) Then MOVETO(X⏐upon(GC,X), Y⏐free(Y))<br />

T<br />

C<br />

1 2<br />

Le mon<strong>de</strong> <strong>de</strong> cubes<br />

Terry Winograd (1972)<br />

GC<br />

3<br />

On a les conventions suivantes :<br />

• X,Y sont <strong>de</strong>s variables sur {T,C,GC,B}<br />

• MOVETO <strong>et</strong> PUTON sont d’autres plans<br />

• free <strong>et</strong> upon sont <strong>de</strong>s fonctions<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Architectures <strong>de</strong> Subsomption<br />

32<br />

Architectures <strong>agents</strong><br />

L’architecture <strong>de</strong> Subsomption <strong>de</strong> Rodney Brooks (1986) a été<br />

proposée pour construire une nouvelle génération <strong>de</strong> Robots non<br />

cognitifs comme c’était le cas dans les années précé<strong>de</strong>ntes mais fondés<br />

sur <strong>de</strong>s couches organisées <strong>de</strong> bas en haut, à partir <strong>de</strong>s organes<br />

sensorimoteurs, en une hiérarchie <strong>de</strong> modules à comportement limité.<br />

Chaque niveau a un rapport <strong>de</strong> dominance sur le module <strong>de</strong> niveau<br />

inférieur :<br />

S<br />

S<br />

Behavior N<br />

Behavior N<br />

R<br />

inhibition<br />

R<br />

N-2<br />

Agent hyper réactif :<br />

un robot explorateur en<br />

géologie<br />

Eviter les obj<strong>et</strong>s<br />

Récupérer <strong>de</strong> l’énergie<br />

Optimiser les chemins<br />

Construire une carte<br />

Explorer<br />

Prendre <strong>et</strong> déposer <strong>de</strong>s obj<strong>et</strong>s<br />

Capteurs<br />

Avancer <strong>de</strong> manière aléatoire<br />

Effecteurs<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Architectures dynamiques <strong>de</strong> contrôleurs<br />

33<br />

Architectures <strong>agents</strong><br />

Architectures Connexionnistes<br />

Architectures Evolutionnistes<br />

L’influence <strong>de</strong>s réseaux <strong>de</strong> neurones a été très vive dans les années 80-90 <strong>et</strong> <strong>de</strong>s<br />

<strong>architectures</strong> d’<strong>agents</strong> ont été proposés qui possè<strong>de</strong>nt un contrôleur basé sur un réseau<br />

<strong>de</strong> neurones formels :<br />

Entrées<br />

x i<br />

…<br />

Poids w i<br />

à déterminer<br />

y = F w i<br />

. xi<br />

]<br />

Sortie y<br />

1<br />

-1<br />

[∑<br />

F = Sigmoï<strong>de</strong><br />

De même, les Algorithme Génétiques ont apporté <strong>de</strong>s techniques qui ont été utilisées<br />

pour « élever » (sélectionner par évolution génétique) les meilleurs contrôleurs<br />

possibles pour un agent donné. Attention, dans ce cas, on n’a pas un système <strong>multi</strong><br />

agent mais une population d’<strong>agents</strong> : à la fin, on choisit un seul agent : le meilleur<br />

individu. Dans ce modèle :<br />

– Les faits sont <strong>de</strong>s chaînes binaires,<br />

– Les règles intègrent en plus <strong>de</strong>s jokers « # » qui représentent aussi bien un 0<br />

que un 1.<br />

Une règle prend en partie gauche un pattern qui matche les faits <strong>et</strong> en partie droite «<br />

ce en quoi le fait doit être réécrit ». Plusieurs règles peuvent matcher un même fait :<br />

c’est pourquoi on associe à chaque règle un poids qui perm<strong>et</strong> d’effectuer un choix<br />

aléatoire biaisé entre les règles concurrentes :<br />

Algorithme génétique :<br />

(Reproduction différentielle <strong>de</strong>s règles)<br />

Base <strong>de</strong> règles :<br />

0.4 : 1#10 → 1001<br />

0.8 : 01## → 0000<br />

0.6 : 011# → 0110<br />

Base <strong>de</strong> faits :<br />

Hopfield<br />

Réseaux totalement Connectés<br />

Multi Layer Perceptron (MLP)<br />

Réseaux à couches<br />

Perception<br />

1101<br />

0101<br />

0011 …<br />

Exécution<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Les Véhicules <strong>de</strong> Braitenberg<br />

34<br />

Architectures <strong>agents</strong><br />

En 1985, Valentino Braitenberg a écrit un livre intitulé « Vehicles –<br />

Experiments in Synth<strong>et</strong>ic Psychology » qui propose un modèle d’agent<br />

totalement réactif. Ce modèle a influence Brooks <strong>et</strong> fut implémentée<br />

par Luc Steels en 1994. l’architecture <strong>de</strong> l’agent est fondée sur la notion<br />

<strong>de</strong> système dynamique : les capteurs en entrées sont directement reliés<br />

aux effecteurs <strong>de</strong> sortie par <strong>de</strong>s équations différentielles.<br />

Contrairement à l’architecture <strong>de</strong> subsomption <strong>de</strong> Brooks, où les<br />

behaviors sont exclusifs <strong>et</strong> hiérarchisés (le niveau N inhibe les niveaux<br />


La Société <strong>de</strong> l’esprit<br />

35<br />

Architectures <strong>agents</strong><br />

En 1985, Marvin Minsky a présenté son livre fondateur « La Société <strong>de</strong> l’esprit » où il<br />

bat en brèche l’approche séquentielle <strong>de</strong> l’Intelligence Artificielle au profit d’une<br />

approche complètement distribuée. Il propose <strong>de</strong> décrire non pas une population mais<br />

un suj<strong>et</strong> unique comme une société d’<strong>agents</strong> en interaction.<br />

Le problème est alors inversé :<br />

• Systèmes <strong>multi</strong> <strong>agents</strong> = Population<br />

– Simulation sociale,<br />

– Organisation <strong>de</strong> comportements collectifs,<br />

– Compétence Distribuée.<br />

• Système <strong>multi</strong> agent = Un agent unique<br />

– Individuation (synthèse du suj<strong>et</strong> comme émergent)<br />

– Modélisation parallèle <strong>de</strong> la cognition humaine<br />

– Subjectivité (awareness, ..).<br />

Système Multi agent<br />

Cela a débouché sur <strong>de</strong>s modèles <strong>de</strong> <strong>programmation</strong><br />

agent <strong>de</strong> type récursif où tout ou partie <strong>de</strong> l’agent est<br />

lui-même implémentée sous forme d’une <strong>de</strong>s<br />

<strong>architectures</strong> précé<strong>de</strong>ntes.<br />

Ces modules récursifs ont été critiqués par D. C.<br />

Denn<strong>et</strong>t comme « l’homonculus fallacy » dans son<br />

livre « Consciousness explained » (1991) où le<br />

concepteur enfouit toujours plus loin<br />

l’implémentation <strong>de</strong>s concepts <strong>agents</strong>.<br />

Homonculus fallacy<br />

La Société <strong>de</strong> l’esprit<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Intelligence Collective<br />

36<br />

1. Modèles <strong>de</strong> Programmation agent<br />

2. Architectures agent<br />

3. Intelligence Collective<br />

4. Automates Cellulaires<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


L’organicisme<br />

37<br />

Intelligence Collective<br />

Bichat<br />

L'organicisme représente au départ une conception biologique, illustrée en France par Bichat, qui insiste sur la spécificité <strong>de</strong>s phénomènes que l'on<br />

peut observer au niveau d'un organisme entier. C<strong>et</strong>te conception s'oppose à l'associationnisme cartésien puis positiviste qui propose d'expliquer le<br />

Tout comme une association <strong>de</strong> Parties ; au contraire, l'organicisme prétend que c'est le Tout (Gestalt) qui explique les Parties.<br />

Les philosophes grecs<br />

après la métaphore <strong>de</strong>s membres <strong>et</strong> <strong>de</strong> l'estomac d'Esope, Platon <strong>et</strong> Aristote ont montré l'originalité du Tout par rapport à ses parties : "le tout n'est pas<br />

la somme <strong>de</strong>s parties".<br />

Herbert Spencer : au 19ème siècle, après Schelling <strong>et</strong> en même temps que Fechner, Heackel ... il développe une théorie sociologique où la société est<br />

vue comme un organisme (1882). Il fait les analogies suivantes :<br />

- la croissance inhérente, inéluctable (comme "on<strong>de</strong> porteuse"),<br />

- la différenciation <strong>de</strong>s fonctions (division du travail),<br />

- la mutuelle détermination <strong>de</strong>s parties (tout se tient),<br />

- la ressemblance à <strong>de</strong>s niveaux différents (fractalisation),<br />

- la durée <strong>de</strong> vie (qui sous-entend la mortalité).<br />

W.M. Wheeler<br />

Dans « The Ant colony as an organism » (1911), <strong>et</strong> même un superorganisme (1928). Ce concept sera repris par un autre entomologiste, Alfred E.<br />

Emerson (1939 - 1959). On peut finir avec le concept <strong>de</strong> Gaïa <strong>de</strong> James Lovelock (1972) qui suggère que la terre est un être vivant ...<br />

Le behaviorisme <strong>de</strong> E. Rabaud<br />

le 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<br />

travaux ont consisté à montrer que l'individu se comporte comme s'il était seul, les phénomènes d'entrai<strong>de</strong>, <strong>de</strong> division du travail, ... ne sont que <strong>de</strong>s<br />

formes émergentes a posteriori.<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


La marche erratique <strong>de</strong> la fourmi<br />

38<br />

Intelligence Collective<br />

On considère un agent particulier : une fourmi (Ant). Ce qui apparaît à<br />

l'observation <strong>de</strong> son comportement habituel <strong>de</strong> "fouragement" (foraging)<br />

ce sont <strong>de</strong>s déplacements qui semblent aléatoires au niveau local. On<br />

modélise une telle marche par une « random walk » d'un seul individu<br />

sur une topologie <strong>de</strong> grille à <strong>de</strong>ux dimensions.<br />

100<br />

RandCoo[{x,y}]:= {<br />

new_x = Random[{x-1,x+1}],<br />

new_y = Random[{y-1,y+1}]<br />

}<br />

On peut alors modéliser la marche erratique d'une fourmi par un<br />

processus, en itérant RandCoo (prise comme fonction <strong>de</strong> transition T)<br />

2000 fois :<br />

Nest[RandCoo, {50,50}, 2000]<br />

80<br />

60<br />

40<br />

Départ<br />

20<br />

20 40 60 80 100<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


L’odorat <strong>de</strong>s fourmis<br />

39<br />

Intelligence Collective<br />

La fourmi possè<strong>de</strong> un bon odorat. Elle communique avec les autres<br />

fourmis <strong>de</strong> manière principale avec <strong>de</strong>s o<strong>de</strong>urs portées par <strong>de</strong>s<br />

substances appelées phéromones. Elle peut aussi sentir l'o<strong>de</strong>ur <strong>de</strong>s<br />

proies <strong>et</strong> déterminer ainsi leur position <strong>et</strong> leur quantité.<br />

La fonction Sensor simule le détecteur d'une fourmi située à la position<br />

{i,j} sur une grille bidimensionnelle t. Elle renvoie le nombre<br />

d'éléments (<strong>de</strong> proies potentielles) <strong>de</strong> type x qui se trouvent dans un<br />

voisinage <strong>de</strong> Moore (les 8 cases voisines <strong>de</strong> {i,j}).<br />

On considère une population SIMD mobile <strong>de</strong> fourmis qui se déplacent<br />

sur une arène dont la topologie est une grille bidimensionnelle. Ici, nous<br />

appellerons proie tout ce qui "intéresse" la fourmi <strong>et</strong> qu'elle peut saisir<br />

<strong>et</strong> éventuellement manger <strong>et</strong>/ou transporter. On suppose que dans<br />

l'arène T où se déplacent les fourmis il existe trois types <strong>de</strong> proies<br />

(●,□,) qui sont dispersées au hasard <strong>de</strong> la manière suivante :<br />

Voisinage <strong>de</strong> Moore : zone <strong>de</strong><br />

détection <strong>de</strong>s proies<br />

10<br />

Û<br />

·<br />

·<br />

·<br />

8<br />

·<br />

Ê<br />

·<br />

Û<br />

Proie<br />

Ê<br />

6<br />

·<br />

Ê<br />

·<br />

Proie<br />

Û<br />

·<br />

4<br />

·<br />

Û<br />

Û<br />

·<br />

Ê<br />

Ê<br />

·<br />

Û<br />

·<br />

2<br />

Ê<br />

Û<br />

Ê<br />

Ê<br />

Û<br />

Ê<br />

·<br />

Û<br />

0<br />

0 2 4 6 8 10<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Tri collectif <strong>de</strong>s proies<br />

40<br />

Intelligence Collective<br />

On veut faire effectuer à la population <strong>de</strong> fourmis une opération <strong>de</strong> tri : chaque type <strong>de</strong> proie (●,□,) <strong>de</strong>vra être regroupé en un ou plusieurs tas.<br />

Les fourmis ne se concertent pas (on parle <strong>de</strong> coaction plutôt que <strong>de</strong> coopération): elles ont un comportement individuel, autonome, local. Le tri doit<br />

apparaître comme un processus d'émergence sur le système : arène + proie + fourmis.<br />

Au comportement en « random walk », déjà vu, nous ajoutons les <strong>de</strong>ux règles locales suivantes :<br />

— une proie est saisie avec une probabilité proportionnelle à son isolement dans le voisinage (<strong>de</strong> Moore),<br />

— une proie est lâchée avec une probabilité proportionnelle à sa présence dans le voisinage.<br />

20<br />

15<br />

10<br />

5<br />

0<br />

·<br />

Û<br />

Ê<br />

Ê<br />

Û<br />

Ê<br />

·<br />

·<br />

Û<br />

Û<br />

·<br />

·<br />

·<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

·<br />

·<br />

Û<br />

Û<br />

·<br />

Û<br />

·<br />

Ê<br />

Ê<br />

·<br />

·<br />

Ê<br />

Ê<br />

Û<br />

·<br />

Ê<br />

Ê<br />

Û<br />

·<br />

·<br />

Û<br />

Ê<br />

·<br />

Ê<br />

Û<br />

Ê<br />

·<br />

·<br />

·<br />

Û<br />

Û<br />

Ê<br />

·<br />

·<br />

Ê<br />

Ê<br />

Û<br />

·<br />

Û<br />

Ê<br />

Û<br />

Ê<br />

Ê<br />

Û<br />

Û<br />

Û<br />

·<br />

Ê<br />

·<br />

Ê<br />

·<br />

Ê<br />

·<br />

Ê<br />

Ê<br />

Ê<br />

Û<br />

Û<br />

Û<br />

Ê<br />

Ê<br />

Ê<br />

·<br />

Ê<br />

Ê<br />

Ê<br />

·<br />

Ê<br />

Û<br />

Ê<br />

Û<br />

·<br />

Û<br />

Ê<br />

Ê<br />

Û<br />

·<br />

Û<br />

Ê<br />

Ê<br />

Û<br />

Û<br />

·<br />

Û<br />

Û<br />

·<br />

Û<br />

Û<br />

Ê<br />

Û<br />

·<br />

·<br />

Ê<br />

Ê<br />

Û<br />

Û<br />

Û<br />

·<br />

Ê<br />

20<br />

15<br />

10<br />

5<br />

0<br />

·<br />

·<br />

·<br />

Û<br />

Û<br />

·<br />

·<br />

·<br />

·<br />

Û<br />

Û<br />

Ê<br />

·<br />

·<br />

·<br />

Û<br />

Û<br />

·<br />

·<br />

·<br />

·<br />

Ê<br />

Ê<br />

Ê<br />

·<br />

Û<br />

Û<br />

·<br />

·<br />

·<br />

·<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Û<br />

·<br />

·<br />

Ê<br />

Ê<br />

Ê<br />

Û<br />

Tas<br />

Ê<br />

·<br />

Ê<br />

Ê<br />

Ê<br />

·<br />

·<br />

·<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

·<br />

Û<br />

·<br />

Û<br />

·<br />

Û<br />

Û<br />

Û<br />

Û<br />

Û<br />

Û<br />

Û<br />

Tas<br />

Û<br />

Û<br />

Û<br />

Ê<br />

Ê<br />

Û<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Û<br />

Ê<br />

Ê<br />

Ê<br />

Û<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Û<br />

Û<br />

Û<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Û<br />

Û<br />

Ê<br />

Û<br />

Û<br />

Tas<br />

·<br />

·<br />

· ··<br />

Û<br />

Û<br />

Û<br />

·<br />

Û<br />

Ê<br />

Ê<br />

Ê<br />

Ê<br />

Û<br />

·<br />

0 5 10 15 20<br />

0 5 10 15 20<br />

Configuration initiale<br />

Configuration après 10 000 pas<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Patterns <strong>de</strong> fouragement<br />

41<br />

Intelligence Collective<br />

On considère une population d'<strong>agents</strong> constituée <strong>de</strong> fourmis. Une<br />

fourmi possè<strong>de</strong> a priori un comportement erratique. Cependant en<br />

présence d'un champ <strong>de</strong> phéromones, une fourmi peut être attirée dans<br />

une direction privilégiée en fonction du gradient du champ. On appelle<br />

un tel comportement tropique.<br />

Champ tropique<br />

La fonction RandEast simule une fourmi soumise à un tropisme Ouest<br />

→ Est : la marche est aléatoire en vertical mais déterministe en<br />

horizontal, vers l'est. On affiche la marche tropique <strong>de</strong> 10 fourmis<br />

partant d'un même point.<br />

50<br />

40<br />

30<br />

Cône <strong>de</strong> déflection<br />

20<br />

10<br />

20 40 60 80 100<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Champ <strong>de</strong> phéromones<br />

42<br />

Intelligence Collective<br />

Les fourmis utilisent les o<strong>de</strong>urs à base <strong>de</strong> phéromones pour marquer leur déplacements<br />

<strong>et</strong> pour se diriger. En se déplaçant, elles déposent <strong>de</strong>s phéromones qui leur servent plus<br />

tard pour revenir au nid. Au comportement erratique basique se superpose un<br />

comportement tropique phéromonal : une fourmi a tendance à aller là où il y a déjà eu<br />

un dépôt <strong>de</strong> phéromones.<br />

On constate que le champ tropique dépend <strong>de</strong>s dépôts <strong>de</strong> phéromones qui eux-mêmes<br />

dépen<strong>de</strong>nt <strong>de</strong>s déplacements qui dépen<strong>de</strong>nt du champ. On a donc affaire à un processus<br />

dynamique avec une boucle rétroactive. Le champ tropique n'est plus statique comme<br />

dans RandEast mais il est dynamique. Pour le modéliser, on utilise une variable qui<br />

représente la quantité ph(x,t) <strong>de</strong> phéromones au temps t d'un point x <strong>de</strong> l'arène où se<br />

déplacent les fourmis : ce sera classiquement un tableau à <strong>de</strong>ux dimensions.<br />

Pôle <strong>de</strong> Phéromones<br />

Tropisme<br />

Tropisme<br />

Simulation<br />

On se donne un champ où les dépôts phéromonaux sont disposés régulièrement sur<br />

l'arène pour former un "échiquier" <strong>de</strong> tropismes Les fourmis suivent les "vallées" du<br />

champ (qui n'est pas tout a fait symétrique). Le résultat dépendant peu du choix du point<br />

<strong>de</strong> départ.<br />

50<br />

50<br />

40<br />

40<br />

30<br />

30<br />

20<br />

20<br />

10<br />

10<br />

0<br />

0 20 40 60 80 100<br />

20 40 60 80 100<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Champ phéromonal dynamique<br />

43<br />

Intelligence Collective<br />

On rend le champ phéromonal dynamique en le faisant construire pas à pas par<br />

les fourmis elles-mêmes : elles déposent à chaque pas une unité <strong>de</strong> phéromone.<br />

La fonction PhWalk effectue une marche <strong>de</strong> n pas pour une fourmi partant du<br />

point {i0, j0}.<br />

On adoucit la fonction <strong>de</strong> choix Ran<strong>de</strong>astPh avec un poids <strong>de</strong> liberté smooth =<br />

0.25 qui fait que les fourmis ne ‘collent’ pas aussitôt au chemin précé<strong>de</strong>nt. On<br />

fait partir 50 fourmis à la queue leu leu du point {1, NC/2} qui correspond au<br />

nid.<br />

On trace les chemins en grisé en fonction du taux <strong>de</strong> phéromones déposées : on<br />

voit que dans le cône d'exploration il y a une trace noire (donc très odorante) qui<br />

se détache : c'est le chemin qui ramènera les fourmis au nid.<br />

50<br />

40<br />

30<br />

20<br />

10<br />

nid<br />

Ligne <strong>de</strong> renforcement : chemin <strong>de</strong><br />

r<strong>et</strong>our vers le nid<br />

Cône <strong>de</strong><br />

fouragement<br />

0<br />

0 20 40 60 80 100<br />

nid<br />

40<br />

30<br />

20<br />

10<br />

0<br />

20<br />

40<br />

60<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA<br />

Ligne <strong>de</strong> renforcement : chemin <strong>de</strong><br />

r<strong>et</strong>our vers le nid<br />

80<br />

100<br />

50<br />

40<br />

10<br />

20<br />

30 Cône <strong>de</strong><br />

fouragement<br />

On visualise mieux le fait que les fourmis<br />

empruntent souvent le même chemin grâce à la<br />

fonction ListDensityPlot qui perm<strong>et</strong> <strong>de</strong> montrer<br />

où sont déposées les phéromones sur le champ<br />

Tph :


Influence <strong>de</strong> la structure<br />

44<br />

Intelligence Collective<br />

Nous voulons modéliser le comportement d'une population d'<strong>agents</strong> particuliers : <strong>de</strong>s joueurs <strong>de</strong> football qui se déplacent sur un terrain <strong>de</strong> jeu, afin<br />

<strong>de</strong> simuler le phénomène d'usure <strong>de</strong> la pelouse. On considère que les joueurs traversent le terrain selon <strong>de</strong>s droites tirées au hasard <strong>et</strong> l'usent au<br />

passage.<br />

On construit la fonction <strong>de</strong> service RandDroite qui tire au sort une droite qui va traverser un terrain <strong>de</strong> dimensions {nl, nc}<br />

On peut tracer ce qui se passe sur le terrain pour 100 droites<br />

10<br />

8<br />

6<br />

4<br />

2<br />

2.5 5 7.5 10 12.5 15 17.5 20<br />

Terrain <strong>de</strong> foot<br />

Modèle simplifié <strong>de</strong> simulation<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Structure bornée ou torique<br />

45<br />

Intelligence Collective<br />

Pour vérifier que l'usure du terrain n'est pas uniforme, on construit une<br />

fonction MakeArea qui prend un terrain <strong>de</strong> dimensions {nl, nc} <strong>et</strong> qui<br />

l'use par k droites dont les points sont tirés au sort dans le domaine {nl,<br />

nc}.<br />

Chaque fois qu'un footballeur parcourt sa droite, il use le terrain t en<br />

ajoutant une unité là où il passe. Voila ce que cela donne pour un Arène<br />

carrée {30,30} au bout <strong>de</strong> 4000 passages :<br />

Inversement, nous allons considérer que le terrain n'a pas <strong>de</strong> bord, i.e.<br />

pas <strong>de</strong> lignes <strong>de</strong> touche. En termes <strong>de</strong> topologie, un terrain sans lignes<br />

<strong>de</strong> touche est équivalent à un tore (une bouée). Nous modélisons ceci en<br />

"rebouclant" les droites tirées au sort sur le terrain : si on sort à gauche<br />

(car on a le droit puisqu'il n'y a pas <strong>de</strong> ligne <strong>de</strong> touche !) on re-rentre<br />

immédiatement <strong>de</strong> manière symétrique à droite. La fonction MakeTore<br />

effectue ce mo<strong>de</strong> particulier en utilisant un Modulo.<br />

Pour les mêmes conditions, l'usure est manifestement équirépartie sur la<br />

surface du terrain.<br />

30<br />

30<br />

25<br />

25<br />

20<br />

20<br />

15<br />

10<br />

Avec les conventions prises<br />

l'usure apparaît en foncé. Il y a<br />

un eff<strong>et</strong> marqué au centre.<br />

15<br />

10<br />

5<br />

5<br />

0<br />

0 5 10 15 20 25 30<br />

Structure Bornée (touche)<br />

0<br />

0 5 10 15 20 25 30<br />

Structure Torique (pas <strong>de</strong> touche)<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Eff<strong>et</strong>s <strong>de</strong> biaisage<br />

46<br />

Intelligence Collective<br />

Ces <strong>de</strong>ux expériences montrent que l'on peut obtenir <strong>de</strong>s eff<strong>et</strong>s<br />

morphogénétiques macroscopiques à partir d'un processus stochastique<br />

local très légèrement biaisé : le temps <strong>et</strong> l'itérateur font alors émerger le<br />

biais pour lui ‘donner forme’.<br />

Nous donnons ci-<strong>de</strong>ssous la marche aléatoire d'un agent qui part du<br />

centre d'une arène 100 x 100 <strong>et</strong> effectue 3000 pas aléatoires<br />

Nous donnons ci-<strong>de</strong>ssous la marche aléatoire d'un agent qui part du<br />

bord d'une arène 100 x 200 <strong>et</strong> effectue 3000 pas aléatoires à ceci près<br />

que nous avons introduit un biais d'environ 1/36ème (4%) dans la<br />

direction EST (i+1). Cela modélise en quelque sorte la probabilité <strong>de</strong><br />

gain <strong>de</strong> la banque au jeu <strong>de</strong> la Roul<strong>et</strong>te : une <strong>de</strong>s 36 cases <strong>de</strong> la roue est<br />

dédiée à la banque (qui, elle, ne mise pas).<br />

On reprend la marche aléatoire pour 3000 pas. On voit qu'avec du<br />

temps, la banque gagne inexorablement.<br />

100<br />

80<br />

100<br />

60<br />

80<br />

40<br />

Départ<br />

60<br />

40<br />

20<br />

20<br />

Départ<br />

20 40 60 80 100<br />

25 50 75 100 125 150 175 200<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Simulation sociale (1)<br />

47<br />

Intelligence Collective<br />

On considère une zone urbaine vierge où l'on installe <strong>de</strong>ux groupes <strong>de</strong><br />

population présentant une différence quelconque : un groupe est dit clair<br />

<strong>et</strong> l'autre foncé. Les <strong>de</strong>ux groupes sont mélangés au départ. On considère<br />

que les habitants ont le comportement suivant selon la nature <strong>de</strong> leur<br />

voisinage immédiat<br />

– Si leur voisinage leur ressemble, ils restent,<br />

– Si ils n'ont pas assez <strong>de</strong> voisins du même groupe, ils déménagent<br />

un peu plus loin, là où il y a <strong>de</strong> la place.<br />

4 états :<br />

Malheureux<br />

Heureux<br />

En pratique, on considère une grille où le voisinage d'un habitant est<br />

celui <strong>de</strong> Moore. Le seuil <strong>de</strong> mobilité est déterminé par un paramètre p, tel<br />

que si le nombre <strong>de</strong> voisins <strong>de</strong> même groupe n < p alors l'habitant<br />

déménage vers une case voisine libre (si il y en a). Le nombre <strong>de</strong> voisins<br />

<strong>de</strong> Moore étant <strong>de</strong> 9 <strong>et</strong> la distribution initiale étant aléatoire entre : les<br />

cases vi<strong>de</strong>s (état 0) le groupe clair (état 1) <strong>et</strong> le groupe foncé (état 2), le<br />

nombre <strong>de</strong> voisins du même groupe n que peut espérer un habitant est un<br />

paramètre <strong>de</strong> la simulation p (par exemple, on peut poser : p = 3). Si ce<br />

seuil p n'est pas atteint, l’agent migre.<br />

L’objectif <strong>de</strong> la simulation est <strong>de</strong> voir si les <strong>agents</strong> distribués au départ <strong>de</strong><br />

manière aléatoire ont tendance à se regrouper en quartiers monocolore ou<br />

non.<br />

Les <strong>agents</strong> peuvent bouger sur le substrat<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Simulation sociale (2)<br />

48<br />

Intelligence Collective<br />

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

20<br />

T0<br />

20<br />

T0+50<br />

15<br />

15<br />

10<br />

10<br />

5<br />

5<br />

0<br />

0 5 10 15 20 25 30<br />

Condition initiale : distribution aléatoire<br />

0<br />

0 5 10 15 20 25 30<br />

P = 3 : il y a plus d’agglomération<br />

20<br />

T0+50<br />

20<br />

T0+50<br />

15<br />

15<br />

10<br />

10<br />

5<br />

5<br />

0<br />

0 5 10 15 20 25 30<br />

0<br />

0 5 10 15 20 25 30<br />

P = 2 : il y a un peu d’agglomération<br />

P = 4 : il n’y a pas d’agglomération<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Automates Cellulaires<br />

49<br />

1. Modèles <strong>de</strong> Programmation agent<br />

2. Architectures agent<br />

3. Intelligence Collective<br />

4. Automates Cellulaires<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Espace substrat <strong>de</strong>s états<br />

50<br />

Automates Cellulaires<br />

Les automates cellulaires ont pour caractéristique <strong>de</strong> possé<strong>de</strong>r un espace<br />

substrat <strong>de</strong>s états qui est muni d'une géométrie. Souvent, c<strong>et</strong>te géométrie<br />

est <strong>de</strong> type euclidien (on dit aussi Manhattan) ; on travaille dans un<br />

tableau fini, à N dimensions :<br />

- N = 1 : on a un vecteur,<br />

- N = 2 : on a une matrice,<br />

-<strong>et</strong>c.<br />

On peut imaginer d'autres types <strong>de</strong> réseaux que le réseau “carré” :<br />

Espace Euclidien à 1 dimension<br />

Espace Euclidien à 2 dimensions<br />

Espace à voisinage hexagonal<br />

Espace à voisinage triangulaire<br />

Certains types <strong>de</strong> voisinages sont équivalents à <strong>de</strong>s réseaux carrés ou<br />

bien présentent <strong>de</strong>s dualités entre-eux.<br />

Espace Euclidien à 3 dimensions<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Voisinages <strong>de</strong> base<br />

51<br />

Automates Cellulaires<br />

Si on considère un espace euclidien à <strong>de</strong>ux dimensions, i.e. une simple matrice, on eput définir plusieurs types <strong>de</strong> voisinages pour un point x i,j <strong>de</strong> la<br />

matrice :<br />

— <strong>de</strong>s voisinages d'ordre 1 : les cases à une distance <strong>de</strong> d = 1 d'un point quelconque ,<br />

— <strong>de</strong>s voisinages d'ordre k > 1 : toutes les cases à une distance d ≤ k d'un point quelconque x i,j ,<br />

Pour un voisinage d'ordre 1 on considère généralement trois types <strong>de</strong> schémas classiques :<br />

N<br />

W<br />

X i,j<br />

E<br />

X i,j<br />

X i,j<br />

S<br />

Voisinage NEWS<br />

ou <strong>de</strong> Von Neumann<br />

Voisinage en croix<br />

Voisinage <strong>de</strong> Moore<br />

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

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Espace euclidien torique<br />

52<br />

Automates Cellulaires<br />

Le problème principal <strong>de</strong> l’espace euclidien en grille N-Dimensionnelle<br />

est qu’il est borné : les bords provoquent alors <strong>de</strong>s singularités (les lois<br />

<strong>de</strong> simulation ne sont pas les mêmes dans les cases du milieu <strong>et</strong> dans les<br />

cases du bord) qui compliquent singulièrement la <strong>programmation</strong> (test<br />

systématique <strong>de</strong>s bords). C’est pourquoi on préfère généralement dans<br />

les simulations utiliser <strong>de</strong>s espaces « sans bords » dont un exemple est<br />

fourni par les espaces toriques :<br />

1 2 3 4 5 6 7 8<br />

On reboucle le <strong>de</strong>rnier sur le premier<br />

k-cycle k-cycle k-cycle k-cycle<br />

1 1 1 1<br />

2 2 2 2<br />

3 3 3 3<br />

4 4 4 4<br />

k-cycle<br />

k-cycle<br />

k-cycle<br />

k-cycle<br />

1<br />

Tore 2D composé <strong>de</strong> k-cycles <strong>de</strong> dimension k=4<br />

8 2<br />

7<br />

Un espace euclidien à 1<br />

dimension est équivalent à<br />

un anneau<br />

3<br />

6 4<br />

5<br />

Deux façons <strong>de</strong> visualiser un<br />

espace euclidien torique 1D.<br />

La bouteille <strong>de</strong> Klein est un<br />

exemple supplémentaire<br />

d’espace torique en 3D.<br />

M. Trott<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA


Automates à une dimension<br />

53<br />

Automates à une dimension<br />

Un automate linéaire ou à une dimension est composé d'une structure<br />

spatiale à une dimension (un vecteur) dont chaque élément possè<strong>de</strong> un<br />

état local <strong>et</strong> d'une fonction <strong>de</strong> transition locale. Le processus lié à<br />

l'automate consiste à itérer la fonction <strong>de</strong> transition locale en parallèle sur<br />

tout le vecteur d'états.<br />

Dans un automate à une dimension, la structure <strong>de</strong> voisinage est très<br />

simple : chaque cellule possè<strong>de</strong> un voisin <strong>de</strong> gauche <strong>et</strong> un voisin <strong>de</strong><br />

droite. Concernant les bords, on peut prendre trois décisions :<br />

a) Considérer que le vecteur est infini : il n'y a donc pas <strong>de</strong> bords,<br />

b) Considérer que le vecteur est <strong>de</strong> taille finie mais qu'il est organisé<br />

en anneau : la <strong>de</strong>rnière case est voisine <strong>de</strong> la première ; il n'y a<br />

donc pas <strong>de</strong> bord,<br />

c) Considérer le vecteur tel quel <strong>et</strong> gérer les singularités aux bords.<br />

Pas <strong>de</strong> bord<br />

b) Automate fini à une dimension structuré en anneau<br />

Case singulière :<br />

un seul voisin<br />

Case singulière :<br />

un seul voisin<br />

…<br />

S i<br />

(t)<br />

…<br />

S i (t-1)<br />

S i (t)<br />

S i (t+1)<br />

Etat local<br />

a) Automate à une dimension à nombre d’états infini<br />

Etat local<br />

c) Automate à une dimension fini.<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Automates linéaires booléens<br />

54<br />

Automates à une dimension<br />

Les automates linéaires booléens ont <strong>de</strong>s états locaux ∈{0,1}. La fonction <strong>de</strong> transition locale prend trois entrées :<br />

– la valeur locale,<br />

– la valeur du voisin <strong>de</strong> gauche,<br />

– la valeur du voisin <strong>de</strong> droite.<br />

Une configuration est donc représentée par un tripl<strong>et</strong> <strong>de</strong> bits. Il existe donc 2 3 = 8 configurations d'entrée différentes. Une fonction <strong>de</strong> transition est<br />

définie en spécifiant pour chacune <strong>de</strong> ces 8 entrées l'état résultant ∈{0,1}. Il y a donc 2 8 combinaisons qui définissent 256 fonctions <strong>de</strong> transition<br />

locales possibles.<br />

Case singulière :<br />

un seul voisin<br />

Case singulière :<br />

un seul voisin<br />

S i (t-1)<br />

S i (t)<br />

S i (t+1)<br />

Voisin Gauche<br />

{0,1}<br />

{0,1} {0,1})<br />

Voisin Droit<br />

Entrées : 000 001 010 011 100 101 110 111<br />

Sorties : 0 1 0 1 1 0 1 0 La fonction n° 90<br />

La fonction n° 90 soit « 010111010 » en binaire<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Evolution à partir d'une configuration aléatoire<br />

55<br />

Automates à une dimension<br />

On construit un automate linéaire L16 <strong>de</strong> 16 cases ayant pour condition<br />

initiale <strong>de</strong>s valeurs aléatoires ∈ {0,1}.<br />

L16<br />

1110110000100100<br />

Condition<br />

initiale : t0<br />

L16 = Array[Rand[{0,1}]&,{16}]<br />

⇒ {1,1,1,0,1,1,0,0,0,0,1,0,0,1,0,0}<br />

Les fonctions <strong>de</strong> transition locales possibles sont numérotés <strong>de</strong> 0 à 255<br />

i.e. vont <strong>de</strong> la configuration <strong>de</strong> trois entrées 000 10 = (0,0,0,0,0,0,0,0) 2 àla<br />

configuration 255 10 = (1,1,1,1,1,1,1,1) 2 . Pour obtenir la configuration n°<br />

i on peut utiliser l'opérateur :<br />

Déroulement <strong>de</strong><br />

la trajectoire du<br />

processus<br />

1010111001011011<br />

1000101110011011<br />

1101001011111011<br />

0100110010001010<br />

1011111101010000<br />

0010000100001000<br />

0101001010010100<br />

1000110001100011<br />

1101111011110111<br />

0101001010010100<br />

Etape1<br />

Etape2<br />

…<br />

F90 = IntegerDigits[i=90, base=2, longueur=8]<br />

⇒ {0,1,0,1,1,0,1,0}<br />

L100<br />

t=0<br />

Une fois la fonction choisie <strong>et</strong> construite, il suffit d'itérer le processus<br />

LinearStep n fois sur la condition initiale L16. Comme il s'agit d'un<br />

processus discr<strong>et</strong>, on peut utiliser l’opérateur NestList. On obtient une<br />

matrice M <strong>de</strong> n+1 lignes où la ligne k représente l'état <strong>de</strong> l'automate à<br />

l'étape k :<br />

M16 = NestList[LinearStep[#,f90]&, L16, 10];<br />

TableForm[M16,TableSpacing →{0,0}]<br />

Trajectoire<br />

t=100<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Les trajectoires sont circulaires<br />

56<br />

Automates à une dimension<br />

L'automate linéaire ayant un nombre <strong>de</strong> cases fini : n ∈ N, le nombre total d'états est lui aussi fini <strong>et</strong> égal à 2 n . Il s'ensuit que la trajectoire du<br />

processus doit être circulaire : au bout <strong>de</strong> k ≤ 2 n étapes, on doit repasser par une configuration déjà rencontrée.<br />

On utilise un automate <strong>de</strong> 8 cases qui possè<strong>de</strong> donc 2 8 configurations initiales possibles. Pour chaque configuration initiale, on calcule la longueur <strong>de</strong><br />

la trajectoire jusqu'à ce qu'on repasse par un état déjà rencontré.<br />

On voit que la longueur <strong>de</strong> trajectoire la plus longue (sans repasser par un état déjà parcouru) est <strong>de</strong> k =10 étapes, ce qui est très inférieur à la borne<br />

théorique : 2 8 = 256.<br />

10<br />

Longueurs<br />

8<br />

6<br />

La fonction n° 52<br />

reboucle sur l’état<br />

initial au bout <strong>de</strong><br />

<strong>de</strong>ux étapes<br />

seulement<br />

4<br />

2<br />

Fonctions<br />

50 100 150 200 250<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


CI fixes ― Fonctions f0 .. f127<br />

57<br />

Automates à une dimension<br />

Expérimentation 1 : conditions initiales i<strong>de</strong>ntiques pour tous les automates<br />

– Le nombre <strong>de</strong> cases est <strong>de</strong> 8. cela perm<strong>et</strong> <strong>de</strong> choisir 28 = 256 conditions initiales possibles,<br />

– La condition initiale choisie est une séquence alternée <strong>de</strong> 0 <strong>et</strong> <strong>de</strong> 1 : {0, 1, 0, 1, 0, 1, 0, 1},<br />

– Le nombre <strong>de</strong> pas d’exécution est <strong>de</strong> 10.<br />

Un automate<br />

f0<br />

f64<br />

10<br />

steps<br />

Fonctions f0 à f63<br />

f63<br />

Fonctions f64 à f127<br />

f127<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


CI fixes ― Fonctions f128 .. f255<br />

58<br />

Automates à une dimension<br />

On constate que chaque fonction réagit différemment aux conditions initiales : cela donne un certain nombre <strong>de</strong> patterns caractéristiques <strong>de</strong> ces<br />

fonctions. Bien sûr, il y a <strong>de</strong>s symétries <strong>et</strong> certaines fonctions ont <strong>de</strong>s patterns i<strong>de</strong>ntiques ; cela est renforcé par la symétrie <strong>de</strong> la CI que nous avons<br />

choisie.<br />

f128<br />

f192<br />

Fonctions f128 à f191<br />

f191<br />

Fonctions f192 à f255<br />

f255<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


CI variables : f250 <strong>et</strong> f192<br />

59<br />

Automates à une dimension<br />

Expérimentation 2 : toutes les conditions initiales possibles sont explorées<br />

– Le nombre <strong>de</strong> cases est <strong>de</strong> 8. cela perm<strong>et</strong> <strong>de</strong> choisir 2 8 = 256 conditions initiales possibles,,<br />

– On construit les 256 automates correspondant aux 256 conditions initiales,<br />

– Le nombre <strong>de</strong> pas d’exécution est <strong>de</strong> 10,<br />

– On exécute cela pour seulement quelques fonctions arbitrairement choisies : f250, f192, f80, f35.<br />

f250<br />

f192<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


CI variables : f80 <strong>et</strong> f35<br />

60<br />

Automates à une dimension<br />

On constate que pour la très gran<strong>de</strong> majorité <strong>de</strong>s conditions initiales (considérées sur un espace <strong>de</strong> 8 cases seulement !), les trajectoires exhibent bien<br />

qualitativement la même forme. On peut donc dire que chaque fonction <strong>de</strong> transition a son “caractère” ; certaines fonctions ont plus <strong>de</strong> caractère que<br />

d'autres, au sens où :<br />

– elles exhibent une forme très reconnaissable qui caractérise la fonction,<br />

– elles sont quasi-indépendantes <strong>de</strong>s CIs.<br />

f80<br />

f35<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Analyse <strong>de</strong>s expérimentations<br />

61<br />

Automates à une dimension<br />

Espace <strong>de</strong>s phases pour un automate à 8 cases<br />

Considérons un automate à une dimension possédant 8 cases<br />

rebouclées, à 3 entrées. L'espace <strong>de</strong>s phases global est l'ensemble <strong>de</strong><br />

tous les états possibles. Il est fonction <strong>de</strong> :<br />

— la taille <strong>de</strong> l'automate : 8 cases ⇒ 256 états,<br />

— le nombre max d'itérations non circulaires : 256,<br />

— que <strong>multi</strong>plie le nombre <strong>de</strong> fonction à 3 entrées : 256.<br />

Le nombre total <strong>de</strong> bits nécessaires à l'exploration exhaustive <strong>de</strong> ce<br />

processus est <strong>de</strong> 256 x 256 x 256 bits = 16 Méga bits, ce qui peut loger<br />

en mémoire d'un ordinateur mo<strong>de</strong>rne.<br />

Analyse <strong>de</strong>s comportements observés<br />

Faute d'avoir pu effectuer l'exploration exhaustive <strong>de</strong> l'espace <strong>de</strong>s phase<br />

global associé à un automate à une dimension possédant 8 cases<br />

rebouclées, <strong>et</strong> une fonction <strong>de</strong> transition locale à 3 entrées, nous avons<br />

effectué <strong>de</strong>ux types d'expérimentations :<br />

— faire varier les fonctions <strong>de</strong> transition pour un CI fixée,<br />

— faire varier les CIs pour une fonction <strong>de</strong> transition fixée.<br />

► On observe que la variation <strong>de</strong>s fonctions <strong>de</strong> transition produit <strong>de</strong>s<br />

comportements :<br />

— assez caractéristiques (ayant une forme décrivable),<br />

— classables en catégories (comportement quasi équivalents).<br />

256 fonctions <strong>de</strong> transition<br />

Espace global<br />

<strong>de</strong>s phases<br />

► On observe que la variation <strong>de</strong>s CIs produit <strong>de</strong>s comportements<br />

relativement homogènes, qui semblent caractéristiques <strong>de</strong> la fonction <strong>de</strong><br />

transition fixée. Il ressort <strong>de</strong> tout ceci que les comportements observés<br />

sont plus le fait <strong>de</strong>s fonctions <strong>de</strong> transition que <strong>de</strong>s CIs choisies.<br />

256 états possibles<br />

256 étapes maximum<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Interprétation en termes Sociobiologiques<br />

62<br />

Automates à une dimension<br />

Nous pouvons essayer <strong>de</strong> nous servir <strong>de</strong> ce phénomène pour en tirer une interprétation portant sur <strong>de</strong>s créatures vivantes:<br />

– possédant un génotype : l'inné,<br />

– plongées dans une culture, dans un environnement : l'acquis.<br />

CIs<br />

Phénotype<br />

observé<br />

Fonction <strong>de</strong> transition : fi<br />

Interprétations<br />

Deux interprétations complètement opposées <strong>de</strong> ce schéma sont possibles :<br />

► Interprétation 1 : fonction = gènes, CIs = environnement<br />

On considère que la fonction <strong>de</strong> transition est le "caractère" <strong>de</strong> la créature <strong>et</strong> que les CIs correspon<strong>de</strong>nt aux conditions contingentes <strong>de</strong> sa naissance.<br />

On en conclut que le caractère l'emporte sur l'environnement <strong>de</strong> naissance, i.e. que l'inné est plus fort que l'acquis.<br />

► Interprétation 2 : fonction = environnement, CIs = gènes<br />

On considère que la fonction <strong>de</strong> transition est le moteur environnemental (culturel) qui va façonner la créature à partir d'une donnée initiale : son<br />

phénotype propre, issu <strong>de</strong> ses gènes qui correspon<strong>de</strong>nt aux CIs. On en conclut que le mo<strong>de</strong>lage environnemental l'emporte sur le phénotype propre,<br />

i.e. que l'acquis est plus fort que l'inné.<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs<br />

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


Principe du jeu <strong>de</strong> la vie<br />

63<br />

Le jeu <strong>de</strong> la vie<br />

En 1974, J. Conway a proposé un automate cellulaire dont le<br />

fonctionnement est très simple mais dont la richesse <strong>de</strong>s comportements<br />

<strong>et</strong> la puissance <strong>de</strong> calcul formel étonnent encore.<br />

Le jeu <strong>de</strong> la Vie fonctionne sur une matrice booléenne (les valeurs d'une<br />

case ∈ {0,1}) rebouclée en tore à <strong>de</strong>ux dimensions (il n'y a pas <strong>de</strong><br />

bords). On part d'une configuration initiale aléatoire ou bien ad hoc <strong>et</strong><br />

on itére le processus suivant :<br />

– Soit s i,j (t) l'état <strong>de</strong> la case . On calcule le nombre v <strong>de</strong> voisins à 1<br />

dans le voisinage <strong>de</strong> Moore (8 voisins) <strong>de</strong> celle case. L'état<br />

s i,j (t+1) est définit par :<br />

- si v = 2 : s i,j (t),<br />

- si v = 3 : 1<br />

- sinon : 0.<br />

Intuitivement, dans une vision PPSN (Parallel Problem Solving from<br />

Nature), cela correspond en fait à la modélisation du comportement<br />

naturel suivant :<br />

– Si une cellule est à 0 <strong>et</strong> qu'elle est entourée <strong>de</strong> 3 voisins elle<br />

“naît”,<br />

– Si une cellule est à 1, elle reste à 1 si elle possè<strong>de</strong> 2 ou 3 voisins<br />

à 1. Dans les autres cas, elle “meurt” d'isolement, (0 voisin à 1) ou<br />

d'étouffement (4, 5, 6, 7, 8 voisins à 1).<br />

La fonction <strong>de</strong> service MakeRandLife construit une matrice initialisée<br />

avec <strong>de</strong>s valeurs {0,1} choisies aléatoirement. Elle laisse tout autour <strong>de</strong><br />

la matrice, une bordure d'épaisseur une-case remplie <strong>de</strong> valeurs 0.<br />

MakeRandLife[6,6]<br />

i<br />

j<br />

k<br />

0 0 0 0 0 0<br />

0 0 1 0 0 0<br />

0 0 1 1 1 0<br />

0 1 1 1 1 0<br />

0 0 0 0 1 0<br />

0 0 0 0 0 0<br />

Bordure <strong>de</strong> zéros<br />

Dans notre implémentation, c<strong>et</strong>te bordure perm<strong>et</strong> <strong>de</strong> ne pas tenir<br />

compte <strong>de</strong>s bords ce qui simplifie <strong>et</strong> accélère la fonction LifeStep qui<br />

effectue une transition du processus sur une matrice m.<br />

y<br />

z<br />

{<br />

Zone aléatoire<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Exemples <strong>de</strong> trajectoires<br />

64<br />

Le jeu <strong>de</strong> la vie<br />

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<br />

forme fixe qui dès lors se répétera à l’infini. C<strong>et</strong>te propriété est appelée un point fixe, c’est-à-dire un état S tel que :<br />

S(t+1) == F[S(t)]<br />

où F est la fonction <strong>de</strong> transition.<br />

LifeTable[MakeRandLife[11,11], 49, 10]<br />

Pattern point fixe<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Patterns typiques<br />

Points fixes<br />

On étudie les points fixes pour eux-mêmes; Par exemple, ce pattern évolue vers un<br />

état stable : un carré<br />

i 0 0 0 0 0 0<br />

y<br />

0 1 1 0 0 0<br />

LifeTable B<br />

0 1 0 0 0 0<br />

0 0 0 0 0 0<br />

,4,5F<br />

j<br />

z<br />

j<br />

0 0 0 0 0 0<br />

z<br />

k 0 0 0 0 0 0{<br />

65<br />

Le jeu <strong>de</strong> la vie<br />

Clignotants : Cycles <strong>de</strong> pério<strong>de</strong> 2<br />

Ce pattern évolue vers un cycle <strong>de</strong> pério<strong>de</strong> 2. On appelle ce type <strong>de</strong> patterns <strong>de</strong>s<br />

clignotants<br />

i 0 0 0 0 0 0<br />

y<br />

0 0 0 1 0 0<br />

LifeTable B<br />

0 0 1 0 1 0<br />

0 0 0 0 0 0<br />

,5,6F<br />

j<br />

z<br />

j<br />

0 0 0 1 0 0<br />

z<br />

k 0 0 0 0 0 0{<br />

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

i 0 0 0 0 0 0<br />

y<br />

0 0 0 0 0 0<br />

LifeTable B<br />

0 0 0 1 0 0<br />

0 1 1 1 0 0<br />

,4,5F<br />

j<br />

z<br />

j<br />

0 0 0 0 0 0<br />

z<br />

k 0 0 0 0 0 0{<br />

Pattern i<strong>de</strong>ntique<br />

mais décalé <strong>de</strong> {1,1}<br />

Gli<strong>de</strong>rs : quasi cycles<br />

Un gli<strong>de</strong>r est un pattern qui a <strong>et</strong> n'a pas <strong>de</strong> pério<strong>de</strong>. En fait sa forme a une pério<strong>de</strong> fixe<br />

(n=4 dans l’exemple) mais elle se trouve translatée d'une case à droite <strong>et</strong> d'une case<br />

en bas. Ce déplacement linéaire en diagonale fait que ce pattern, placé sur une matrice<br />

infinie, possè<strong>de</strong> une pério<strong>de</strong> infinie.<br />

Nid d’abeille<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Canon à Gli<strong>de</strong>rs<br />

66<br />

Le jeu <strong>de</strong> la vie<br />

On peut construire <strong>de</strong>s configurations qui ont <strong>de</strong>s comportements non<br />

triviaux : par exemple le "canon à gli<strong>de</strong>rs” ci-<strong>de</strong>ssous est une<br />

configuration qui possè<strong>de</strong> une quasi-pério<strong>de</strong> longue <strong>de</strong> 30 cycles <strong>et</strong> qui<br />

produit un gli<strong>de</strong>r. Ce gli<strong>de</strong>r se déplace <strong>et</strong> peut être vu comme "éjecté" du<br />

canon<br />

t0<br />

t1 …<br />

i 1 1 0 0 0 1 1 0 0<br />

y<br />

0 1 1 1 1 1 0 0 0<br />

0 1 1 0 1 1 0 0 0<br />

0 1 1 0 1 1 0 0 0<br />

0 0 1 1 1 0 0 0 0<br />

0 0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0 0<br />

Gli<strong>de</strong>rGun =<br />

0 0 0 0 0 0 0 0 0<br />

;<br />

0 0 0 0 0 0 0 0 0<br />

0 0 0 0 1 1 1 0 0<br />

0 0 0 0 1 1 1 0 0<br />

0 0 0 1 0 0 0 1 0<br />

0 0 1 0 0 0 0 0 1<br />

j<br />

j<br />

0 0 0 1 0 0 0 1 0z<br />

z<br />

k 0 0 0 0 1 1 1 0 0{<br />

On constate que la configuration 30 (encadrée) est égale à la<br />

configuration <strong>de</strong> départ à t0 à ceci près qu'elle a émis <strong>de</strong>ux scories (<strong>de</strong>ux<br />

nids d'abeilles fixes) <strong>et</strong> un gli<strong>de</strong>r que l'on voit planer vers le nord-est<br />

(configurations 31 à 39 ... <strong>et</strong>c.) alors que le canon reprend une phase <strong>de</strong><br />

30 cycles qui produira un nouveau gli<strong>de</strong>r.<br />

t30<br />

t39<br />

Gli<strong>de</strong>r<br />

envoyé<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Eater<br />

67<br />

Le jeu <strong>de</strong> la vie<br />

La configuration connue sous le nom <strong>de</strong> « Eater » (mangeur) possè<strong>de</strong> une<br />

pério<strong>de</strong> 15 Cycles. Elle peut entrer en collision avec un gli<strong>de</strong>r <strong>et</strong> le<br />

détruire sans être pour autant elle-même perturbée.<br />

Eater =<br />

i<br />

j<br />

k<br />

0 1 0<br />

0 1 0<br />

1 0 1<br />

0 1 0<br />

0 1 0<br />

0 1 0<br />

0 1 0<br />

1 0 1<br />

0 1 0<br />

0 1 0<br />

y<br />

z<br />

{<br />

;<br />

La configuration Eater possè<strong>de</strong> une pério<strong>de</strong> <strong>de</strong> 15 cycles. Elle passe par<br />

14 formes différentes très caractéristiques :<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Eaters eat gli<strong>de</strong>rs<br />

68<br />

Le jeu <strong>de</strong> la vie<br />

On construit une situation (bien synchronisée !) où le gli<strong>de</strong>r éjecté<br />

arrive près d'un eater dans la position relative suivante :<br />

Eater<br />

Séquence <strong>de</strong> quasi pério<strong>de</strong>s <strong>de</strong><br />

4 cycles incluant une translation<br />

diagonale {1,1}<br />

Cycle : 30 pas<br />

Gli<strong>de</strong>r éjecté tous les 30 pas<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs<br />

Gli<strong>de</strong>r Gun<br />

Le eater a « mangé » le gli<strong>de</strong>r <strong>et</strong><br />

reprend son cycle normal.


Automates autoreproducteurs<br />

69<br />

Langton<br />

Automate autoreproducteur <strong>de</strong> John Von Neumann<br />

Au début <strong>de</strong>s années 50, John Von Neumann a étudié le problème <strong>de</strong> l'autoreproduction <strong>de</strong>s automates cellulaires. Il s'agit <strong>de</strong> construire un automate<br />

cellulaire capable <strong>de</strong> reproduire la forme initiale qu'il possè<strong>de</strong> sur sa matrice cellulaire. C<strong>et</strong>te forme initiale est formée <strong>de</strong> l'image <strong>de</strong>s états internes<br />

<strong>de</strong> l'automate. John Von Neumann a découvert un automate à 29 états qui possè<strong>de</strong> c<strong>et</strong>te propriété mais sa table <strong>de</strong> transition est d'une complexité<br />

extrême.<br />

Forme initiale<br />

Forme autoreproduite<br />

1<br />

2 3<br />

Au bout <strong>de</strong> quelques étapes …<br />

1<br />

2 3<br />

2 3<br />

1<br />

Automate autoreproducteur <strong>de</strong> Langton<br />

En 1984, C. Langton a proposé un automate cellulaire capable <strong>de</strong> se reproduire <strong>et</strong> ne possédant que 8 états internes : 0, 1, 2, 3, 4, 5, 7. Dans les<br />

années 80, c<strong>et</strong> automate est <strong>de</strong>venu le fer <strong>de</strong> lance <strong>de</strong> l'école « Artificial Life » auquel il a servi <strong>de</strong> paradigme (<strong>de</strong>puis, Byl a proposé une version<br />

ayant moins d'états mais elle est moins ‘lisible’).<br />

L'automate <strong>de</strong> Langton est un système dynamique discr<strong>et</strong> : Le temps se déroule en étapes énumérables : à chaque nouvelle étape n+1 correspond une<br />

nouvelle matrice M[n+1] = LF[M[n]] où LF est la fonction <strong>de</strong> transition spécifique à l'automate <strong>de</strong> Langton.<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Forme initiale <strong>de</strong> Langton<br />

70<br />

Langton<br />

La forme initiale <strong>de</strong> l'automate <strong>de</strong> Langton est donnée par la matrice 10 x<br />

15 d'états suivante :<br />

i 0 2 2 2 2 2 2 2 2 0 0 0 0 0 0<br />

y<br />

2 1 7 0 1 4 0 1 4 2 0 0 0 0 0<br />

2 0 2 2 2 2 2 2 0 2 0 0 0 0 0<br />

2 7 2 0 0 0 0 2 1 2 0 0 0 0 0<br />

Langton =<br />

2 1 2 0 0 0 0 2 1 2 0 0 0 0 0<br />

2 0 2 0 0 0 0 2 1 2 0 0 0 0 0<br />

;<br />

2 7 2 0 0 0 0 2 1 2 0 0 0 0 0<br />

2 1 2 2 2 2 2 2 1 2 2 2 2 2 0<br />

j<br />

2 0 7 1 0 7 1 0 7 1 1 1 1 1 2<br />

z<br />

k 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0{<br />

Ce qui donne sous forme plus lisible, où les états ayant pour valeur 0 sont<br />

représentés par <strong>de</strong>s ‘.’<br />

.22222222......<br />

217.14.142.....<br />

2.222222.2.....<br />

272....212.....<br />

212....212.....<br />

2.2....212.....<br />

272....212.....<br />

21222222122222.<br />

2.71.71.7111112<br />

.2222222222222.<br />

On peut aussi représenter l’automate avec <strong>de</strong>s états colorés ou encore<br />

exprimés en trois dimensions :<br />

15<br />

12.5<br />

10<br />

7.5<br />

7<br />

5<br />

2.5<br />

0<br />

0<br />

0 5 10 15 20 25 30<br />

6<br />

4<br />

2<br />

0<br />

5<br />

10<br />

5<br />

2<br />

15<br />

10<br />

4<br />

1<br />

15<br />

20<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Fonction <strong>de</strong> transition<br />

71<br />

Langton<br />

La fonction <strong>de</strong> Transition <strong>de</strong> l'automate <strong>de</strong> langton, LangtonFunction, est <strong>de</strong> type<br />

classique : Pour un élément (t) <strong>de</strong> la matrice cellulaire à l'instant t, la valeur <strong>de</strong> c<strong>et</strong><br />

élément à l'instant t+1 est calculé en fonction <strong>de</strong> la valeur v <strong>de</strong> c<strong>et</strong> élément à l'instant t<br />

<strong>et</strong> <strong>de</strong>s valeurs <strong>de</strong>s 4 voisins (voisinage NEWS) à l'instant t.<br />

La table contient 5 entrées <strong>et</strong> une sortie :<br />

LangtonTable = {<br />

{liste <strong>de</strong>s configurations (v,n,e,s,w) → état 1},<br />

{liste <strong>de</strong>s configurations (v,n,e,s,w) → état 2},<br />

...<br />

{liste <strong>de</strong>s configurations (v,n,e,s,w) → état 7}<br />

} (** sinon l'état est 0 par défaut **)<br />

W<br />

N<br />

V(t)<br />

S<br />

E<br />

V(t+1)<br />

LangtonFunction[v, n, e, s, w]<br />

LangtonTable={<br />

(** 1 **) {<br />

07214,04421,07252,04321,07721,04221,07521,07512,06251,07212,07000,06212,<br />

07221,07621,03212,04212,11000,15100,11010,16212,11100,13221,16112,11110,<br />

12221,12120,12111,12210,13212,12100,15112,16000,15122,12211,12121,12001,<br />

26112,23202,25520,27000,<br />

34000,35102,34200,32010,<br />

42220,43220,<br />

63121,62000,61000,<br />

72220,75022,73202},<br />

(** 2 **) {<br />

02100,07002,01100,02001,06200,03202,07200,06002,02010,03001,01000,05220,<br />

15211,<br />

24002,24220,25120,22011,22201,27200,22010,27420,27222,26220,25200,24122,<br />

27221,25210,27206,27122,24203,22211,27220,27720,24221,21000,24201,24000,<br />

27201,22001,22020,22100,23020,23002,25020,26002,27120,24422,22120,22221,<br />

25021,26122,22210,23120,27722,22000,22220,25001,27022,26224,26221,25221,<br />

24202,27202,25024,22200,25502,25220,27002,27622,26202,<br />

32000,36200,<br />

54212,52020,57212,52120,52000,55021,57002,53002,52121,57202},<br />

(** 3 **) {<br />

06000,<br />

16022,<br />

27020,24200,<br />

31000,32001},<br />

(** 4 **){<br />

14112,14002,16402,14202,14122,14222,14322,14022,14212,14012,14232,<br />

54022},<br />

(** 5 **) {<br />

02120,05200,05212,07251,<br />

17252,15242,<br />

27205,27005,<br />

52100,52200,<br />

62121,62221,<br />

75202},<br />

(** 6 **) {<br />

12020,16202,<br />

23220,23200,23210,<br />

37000,<br />

43202},<br />

(** 7 **) {<br />

17212,13202,15422,17222,17022,16242,17002,17122,17012,15420,<br />

17232,17202,17026,17000,17112,25100,77000<br />

}};(** sinon 0 **)<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Processus <strong>de</strong> reproduction<br />

72<br />

Langton<br />

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

22222222<br />

217 14 142<br />

2 222222 2<br />

272 212<br />

212 212<br />

2 2 212<br />

272 212<br />

21222222122222<br />

2 71 71 7111112<br />

2222222222222<br />

22222223<br />

27 14 14 2<br />

2122222212<br />

2 2 212<br />

272 212<br />

212 212<br />

2 2 212<br />

27222222722222<br />

21 71 71 711112<br />

2222222222222<br />

t0 t1 t2<br />

22222222<br />

214 14 112<br />

2 22222212<br />

272 212<br />

212 212<br />

2 2 272<br />

272 2 2<br />

21222222122222<br />

2 71 71 71 7112<br />

2222222222222<br />

22222222<br />

24 14 1112<br />

2122222212<br />

2 2 212<br />

272 272<br />

212 2 2<br />

2 2 212<br />

27222222722222<br />

21 71 71 71 712<br />

2222222222222<br />

t3 t4 t5<br />

22222222<br />

2 14 14 12<br />

2722222212<br />

212 212<br />

2 2 212<br />

272 212<br />

212 272<br />

2 222222 22222<br />

271 71 71 71112<br />

2222222222222<br />

22222222<br />

3 14 11112<br />

2422222212<br />

212 272<br />

2 2 2 2<br />

272 212<br />

212 272<br />

2 222222 22222<br />

271 71 71 71 72<br />

2222222222222<br />

15<br />

12.5<br />

10<br />

7.5<br />

Une reproduction complète prend environ 150 étapes. On obtient <strong>de</strong>ux<br />

formes égales, en rotation par rapport à la forme initiale qui donneront<br />

2 nouvelles formes au bout <strong>de</strong> 150 nouvelles étapes <strong>et</strong>c.<br />

15<br />

12.5<br />

5<br />

2.5<br />

0<br />

0 5 10 15 20 25 30<br />

22222222<br />

214 111112<br />

2 22222272<br />

242 2 2<br />

212 212<br />

2 2 272<br />

272 2 2<br />

21222222122222<br />

2 71 71 71 7111<br />

2222222222222<br />

22222222<br />

24 1111172<br />

21222222 2<br />

2 2 212<br />

242 272<br />

212 2 2<br />

2 2 212<br />

272222227222222<br />

21 71 71 71 7112<br />

22222222222222<br />

22222222<br />

3 111117 2<br />

2422222212<br />

212 272<br />

2 2 2 2<br />

242 212<br />

212 272<br />

2 222222 222222<br />

271 71 71 71 712<br />

22222222222222<br />

0<br />

t6 t7 t8 0 5 10 15 20 25 30<br />

10<br />

7.5<br />

5<br />

2.5<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


400 étapes <strong>de</strong> Langton<br />

73<br />

Langton<br />

40<br />

30<br />

20<br />

10<br />

0<br />

0 10 20 30 40 50 60<br />

J-P Sansonn<strong>et</strong> ― Agents réactifs


Conclusion<br />

74<br />

1. Modèles <strong>de</strong> Programmation<br />

– Modèle concurrent MIMD<br />

– Modèle cellulaire SIMD<br />

2. Architectures d’<strong>agents</strong><br />

– Trois gran<strong>de</strong>s Approches <strong>agents</strong><br />

– Principales <strong>architectures</strong><br />

3. MIMD : Intelligence Collective<br />

– Swarm intelligence<br />

– Simulation sociale<br />

4. SIMD : Automates Cellulaires<br />

– Wolfram<br />

– Jeu <strong>de</strong> la vie<br />

– Langton<br />

J-P Sansonn<strong>et</strong> ― Modèles <strong>et</strong> Architectures SMA

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!