# Sistemas de producción (informática)

Un sistema de producción (o sistema de reglas de producción) es un programa de ordenador usado normalmente para proporcionar alguna forma de inteligencia artificial, que consiste en un conjunto de reglas sobre el comportamiento,reglas, denominadas producciones, son una representación básica útil en la planificación automatizada, sistemas expertos y selección de acciones. Un sistema de producción proporciona el mecanismo necesario para ejecutar producciones a fin de lograr algún objetivo para el sistema.
Las producciones constan de dos partes: una condición previa sensorial (o declaración "SI") y una acción (o declaración "ENTONCES"). Si la condición previa de una producción coincide con el estado actual del mundo, entonces se dice que la condición se dispara. Si se lleva a cabo la acción de una producción, que se dice que la regla se ha ejecutado.

## Operación básica

Los interpretadores de reglas generalmente ejecutan un algoritmo encadenado hacia adelante para la selección de producciones para ejecutar para llegar a los objetivos actuales, los cuales pueden incluir la actualización de la información del sistema o creencias. La condición de cada regla (del lado de la mano izquierda o LHS) es puesto a prueba en contra del estado actual de la memoria de trabajo.
En producciones idealizadas o producciones orientadas en información de sistemas, se asume que cualquier condición disparada provoca que la regla sea ejecutada: las consiguientes acciones (de la mano derecha o RHS) actualizarán el conocimiento del agente, removiendo o añadiendo información a la memoria de trabajo. El sistema detiene el procesamiento cuando el usuario interrumpe el ciclo encadenado; cuando un número dado de ciclos ha sido ejecutado; cuando es ejecutado un "halt" en las RHS, o cuando ninguna regla tiene LHS que sean reales.
Sistemas expertos en tiempo real, en contraste, frecuentemente tienen que escoger entre producciones mutuamente exclusivas --- ya que las acciones toman tiempo, solo una acción puede ser llevada a cabo o (en el caso de un experto en sistemas) recomendada. En tales sistemas, el interpretador de normas o máquina de interferencia, funciona a través de dos pasos: relacionando normas de producción en contra de la base de datos, seguido por una selección de cuáles de las normas que concuerdan son aplicadas y ejecutadas a las acciones seleccionadas. Relacionar normas de producción en contra de la memoria de trabajo. Los sistemas de producción pueden variar el poder expresivo de las condiciones de producción de las normas. De acuerdo al patrón algoritmo relacionado el cual colecta normas de producción con condiciones coincidentes puede tener un rango de NAIVE --- tratando todas las reglas en secuencia, parando a la primera coincidencia-- al optimizado, en el cual las reglas son compiladas a condiciones de una red interrelacionada.

## Coincidencia de reglas de producción contra la memoria de trabajo

Los sistemas de producción pueden variar en el poder expresivo de las condiciones en las reglas de producción. En consecuencia, el algoritmo de coincidencia de patrones que recoge las reglas de producción con condiciones de adaptación puede oscilar entre el ingenuo tratar todas las reglas de secuencia, deteniéndose en el primer partido a la optimización, en el que las reglas son "compilados" en una red de condiciones interrelacionadas.
Este último es ilustrado por el algoritmo RETE, diseñado por Charles L. Forgy en 1983, que se utiliza en una serie de sistemas de producción, llamados OPS y desarrollado originalmente en la Universidad Carnegie Mellon que culminó en OPS5 a principios de los años ochenta. OPS5 puede ser visto como un lenguaje de programación completo para la programación del sistema de producción.

## La elección de las reglas para evaluar

Los sistemas de producción también pueden diferir en la selección final de las normas de producción para ejecutar, o fuego. La colección de normas derivadas del algoritmo de coincidencia anterior se llama el set conflicto, y el proceso de selección también se llama un estrategia de resolución de conflictos.
Una vez más, este tipo de estrategias pueden variar desde el simple uso el orden en que fueron escritas las reglas de producción; asignar pesos o prioridades a las normas de producción y ordenar el conflicto establecido-por consiguiente al complejo tipo del conflicto fija de acuerdo con los tiempos en que las normas de producción fueron despedidos con anterioridad; o de acuerdo con el alcance de las modificaciones inducidas por su ESR. Sea cual sea la resolución de conflictos estrategia se implementa, el método es de hecho crucial para la eficacia y regularidad del sistema de producción. Algunos sistemas simplemente disparan todas las producciones a juego.

## El uso de sistemas de producción

El uso de los sistemas de producción varía desde la cadena simple al reescribir reglas para el modelado de los procesos cognitivos humanos, del término reescritura y sistemas de reducción de los sistemas expertos.

### Un ejemplo del sistema de producción de cadena simple reescritura

Este ejemplo muestra un conjunto de reglas de producción para revertir una cadena de un alfabeto que no contiene los símbolos "$" y "*" (que se utilizan como símbolos de marcador).
En este ejemplo, se eligen las reglas de producción para las pruebas de acuerdo a su orden en esta lista producción. Para cada regla, se examina la cadena de entrada de izquierda a derecha con una ventana en movimiento para encontrar un partido con el LHS de la regla de producción. Cuando se encuentra una coincidencia, la subcadena coincidente en la cadena de entrada se sustituye por el lado derecho de la regla de producción. En este sistema de producción, x e y son variables a juego con cualquier carácter del alfabeto cadena de entrada. Hojas de vida con P1 a juego una vez que la sustitución se ha hecho.
La cadena "ABC", por ejemplo, se somete a la siguiente secuencia de transformaciones bajo estas reglas de producción:
En tal sistema simple, el orden de las reglas de producción es crucial. A menudo, la falta de estructura de control hace que los sistemas de producción difíciles de diseñar. Es, por supuesto, posible añadir 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 regla de producción OPS5

En un mundo de simulación de juguetes donde un mono en una habitación puede agarrar objetos diferentes y subir a los demás, una regla de ejemplo de producción para agarrar un objeto suspendido del techo se vería así:
En este ejemplo, los datos en la memoria de trabajo está estructurado y variables aparecen entre corchetes angulares. El nombre de la estructura de datos, tales como "objetivo" y "físico-objeto", es la primera literal en condiciones; los campos de una estructura tienen el prefijo "^". El "-" indica una condición negativa.
Normas de producción en OPS5 se aplican a todas las instancias de las estructuras de datos que coinciden con las condiciones y se ajustan a enlaces de variables. En este ejemplo, se deben suspender varios objetos del techo, cada uno con una escalera diferente cercano apoyo a un mono con las manos vacías, el conjunto de conflictos contendría tantas instancias de reglas de producción derivados de la misma producción "Sostiene :: Object-techo". La etapa de resolución de conflictos más tarde seleccionar las instancias de producción para disparar.
Tenga en cuenta que la unión de las variables resultantes de la coincidencia de patrones en el LHS se utiliza en el RHS para referirse a los datos a modificar. Tenga en cuenta también que la memoria de trabajo contiene datos de la estructura de control explícitas en forma de casos la estructura de datos "objetivo". En el ejemplo, una vez un mono sostiene el objeto suspendido, el estado del objetivo está ajustado en "satisfecho" y la misma regla de producción ya no se puede aplicar como primera condición de falla.

## Sistemas relacionados

* CLIPS: public domain software tool for building expert systems.
* Constraint Handling Rules: rule-based programming language.
* ILOG rules: a business rule management system.
* JBoss Drools: an open-source business rule management system (BRMS).
* JESS: a rule engine for the Java platform - it is a superset of the CLIPS programming language.
* Prolog: a general purpose logic programming language.
* Lisa: a rule engine written in Common Lisp.
* DTRules: a Decision Table based, open-sourced rule engine for Java.
* OpenL Tablets: business centric rules and open source BRMS.
* Soar: a cognitive architecture based on a production system.