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
2.035 visualizaciones desde el 2 de Diciembre del 2018
104,2 KB
34 paginas
Creado hace 7a (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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad