Rapport Final Travail Personnel Encadré Coordination globale de comportements coopératifs

39
Institut de la francophonie pour l'informatique (IFI) Bât. D, ruelle 42, rue Ta Quang Buu, Hanoï, Viêtnam http://www.ifi.auf.org Rapport Final Travail Personnel Encadré Coordination globale de comportements coopératifs Étudiant NGUYEN Thanh Tuan Promotion 12, IFI Superviseurs Richard CANAL (IFI-MSI) Yves DUTHEN (IRIT-UT1 Toulouse –France) Hervé LUGA (IRIT-UT1 Toulouse – France) Hanoï, 2007

Transcript of Rapport Final Travail Personnel Encadré Coordination globale de comportements coopératifs

Institut de la francophonie pour l'informatique (IFI)Bât. D, ruelle 42, rue Ta Quang Buu, Hanoï, Viêtnam

http://www.ifi.auf.org

Rapport Final Travail Personnel Encadré

Coordination globale de comportements coopératifs

Étudiant NGUYEN Thanh Tuan

Promotion 12, IFI Superviseurs Richard CANAL (IFI-MSI)

Yves DUTHEN (IRIT-UT1 Toulouse –France) Hervé LUGA (IRIT-UT1 Toulouse – France)

Hanoï, 2007

TPE - Coordination globale de comportements coopératifs

TABLE DES MATIÈRES

INTRODUCTION......................................................................................................3 1. ETAT DE L’ART..............................................................................................5

1.1. SYSTEMES D’EVOLUTION........................................................................5 1.1.1. Historique ..........................................................................................5 1.1.2. Principe général des algorithmes évolutionnistes.........................5 1.1.3. Programmation génétique................................................................7 1.1.4. Les ADFs..........................................................................................12 1.1.5. Paralléliser les algorithmes évolutionnistes.................................13 1.1.6. La bibliothèque ECJ........................................................................15

1.2. Coordination globale de comportements coopératifs..........................16 1.2.1. Introduction .....................................................................................16 1.2.2. GACS................................................................................................16

2. REALISATION...............................................................................................18 2.1. Description du problème ........................................................................18

2.1.1. L’environnement .............................................................................18 2.1.2. Les robots........................................................................................19 2.1.3. Redéfinition du problème ...............................................................19

2.2. Codage pour problème ...........................................................................19 2.2.1. Tableau de Koza..............................................................................19 2.2.2. Parallèlisation..................................................................................21

3. EXPERIMENTATION ....................................................................................25 3.1. Modification des paramètres ..................................................................25

3.1.1. Adaptation au changement d’environnement...............................25 3.1.2. Modification du nombre de robots ................................................26

3.2. Parallèlisation ..........................................................................................27 CONCLUSION ET PERSPECTIVES .....................................................................30 Référence..............................................................................................................31 ANNEXES..............................................................................................................32

A. Fichier paramètre.....................................................................................32 B. Exemple de résultat.................................................................................35

Nguyen Thanh Tuan 2

TPE - Coordination globale de comportements coopératifs

TABLE DES FIGURES Figure 1 : Schéma général d'un algorithme évolutionniste ......................................6 Figure 2 : Représentation en arbre..........................................................................7 Figure 3 : L'arbre de fonction T1 + T2*T3 ..................................................................7 Figure 4 : 5 étapes préliminaires pour exécuter une application de PG ..................8 Figure 5 : Reproduction .........................................................................................10 Figure 6 : Mutation.................................................................................................11 Figure 7 : Croisement ............................................................................................12 Figure 8 : Un exemple d'ADF ................................................................................13 Figure 9 : La parallélisation globale .......................................................................14 Figure 10 : La parallélisation à gros grain..............................................................15 Figure 11 : L'architecture globale du modèle de synthèse.....................................16 Figure 12 : Un exemple de modèle GACS ............................................................17 Figure 13 : Un exemple de l'environnement ..........................................................18 Figure 14 : Tableau de Koza .................................................................................20 Figure 15 : Le cas : le robot ne porte pas de brique ..............................................20 Figure 16 : Le cas : le robot porte une brique ........................................................21 Figure 17 : Modèle physique « Master-Slave » .....................................................22 Figure 18 : Un exemple .........................................................................................22 Figure 19 : Modèle physique "Islands" ..................................................................23 Figure 20 : Trois types d'environnement : à droite, aléatoire et espacé.................25 Figure 21 : Résultat sans ADF...............................................................................25 Figure 22 : Résultat avec ADFs.............................................................................26 Figure 23 : Graphiques des résultats.....................................................................26 Figure 24 : Résultat d'expérimentation de modification du nombre de robots .......26 Figure 25 : Graphique de résultat de modification .................................................27 Figure 26 : Résultat du modèle "Master-Slave" .....................................................27 Figure 27 : Les paramètres du modèle « Islands »................................................28 Figure 28 : Résultat du modèle "Islands"...............................................................28 Figure 29 : Résultat sur un seul ordinateur............................................................28 Figure 30 : Graphiques de trois modèles selon la note .........................................29 Figure 31 : Graphique de trois modèles selon le temps ........................................29

Nguyen Thanh Tuan 3

TPE - Coordination globale de comportements coopératifs

INTRODUCTION La simulation des systèmes complexes présente un grand intérêt, mais la recherche en informatique se confronte avec des problèmes difficiles à résoudre dans ce domaine. Un de ces problèmes est la capacité d’un ensemble d’agents mobiles chargés d’exhiber un comportement collectif à se coordonner spatialement. Chaque agent, à chaque moment, doit être capable de se positionner et s’orienter correctement en fonction de la position et du déplacement de tous les autres agents avec qui il interagit. Pour traiter des problèmes de coordination spatiale dans des univers continus et dynamiques, Flacher et Sigaud [FLACHER05] ont choisi une approche ascendante fondée sur la combinaison de forces d’attraction et de répulsion entre tous les agents et les objets pertinents dans leur environnement. Nous nous proposons de résoudre le problème « collecter des briques par des robots dans un environnement » en utilisant ECJ [LUKE02], une bibliothèque de programmation génétique, et mettant en oeuvre les mécanismes utilisés en GACS (Génération ascendante de coordination spatiale). Nous définirons pour chaque robot une combinaison de vecteurs de déplacement construits à partir des perceptions locales qui est en fait une combinaison linéaire de forces d’attraction et de répulsion. Dans le premier chapitre de ce document, nous présentons l'état de l'art des systèmes d'évolution et de coordination globale de comportements coopératifs. Après une brève introduction au principe général de la programmation génétique, fondé sur une imitation de la loi Darwinienne d'évolution des espèces, nous décrivons la programmation génétique. Nous montrons ensuite les modèles parallélisant la programmation génétique. Nous terminons ce chapitre avec l’introduction de la coordination spatiale des agents et du modèle GACS. Le deuxième chapitre est consacré à la réalisation des applications qui mettent en jeu un groupe de robots autonomes devant collecter des briques. La première application est de trouver les meilleurs programmes contrôlant les robots qui vont collecter des briques. La deuxième application sera implémentée avec les systèmes parallèles pour permettre d’améliorer les résultats. Le troisième chapitre décrit l’expérimentation des applications et l’évaluation des résultats.

Nguyen Thanh Tuan 4

TPE - Coordination globale de comportements coopératifs

Chapitre 1. ETAT DE L’ART

1.1. Systemes d’évolution

1.1.1. Historique Au XIXe siècle, le botaniste britannique Charles Darwin émet sa théorie sur la sélection naturelle. Cette théorie suppose que les espèces évoluent à travers des mécanismes de sélection et que l'individu le mieux adapté à son environnement survit. Basés sur cette théorie, les algorithmes évolutionnistes s'inspirent de l'évolution des populations biologiques. Ils se classent en 4 grandes catégories :

Les algorithmes génétiques développés par J. H. Holland [Holland75] La programmation évolutionnaire de L. J. Fogel [Fogel66] et D. B.Fogel

[Fogel92] La programmation génétique de J. R. Koza [Koza92] Les stratégies d'évolution de H. P. Schwefel et I. Rechenberg

[Rechenberg73] Ces différentes classes d'algorithmes évolutionnistes ne diffèrent que sur les détails d'implantation des opérateurs et sur les procédures de sélection et de remplacement de la population. Bien que leur but soit différent à l'origine, ils sont maintenant surtout utilisés pour résoudre des problèmes d'optimisation.

1.1.2. Principe général des algorithmes évolutionnistes Les algorithmes évolutionnistes (AE) travaillent sur une population d'individus. Ces individus contiennent l'information décrivant la solution qu'ils représentent. Cette information est désignée par le terme de « génotype » par référence à la biologie, alors que la solution qu'ils représentent est nommée « phénotype ». Le génotype est l'information manipulée par les algorithmes évolutionnaires alors que le phénotype en est la traduction après développement, l'ensemble des phénotypes constituant le système dont on cherche à optimiser ou concevoir le comportement. Dans cet objectif, les individus subissent un processus de sélection dont les critères sont définis par le concepteur. Générations après génération, seuls les plus performantes survivent et se reproduisent dans le but de générer des descendants plus performants que leurs parents. L'objectif de la version artificielle de l'évolution est de maximiser une fonction d'adaptation. Cette fonction est représentative de la performance d'un individu dans un problème d'optimisation. Voici le principe d'un algorithme évolutionniste:

Nguyen Thanh Tuan 5

TPE - Coordination globale de comportements coopératifs

Population initiale

Figure 1 : Schéma général d'un algorithme évolutionniste (1) On commence par générer une première population d'individus de façon aléatoire. (2) On évalue la population à l'aide de la fonction d'adaptation choisie. (3) On sélectionne un sous-ensemble d'individus pour la reproduction à l'aide d'un opérateur de sélection. (4) On modifie les éléments sélectionnés par croisement et mutation afin de compléter la population. - L'opérateur de croisement permet l'échange de matériel génétique - L'opérateur de mutation transforme aléatoirement une partie du génome. (5) On évalue les nouveaux individus et on les insère dans la population pour créer une nouvelle population. (6) On réitère les opérations (2), (3), (4) et (5) jusqu'à ce que le critère d'arrêt défini au préalable soit respecté. Les algorithmes évolutionnistes diffèrent des algorithmes classiques d'optimisation et de recherche essentiellement en quatre points : - Les algorithmes évolutionnistes utilisent un codage des éléments de l'espace de recherche et non pas les éléments eux-mêmes. - Les algorithmes évolutionnistes recherchent une solution à partir d'une population de points et non pas à partir d'un seul point. - Les algorithmes évolutionnistes n'imposent aucune régularité sur la fonction étudiée (continuité, dérivabilité, convexité?).

Évaluation des individus

Sélection Croisement Mutation

Évaluation des individus

Nouvelle Population

Insertion dans la population

Nouvelle itération

Nguyen Thanh Tuan 6

TPE - Coordination globale de comportements coopératifs

- Les algorithmes évolutionnistes ne sont pas déterministes, ils utilisent des règles de transition probabilistes. Le grand avantage des algorithmes évolutionnistes est le fait que pour parvenir au résultat, on n'a pas besoin de connaître les caractéristiques de la solution du problème, mais seulement de déterminer parmi deux solutions quelle est la meilleure. Par contre ce genre d'algorithme est très coûteux en temps de calcul, difficile à contrôler (les paramètres comme la taille de la population et la fonction d'évaluation sont difficiles à établir).

1.1.3. Programmation génétique La programmation génétique (PG) est une méthodologie pour automatiquement produire des programmes informatiques. PG utilise les concepts de sélection naturelle et de recombinaison génétique dans une manière très semblable à celle utilisée avec les algorithmes génétiques. Plutôt qu'élaborer des populations d’individus de longueur fixée, PG élabore des programmes informatiques de grandeur et de forme variables. PG est fondé sur la prémisse que les programmes informatiques puissent être représentés comme les structures d'arbre, comme montré dans la figure 2.

f

T f

Figure 2 : Représentation sous forme d’arbre

Figure 3 : L'arbre de fonction T1 + T2*T3

Les fonctions (f) opèrent sur les terminaux (T) pour produire un résultat. Les fonctions sont des opérations qui prennent un ou plusieurs arguments. Ils peuvent être séquentiels, (c'est-à-dire, + ET), conditionnels (c'est-à-dire, Si, Quand), ou

T T

+

*T1

T2 T3

Nguyen Thanh Tuan 7

TPE - Coordination globale de comportements coopératifs

itératif (c'est-à-dire, DoUntil, WhileDo). Les terminaux sont des opérations qui ne prennent aucun argument, mais rendent une valeur (c'est-à-dire, des variables et constantes). La figure 3 montre une fonction arithmétique simple. Si les terminaux que T1, T2 et T3 évaluent à 3, 4 et 5, respectivement, donc le programme rendra la valeur 17 quand il est exécuté. (3 est multiplié à 4 pour une valeur intermédiaire de 12, qui est alors ajouté à 2 pour un résultat final de 14.) Ces diagrammes représentent de simples listes - comme les s-expressions qui s'ensuivent dans une production simple en haut. Dans cette forme la plus simple les fonctions sont tant séquentielles que déterministes, mais les fonctions et les terminaux peuvent être définis pour exécuter l'itération, récursive, le côté effectuant, l'évaluation de mémoire et d'autres opérations complexes. 5 étapes préliminaires pour exécuter une application de PG sont :

• Définissez l'ensemble de terminaux

• Définissez l'ensemble de fonctions

• Définissez la fonction de mesure de qualité (fixness)

• Définissez les paramètres (la taille de population, méthode de probabilité ou sélection, etc)

• Définissez la méthode pour désigner un résultat et le critère terminatif.

PG

Terminaux

Fonctions Fixness

Paramètres

Critère terminative

Une programme informatique

Figure 4 : 5 étapes préliminaires pour exécuter une application de PG

Le programmeur génétique définit un ensemble de fonctions et terminaux appropriés pour le problème à portée de la main. Ceux-ci peuvent inclure des fonctions extrêmement génériques, comme celles mentionnées ci-dessus, ou ils peuvent être spécifiques au domaine du problème. L'ensemble des fonctions et des terminaux définis doit satisfaire deux contraintes : suffisance et fermeture. La

Nguyen Thanh Tuan 8

TPE - Coordination globale de comportements coopératifs

suffisance exige qu'une solution du problème donné doive exister dans l'espace de tous les programmes informatiques possibles qui peuvent être créés en utilisant l'ensemble indiqué des fonctions et des terminaux. Évidemment, si une solution n'existe pas PG ne sera pas capable de la trouver. La fermeture exige que chaque fonction et terminal rendent une valeur de type compatible et que chaque fonction accepte des arguments de ce même type. Cette contrainte garantit que n'importe quelle combinaison de fonctions et de terminaux qui comprend une structure d'arbre complète (c'est-à-dire, un terminal est placé à chaque noeud de feuille) sera un programme informatique syntaxiquement valide qui peut être évalué. Le programmeur génétique définit aussi un test de condition physique qui quantifie

art un certain nombre de programmes

nt la duplication d'un individu de la génération

la performance d'un programme informatique. La performance d'un programme informatique dans PG peut être une fonction du résultat final qu'il produit, ou il peut être fondé sur une analyse d'un effet indésirable que le programme informatique a produit. Dans le travail présenté ici, la fonction et les jeux terminaux contiennent des opérateurs qui affectent les contenus d'une matrice de mémoire 2 dimensionnelle. L'état final de cette matrice est évalué pour déterminer la santé physique du programme informatique. Le processus de PG crée au dépinformatiques en combinant au hasard des fonctions et des terminaux dans les structures d'arbre complètes. On appelle cette collection de programmes, ou individus, une population. Le moteur PG évalue et alloue une valeur de santé physique à chacun des individus dans la population. La performance des individus dans cette population initiale, créée au hasard, peut être tout à fait faible. Quand même, il y a le désaccord dans les niveaux de performance : certains individus jouent moins faiblement que d'autres. La population est classée selon la santé physique. Une nouvelle population est produite en choisissant des individus parmi la génération précédente pour participer aux opérations créatrices. Les individus sont choisis pour l'inclusion dans le processus créateur basé sur leur santé physique - plus haute la santé physique, plus haute la probabilité d'inclusion. Trois opérations créatrices fondamentales sont utilisées dans PG : la reproduction, le croisement et la mutation (2). La reproduction est simplemeprécédente dans la génération suivante sans aucune modification de sa structure.

Nguyen Thanh Tuan 9

TPE - Coordination globale de comportements coopératifs

Génération 1 Génération 2

+ +

Figure 5 : Reproduction

La mutation est exécutée en choisissant aléatoirement un noeud dans une structure d'arbre individuelle et en enlevant ce noeud et le sous-arbre qui peut exister au-dessous de lui. Un nouveau sous-arbre est alors produit au hasard et "est greffé dans" la position où le noeud original a été enlevé.

* T1

T2 T3

*T1

T2 T3

Nguyen Thanh Tuan 10

TPE - Coordination globale de comportements coopératifs

Génération 2

+

1*

x x

+

-

2

*

x x +

x x

Génération 1

f(x) = x*x + 1

f(x) = x*x + x + x -2

Figure 6 : Mutation Le croisement implique de choisir deux individus et de choisir un noeud au hasard dans chacun d'entre eux. Les noeuds choisis, avec les sous-arbres qui existent au-dessous d'eux, sont échangés entre les deux individus.

Nguyen Thanh Tuan 11

TPE - Coordination globale de comportements coopératifs

Génération 1 Génération 2

+ +

Figure 7 : Croisement

Comme les populations successives sont créées en appliquant ces opérateurs génétiques, la performance moyenne de la population a tendance à s'améliorer. La performance du meilleur individu dans la population peut s'améliorer aux niveaux optimaux ou presque optimaux. Il n'y a aucune garantie, évidemment, que PG atteigne une solution optimale (en moins que le temps infini), mais si on réfléchit bien à l'ensemble des fonctions et les terminus avec un test de condition physique raisonnable, PG produira d'habitude de bons résultats.

1.1.4. Les ADFs Dans cette variation les arbres multiples sont élaborés par individu (Koza, 1992 et 1994). Un arbre, comme dans l'exemple de programmation génétique décrit dans les sections 1.1.3, fait les comptes qui sont rendus comme la production du programme. On appelle cet arbre la branche produisant résultat. Les autres arbres définissent des fonctions qui peuvent être appelées par le programme dans le processus de faire ses calculs. Cela permet à l'évolution de décomposer un problème en plusieurs sous-problèmes et de combiner ces unités élémentaires de structure dans la solution complète. Pour la rétrogradation symbolique, par exemple, les ADFs (automatically defined functions) pourraient évoluer qui calculent les termes communs dans une fonction.

x*

x x

**

3x x x

++

-

2

*

x 3 +

x x

-x

+ 2

x x

Nguyen Thanh Tuan 12

TPE - Coordination globale de comportements coopératifs

Dans le résultat produisant la branche, ces ADFs pourraient alors être référés en plusieurs endroits, plutôt qu'exiger l'évolution en duplicata de leur fonctionnalité dans les endroits séparés à l'intérieur d'un arbre. En utilisant des ADFs il est nécessaire de spécifier combien de fonctions seront définies par l'évolution et les nombres d'arguments que chaque ADF exige. Cela peut être fait avant que l’exécution commence, ou pendant l’exécution, par l'adjonction d'opérateurs génétiques qui agissent sur les ADFs (Koza, 1994). De tels opérateurs prennent un individu et ajoutent ou soustraient des ADFs, ou modifient le nombre d'arguments qu'un ADF spécifique prend. Quelle que soit la façon que les ADFs sont dirigés, leur adjonction exige des opérateurs génétiques nouveaux, plus complexes qui respectent la structure de programmes avec les ADFs. Cette complexité supplémentaire, pourtant, a des avantages. Koza a montré que pour les problèmes qui sont décomposable en sous-problèmes, l'adjonction de ADFs peut réduire l'effort quantificatif exigé pour trouver une solution réussie (Koza, 1992, 1994 et 1999).

corps del ’ADF corps du programme

programme

defun log

adf_0

liste des noms des arguments

adf_0

Figure 8 : Un exemple d'ADF

1.1.5. Paralléliser les algorithmes évolutionnistes Nous allons voir rapidement les trois principales méthodes. Une quatrième consiste à construire un AE hybride combinant celles-ci.

• La parallélisation globale: ce type fait évoluer une seule population mais l'évaluation des individus et/ou l'application des opérateurs génétiques se

x

(arg_0) *

arg_0 arg_0

nom de l ’ADF

Nguyen Thanh Tuan 13

TPE - Coordination globale de comportements coopératifs

fait en parallèle (voir figure 8). Le calcul de la qualité des individus de la population qu’il sera chargé d’évaluer. Ce calcul étant indépendant du reste de la population, aucune communication entre les processeurs n’est nécessaire entre le moment où un processeur reçoit ses individus et celui où il renvoie leurs qualités. L’application des opérateurs génétiques peut être faite en parallèle en suivant le même principe, mais elle nécessite de nombreuses communications entre processeurs et il est probable que leur coût compense les gains obtenus.

Maître

Esclaves Esclaves Esclaves

Figure 9 : La parallélisation globale

Comme il n’y a qu’une population, chaque individu est en compétition avec tous les autres et a des chances de participer à la phase de reproduction avec n’importe quel autre. Ainsi, si l’implantation est telle que le processeur maître attend que tous les processeurs esclaves aient terminé leurs calculs avant de passer à la génération suivante (c’est le cas en général), la sélection et la reproduction restent globales et le comportement de l’algorithme séquentiel n’est pas modifié ; on peut donc lui appliquer la théorie de l’algorithme séquentiel. Cette méthode est efficace lorsque l’évaluation des individus nécessite un traitement assez long et que le coût des communication n’est pas trop important.

• La parallélisation à gros grain : la population est divisée en quelques

sous-populations, qui évoluent isolées les unes des autres, mais échangent les individus occasionnellement. Cet échange d’individus est appelé migration. Il existe différentes stratégies pour contrôler la migration. Ces algorithmes introduisent donc des paramètres supplémentaires par rapport à l’algorithme séquentiel : nombre de sous-populations (et donc taille des sous-populations), taux de migration (nombre d’individus échangés), fréquence de migration ; ils nécessitent également des choix de stratégie pour la migration, le replacement de ces individus dans la sous-population

Nguyen Thanh Tuan 14

TPE - Coordination globale de comportements coopératifs

qui accueille (choix des individus remplacés) et le choix d’une topologie pour la migration des individus (déterminant les connections entre les sous-populations). Ces paramètres ont un impact très important sur l’efficacité de l’algorithme, tant du point de vue de la rapidité que de la qualité des solutions, ce qui rend complexe la mise au point de tels algorithmes.

Sous-population Sous-population Migration

Figure 10 : La parallélisation à gros grain

• La parallélisation à grain fin : ce modèle associe à la population totale une structure spatiale. L'GP fait évoluer la population entière, mais la sélection et la reproduction sont locales. En effet, la qualité d’un individu est calculée en fonction des individus se trouvant dans un voisinage restreint (relativement à la structure spatiale de la population) et la reproduction ne se fait qu’entre individus voisins. Cependant, le recoupement des voisinages permet de propager les bonnes caractéristiques dans la population entière. Ce modèle est adapté aux machines massivement parallèles. Ce type d’AE peut être implanté de différentes façons, suivant la structure du voisinage (topologie, rayon) et les stratégies de sélection des meilleurs individus et des couples pour la reproduction. Là encore le fonctionnement de l’algorithme séquentiel est modifié.

1.1.6. La bibliothèque ECJ ECJ est un système de EC (Evolution Computing) écrit en Java. ECJ est développé au ECLab d'Université de George Mason. Il a été conçu pour être extrêmement flexible, avec presque toutes les classes (et tous leurs cadres) dynamiquement déterminées à la durée d'exécution par un fichier de paramètres fourni par l'utilisateur. Toutes les structures dans le système sont arrangées pour être facilement modifiables. Quand même, le système a été conçu avec un oeil vers l'efficacité.

Sous-population Sous-population

Migration Migration

Migration

Nguyen Thanh Tuan 15

TPE - Coordination globale de comportements coopératifs

1.2. Coordination globale de comportements coopératifs

1.2.1. Introduction On peut définir le problème du contrôle de la coordination spatiale : Contrôler la coordination spatiale d'un groupe d'agents nécessite d'être capable à chaque instant de positionner et d'orienter correctement chacun des agents en fonction du déplacement de tous les autres, et ce de manière à satisfaire les objectifs collectifs du groupe. Les propriétés d'un contrôleur coordination spatiale sont :

• Couplage : o Couplé : Le déplacement d'un agent dépend de sa situation par

rapport à l'environnement ainsi que du déplacement des autres agents.

o Découplé : Le déplacement d'un agent se fait sans connaître la réaction de tous les autres.

• Centralisation o Décentralisé : à chaque agent de déterminer individuellement son

propre déplacement o Centralisé : tous les déplacements des agents sont définis à partir de

tous les indices observables de coopération. • Réactivité au sens temps-réel : Sa complexité algorithmique est

suffisamment faible pour que son temps de réaction lui permette de répondre aux changements de l'environnement.

• Flexible : Il suffit de modifier les valeurs de ses paramètres pour qu'il puisse résoudre un problème de coordination spatiale de classe différente.

• Modularité : on peut isoler des sous-parties réutilisables de contrôleur

1.2.2. GACS : conception automatisée de contrôleurs de coordination spatiale

Modèle de synthèse des contrôleurs à base de champs de force :

Figure 11 : L'architecture globale du modèle de synthèse

Nguyen Thanh Tuan 16

TPE - Coordination globale de comportements coopératifs

L’architecture globale du modèle de synthèse : construction en trois étapes (1,2,3) de chaque force Fk à partir du triplet {Pk, Ik, Gk} et détermination finale de la consigne de déplacement (4). Un agent A perçoit dans son environnement λ éléments. La fonction direction dk permet de déterminer la direction de la kième

force en donnant la position du point d’intérêt Pk à partir de la position de certains éléments perçus (1). Ensuite l’intensité Ik de la force Fk est obtenue par la fonction ik quand on lui donne en entrée la distance |APk| de l’agent A au point d’intérêt Pk (2). À partir des λ éléments perçus par l’agent dans son environnement, la fonction gk donne le gain Gk que l’on va multiplier à l’intensité Ik pour obtenir la force Fk (3). Enfin δ triplets sont déterminés de manière similaire et servent à calculer la consigne en déplacement grâce à la fonction de normalisation (4). Les composants d'une force sont : direction, intensité, gain. Les types de fonction de direction sont unitaire, barycentrique et glissante. Les types de fonctions d'intensité constante, linéaire, linéaire par morceaux. Les types de fonctions de gain : constante, relative

Figure 12 : Une exemple de modèle GACS

Force 1 : F1 = (d1,i1,g1) Force 2 : F2 = (d2,i2,g2) Force F : F = F1 + F2

F1

Point d’intérêt

F2

F

Nguyen Thanh Tuan 17

TPE - Coordination globale de comportements coopératifs

Chapitre 2. REALISATION

2.1. Description du problème

2.1.1. L’environnement L’environnement est représenté par une matrice de taille variable contenant 2 parties :

- Une partie correspondant à l’espace de recherche dans lequel les briques sont réparties au début de la simulation (à droite)

- Une zone de dépôt correspondant à l’endroit où les robots doivent entreposer les briques.

Il est possible de modifier différents paramètres de l’environnement : - Le nombre de briques - La répartition des briques dans l’environnement :

- Aléatoirement. - rangées dans la partie droite de l’environnement et fortement

rapprochées. - Rangées dans la partie droite de l’environnement, mais assez distantes

les unes des autres. - Le nombre de robots

Figure 13 : Un exemple de l'environnement

Nguyen Thanh Tuan 18

TPE - Coordination globale de comportements coopératifs

2.1.2. Les robots Les robots ont un but commun : à partir des briques réparties dans l’environnement, ils doivent rechercher les briques et déplacer les briques de leur endroit à la zone de dépôt en nombre de mouvements limité. Chaque robot a les caractéristiques suivantes :

- La distance de vision qui définit les capacités d’exploration des robots. - La vitesse de transport des briques lorsque le robot est chargé

Chaque robot a les capacités suivantes : - Eviter les obstacles et orienter. - Rechercher les briques - Porter les briques - Poser les briques

2.1.3. Redéfinition du problème Maintenant, que nous avons bien défini les caractéristiques initiales du problème de la façon suivante : « connaissant les capacités de chaque robot, quel est le meilleur programme de contrôle des robots pour trouver et rapporter les briques en nombre de mouvements limitée dans un environnement donné ?» Nous voulons de plus étudier les implications d’un changement d’environnement (positionnement initial des briques, taille de l’espace de recherche, nombre de briques ou nombre de robots) ou une modification des caractéristiques des robots sur la répartition des rôles des robots.

2.2. Codage pour problème

2.2.1. Tableau de Koza Le problème peut être présenté avec tableau suivant :

Objectif Chercher une application qui, quand exécuté par une groupe de robots, permet de trouver et rapporter les briques.

Ensemble des terminaux Aller, Orienter, Retourner, Poser, Porter. Ensemble des fonctions Progn, ADF1, ADF2 Cas de Fitness Un fitness Fitness cru Nombre de briques apportées à destination pendant le

temps alloué Fitness normal Nombre de briques moins fitness cru Note Égale au fitness cru pour ce problème

Nguyen Thanh Tuan 19

TPE - Coordination globale de comportements coopératifs

Paramètres M = 500, G = 51. Confirmer succès Une expression a des notes = somme de briques

Figure 14 : Tableau de Koza Tour d’abord, on définit l’ensemble des terminaux. On utilise 4 terminaux : Aller : chercher les briques. Retourner : retourner au dépôt. Poser : poser une brique. Porter : porter une brique. Orienter : orienter, on applique la modèle GACS, les robots sont orientés selon les forces des autres objets. Il y a deux cas : Le cas 1 : Le robot ne porte pas de brique. Il y a deux forces :

• Force 1 : Le robot le plus proche

• Force 2 : La brique la plus proche

F2

F1 F = F1 + F2

Figure 15 : Le cas : robot ne porte pas de brique

Nguyen Thanh Tuan 20

TPE - Coordination globale de comportements coopératifs

Le cas 2 : Il y a trois forces :

• Force 1 : Le robot le plus proche

• Force 2 : La brique la plus proche

• Force 3 : Le dépôt

F2

F1

F = F1+ F2 + F3

F3

Figure 16 : Le cas : robot porte une brique Le cas 3 : Il n’y a pas de force ou somme de force égale 0 : choisir une direction aléatoire. Dans cette application, on utilise une fonction Progn avec (deux arguments) et 2 ADFs. Le fixness est fixé et les paramètres peuvent être définis dans chaque expérimentation.

2.2.2. Parallélisation • Modèle Master-Slave

Nguyen Thanh Tuan 21

TPE - Coordination globale de comportements coopératifs

Master

Slave 2

Slave 1

Slave 3

Figure 17 : Modèle physique « Master-Slave » On utilise 4 ordinateurs. Un ordinateur joue le rôle de serveur (Master), il contrôle l’application (les paramètres, les opérations génétiques…) et envoie les demandes aux autres ordinateurs dans le système. Les autres sont les clients (slaves). Ils exécutent les demandes du serveur. Dans notre expérimentation, le serveur envoie les individus aux clients avec demande d’évaluation de ces individus, et les clients renvoient les « fixness » des individus.

Individu 1 Individu 2 Individu 3 …………

Individu 1

Fixness 1

Individu 2

Fixness 2

Individu 3

Fixness 3

Figure 18 : Un exemple • Modèle « Islands » :

Nguyen Thanh Tuan 22

TPE - Coordination globale de comportements coopératifs

Avec ce modèle, on utilise 4 ordinateurs comme 4 « islands ». Chaque « island » est une sous-population indépendante et côtoie les autres « islands ». Un ordinateur qui a le rôle de serveur contrôle les paramètres et résume le résultat.

Island 1

Island 3

Island 2

Island 4

Serveur + Client Sous-population 1

Client Sous-population 2

Client Sous-population 3

Client Sous-population 4

Figure 19 : Modèle physique "Islands"

Le modèle “Islands” utilise une topologie arbitraire des individus migrant de l'île (le processus de EC) pour passer sur le réseau. Il y a quelques restrictions pour simplifier:

• Chaque île doit avoir la même sorte de sous-populations et d'espèces. • Chaque sous-population enverra le même nombre de migrants qu'une autre

sous-population. • Les migrants d'une sous-population iront dans la même sous-population.

Chaque île est un client. Supplémentairement une île est désignée comme serveur. Le but du serveur est de synchroniser les clients pour qu'ils soient tous montés correctement et liés l'un à l'autre, ensuite de leur envoyer de petits messages de signal (comme ceux les informant qu'un autre client a découvert l'individu idéal) et les aider à se fermer. A l’exception de ces rares signaux qui sont routés par le serveur ver sles clients, tous les autres renseignements - à

Nguyen Thanh Tuan 23

TPE - Coordination globale de comportements coopératifs

savoir les migrants eux-mêmes - sont envoyés directement de client à client dans un mode peer-to-peer.

Le topologie du réseau est conservée uniquement dans la base de données de paramètrage du serveur. Quand les clients sont pleins, ils remplissent une boîte aux lettres "mail-box" (où les migrants d'autres clients apparaîtront), puis ils vont chez le serveur et lui demandent qu'il les raccorde pour envoyer les migrants. Le serveur leur donne le feu vert et ensuite ils se connectent.

Quand un client a fini de se connecter, il le signale au serveur. Après que chacun s'est connecté, le serveur dit aux clients de commencer l'évolution et ils sont déconnectés et lancés.

Les îles envoient des émigrants à d'autres îles en copiant les bons individus et en envoyant ces bons individus aux boîtes aux lettres de réception des clients. Dès qu'un individu a été reçu, on considère qu’il est non évalué par l'île de réception, bien qu'il ait été auparavant évalué par l'île de l’émetteur.

Le modèle de « Islands » est d'une manière caractéristique asynchrone parce que les migrants peuvent apparaître dans votre boîte aux lettres d'un moment à l'autre; les îles ne s'attendent pas pour accomplir la génération suivante. C'est un usage plus efficace de bande de fréquence de réseau. Quand une île a accompli sa reproduction, elle regarde à l'intérieur de sa boîte aux lettres pour de nouveaux migrants. Elle remplace alors certains de ses individus nouvellement produits (choisis entièrement au hasard) par les migrants (nous pourrions avoir augmenté la grandeur démographique donc nous n'avons pas gaspillé ce temps de reproduction, mais nous étions indolents). Elle fait alors partir la boîte aux lettres et avec patience attend plus d'individus.

On peut aussi donner des temps de début différents aux clients et des modulos pour le fait de migrer. Par exemple, on pourrait dire au client A qu'il commence à envoyer les migrants seulement après la génération 6 et envoie ensuite les migrants toutes les 4 générations à part cela. Le but pour les temps de début et modulos consiste en ce pour que pas chaque client envoie des migrants en même temps; cela utilise aussi mieux la bande de fréquence de réseau.

Quand un client tombe, les autres clients s'en occupent ; ils arrêtent simplement d'essayer de lui envoyer. Mais si le serveur tombe, les clients ne continuent pas l'opération; ils se ferment. Cela signifie qu'en général vous pouvez fermer un réseau de modèle « Islands » entier juste en tuant le processus de serveur. Pourtant, si le serveur arrête parce qu'il manque des générations, il attendra que tous les clients aient quitté avant de s'arrêter finalement.

Nguyen Thanh Tuan 24

TPE - Coordination globale de comportements coopératifs

Chapitre 3. EXPERIMENTATION

3.1. Modification des paramètres Durant ces expérimentations, nous avons voulu étudier la flexibilité de notre système, c'est-à-dire les capacités de celui-ci à s’adapter à une ou plusieurs modifications dans l’environnement. Les sections suivantes exposent les principaux résultats que nous avons obtenus.

3.1.1. Adaptation au changement d’environnement Dans cette première expérience, nous avons voulu tester les capacités de programmation génétique à trouver le meilleur programme possible lorsque l’on répartissait les briques de différentes façons dans l’environnement (aléatoire, à droite, espacées). Pour cela, nous avons placé 7 robots dans un environnement de taille 16x16 contenant 25 briques. Les caractéristiques des robots (visions, vitesse) ont été fixées.

Figure 20 : Trois type d'environnement : à droite, aléatoire et espacé Sans utiliser les ADFs, on a les résultats suivants :

Note Nombre d’individus Temps

Espacées 25 18432 13.743

Aléatoire 20 52224 35.103

À droite 11 52224 38.413

Figure 21 : Résultat sans utiliser ADFs

Nguyen Thanh Tuan 25

TPE - Coordination globale de comportements coopératifs

Et avec les ADFs :

Note Nombre d’individus Temps

Espacées 25 20480 15.608

Aléatoire 19 52224 26.002

À droite 8 52224 27.704 Figure 22 : Résultat avec ADFs

25

20

11

25

19

8

0

5

10

15

20

25

30

Espacées Aléatoire À droite

Non ADFADF

Figure 23 : Graphiques des résultats Dans le cas d’un environnement avec les briques rangées espacées, le nombre de briques collectées est le meilleur.

3.1.2. Modification du nombre de robots Nous avons testé l’effet d’une modification du nombre de robots. Pour cela, nous avons utilisé un environnement de taille 16x16 contenant 25 briques et les briques rangées espacées. Dans cette expérimentation, nous avons utilisé les ADFs. Nous obtenons les résultats décrits dans le tableau suivant:

Nombre de robot Note Nombre de

individu Temps

3 24 52224 44.129

7 25 19456 18.912

11 25 7168 8.042 Figure 24 : Résultat d'expérimentation de modification du nombre de robots

On a le graphique :

Nguyen Thanh Tuan 26

TPE - Coordination globale de comportements coopératifs

20480 19456

7168

0

5000

10000

15000

20000

25000

3 7 11

Nombre d'individus

Figure 25 : Graphique de résultat de modification Dans tous les cas, le nombre de briques collectée est maximum, mais dans le cas où le nombre de robots est égal 11, le nombre d’individu est moindre, c'est-à-dire qu’on obtient le résultat plus rapidement.

3.2. Parallélisation Dans cette expérience, nous avons voulu tester les capacités de programmation génétique parallélisée. Pour cela, nous avons placé 21 robots dans un environnement de taille 100x100 contenant 1089 briques. Les caractéristiques des robots (visions, vitesse) ont été fixées. Les tests sont réalisé sur un réseau contenant 4 ordinateurs : Pentium 4, vitesse 1.8 Gh, mémoire 512 MB. Nous obtenons les résultats décrits dans les tableaux suivants: Avec modèle Master-Slave : Le résultat :

Modèle Note Nombre d’individus Temps

Master-Slave 339 52224 748.547 Figure 26 : Résultat du modèle "Master-Slave"

Nguyen Thanh Tuan 27

TPE - Coordination globale de comportements coopératifs

Avec le modèle « Islands » : Les paramètres :

Islands Nombre d’îles à laquelle cette île envoie des migrants

Nombre de migrants (sur sous-population) que cette île envoie à une autre.

Génération à partir de laquelle cette île commence à envoyer des migrants

Nombre de générations que cette île attend pour envoyer des migrants.

Taille maximum (sur sous-population) de la boîte aux lettres

Hoang Sa 3 40 2 4 200

Truong Sa 3 40 3 4 200

Con Dao 3 40 5 4 200

Phu Quoc 3 40 7 4 200 Figure 27 : Les paramètres du modèle « Islands »

Les résultats :

Islands Note Nombre d’individus Temps (secondes)

Hoang Sa 349 52224 1543.469

Truong Sa 315 52224 2414.608

Con Dao 346 52224 2455.779

Phu Quoc 338 52224 1918.751

Maximum 349 52224 2455.779 Figure 28 : Résultat du modèle "Islands"

Sur un seul ordinateur :

Modèle Note Nombre d’individu Temps (seconds)

Un ordinateur 344 52224 2905.626 Figure 29 : Résultat sur un seul ordinateur

Nguyen Thanh Tuan 28

TPE - Coordination globale de comportements coopératifs

344

339

349

330

335

340

345

350

Un ordinateur Master-Slave Islands

Note

Figure 30 : Graphiques de trois modèle selon la note

2905.626

748.547

2455.779

0500

100015002000250030003500

Un ordinateur Master-Slave Islands

Le temps

Figure 31 : Graphique de trois modèles selon le temps Dans le cas du modèle « Master-Slave », le temps perdu est le plus faible. En effet, ce modèle est meilleur. Dans le cas du modèle « Islands », on peut améliorer le résultat en changeant les paramètres (taux de migration…) ou en ajoutant plusieurs ordinateurs.

Nguyen Thanh Tuan 29

TPE - Coordination globale de comportements coopératifs

CONCLUSION ET PERSPECTIVES Dans ce rapport, nous avons vu un problème de coordination entre robots pour réussir à collecter des briques dans un environnement. Selon les types d’environnement, il y a des résultats différents. Nous avons proposé une approche intéressante qui permet de trouver le meilleur programme de contrôle. Les expérimentations que nous avons mises en place ont montré les capacités d’adaptations de l’application dans la résolution de notre problème. En effet, la modification du nombre de robots permet de déterminer le nombre de robots nécessaires. Pour améliorer les résultats, on a parallélisé l’application. Et les résultats sont vraiment meilleurs. Toutefois, certains points de l’application restent encore à améliorer: On a seulement utilisé un mécanisme le plus simple du modèle GACS. Il y a 36 mécanismes différents. Et on peut déterminer avec les autres mécanismes dans modèle GACS. On peut combiner la bibliothèque ECJ avec une application de simulation pour visualiser les résultats.

Nguyen Thanh Tuan 30

TPE - Coordination globale de comportements coopératifs

Référence [BLANC06] Sylvain CUSSAT-BLANC, Luu Thien DO, Yves DUTHEN,

Hervé LUGA : Constitution d’équipes pour la construction collaborative d’un mur de briques (IRIT - Université Toulouse I, 2006).

[FLACHER05] F. FLACHER: Génération ascendante de coordination spatiale - Vers une conception automatisée du contrôle de coordination spatiale (PhD Thesis, Universitaire Paris 6, 2005).

[GAGNE,03] Christian Gagne,Marc Parizeau,Marc Dubreuil Laboratoirede Visionet Systemes Numeriques(LVSN), Departement de Genie Electrique et de Genie Informatique, Universite Laval, Quebec(QC), Canada, G1K7P4. A Robust Master-Slave Distribution Architecture for Evolutionary Computations,2003

[GOLDBERG89] D.E. GOLDBERG: Genetic Algorithms in Search, Optimization, and Machine Learning (Addison-Wesley, Reading, Mass., 1989).

[HOLLAND75] J.H. HOLLAND: Adaptation in Natural and Artificial Systems (The University of Michigan press, 1975).

[KOZA92,94,99] Koza J. R: Genetic Programming 1,2,3 (MIT Press, 1992,1994,1999).

[LUKE02] Sean Luke, ECJ Evolutionary Computation System, Seen Janaury 07, 2003 at http://cs.gmu.edu/~eclab/projects/ecj/

[LUU06] LUU Tien Dao: Efficacité et coopération (Master 2 Recherche These, Image Information Hypermédia, 2006).

[RECHENBERG73] Rechenberg I., Evolution strategie : Optimierung Technisher System nach Prinzipien des Biologischen Evolution, Fromman Holzboog, Stuttgart , 1973.

[SKOLICKI05] Zbigniew Skolicki, An Analysis of Island Models in Evolutionary Computation. In Proceedings of Graduate Student Workshop, Genetic and Evolutionary Computation Conference -- GECCO-2005. ACM Press.

Nguyen Thanh Tuan 31

TPE - Coordination globale de comportements coopératifs

L’ANNEXE

A. Un fichier paramètre parent.0 = ../../gp/koza/koza.params # First, we're gonna change the number of trees in # the individual, to accommodate the ADFs # Each of our three trees uses a different tree constraints, # tc0, tc1, tc2 pop.subpop.0.species.ind.numtrees = 3 # "The result-producing branch" (Koza-II p. 245) pop.subpop.0.species.ind.tree.0 = ec.gp.GPTree pop.subpop.0.species.ind.tree.0.tc = tc0 # "ADF0 body" (Koza-II p. 245) pop.subpop.0.species.ind.tree.1 = ec.gp.GPTree pop.subpop.0.species.ind.tree.1.tc = tc1 # "ADF1 body" (Koza-II p. 245) pop.subpop.0.species.ind.tree.2 = ec.gp.GPTree pop.subpop.0.species.ind.tree.2.tc = tc2 # Now, let's define what tc0, tc1, and tc2 are. # Each has a different function set, f0, f1, and f2 gp.tc.size = 3 gp.tc.0 = ec.gp.GPTreeConstraints gp.tc.0.name = tc0 gp.tc.0.fset = f0 gp.tc.0.returns = nil gp.tc.0.init = ec.gp.koza.HalfBuilder gp.tc.0.init.growp = 0.5 gp.tc.0.init.min = 2 gp.tc.0.init.max = 6 gp.tc.1 = ec.gp.GPTreeConstraints gp.tc.1.name = tc1 gp.tc.1.fset = f1 gp.tc.1.returns = nil gp.tc.1.init = ec.gp.koza.HalfBuilder gp.tc.1.init.growp = 0.5 gp.tc.1.init.min = 2 gp.tc.1.init.max = 6

Nguyen Thanh Tuan 32

TPE - Coordination globale de comportements coopératifs

gp.tc.2 = ec.gp.GPTreeConstraints gp.tc.2.name = tc2 gp.tc.2.fset = f2 gp.tc.2.returns = nil gp.tc.2.init = ec.gp.koza.HalfBuilder gp.tc.2.init.growp = 0.5 gp.tc.2.init.min = 2 gp.tc.2.init.max = 6 # Now, let's define the three function sets. gp.fs.size = 3 gp.fs.0.name = f0 gp.fs.0.info = ec.gp.GPFuncInfo gp.fs.0.size = 8 gp.fs.0 = ec.gp.GPFunctionSet gp.fs.0.func.0 = ec.app.contruction.func.Fo gp.fs.0.func.0.nc = nc0 gp.fs.0.func.1 = ec.app.contruction.func.Pb gp.fs.0.func.1.nc = nc0 gp.fs.0.func.2 = ec.app.contruction.func.Aller gp.fs.0.func.2.nc = nc0 gp.fs.0.func.3 = ec.app.contruction.func.Tb gp.fs.0.func.3.nc = nc0 gp.fs.0.func.4 = ec.app.contruction.func.Retourner gp.fs.0.func.4.nc = nc0 gp.fs.0.func.5 = ec.app.contruction.func.Progn gp.fs.0.func.5.nc = nc2 gp.fs.0.func.6 = ec.gp.ADF gp.fs.0.func.6.nc = nc0 # tree 1 (the "ADF0 body") gp.fs.0.func.6.tree = 1 gp.fs.0.func.6.name = 0 gp.fs.0.func.7 = ec.gp.ADF gp.fs.0.func.7.nc = nc1 # tree 1 (the "ADF1 body") gp.fs.0.func.7.tree = 2 gp.fs.0.func.7.name = 1

Nguyen Thanh Tuan 33

TPE - Coordination globale de comportements coopératifs

# It's interesting that in the "ADF0 body", gp.fs.1 = ec.gp.GPFunctionSet gp.fs.1.name = f1 gp.fs.1.info = ec.gp.GPFuncInfo gp.fs.1.size = 6 gp.fs.1.func.0 = ec.app.contruction.func.Fo gp.fs.1.func.0.nc = nc0 gp.fs.1.func.1 = ec.app.contruction.func.Pb gp.fs.1.func.1.nc = nc0 gp.fs.1.func.2 = ec.app.contruction.func.Aller gp.fs.1.func.2.nc = nc0 gp.fs.1.func.3 = ec.app.contruction.func.Tb gp.fs.1.func.3.nc = nc0 gp.fs.1.func.4 = ec.app.contruction.func.Retourner gp.fs.1.func.4.nc = nc0 gp.fs.1.func.5 = ec.app.contruction.func.Progn gp.fs.1.func.5.nc = nc2 # The "ADF1 body" -- see Koza-II p. 245 gp.fs.2 = ec.gp.GPFunctionSet gp.fs.2.name = f2 gp.fs.2.info = ec.gp.GPFuncInfo gp.fs.2.size = 6 gp.fs.2.func.0 = ec.app.contruction.func.Fo gp.fs.2.func.0.nc = nc0 gp.fs.2.func.1 = ec.app.contruction.func.Pb gp.fs.2.func.1.nc = nc0 gp.fs.2.func.2 = ec.app.contruction.func.Aller gp.fs.2.func.2.nc = nc0 gp.fs.2.func.3 = ec.app.contruction.func.Tb gp.fs.2.func.3.nc = nc0 gp.fs.2.func.4 = ec.app.contruction.func.Retourner gp.fs.2.func.4.nc = nc0 gp.fs.2.func.5 = ec.app.contruction.func.Progn gp.fs.2.func.5.nc = nc2 # # We specify our problem here # eval.problem = ec.app.contruction.Robot eval.problem.data = ec.app.contruction.RobotData eval.problem.robot = 7 eval.problem.vision = 1

Nguyen Thanh Tuan 34

TPE - Coordination globale de comportements coopératifs

eval.problem.speed = 1 eval.problem.moves = 400 eval.problem.file = testp.map eval.problem.stack.context.data = ec.app.contruction.RobotData #stat = ec.app.contruction.RobotStatistics

B. Un exemple de résultat Non – ADFs Final Statistics ================ Total Individuals Evaluated: 18432 Best Individual of Run: Evaluated: true Fitness: Raw=0.0 Adjusted=1.0 Hits=25 Tree 0: (Progn (Progn (Progn (Progn (Progn poser-brique porter-brique) (Progn orienter orienter)) (Progn (Progn porter-brique aller-a-brique) (Progn poser-brique poser-brique))) (Progn (Progn (Progn aller-a-brique porter-brique) (Progn (Progn (Progn (Progn (Progn (Progn aller-a-brique orienter) (Progn orienter retourner-a-depot)) (Progn (Progn orienter aller-a-brique) (Progn aller-a-brique retourner-a-depot))) (Progn aller-a-brique porter-brique)) (Progn

Nguyen Thanh Tuan 35

TPE - Coordination globale de comportements coopératifs

(Progn (Progn (Progn orienter retourner-a-depot) (Progn orienter porter-brique)) (Progn (Progn retourner-a-depot retourner-a-depot) (Progn poser-brique retourner-a-depot))) (Progn (Progn (Progn orienter retourner-a-depot) (Progn retourner-a-depot (Progn orienter porter-brique))) (Progn (Progn poser-brique aller-a-brique) (Progn poser-brique aller-a-brique))))) (Progn aller-a-brique porter-brique))) (Progn porter-brique porter-brique))) (Progn (Progn (Progn (Progn retourner-a-depot orienter) (Progn porter-brique poser-brique)) (Progn (Progn aller-a-brique retourner-a-depot) (Progn aller-a-brique poser-brique))) (Progn (Progn (Progn (Progn (Progn aller-a-brique orienter) (Progn aller-a-brique retourner-a-depot)) (Progn (Progn aller-a-brique retourner-a-depot) (Progn porter-brique poser-brique))) (Progn (Progn (Progn porter-brique porter-brique) (Progn orienter retourner-a-depot)) (Progn (Progn porter-brique poser-brique) (Progn aller-a-brique porter-brique)))) (Progn (Progn orienter (Progn (Progn (Progn retourner-a-depot

Nguyen Thanh Tuan 36

TPE - Coordination globale de comportements coopératifs

orienter) (Progn porter-brique poser-brique)) (Progn (Progn aller-a-brique retourner-a-depot) (Progn aller-a-brique poser-brique)))) (Progn poser-brique retourner-a-depot))))) Timings ======= Initialization: 0.194 secs total, 28446 nodes, 146628.86 nodes/sec Evaluating: 10.337 secs total, 1886254 nodes, 182475.97 nodes/sec Breeding: 3.21 secs total, 1857808 nodes, 578756.4 nodes/sec Memory Usage ============== Initialization: 1243.7266 KB total, 28446 nodes, 22.871586 nodes/KB Evaluating: 8535.969 KB total, 1886254 nodes, 220.97714 nodes/KB Breeding: 32284.625 KB total, 1857808 nodes, 57.544666 nodes/KB Avec ADFs Final Statistics ================ Total Individuals Evaluated: 20480 Best Individual of Run: Evaluated: true Fitness: Raw=0.0 Adjusted=1.0 Hits=25 Tree 0:

Nguyen Thanh Tuan 37

TPE - Coordination globale de comportements coopératifs

(ADF1[2] (ADF1[2] (Progn (ADF1[2] (ADF1[2] (ADF1[2] aller-a-brique))) (ADF1[2] retourner-a-depot)))) Tree 1: (Progn porter-brique retourner-a-depot) Tree 2: (Progn (Progn (Progn (Progn (Progn poser-brique orienter) (Progn (Progn retourner-a-depot retourner-a-depot) (Progn aller-a-brique aller-a-brique))) (Progn (Progn aller-a-brique orienter) (Progn retourner-a-depot aller-a-brique))) (Progn (Progn (Progn aller-a-brique porter-brique) (Progn retourner-a-depot retourner-a-depot)) (Progn (Progn poser-brique orienter) (Progn aller-a-brique porter-brique)))) (Progn (Progn (Progn (Progn retourner-a-depot porter-brique) (Progn orienter porter-brique)) (Progn (Progn retourner-a-depot porter-brique) (Progn aller-a-brique retourner-a-depot))) (Progn poser-brique aller-a-brique))) Timings ======= Initialization: 0.165 secs total, 32526 nodes, 197127.27 nodes/sec Evaluating: 13.057 secs total, 1483532 nodes, 113619.664 nodes/sec Breeding: 2.386 secs total, 1451006 nodes, 608133.3 nodes/sec

Nguyen Thanh Tuan 38

TPE - Coordination globale de comportements coopératifs

Memory Usage ============== Initialization: 1413.1016 KB total, 32526 nodes, 23.017454 nodes/KB Evaluating: 8345.3125 KB total, 1483532 nodes, 177.7683 nodes/KB Breeding: 32031.922 KB total, 1451006 nodes, 45.298748 nodes/KB

Nguyen Thanh Tuan 39