stringtranslate.com

Sistema de producción (informática)

Un "sistema de producción" (o "sistema de reglas de producción") es un programa informático que se utiliza normalmente para proporcionar alguna forma de inteligencia artificial , que consiste principalmente en un conjunto de reglas sobre el comportamiento, pero también incluye el mecanismo necesario para seguir esas reglas a medida que el sistema responde a estados del mundo [ cita requerida ] . Esas reglas, denominadas producciones , son una representación básica que resulta útil en la planificación automatizada , los sistemas expertos y la selección de acciones .

Las producciones constan de dos partes: una condición previa sensorial (o declaración "SI") y una acción (o "ENTONCES"). Si la condición previa de una producción coincide con el estado actual del mundo, se dice que la producción se ha activado . Si la acción de una producción se ejecuta , se dice que se ha disparado . Un sistema de producción también contiene una base de datos, a veces llamada memoria de trabajo , que mantiene datos sobre el estado o conocimiento actual, y un intérprete de reglas. El intérprete de reglas debe proporcionar un mecanismo para priorizar las producciones cuando se activa más de una. [ cita requerida ]

Operación básica

Los intérpretes de reglas generalmente ejecutan un algoritmo de encadenamiento hacia adelante para seleccionar las producciones que se ejecutarán para cumplir con los objetivos actuales, lo que puede incluir la actualización de los datos o creencias del sistema . La parte de condición de cada regla ( lado izquierdo o LHS) se prueba contra el estado actual de la memoria de trabajo.

En los sistemas de producción idealizados u orientados a datos, se asume que cualquier condición que se active debe ejecutarse: las acciones consecuentes ( lado derecho o RHS) actualizarán el conocimiento del agente, eliminando o agregando datos a la memoria de trabajo. El sistema detiene el procesamiento cuando el usuario interrumpe el bucle de encadenamiento hacia adelante; cuando se ha realizado una cantidad determinada de ciclos; cuando se ejecuta un RHS de "detención" o cuando ninguna regla tiene LHS que sean verdaderos.

En cambio, los sistemas expertos y en tiempo real suelen tener que elegir entre producciones mutuamente excluyentes: como las acciones llevan tiempo, solo se puede realizar una acción o (en el caso de un sistema experto) recomendar una. En estos sistemas, el intérprete de reglas, o motor de inferencia , realiza un ciclo de dos pasos: comparar las reglas de producción con la base de datos, luego seleccionar cuál de las reglas coincidentes aplicar y ejecutar las acciones seleccionadas.

Coincidencia de reglas de producción con la memoria de trabajo

Los sistemas de producción pueden variar en cuanto al poder expresivo de las condiciones en las reglas de producción. En consecuencia, el algoritmo de comparación de patrones que recopila reglas de producción con condiciones coincidentes puede variar desde el ingenuo (probar todas las reglas en secuencia y detenerse en la primera que coincide) hasta el optimizado, en el que las reglas se "compilan" en una red de condiciones interrelacionadas.

Esto último se ilustra con el algoritmo Rete , diseñado por Charles L. Forgy en [1] 1974, que se utiliza en una serie de sistemas de producción, llamados OPS y desarrollados originalmente en la Universidad Carnegie Mellon, culminando en OPS5 a principios de los años 1980. OPS5 puede considerarse un lenguaje de programación completo para la programación de sistemas de producción.

Elegir qué reglas evaluar

Los sistemas de producción también pueden diferir en la selección final de las reglas de producción que se ejecutarán o activarán . La colección de reglas resultantes del algoritmo de coincidencia anterior se denomina conjunto de conflictos y el proceso de selección también se denomina estrategia de resolución de conflictos .

Nuevamente, estas estrategias pueden variar desde las más simples (utilizar el orden en el que se escribieron las reglas de producción, asignar pesos o prioridades a las reglas de producción y ordenar el conjunto de conflictos en consecuencia) hasta las más complejas (ordenar el conjunto de conflictos según los momentos en que se activaron previamente las reglas de producción o según el alcance de las modificaciones inducidas por sus RHS). Cualquiera sea la estrategia de resolución de conflictos que se implemente, el método es, de hecho, crucial para la eficiencia y la corrección del sistema de producción. Algunos sistemas simplemente activan todas las producciones coincidentes.

Utilizando sistemas de producción

El uso de sistemas de producción varía desde simples reglas de reescritura de cadenas hasta el modelado de procesos cognitivos humanos, desde sistemas de reescritura y reducción de términos hasta sistemas expertos .

Un ejemplo sencillo de sistema de producción de reescritura de cadenas

Este ejemplo muestra un conjunto de reglas de producción para invertir una cadena de un alfabeto que no contiene los símbolos "$" y "*" (que se utilizan como símbolos marcadores).

P1: $$ -> *P2: *$ -> *P3: *x -> x*P4: * -> nulo y detenidoP5: $xy -> y$xP6: nulo -> $

En este ejemplo, se eligen las reglas de producción para realizar pruebas según su orden en esta lista de producción. Para cada regla, se examina la cadena de entrada de izquierda a derecha con una ventana móvil para encontrar una coincidencia con el lado izquierdo de la regla de producción. Cuando se encuentra una coincidencia, la subcadena coincidente en la cadena de entrada se reemplaza con el lado derecho de la regla de producción. En este sistema de producción, x e y son variables que coinciden con cualquier carácter del alfabeto de la cadena de entrada. La coincidencia se reanuda con P1 una vez que se ha realizado el reemplazo.

La cadena "ABC", por ejemplo, sufre la siguiente secuencia de transformaciones bajo estas reglas de producción:

$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)

En un sistema tan simple, la ordenación de las reglas de producción es crucial. A menudo, la falta de estructura de control dificulta el diseño de sistemas de producción. Por supuesto, es posible añadir una estructura de control al modelo de sistemas de producción, es decir, en el motor de inferencia o en la memoria de trabajo.

Un ejemplo de regla de producción OPS5

En un mundo de simulación de juguetes donde un mono en una habitación puede agarrar diferentes objetos y trepar a otros, un ejemplo de regla de producción para agarrar un objeto suspendido del techo se vería así:

(p Contiene::Objeto-Techo {(objetivo ^estado activo ^tipo contiene ^objid <O1>) <objetivo>} {(objeto físico ^id <O1> ^peso ligero ^en <p> ^en el techo) <object-1>} {(objeto-físico ^id escalera ^at <p> ^on piso) <object-2>} {(mono ^en la escalera ^tiene NIL) <mono>} -(objeto físico ^en <O1>)--> (escribir (crlf) Agarrar <O1> (crlf)) (modificar <object1> ^en NIL) (modificar <mono> ^contiene <O1>) (modificar <objetivo> ^estado satisfecho))

En este ejemplo, los datos de la memoria de trabajo están estructurados y las variables aparecen entre corchetes angulares. El nombre de la estructura de datos, como "objetivo" y "objeto físico", es el primer literal de las condiciones; los campos de una estructura tienen el prefijo "^". El "-" indica una condición negativa.

Las reglas de producción en OPS5 se aplican a todas las instancias de estructuras de datos que coinciden con las condiciones y se ajustan a los enlaces de variables. En este ejemplo, si varios objetos están suspendidos del techo, cada uno con una escalera diferente cerca que sostiene a un mono con las manos vacías, el conjunto de conflictos contendría tantas instancias de reglas de producción derivadas de la misma producción "Holds::Object-Ceiling". El paso de resolución de conflictos seleccionaría posteriormente qué instancias de producción se activarán.

La vinculación de variables resultante de la comparación de patrones en el LHS se utiliza en el RHS para hacer referencia a los datos que se van a modificar. La memoria de trabajo contiene datos de estructura de control explícitos en forma de instancias de estructura de datos de "objetivo". En el ejemplo, una vez que un mono sostiene el objeto suspendido, el estado del objetivo se establece en "satisfecho" y la misma regla de producción ya no se puede aplicar porque su primera condición falla.

Relación con la lógica

Tanto Artificial Intelligence: A Modern Approach de Russell y Norvig como Knowledge Representation: Logical, Philosophical, and Computational Foundations de John Sowa caracterizan los sistemas de producción como sistemas de lógica que realizan razonamiento mediante encadenamiento hacia adelante. Sin embargo, Stewart Shapiro , al revisar el libro de Sowa, sostiene que esto es una interpretación errónea. [2] De manera similar, Kowalski y Sadri [3] sostienen que, debido a que las acciones en los sistemas de producción se entienden como imperativos, los sistemas de producción no tienen una semántica lógica. Su lógica y lenguaje informático Logic Production System [4] (LPS) combina programas lógicos, interpretados como las creencias de un agente, con reglas reactivas, interpretadas como los objetivos de un agente. Argumentan que las reglas reactivas en LPS dan una semántica lógica a las reglas de producción, de la que de otro modo carecen. En el siguiente ejemplo, las líneas 1-3 son declaraciones de tipo, 4 describe el estado inicial, 5 es una regla reactiva, 6-7 son cláusulas de programa lógico y 8 es una ley causal:

1. fluidos de fuego.2. acciones eliminar, escapar.3. eventos tratan_con_fuego.4. Inicialmente, disparar.5. Si hay fuego, entonces trata con fuego.6. deal_with_fire si eliminar.7. deal_with_fire si escapa.8. eliminar termina el fuego.

Observe que en este ejemplo se activa la regla reactiva de la línea 5, al igual que una regla de producción, pero esta vez su conclusión deal_with_fire se convierte en un objetivo que se debe reducir a subobjetivos mediante los programas lógicos de las líneas 6 y 7. Estos subobjetivos son acciones (línea 2), de las cuales al menos una debe ejecutarse para satisfacer el objetivo.

Sistemas relacionados

Referencias

  1. ^ "Documentación de Babes".
  2. ^ Shapiro, S. (2001). Revisión de Representación del conocimiento: fundamentos lógicos, filosóficos y computacionales. Computational Linguistics, 2(2), 286-294
  3. ^ Kowalski, Robert; Sadri, Fariba (12 de enero de 2009). "LPS: un marco de trabajo para sistemas de producción basados ​​en la lógica". {{cite journal}}: Requiere citar revista |journal=( ayuda )
  4. ^ "LPS | Sistemas de producción lógica".

Véase también