Sistemas de Produccion en Clips
Alberto Gomez Bravo
100061568
[email protected]
Alfredo Corroto Diaz
100055351
[email protected]
Ismael Bermejo Jiménez
100047569
[email protected]
RESUMEN
Esta práctica trata sobre los sistemas de producción utilizados para la resolución de problemas en el ámbito de la inteligencia artificial. Se explicará cómo funciona y en qué consiste un sistema de producciones, concretamente vamos a centrarnos en el lenguaje CLIPS, incluyendo un ejemplo práctico, para ver cómo funciona un sistema de reglas.
1. INTRODUCTION
CLIPS es un acrónimo de C Language Integrated Production System (Sistema de Producción Integrado en Lenguaje C). Es un lenguaje programado en C, tiene comunicación con otros lenguajes como C y ADA y mantiene similitudes al lenguaje C y LISP.
CLIPS es una herramienta que provee un ambiente de desarrollo para la producción y ejecución de sistemas expertos. Fue creado a partir de 1984, en el Lyndon B. Johnson Space Center de la NASA y combina elementos de los paradigmas de lenguajes declarativos, funcionales y orientados a objetos.
En la actualidad, entre los paradigmas de programación que soporta CLIPS se encuentran la Programación lógica, la
Programación imperativa y la Programación Orientada a Objetos. CLIPS probablemente es el sistema experto más ampliamente usado debido a que es rápido, eficiente y gratuito. Aunque ahora es de dominio público, aún es actualizado y mantenido por su autor original, Gary Riley.
2. CARACTERÍSTICAS PRINCIPALES DE
CLIPS
• Representación del Conocimiento: CLIPS permite
manejar una amplia variedad de conocimiento, soportando tres paradigmas de programación: el declarativo, el imperativo, y el orientado a objetos. La programación lógica basada en reglas permite que el conocimiento sea representado como reglas heurísticas que especifican las acciones a ser ejecutadas dada una situación. La programación imperativa permite ejecutar algoritmos de la misma manera que en C, Java, LISP y otros lenguajes.
• Portabilidad: CLIPS fue escrito en C con el fin de
hacerlo más portable y rápido, y ha sido instalado en diversos sistemas operativos (Windows 95/98/NT, MacOS X, Unix) sin ser necesario modificar su código fuente. CLIPS puede ser ejecutado en cualquier sistema con un compilador ANSI de C, o un compilador de C++. El código fuente de CLIPS puede ser modificado en caso que el usuario lo considere necesario, con el fin de agregar o quitar funcionalidades.
• Integrabilidad: CLIPS puede ser embebido en código
imperativo, invocado como una sub-rutina, e integrado con lenguajes como C, Java, FORTRAN y otros. CLIPS incorpora un completo lenguaje orientado a objetos (COOL) para la elaboración de sistemas expertos. Aunque está escrito en C, su interfaz más próxima se parece a LISP. Pueden escribirse extensiones a CLIPS sobre C, y al contrario, CLIPS puede ser llamado desde C. CLIPS puede ser extendido por el usuario mediante el uso de protocolos definidos.
• Desarrollo Interactivo: La versión estándar de CLIPS
provee un ambiente de desarrollo interactivo y basado en texto; este incluye herramientas para la depuración, ayuda en línea, y un editor integrado. Las interfaces de este ambiente tienen menús, editores y ventanas que han sido desarrollados para MacOS, Windows 95/98/NT, X Windows, entre otros.
• Verificación/Validación: CLIPS contiene
funcionalidades que permiten verificar las reglas incluídas en el sistema experto que está siendo desarrollado, incluyendo diseño modular y particionamiento de la base de conocimientos del sistema, chequeo de restricciones estático y dinámico para funciones y algunos tipos de datos, y análisis semántico de reglas para prevenir posibles inconsistencias.
Base de hechos (BH) Base de reglas (BR)
• Documentación: En la página web oficial de CLIPS se
encuentra una extensa documentación que incluye un Manual de Referencia y una Guía del Usuario.
• Bajo Costo: CLIPS es un software de dominio público.
3. SISTEMAS DE PRODUCCIÓN
3.1 Definición
Un sistema de producción proporciona una estructura que facilita la descripción y la ejecución de un proceso de búsqueda. Un sistema de producción consiste de:
• Un conjunto de facilidades para la definición de reglas. • Mecanismos para acceder a una o más bases de
conocimientos y datos.
• Una estrategia de control que especifica el orden en el que las reglas son procesadas, y la forma de resolver los conflictos que pueden aparecer cuando varias reglas coinciden simultáneamente.
• Un mecanismo que se encarga de ir aplicando las reglas. Dentro de esta definición general de sistema de producción, se incluyen:
• Lenguajes básicos para sistemas de producción (LISP, CLIPS, PROLOG). También se los conoce como lenguajes de Inteligencia Artificial.
• Sistemas híbridos y sistemas vacíos (shells) para producción de sistemas basados en conocimientos (VP-Expert, Expert Teach, Personal Consultant, Intelligence Compiler, EXSYS).
• Arquitecturas generales para resolución de problemas (máquinas LISP, máquinas PROLOG).
3.2 Características
Un sistema de producción, al igual que los problemas, puede ser descrito por un conjunto de características que permiten visualizar la mejor forma en que puede ser implementado.
Un sistema de producción se dice que es monotónico si la aplicación de un regla nunca evita que más tarde se pueda aplicar otra regla que también pudo ser aplicada al momento en que la primera fue seleccionada.
Un sistema de producción es parcialmente conmutativo si existe un conjunto de reglas que al aplicarse en una secuencia particular transforma un estado A en otro B, y si con la aplicación de cualquier permutación posible de dichas reglas se puede lograr el mismo resultado.
Un sistema de producción es conmutativo, si es monotónico y parcialmente conmutativo.
Sistema de
producción Monotónico No Monotónico Parcialmente
conmutativo Demostración de teoremas Navegación Robótica Parcialmente
no conmutativo Síntesis Química Juego de Ajedrez
3.3 Arquitectura
Base de hechos: También Memoria de Trabajo (MT) representa conocimientos del dominio sobre el problema (datos, hechos establecidos y metas a alcanzar).
Motor de inferencia: Razona sobre el conocimiento del problema y sobre su solución. Determina cómo se aplican las reglas. Base de reglas: Representa conocimientos sobre cómo conseguir la solución del problema en forma de reglas de producción
“SI <A> ENTONCES <B>”
3.4 Base de hechos
Representa el estado actual del mundo que se modeliza o del problema en curso de solución:
• Estado inicial: situación inicial • Estado final: situación final
• Estado intermedio: situación actual o en curso de resolución
Parte de la BH es permanente, mientras que otra es temporal (pertenece a la solución del problema en curso).
Contiene conocimiento declarativo: hechos (facts) e instancias (instances) y la ejecución de reglas modifica la BH.
3.4.1 Lista de hechos
En CLIPS los hechos se almacenan en la lista de hechos fact-list • Patrones con uno o varios campos
• El primer campo suele representar una relación entre los restantes
Motor de inferencia (MI)
• La información se codifica por su posición (para acceder a una determinada información es necesario saber qué campo la contiene)
Ejemplo: (hola)
(alumnos Pepe Juan Luis) (nombre “Juan”) (edad 14)
3.4.2 Lista de Instancias
En CLIPS las instancias se almacenan en la lista de instancias instance-list
• Una instancia representa a un individuo concreto perteneciente a una clase
• Las clases permiten construir marcos y dotan a CLIPS de las características propias de la programación Orientada a Objetos
Abstracción Encapsulación Herencia Polimorfismo
3.4.3 Órdenes Básicas de la BH (Base Hechos)
(facts) Lista los hechos de laBH (instances) Lista (facts) Lista los hechos de la BH las instancias de la BH (assert <hecho>) Añade un
hecho a la BH
(make-instance <instancia>) Añade una instancia a
la BH (retract <índice-hecho>)
Elimina un hecho de la BH
(unmake-instance <instancia>) Elimina una instancia
de la BH
(clear) Elimina todos los hechos y construcciones de la BH (reset) Elimina todos los hechos de la BH, elimina las activaciones de la agenda y restaura las
condiciones iniciales:
• Añade initial-fact e initial-object
• Añade el conocimiento inicial definido con deffacts y definstances
• Añade las variables globales con su valor inicial • Fija como módulo principal el módulo main
3.5 Base de reglas
Contiene un conjunto de reglas que representan conocimientos sobre la solución del problema. La base de hechos describe el problema, las reglas dan información sobre cómo resolverlo con el siguiente formato: “Si Condiciones entonces Acciones”
Antecedente, LHS Consecuente, RHS Respecto a los antecedentes las premisas o condiciones de una regla están implícitamente unidas por la conectiva AND. Una premisa puede ser:
• Un patrón: es una consulta a la Memoria de Trabajo para preguntar por la existencia de hechos/instancias en la misma. Con un patrón se puede almacenar la dirección de un hecho/instancia en una variable. Dentro de los patrones los campos se pueden sustituir por comodines (cuando no importa el valor del campo), por variables (cuando se quiere almacenar el valor del campo en una variable para usarlo posteriormente) o por el valor de retorno de una función (se incorpora directamente en la posición en que fue llamada la función).
• Test: comprueba el cumplimiento de una condición La función sobre la que se realiza un test debe devolver un resultado booleano.Hay tres tipos de funciones:
Funciones de comparación: <>, <, >, =, etc. Funciones lógicas: or, not, and.
Funciones de predicado: stringp, numberp, etc.
• Not: las reglas pueden tener como premisa un elemento de condición negado.
En cuanto al consecuente, las acciones de la regla están implícitamente unidas por la conectiva “and” y solo podrán ser llevadas a cabo si se cumplen todas las premisas del antecedente de la misma.
Una acción puede ser para:
La creación de un hecho o instancia en la BH La eliminación de un hecho o instancia de la MT La modificación de un hecho o instancia de la MT Parar la ejecución del sistema de producción Asignar un valor a una variable (bind) Para hacer una operación de entrada/salida
4. Motor de inferencia
Examina en cada ciclo de inferencia la Base de Hechos y decide qué regla ejecutar. Sus carácterísticas son:
- Causar movimiento - Ser sistemático - Ser eficiente
4.1 Ciclo de Inferencia
4.1.1 Fase
Fase de selección:a) Restricción:Acota el contenido de la BR y la BH según las características del problema a resolver
b) Equiparación:Selección del conjunto de reglas candidatas para dispararse (aquellas cuyo antecedente se satisface)
c) Resolución del Conjunto Conflicto: Selección de la instancia de regla que va a ser ejecutada en la fase de acción
Estrategias de Selección
Fase de acción o ejecución
La ejecución de la regla modifica la BH actual dando lugar a una BH nueva al AÑADIR, BORRAR y/o MODIFICAR elementos de la primera
La BH nueva se tomará como punto de partida en el siguiente ciclo de funcionamiento
4.1.2 Equiparación
Permite elegir aquellas reglas que conducen a la solución del problema al
comparar cada una de las condiciones de las reglas con el estado actual de la Memoria de Trabajo
4.1.2.1
Equiparación de constantes
Una constante equipara con otra constante igual a ella que: a) Ocupe la misma posición en un elemento de MT si el patrón que aparece en la regla corresponde a un ordered-fact
b) Esté asociada mismo campo de la misma clase en un elemento de la MT si el patrón que aparece en la regla corresponde a un non-ordered-fact
4.1.2.2 Equiparación de variables
Una variable que aparece una sola vez en la regla se equipara con cualquier valor que
Ocupe la misma posiciónen un elemento de la MT
(ordered-facts) Esté asociado mismo campo de la misma claseen un
elemento de la MT (non-ordered-facts)
4.1.3 Resolución del Conjunto Conflicto
Selección de la regla que va a ser ejecutada en la fase de acción
4.1.3.1 Estrategias de selección
Orden de escritura de las reglas en la BR : Se selecciona la primera regla que cuyo antecedente es cierto, siguiendo el orden de escritura en la BR
Prioridad (la regla más prioritaria) : Se selecciona la regla con prioridad más alta: La prioridad se establece en función del problema que se modeliza. La prioridad la proporciona el experto del dominio
Especificidad (la regla más específica): Se selecciona la regla más especifica. La especificidad viene determinada por el número de comparaciones que deben realizarse en el antecedente de la regla. Se suma uno a la especificidad por cada:
• Comparación con una variable previamente asignada (ligada a un valor)
• Llamada a función que forme parte de una premisa de test o de una asignación del valor de retorno de una función (=), exceptuando llamadas a funciones booleanas y llamadas a funciones anidadas
Novedad:Cada hecho lleva asignado el momento en el que fue creado (time-tag). Se da más prioridad a las instancias de reglas con un hecho más reciente, comparando en orden descendiente :
• Se ordenan los time-tagen orden decreciente
• Se comparan uno a uno hasta encontrar uno mayor que otro
• En caso de que no haya el mismo número de time-tag se añaden ceros al final
Utilizar el principio de refracción: No se pueden ejecutar instancias de reglas ya disparadas
Arbitrariedad: Se ejecutan las reglas aleatoriamente
4.1.3.2 Estrategias de resolución de conflictos
Depthstrategy:
Las nuevas activaciones se sitúan por encima de las activacionescon igual
prioridad
Bread strategy
Las nuevas activaciones se sitúan por debajo de las activaciones con igual prioridad
Simplicitystrategy
Las nuevas activaciones se sitúan por encima de las activaciones con mayor o igual especificidad
Complexitystrategy
Las nuevas activaciones se sitúan por debajo de las activaciones con mayor o igual especificidad
Randomstrategy
A cada activación se le asigna un número aleatorio para determinar su orden en la agenda. Siempre se le asigna el mismo número en diferentes ejecuciones
LEX strategy Novedad, especificidad MEA strategy
Se aplica la misma estrategia que LEX pero mirando solo el primer patrón que equipara en la regla. Si coincide se aplica LEX
4.2 Estrategias de inferencia
Encadenamiento hacia delante(dirigido por el antecedente o
forward chaining)
Se parte de unos hechos particulares (el contenido de la BH)
Se buscan reglas cuyo antecedente esté satisfecho por esos hechos (BH)
Se modifica la BH ejecutando las acciones del consecuente de alguna de las instancias de reglas
Encadenamiento hacia atrás(dirigido por el consecuente o
backward chaining)
Se parte de un conjunto de metas u objetivos
Se buscan reglas cuya instanciación implica la consecución de una meta. La equiparación se realiza
sobre el consecuente
Si el antecedente equipara con la BH la meta se puede concluir
Si el antecedente no equipara con la BH se aplica recursivamente el procedimiento utilizando como submetaslas expresadas por el antecedente
5. Sudoku
Hemos desarrollado una aplicación en Clips que es capaz de resolver un sudoku. Adjuntamos el código de la misma:
5.1 Ontología:
(deftemplate casilla (slot fila (type INTEGER) (range 1 9) (default ?NONE)) (slot columna (type INTEGER) (range 1 9) (default ?NONE)) (slot bloque (type INTEGER) (default -1) ) (slot valor (type INTEGER)(range 0 9) ; El 0 representa que la casilla no tiene valor asignado (default 0)) (multislot candidatos (type INTEGER) (range 1 9)) )
5.2 Reglas
En el fichero adjunto llamado reglas.clp se adjunta el código completo de las reglas. Aquí solo enumeraré las que hemos usado
defrule generaCasillasVacias defrule incrementaColumna defrule incrementaFila defrule asignaBloque defrule finalizar defrule finalizarSinSolucion defrule imprime-sudoku defrule imprime-sudoku-sigue-fila defrule imprime-sudoku-separador-vertical1 defrule imprime-sudoku-separador-vertical2 defrule imprime-sudoku-sigue-fila-salto-linea defrule imprime-sudoku-sigue-columna defrule imprime-sudoku-separador-horizontal1 defrule imprime-sudoku-separador-horizontal2 defrule termina-impresion defrule eliminaCandidatosImposiblesFila defrule eliminaCandidatosImposiblesColumna defrule eliminaCandidatosImposiblesBloque defrule candidatoSolo defrule solosEscondidosFila defrule solosEscondidosColumnas defrule solosEscondidosRegion
5.3 Base de hechos inicial
En el archivo s1.clp se adjuntan los datos necesarios para poder construir la base de hechos.