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 ...
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