Système de production (informatique) - Production system (computer science)

Un système de production (ou système de règles de production ) est un programme informatique généralement utilisé pour fournir une certaine forme d' intelligence artificielle , qui consiste principalement en un ensemble de règles sur le comportement, mais il comprend également le mécanisme nécessaire pour suivre ces règles lorsque le système répond aux états. du monde. Ces règles, appelées productions , sont une représentation de base jugée utile dans la planification automatisée , les systèmes experts et la sélection d'actions .

Les productions se composent de deux parties: une précondition sensorielle (ou énoncé «SI») et une action (ou «ALORS»). Si la condition préalable d'une production correspond à l' état actuel du monde, alors la production est dite déclenchée . Si une action de production est exécutée , on dit qu'elle a été déclenchée . Un système de production contient également une base de données, parfois appelée mémoire de travail , qui conserve des données sur l'état actuel ou les connaissances, et un interpréteur de règles. L'interpréteur de règles doit fournir un mécanisme de hiérarchisation des productions lorsque plusieurs sont déclenchées.

Opération de base

Les interpréteurs de règles exécutent généralement un algorithme de chaînage avant pour sélectionner les productions à exécuter pour atteindre les objectifs actuels, qui peuvent inclure la mise à jour des données ou des croyances du système . La partie condition de chaque règle ( côté gauche ou LHS) est testée par rapport à l'état actuel de la mémoire de travail.

Dans les systèmes de production idéalisés ou orientés données, on suppose que toutes les conditions déclenchées doivent être exécutées: les actions qui en découlent ( côté droit ou RHS) mettront à jour les connaissances de l'agent, supprimant ou ajoutant des données à la mémoire de travail. Le système arrête le traitement soit lorsque l'utilisateur interrompt la boucle de chaînage avant; lorsqu'un nombre donné de cycles a été effectué; lorsqu'une RHS «d'arrêt» est exécutée, ou lorsqu'aucune règle n'a de LHS qui sont vraies.

Les systèmes en temps réel et experts, en revanche, doivent souvent choisir entre des productions mutuellement exclusives - puisque les actions prennent du temps, une seule action peut être entreprise ou (dans le cas d'un système expert) recommandée. Dans de tels systèmes, l'interpréteur de règles, ou moteur d'inférence , parcourt deux étapes: la mise en correspondance des règles de production avec la base de données, suivie de la sélection des règles correspondantes à appliquer et de l'exécution des actions sélectionnées.

Faire correspondre les règles de production à la mémoire de travail

Les systèmes de production peuvent varier sur le pouvoir expressif des conditions dans les règles de production. En conséquence, l' algorithme de correspondance de modèles qui collecte les règles de production avec des conditions correspondantes peut aller du naïf - essayer toutes les règles en séquence, s'arrêter à la première correspondance - à l'optimisé, dans lequel les règles sont "compilées" dans un réseau de conditions interdépendantes. .

Ce dernier est illustré par l' algorithme RETE , conçu par Charles L. Forgy en 1974, qui est utilisé dans une série de systèmes de production, appelés OPS et initialement développé à l'Université Carnegie Mellon aboutissant à OPS5 au début des années quatre-vingt. OPS5 peut être considéré comme un langage de programmation à part entière pour la programmation du système de production.

Choisir les règles à évaluer

Les systèmes de production peuvent également différer dans la sélection finale des règles de production à exécuter ou à ignorer . La collection de règles résultant de l'algorithme de correspondance précédent est appelée ensemble de conflits et le processus de sélection est également appelé stratégie de résolution de conflit .

Là encore, ces stratégies peuvent différer du simple - utiliser l'ordre dans lequel les règles de production ont été écrites; attribuer des pondérations ou des priorités aux règles de production et trier l'ensemble de conflits en conséquence - au complexe - trier l'ensemble de conflits en fonction des heures auxquelles les règles de production ont été précédemment déclenchées; ou en fonction de l'ampleur des modifications induites par leurs RHS. Quelle que soit la stratégie de résolution des conflits mise en œuvre, la méthode est en effet cruciale pour l'efficacité et l'exactitude du système de production. Certains systèmes déclenchent simplement toutes les productions correspondantes.

Utilisation des systèmes de production

L'utilisation des systèmes de production varie de simples règles de réécriture de chaînes à la modélisation des processus cognitifs humains, des systèmes de réécriture et de réduction de termes aux systèmes experts .

Un exemple de système de production de réécriture de chaîne simple

Cet exemple montre un ensemble de règles de production pour inverser une chaîne d'un alphabet qui ne contient pas les symboles "$" et "*" (qui sont utilisés comme symboles de repère).

P1: $$ -> *
P2: *$ -> *
P3: *x -> x*
P4: * -> null & halt
P5: $xy -> y$x
P6: null -> $

Dans cet exemple, les règles de production sont choisies pour les tests en fonction de leur ordre dans cette liste de production. Pour chaque règle, la chaîne d'entrée est examinée de gauche à droite avec une fenêtre mobile pour trouver une correspondance avec la LHS de la règle de production. Lorsqu'une correspondance est trouvée, la sous-chaîne correspondante dans la chaîne d'entrée est remplacée par le RHS de la règle de production. Dans ce système de production, x et y sont des variables correspondant à n'importe quel caractère de l'alphabet de la chaîne d'entrée. L'appariement reprend avec P1 une fois le remplacement effectué.

La chaîne "ABC", par exemple, subit la séquence de transformations suivante selon ces règles de production:

$ABC (P6)
B$AC (P5)
BC$A (P5)
$BC$A (P6)
C$B$A (P5)
$C$B$A (P6)
$$C$B$A (P6)
*C$B$A (P1)
C*$B$A (P3)
C*B$A (P2)
CB*$A (P3)
CB*A (P2)
CBA* (P3)
CBA (P4)

Dans un système aussi simple, la commande des règles de production est cruciale. Souvent, l'absence de structure de contrôle rend les systèmes de production difficiles à concevoir. Il est bien entendu possible d'ajouter une structure de contrôle au modèle des systèmes de production, à savoir dans le moteur d'inférence, ou dans la mémoire de travail.

Un exemple de règle de production OPS5

Dans un monde de simulation de jouets où un singe dans une pièce peut attraper différents objets et grimper sur d'autres, un exemple de règle de production pour saisir un objet suspendu au plafond ressemblerait à:

(p Holds::Object-Ceiling
  {(goal ^status active ^type holds ^objid <O1>) <goal>}
  {(physical-object
    ^id <O1>
    ^weight light
    ^at <p>
    ^on ceiling) <object-1>}
  {(physical-object ^id ladder ^at <p> ^on floor) <object-2>}
  {(monkey ^on ladder ^holds NIL) <monkey>}
  -(physical-object ^on <O1>)
-->
  (write (crlf) Grab <O1> (crlf))
  (modify <object1> ^on NIL)
  (modify <monkey> ^holds <O1>)
  (modify <goal> ^status satisfied)
)

Dans cet exemple, les données de la mémoire de travail sont structurées et les variables apparaissent entre des chevrons. Le nom de la structure de données, tel que «but» et «objet physique», est le premier littéral dans les conditions; les champs d'une structure sont préfixés par "^". Le "-" indique une condition négative.

Les règles de production dans OPS5 s'appliquent à toutes les instances de structures de données qui correspondent aux conditions et se conforment aux liaisons de variables. Dans cet exemple, si plusieurs objets sont suspendus au plafond, chacun avec une échelle différente à proximité supportant un singe aux mains vides, le jeu de conflits contiendrait autant d'instances de règles de production dérivées de la même production "Holds :: Object-Ceiling". L'étape de résolution de conflit sélectionnerait plus tard les instances de production à déclencher.

La liaison des variables résultant de la correspondance de modèle dans la LHS est utilisée dans la RHS pour faire référence aux données à modifier. La mémoire de travail contient des données de structure de contrôle explicites sous la forme d'instances de structure de données "but". Dans l'exemple, une fois qu'un singe tient l'objet suspendu, le statut de l'objectif est défini sur "satisfait" et la même règle de production ne peut plus s'appliquer car sa première condition échoue.

Relation avec la logique

L' introduction à l'intelligence artificielle de Russell et Norvig et la représentation des connaissances de John Sowa : fondements logiques, philosophiques et informatiques caractérisent les systèmes de production comme des systèmes de logique qui effectuent le raisonnement au moyen d'un chaînage en avant. Cependant, Stuart Shapiro, examinant le livre de Sowa, soutient qu'il s'agit d'une fausse déclaration. De même, Kowalski et Sadri soutiennent que, comme les actions dans les systèmes de production sont comprises comme des impératifs, les systèmes de production n'ont pas de sémantique logique. Leur logique et langage informatique Logic Production System (LPS) combine des programmes logiques, interprétés comme les croyances d'un agent, avec des règles réactives, interprétées comme les objectifs d'un agent. Ils soutiennent que les règles réactives dans LPS donnent une sémantique logique aux règles de production, ce qui leur fait autrement défaut. Dans l'exemple suivant, les lignes 1 à 3 sont des déclarations de type, 4 décrivent l'état initial, 5 une règle réactive, 6 à 7 sont des clauses de programme logique et 8 une loi causale:

1. fluents     fire.
2. actions     eliminate, escape.
3. events      deal_with_fire.
4. initially   fire.
5. if          fire then deal_with_fire.
6.                       deal_with_fire if  eliminate.
7.                       deal_with_fire if  escape.
8. eliminate  terminates fire.

Remarquez dans cet exemple que la règle réactive de la ligne 5 est déclenchée, tout comme une règle de production, mais cette fois sa conclusion deal_with_fire devient un objectif à réduire en sous-objectifs à l'aide des programmes logiques des lignes 6-7. Ces sous-objectifs sont des actions (ligne 2), dont au moins une doit être exécutée pour satisfaire l'objectif.

Systèmes connexes

  • Règles de gestion des contraintes : langage de programmation basé sur des règles.
  • CLIPS : outil logiciel du domaine public pour la construction de systèmes experts.
  • JBoss Drools : un système de gestion des règles métier (BRMS) open-source.
  • Règles ILOG : un système de gestion des règles métier.
  • JESS : un moteur de règles pour la plate-forme Java - c'est un sur-ensemble du langage de programmation CLIPS .
  • Lisa : un moteur de règles écrit en Common Lisp.
  • Tablettes OpenL : règles centrées sur l'entreprise et BRMS open source.
  • Prolog : un langage de programmation logique à usage général.
  • Soar , OpenCog : architectures cognitives basées sur un système de production.

Les références

Voir également