PDF de programación - El lenguaje Clips

Imágen de pdf El lenguaje Clips

El lenguaje Clipsgráfica de visualizaciones

Publicado el 2 de Diciembre del 2018
298 visualizaciones desde el 2 de Diciembre del 2018
104,2 KB
34 paginas
Creado hace 2a (06/02/2017)
El lenguaje CLIPS

Javier Béjar
Intel·lig`encia Artificial 2016/2017

Facultat d’Inform`atica de Barcelona

El sistema CLIPS

El sistema CLIPS

• CLIPS es un entorno para desarrollar sistemas expertos
• Este define un lenguaje que permite la representación de

conocimiento declarativo y procedimental

• Su lenguaje permite representar reglas de producción y frames
• Su base es un motor de inferencias con razonamiento hacia

adelante

• El motor de inferencias esta implementado sobre un intérprete

del lenguaje

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

1

El lenguaje de CLIPS

• El lenguaje CLIPS deriva su sintaxis del lenguaje LISP
• Se trata de un lenguaje parentizado con notación prefija
• Los tipos de datos predefinidos que nos interesarán son:

reales, enteros, strings, símbolos, apuntador a hechos, nombre
de instancia y apuntador a instancia.

• Los tipos habituales poseen los operadores mas comunes
• El lenguaje de CLIPS auna tres paradigmas de programación:

lenguaje de reglas, lenguaje funcional, lenguaje orientado a
objetos

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

2

El leguaje de reglas

El lenguaje de reglas de CLIPS - Hechos

• Los dos elementos que permiten representar problemas

utilizando reglas de producción son los hechos y las reglas.

• Los hechos en CLIPS pueden ser de dos tipos ordered facts y

deftemplate facts

• Los Ordered Facts tienen formato libre, por lo tanto no tienen

una estructura predefinida, siguen el esquema:

(relacion p1 p2 ... pn)

• relación ha de ser un símbolo, el resto de parámetros puede

ser de cualquier tipo, por ejemplo

(padre juan pedro)

(num-hijos juan 2)

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

3

El lenguaje de reglas de CLIPS - deftemplates

• Los deftemplate facts tienen una estructura predefinida,

podrían asimilarse a representaciones al estilo de los frames.
• Definimos una serie de campos (slots). Cada campo puede
tener una serie de restricciones como tipo, cardinalidad y un
valor por defecto (constante o función para calcularlo)

(deftemplate nombre-template "comentario"

(slot nombre-slot)

(multislot nombre-slot))

• Por ejemplo:

(deftemplate persona

(slot nombre (type STRING))

(slot edad (type INTEGER) (default 0)))

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

4

El lenguaje de reglas de CLIPS - crear hechos

• La creación de hechos se realiza mediante la sentencia assert

(uno solo) o deffacts (un conjunto), por ejemplo:

(assert (padre pepe juan))

(assert (persona (nombre "pedro") (edad 25)))

(deffacts mis-hechos

(casa roja) (pelota verde)

(persona (nombre "luis") (edad 33)))

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

5

El lenguaje de reglas de CLIPS - hechos

• (facts) permite saber que hechos hay definidos
• (clear) borra todos los hechos definidos
• (retract <indice-hecho>) elimina el hecho identificado

por el indice dado

• (get-deftemplate-list) retorna la lista de deftemplates

definidos

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

6

El lenguaje de reglas de CLIPS - reglas

• Las reglas en CLIPS estan formadas por:

• Una parte izquierda (LHS) que define las condiciones a cumplir
• Una parte derecha (RHS) que define las acciones a realizar

• Sintaxis:

(defrule nombre-regla "comentario"

(condicion-1) (condicion-2) ...

=>

(accion-1) (accion-2) ...)

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

7

El lenguaje de reglas de CLIPS - variables

• Las variables definen patrones en las condiciones de las reglas
• Se denotan poniendo un interrogante delante del nombre

(?variable)

• Existen variables anónimas (no importa su valor) para un valor

? o para múltiples valores $?

• Durante la ejecución se nstanciarán las variables de las reglas

con valores que permitan cumplir sus condiciones

• Las variables de las reglas son locales, si queremos definir
variables globales debemos usar la construcción defglobal
(las variables globales se denotan ?*variable*)

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

8

El lenguaje de reglas de CLIPS - LHS

• En la parte izquierda de una regla pueden aparecer diferentes

tipos de condiciones

• Patrones constantes, con variables o con wildcards: se
instancian directamente con hechos en la base de hechos

• Expresiones not, and, or, exist y forall con patrones
• Tests de expresiones sobre las variables vinculadas (test)

• Los patrones indican qué tipo de hechos deben instanciar las

reglas, estos se establecen a través de restricciones sobre
variables o valores constantes

• Estas restricciones se pueden combinar mediante conectivas

logicas ~ (no), & (y) y | (o)

• También se pueden usar condiciones complejas precedidas de :

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

9

El lenguaje de reglas de CLIPS - ejemplos

• Persona mayor de 18 años:

(persona (edad ?x&:(> ?x 18)))

• Persona de nombre juan o pedro:

(persona (nombre juan|pedro))
• Dos personas con nombres diferentes:

(persona (nombre ?x))

(persona (nombre ?y&~?x))
• Nadie se llama pedro: (not (persona (nombre pedro)))
• Todo el mundo es mayor de edad:

(forall (persona (nombre ?n) (edad ?x)) (test (> ?x 18)))

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

10

El lenguaje de reglas de CLIPS

• Podemos obtener la dirección del hecho que instancia un

patrón mediante el operador <-, por ejemplo:

(defrule mi-regla

?x <- (persona (nombre juan))

=>

(retract ?x)

)

• En la parte derecha de las reglas podemos poner cualquier

sentencia válida en clips (ver manual)

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

11

El lenguaje de reglas de CLIPS - módulos

• Las reglas de CLIPS se organizan en módulos
• Permiten estructurar el conocimiento y poder focalizar la

ejecución de las reglas según su objetivo

• La definición de un módulo se realiza mediante la construcción
(defmodule <nombre> "comentario" <export-import>)

• Nada de lo definido en un módulo es visible salvo que lo

exportemos

• Para utilizar construcciones de otro módulo tambien tenemos

que importarlas explícitamente

• Existe un módulo por defecto llamado MAIN al que pertenece

todo lo no definido en otro módulo

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

12

El lenguaje de reglas de CLIPS - módulos

• La exportación de construcciones de un módulo se realiza
incluyendo la sentencia export en su definición. Podemos
exportar cualquier cosa que definamos, por ejemplo:

(defmodule A (export deftemplate cubo))

(defmodule A (export deftemplate ?ALL))

• La importación de construcciones a un módulo se realiza
incluyendo la sentencia import en su definición. Podemos
importar cualquier cosa visible que este definida en otro
módulo, por ejemplo:

(defmodule B (import A deftemplate cubo))

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

13

El lenguaje de reglas de CLIPS - foco

• Podemos restringir qué módulos se usan para la ejecución de

reglas mediante la sentencia (focus <modulo>*)

• Esta sentencia se puede incluir en la parte derecha de una

regla para poder cambiar explícitamente de módulo

• Se puede hacer que la ejecución se focalice en el módulo de la

última regla ejecutada declarando la propiedad auto-focus
en una regla, por ejemplo:

(defrule JUAN::mi-regla

(declare (auto-focus TRUE))

(persona (nombre juan))

=> ...

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

14

Estrategias de resolución de conflicto

El intérprete de reglas tiene definidas unas estrategias de resolución
de conflicto

• Profundidad, las nuevas activaciones pasan al principio
• Anchura, las nuevas activaciones pasan al final
• Simplicidad, ante la misma posibilidad de activar, se prefiere

las menos específicas (especificidad medida respecto a la
complejidad de las condiciones)

• Complejidad, tienen preferencia las reglas más específicas

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

15

Estrategias de resolución de conflicto

• Estrategia LEX, recencia de los hechos instanciados, tomando

los hechos instanciados ordenadamente en cada regla y
siguiendo orden lexicográfico de recencia

• Estrategia MEA, Se ordenan por recencia respecto al hecho

que instancia la primera condición, en caso de empate se sigue
la estrategia LEX

• Aleatoria, se disparan las reglas en orden aleatorio

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

16

El lenguaje funcional de CLIPS

El lenguaje de programación de CLIPS

• CLIPS incluye un lenguaje de programación funcional
• Éste permite definir nuevas funciones o programar las acciones

a realizar en la parte derecha de las reglas

• Toda sentencia o estructura de control es una función que
recibe unos parámetros y retorna un resultado (paradigma
funcional)

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

17

El lenguaje de programación de CLIPS - Sentencias

• Asignación a una variable, retorna el valor asignado

• Sentencia alternativa, retorna el valor de la última acción

(bind <var> <valor>)

evaluada

(if <exp> then <accion>* [else <accion>*])

• Bucle condicional, retorna falso, excepto si hay una sentencia

de retorno que rompa el bucle

(while <exp> do <accion>*)

• Bucle sobre un rango de valores, retorna falso, excepto si hay

una sentencia de retorno

(loop-for-count (<var> <v-i> <v-f>) do <accion>*)

IA 2016/2017 - Facultat d’Inform`atica de Barcelona

18

El lenguaje de programación de CLIPS - Sentencias

• Ejecuta un conjunto de sentencias secuencialmente, retorna el

valor de la última

• Romper la ejecución de la estructura de control retornando el

(progn <accion>*)

valor de la expresión

• Romper la ejecución de una estructura de control

(return <expr>)

(break)

• Estructura alternativa caso, cada case hace una comparación
con el valor evaluado. Retorna la última expresión evaluada o
falso si ninguna sentencia case se cumple

(switch <expr> (case (<comp>) then <accion>*)*

[(default <accion>*)])

IA 2016/2017 - Facultat d’Inform`atica de
  • Links de descarga
http://lwp-l.com/pdf14381

Comentarios de: El lenguaje Clips (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad