Le moteur de création de règles
Le principe général du moteur de création de règles consiste à mémoriser des événements pour les transformer en prémisse ou en conclusion afin de former une nouvelle règle qui sera insérée dans la base de règles. La création de règles repose exclusivement sur des relations causales.
Le choix des évènements et des opérations associés est déterminé par l'interprétation du moteur de création de règles de l'arrivée dans la base de faits des évènements de catégorie relative aux transitions, aux opérations et aux désignations.
Le moteur de création de règles se compose d'un état interne et d'un certain nombre de couples (référence, item).
L'état interne représente l'objet de l'unique type de la catégorie dédiée aux états du moteur de création de règles. Autrement dit, l'arrivée des évènements de type transition va avoir un impact sur l'état interne.
Une référence désigne un évènement dans la base de faits. Un item contient une information et un indice temporel. Cette information et cet indice temporel peuvent provenir d'une copie ou de la dérivation d'une référence.
Le nombre de couples (référence, item) est défini dans les modèles en langage nomo. Le nombre de couples représente le nombre maximal de prémisses contenues dans une règle créée.
A chaque couple (référence, item) est associé réciproquement un couple de type de connaissances de catégories relatives aux désignations et de catégories relatives aux opérations. Autrement dit, l'arrivée des évènements de type relatifs aux opérations ou aux désignations vont avoir réciproquement un impact sur la référence ou le contenu de l'item.
Parmi les couples (référence, item), un unique couple (référence, item) est exclusivement dédié à la capture d'évènements appartenant à la catégorie des entrées. Les désignations et les opérations sur ce couple diffèrent un peu des autres.
Le moteur de création de règles interprète conjointement tous les évènements (transitions, opérations, désignations) provenant du même cycle d’interprétation. Toutefois, en interne, les évènements relatifs aux transitions sont traités en premier, de sorte que l'interprétation des autres évènements provenant du même cycle d’interprétation soit traitée en fonction du nouvel état.
Les états internes
Le fonctionnement du moteur de création de règles se traduit par un automate à états finis. Les transitions d'un état vers un autre sont produites par l'arrivée d'un événement de transition dans la base de faits.
Il existe cinq états internes possibles : « Affectation », « Excitateur », « Inhibiteur », « Conclusion », et « Attente ». Chacun des quatre premiers états représente une phase dans la construction d’une règle, le dernier état correspond à un état d’attente atteint soit à l’initialisation, soit après la détection d’une anomalie concernant la syntaxe ou la construction. Dans ce dernier cas, la transition vers l'état « Attente » peut conduire selon la situation à l’annulation des affectations en cours ou à la suppression de la règle en cours.
Autrement-dit, la conclusion d'une règle produisant des évènements relatifs aux états prend soit la valeur « Affectation », « Excitateur », « Inhibiteur » ou « Conclusion ». La figure ci-dessous représente les états et les transitions de l'automate. Les transitions en rouge représentent l'arrivée d'événements de transition inappropriés pour la construction d'une règle et conduisant à un évènement indiquant une anomalie.
L'arrivée d'un évènement relatif aux opérations dans la base de faits provoque l’application d'un opérateur.
Pendant l’état « Affectation », en fonction des pointeurs, les opérateurs servent à l’affectation des items soit par recopie d’un événement, soit par création à partir d’un événement ou d'un autre item. Avant la transition vers « Excitateur » ou « Inhibiteur », un item représentant l’origine temporelle doit être déterminé ou sinon par défaut ce sera celui de la conclusion et réactualiser pour chaque conclusion. Le rôle de ce repère sera expliqué dans la partie abordant le fonctionnement des items.
Pendant l’état « Inhibiteur » ou « Excitateur », les opérateurs servent à indiquer le contenu d’une prémisse avec leurs tolérances. Ils se peut qu'aucune prémisse soit créée dans ce cas la condition de la nouvelle règle sera vide.
Durant l’état « Conclusion », les opérateurs indiquent le contenu de la conclusion d’une nouvelle règle. Ainsi, il est possible de créer facilement plusieurs règles ayant la même condition. Toutefois, avant l’envoi à la base de règles, une validation sur la composition de la condition est entreprise en fonction de la catégorie de la règle.
En fonction de l'état de l'automate tous les opérateurs ne sont pas valides. Dans le cas d'une tentative d’application d'un opérateur inapproprié, un évènement d'anomalie est envoyé à la base de faits et l'automate se place à l'état « attente ».
Les références
Une référence désigne un événement dans la base de faits qui servira de repère pour des opérations. La désignation de cet évènement s'effectue via un évènement de désignation.
Le fonctionnement des références est indépendant de celui des états internes du moteur de création de règles. Autrement dit, toute arrivée d'évènements relatifs aux désignations est toujours traitée de la même manière par le moteur de création de règles.
L'information d'un évènement de désignation correspond à l’ensemble de types pouvant être désigné. Cet ensemble est défini par une suite par un ensemble de filtre qui permet d'énumérer les types autorisés.
Toutefois, seule la référence dédiée aux entrées peut désigner un évènement relatif aux entrées. De la même manière cette référence ne peut désigner des évènements autres que ceux relatifs aux entrées. Le langage nomo représente ces contraintes dans le modèle de base de la création de règles.
Parmi l’ensemble des types visés, l'évènement désigné par la référence correspond à l'évènement le plus récent au moment de l'arrivée de l'évènement de désignation ; si ex æquo, le choix se fait aléatoirement.
Compte tenu du mode de désignation, seules les évidences peuvent être référencées.
Si aucun évènement n'est trouvé dans la base de faits, la référence est vide mais elle conserve malgré tout le type de l'évènement qui aurait dû être capturé.
Lorsque l'évènement référencé franchi le seuil de l'oubli, la référence est alors désactivée.
Les items
Un item contient une information et un indice temporel. Pour l'item dédié aux entrées, l'information correspond à un vecteur de réel.
L'arrivée d'un évènement relatif aux opérations dans la base de faits provoque l’application d'un opérateur sur l'item idoine. Les opérations sur les items permettent, dans l'ordre, de les affecter puis de les utiliser pour définir des prémisses inhibitrices, des prémisses excitatrices et des conclusions. Chacune de ces phases correspond à un état du moteur de création de règles.
Au départ les items sont désactivés et ils ne sont activés qu'à leur affectation. Une fois affecté, l'indice temporel s'écoule de la même manière que dans la base de faits. Lorsque l'indice temporel franchit le seuil de l'oubli, l'item est désactivé et ne peut être utilisé qu'après une nouvelle affectation.
L'arrivée inappropriée d'un évènement relatif aux opérations par rapport à l'état du moteur de création de règles conduit à la production d'un événement d'anomalie dans la base de faits.
L'affectation des items
Il ne peut y avoir qu'une affectation par item et par phase d'affection et il n'y a qu'une affectation par cycle d'interprétation. Autrement-dit, si plusieurs opérateurs d'affectation arrivaient au même moment dans la base de faits, alors un évènement signalant une anomalie serait produit.
L’affectation d'un item peut reposer soit sur la copie d’un événement, soit sur la dérivation d'un évènement. Cependant, pour le couple (item, référence) dédié aux entrées, seule l'affectation par copie d'un évènement est autorisée.
Quel que soit le mécanisme utilisé pour affecter les items, avant de transiter vers l’état « Excitateur » ou celui d’« Inhibiteur », il faut déterminer, parmi tous les items, celui qui servira de repère temporel pour harmoniser les indices temporels des prémisses et le délai, s'il y a lieu, de la conclusion.
La copie d'un évènement
Dans une affectation par copie d’événements, le type de l'évènement à recopier correspond à celui désigné par la référence associée à l'item.
Les opérateurs d’affectation servent à indiquer la manière de rechercher l'évènement à copier. Cette recherche repose sur un repère temporel, celui-ci peut être la référence associée à l'item ou à un item auxiliaire. Dans ce dernier cas, arrivé en même temps que l'opérateur d'affection, un opérateur « cibler » définit par son type l'item auxiliaire. Cette méthode implique que l'item servant de repère temporel doit être précédemment affecté. De même, si la référence est désactivée ou si elle est vide, un évènement signalant une anomalie est produit.
Cinq opérateurs d'affection ont été définis :
- L'opérateur « prendre celui-là » recherche l'évènement le plus récent depuis le repère temporel.
- L'opérateur « prendre le début » recherche le premier évènement d’une série d’événements avec une information identique dont le dernier événement correspond au plus récent depuis le repère temporel et du type idoine.
- L'opérateur « prendre le précédent » recherche l'événement précédent une série d’événements identiques dont le dernier événement correspond au plus récent depuis le repère temporel et du type idoine
- L'opérateur « prendre le dernier » recherche le dernier événement avec un contenu identique à l'évènement le plus récent depuis le repère temporel et du type idoine.
- L'opérateur « prendre le suivant » recherche l'événement suivant une série d’événements identiques dont le dernier événement correspond au plus récent depuis le repère temporel et du type idoine.
- L'opérateur « prendre le même» recherche l'événement précédent l'évènement désigné avec le même contenu.
- L'opérateur « copier » s'utilise obligatoirement avec l'opérateur « cibler », il copie l'item du registre désigné.
Une fois l'évènement trouvé, son information et son temps d'arrivée dans la base de faits sont stockés dans l'item. Il devient actif jusqu'à l'élimination de l'évènement dans la base de faits.
Dans tous les cas, les affectations par copie concernent uniquement les évidences, les évènements ayant un indice temporel positif ou nul.
Pour les évènements externes, seul l'opérateur « prendre celui-là » est applicable lorsque seule la référence associée à l'item est utilisée, autrement-dit ces opérateurs ne peuvent être utilisé dans ce cas uniquement lorsque l'opérateur « cibler celui-là » est utilisé afin de désigner un registre référant.
La dérivation d'un évènement
La création de certaines règles, comme les règles de perception, nécessite une conclusion dont l’information doit être nouvelle par rapport à toutes les conclusions existantes.
Afin de répondre à ce besoin, la dérivation d'un évènement permet d'affecter un item avec un évènement virtuel créé à partir d'un autre évènement ou d'une référence à un type.
Ce mode d'affection est utilisé pour sept catégories d'évènements, celles qui sont relatives aux conceptions, aux marques, aux perceptions, aux commandes, aux prédictions, aux récompenses et aux contrôles. La dérivation peut s'appuyer sur les liens existants entre les types, par exemple un type d'entrée est nécessairement lié à un type de perception.
La détermination du type de l'évènement virtuel s'effectue soit via la référence soit via un item auxiliaire.
A chaque création d'un événement virtuel, un nouvel élément est rajouté à l’ensemble de définition de son type. Cet élément est identifié par son numéro d'ordre dans l'ensemble de définition. Les seules exceptions à cet ajout automatique concernent la création d'évènements virtuels jumeaux et d'évènements virtuels de commande dont le mécanisme est abordé ultérieurement.
L'initialisation de l'indice temporel de l'évènement virtuel créé dépend de la façon de déterminer son type ainsi que de l'opérateur d'affectation employé.
Les opérateurs sont dédiés à des catégories précises, si la référence au type qu'ils doivent utiliser ne correspond pas, alors il y a production d'un évènement signalant une anomalie.
La sélection via la référence
La sélection via la référence est celle utilisée lorsqu'aucun opérateur « cibler » apparaît en même temps que l'opérateur d'affection. Contrairement, à l'affectation par copie, une référence vide est ici tolérée car seul le type est utilisé.
L'évènement virtuel servant à affecter l'item possède un indice temporel correspondant à celui de la référence.
Seuls trois opérateurs peuvent être employés dans ce contexte :
- L'opérateur « créer un concept » affecte un évènement virtuel dont le type de conception correspond à celui de la référence.
- L'opérateur « créer une marque » affecte un évènement virtuel dont le type de marquage correspond soit au type de marque de la référence mais ne devant pas être lié à une prédiction, soit au type de marque lié au type de prédiction de la référence.
- L'opérateur « créer une récompense » affecte un évènement virtuel dont le type de récompense se trouve lié à celui de la référence.
La sélection via un item auxiliaire
La sélection via un item auxiliaire est celle utilisée lorsqu’un opérateur « cibler » apparaît en même temps que l'opérateur d'affection. L'item auxiliaire doit être préalablement affecté.
L'indice temporel de l'évènement virtuel servant à affecter l'item est initialisé avec l'indice temporel de l'item auxiliaire, de même pour le temps de la référence qui est initialisé avec celui de la référence auxiliaire. Toutefois, certains opérateurs ajoute un pas de temps au temps de la capture référence et de son arrivée dans la mémoire évènementielle. Ces opérateurs sont qualifiés de décalé.
Dans ce contexte, douze opérateurs peuvent être appliqués :
- Les opérateurs « créer un concept » affecte un évènement virtuel dont le type de conception correspond à celui de l'item auxiliaire.
- Les opérateurs « créer une marque » affecte un évènement virtuel dont le type de marquage correspond soit au type de marque de l'item auxiliaire mais ne devant pas être lié à une prédiction, soit au type de marque lié au type de prédiction de l'item auxiliaire.
- Les opérateurs « créer une récompense » affecte un évènement virtuel dont le type de récompense se trouve lié à celui de l'item auxiliaire.
- Les opérateurs « créer un jumeau » affectent un évènement virtuel dont le type de conception se trouve lié au type de l'item auxiliaire et dont l'information correspond à celle de l'item auxiliaire.
- Les opérateurs « créer une commande » affectent un évènement virtuel dont le type de commande se trouve lié au type de perception de l'item auxiliaire et dont l'information correspond à celle de l'item auxiliaire.
- L'opérateur « créer une perception décalée » affecte un évènement virtuel dont le type de perception correspond à l'item dédié aux entrées. Cet opérateur n'a pas besoin d'un opérateur de ciblage car il est implicite.
- L'opérateur « créer une prédiction » affecte un évènement virtuel dont le type de prédiction se trouve lié à celui de l'item auxiliaire (un type de perception ou un type de conception).
- L'opérateur « créer un contrôle décalé » affecte un évènement virtuel dont le type de contrôle se trouve lié au type de prédiction de l'item auxiliaire.
La détermination du repère temporel de la règle
Avant de passer à l’étape de la désignation des prémisses, il est possible de déterminer le repère temporel qui sera utilisé pour construire la règle. Un seul opérateur de repère temporel ne peut être employé pendant toute la durée de la phase d’affectation, et il ne peut être employé en dehors de cette phase sous peine de provoquer une anomalie.
Le calcul des indices s'effectue en fonction d'un repère de par sa valeur mais également de par sa position, condition ou conclusion. En effet, afin de prendre en compte le temps d'interprétation, un pas de temps sera soustrait à la partie de la règle ne contenant pas le repère.
Repère temporel qui ne participerait ni à la construction de prémisse ni à la conclusion sera considéré comme faisant partie virtuellement de la condition.
Afin de couvrir toutes les situations, deux opérateurs de repère temporel existent :
- L'opérateur « transformer en repère temporel » indique l'item dont le temps de sa référence servira de repère temporel dans le calcul du délai de la conclusion. Il est préférable d'utilisé uniquement dans le cadre de la création d'une règle de prédiction ou de conception.
- L'opérateur « transformer en repère et origine temporel » indique l'item dont le moment d'arrivée dans la mémoire évènementielle servira de repère temporel . Autrement dit, l'indice temporel de la prémisse ou la conclusion générée par cet item vaudra zéro.
Dans le cas où aucun repère temporel ne serait spécifié, le repère et l'origine temporel lors de la construction de la règle correspondra à l'item utilisé pour la conclusion.
L'ajustement temporel des items
Afin de placer dans le temps les items définis, trois opérateurs existent sauf pour le couple (item,référence) destiné à capturer les évènements externes :
- L'opérateur « s'aligner sur » applique à son item et sa référence des temps identiques au couple (item,référence) ciblé avec l'opérateur « cibler » et de sa référence.
- L'opérateur « avancer » ajoute un pas de temps à l'item et sa référence. Employé avec l'opérateur « cibler », cela revient à utiliser l'opérateur « s'aligner sur » suivi de l'opérateur « avancer ».
- L'opérateur « reculer » soustrait un pas de temps à l'item et sa référence. Employé avec l'opérateur « cibler », cela revient à utiliser l'opérateur « s'aligner sur » suivi de l'opérateur « reculer ».
La construction des prémisses
La création d'une prémisse peut se dérouler soit pendant la phase « inhibiteur », soit pendant la phase « excitateur ». Dans les deux, les mêmes opérateurs sont utilisés.
Contrairement aux autres opérateurs qui sont prédéfinis, les opérateurs « créer une prémisse » sont définis dans les modèles en langage nomo.
Les opérateurs, de par leur arrivée, désignent l'item qui servira de base à l'élaboration de la prémisse. Il peut donc y avoir plusieurs opérateurs de création de prémisse arrivant en même temps et, un item servir plusieurs fois pour la construction de prémisses sauf pour les prémisses relatives aux entrées.
Un opérateur de création de prémisse doit spécifier obligatoirement les tolérances de la future prémisse. Pour les opérateurs du type lié au couple (item, référence) dédié aux entrées, le contenu des opérateurs renvoie à la tolérance à appliquer à toutes les composantes de la prémisse. Pour les opérateurs liés aux autres couple (item, référence), le contenu des opérateurs « créer une prémisse » renvoi à un triplet de tolérance correspondant au trois composantes des prémisses (crédibilité, information, indice temporel).
Mais pour les opérateurs liés aux couples (item, référence) autres que celui lié à l'entrée, il est également possible de spécifier les autres valeurs caractérisant une prémisse : le type, l'information, la crédibilité et l'indice temporel. Si toutes ces valeurs sont spécifiées alors l'activation de l'item n'est pas nécessaire.
Une cohérence dans les valeurs imposées est de mise, un indice temporel négatif ne pourra être compatible avec un type de catégorie qui ne correspondant ni à une prédiction ni à une conception. De même, une information ne peut être spécifiée uniquement si le type l'est également.
La construction des conclusions
Dans la phase de définition des conclusions, la désignation des conclusions s’effectue à l’aide de l’opérateur « créer une conclusion ».
Pour chaque opérateur de ciblage, une nouvelle règle est construite avec la condition définie lors des phases précédentes et avec la conclusion désignée. Par conséquent, plusieurs opérateurs « créer une conclusion » de type différent peuvent arriver en même temps. De même, plusieurs opérateurs « créer une conclusion » peuvent arriver successivement tant que la phase « conclusion » est maintenue.
À l'opérateur « créer une conclusion » sont obligatoirement associées deux valeurs qui serviront à l'initialisation de la règle : l'espérance et le nombre d'ajustements.
Mais les autres valeurs caractérisant une conclusion peuvent également être spécifiées : le type, l'information, le délai. Dans le cas où toutes les valeurs seraient spécifiées, l'activation de l'item n'est pas requise.
La cohérence de la spécification de ces valeurs implique quelques contraintes notamment que le délais doit être nul pour tout type de catégorie qui ne serait ni de conception ni de prédiction, que le type soit spécifier si l'information l'est, que le type ne peut être de prédiction, de marquage liés à une prédiction ou de contrôle, ni bien sûr de perception ou de commande, puisque tous ceux-ci se construisent par référence.
Une règle invalide par rapport aux contraintes qu'impose la base de connaissances conduit à la production d’un événement qui signale une anomalie. Par ailleurs, la validité d'une règle peut dépendre de la construction de la règle précédente.
En effet, il sera vérifié que la création d’une nouvelle règle de contrôle se trouve précédée par la création d’une nouvelle règle de marquage, elle-même précédée par la création d’une nouvelle règle de prédiction avec une condition identique.
Les anomalies
Toutes anomalies impliquent la transition vers l'état « Attente » et l'envoi d'un évènement d'anomalie dont le contenu en indique la raison.