next up previous contents
Next: Température Up: Description de l'architecture Previous: Workspace

Coderack  

  Les codelets représentent en quelque sorte diverses pressions dans un problème donné. Les codelets ascendants représentent les pressions présentes dans toutes les situations (la volonté de faire des descriptions, de trouver des relations, des correspondances, etc.). Les codelets descendants représentent des pressions évoquées par la situation courante (par exemple, dans le problème abc->abd, mrrjjj->?, pour construire plus de groupes dans la chaîne cible une fois qu'on en a déjà construit).

À chaque exécution, on démarre avec une population initiale standard de codelets ascendants (avec des urgences préétablies) dans le Coderack. À chaque pas, un codelet est choisi pour être exécuté et est supprimé de la population actuelle du Coderack. Comme le choix est aléatoire, pondéré par les urgences relatives dans la population, COPYCAT n'est pas un système « à agenda » tel que Hearsay II qui, à chaque pas, exécute l'action en attente ayant la priorité estimée la plus élevée. L'urgence  d'un codelet ne représente pas une priorité estimée, mais plutôt la vitesse relative à laquelle les pressions représentées par ce codelet le poussent vers son exécution. Si le codelet ayant la plus grande urgence était toujours choisi, les codelets de plus faible urgence ne pourraient jamais être exécutés, même si les pressions qu'ils représentent étaient intéressantes. L'utilisation du hasard lors du choix des codelets permet à chaque pression d'obtenir, au bout d'un certain temps, l'attention méritée, même si cette estimation du mérite change au cours du traitement. Cette allocation des ressources donne un résultat statistique émergent plutôt qu'un résultat déterministe pré-programmé.

Les codelets prenant part à la construction d'une structure activent les nœuds du Slipnet représentant cette structure. Ces activations, à leur tour, modifient la population du Coderack par le biais des nœuds actifs (comme le nœud successeur) qui peuvent ajouter des codelets dans le Coderack (par exemple, des codelets descendants qui cherchent des relations de succession entre des couples d'objets). Tout au long du traitement, de nouveaux codelets sont ajoutés à la population du Coderack, soit comme une suite logique aux codelets déjà exécutés, soit comme des éclaireurs descendants pour les nœuds activés. N'oublions pas non plus que de nouveaux codelets ascendants sont continuellement envoyés dans le Coderack. L'urgence  d'un nouveau codelet est fixée par son créateur, elle est fonction de l'intérêt estimé de la tâche qu'il aura à accomplir. En particulier, l'urgence d'un codelet lancé par un autre codelet est fonction du résultat de l'évaluation faite par le codelet qui l'a lancé, et l'urgence d'un codelet descendant est fonction de l'activation du nœud qui l'a lancé. L'urgence de chaque type de codelet ascendant est fixe. Ainsi la population du Coderack change, au cours du temps, en réponse aux besoins du système, du moins ceux que les codelets ont jugé importants, ainsi que ceux définis par les activations dans le Slipnet, qui dépendent elles-mêmes des structures déjà construites.

La vitesse d'un processus de construction d'une structure dépend des urgences des codelets qui le composent. Comme ces valeurs d'urgence sont déterminées par l'estimation de l'intérêt de la structure en construction, les structures les plus prometteuses ont tendance à être construites plus vite que les autres. On obtient un balayage parallèle étagé -- les solutions les plus prometteuses tendent (statistiquement) à être explorées plus vite que les autres. Il n'y a pas de contrôle global du traitement. Bien que COPYCAT soit exécuté sur une architecture séquentielle (et non parallèle), et donc qu'un seul codelet s'exécute à un moment donné, le système est équivalent à un système dans lequel de nombreuses activités indépendantes ont lieu simultanément, puisque les codelets travaillent localement et sont en grande partie indépendants.

Ce découpage fin des processus de construction des structures sert deux buts : il permet de traiter plusieurs processus en parallèle, grâce à l'exécution entrelacée de leurs composants, et il permet la régulation dynamique des ressources de chacun de ces processus par la mise à jour continuelle des estimations d'intérêt (reflétées par les urgences des codelets) du chemin suivi.

Il est important de comprendre que, dans ce système, les processus de construction de structure, consistant en plusieurs codelets s'exécutant séquentiellement, sont eux-mêmes des entités émergentes.  Toute séquence de codelets résultant en une action macroscopique cohérente peut a posteriori être étiquetée comme un processus, mais les processus à grande échelle ne sont pas prévus. Un processus n'est pas pré-déterminé puis coupé en composants plus petits. Seuls les codelets eux-mêmes ont un comportement pré-déterminé ; les processus macroscopiques du système sont émergents.


next up previous contents
Next: Température Up: Description de l'architecture Previous: Workspace
François Parmentier
6/19/1998