Introducci - PowerPoint PPT Presentation

About This Presentation
Title:

Introducci

Description:

Title: PowerPoint Presentation Last modified by: Luis Guillermo RESTREPO RIVAS Created Date: 1/1/1601 12:00:00 AM Document presentation format: Presentaci n en pantalla – PowerPoint PPT presentation

Number of Views:54
Avg rating:3.0/5.0
Slides: 58
Provided by: luisg178
Category:

less

Transcript and Presenter's Notes

Title: Introducci


1
Introducción alCLIPS
  • C Language Integrated Production System

2
Recursos de CLIPS
  • Sitio oficial
  • http//www.ghg.net/clips/CLIPS.html
  • Ejecutables
  • http//www.ghg.net/clips/download/executables/
  • Documentación
  • http//www.ghg.net/clips/download/documentation/
  • Ejemplos
  • http//www.ghg.net/clips/download/executables/exam
    ples/
  • Preguntas Frecuentes
  • http//www.ghg.net/clips/CLIPS-FAQ

3
  • Herramienta para SBC desarrollada por la sección
    de tecnología de software (Software Technology
    Branch) de la NASA.
  • En desarrollo desde 1985
  • Portable Se puede portar a cualquier sistema con
    compilador ANSI C o C. Existe en Windows
    95/98/NT, MacOS X, y Unix. Se tiene acceso al
    código fuente para adaptarlo a necesidades.
  • Integrable Se puede integrar con código de otros
    lenguajes (C, Java, FORTRAN, ADA) y extender
    mediante protocolos definidos.
  • De dominio público.

4
CLIPS Soporta
  • Programación declarativa Reglas (con
    encadenamiento hacia adelante)
  • Programación procedimental
  • Programación orientada a objetos

5
Memoria de Trabajo (Hechos)
Base de Conocimientos (Reglas)
6
Delimitadores de simbolos
  • Caracteres no imprimibles (espacio, retorno,
    tabulador, etc.)
  • Comillas dobles "
  • Paréntesis ()
  • et
  • barra vertical
  • Menor que, lt , puede ser primer caracter de un
    símbolo
  • virgulilla
  • punto y coma comienzo de comentario, hasta un
    retorno

? y ? no pueden comenzar un símbolo, pero pueden
estar dentro de un símbolo
7
Hechos
  • Los hechos (facts) en CLIPS constan de
  • Un nombre del hecho (Ej relación)
  • Una o más ranuras (slots)
  • Antes de crear hechos, para cada tipo de hecho
    puede definirse una plantilla con la lista de
    ranuras válidas para ese tipo de hecho.

8
  • Ejemplo Declaración de una plantilla para hecos
    que describirán una persona

(deftemplate persona es una persona (slot
nombre) (slot edad) (slot estatura)
(slot color-de-cabello))
9
  • Agregando un hecho a la lista de hechos con el
    comando assert

(assert (persona (nombre Juan Mora")
(edad 35) (estatura 168)
(color-de-cabello negro)))
ltFact-0gt
10
  • Agregando otro hecho a la lista de hechos

(assert (persona (nombre Pedro
Pombo") (edad 46) (estatura
172) (color-de-cabello negro)))
ltFact-1gt
11
  • Ver lista de los hechos

(facts)
f-0 (persona (nombre "Juan Mora") (edad 35)
(estatura 168) (color-de-cabello negro)) f-1
(persona (nombre "Pedro Pombo") (edad 46)
(estatura 172) (color-de-cabello negro)) For a
total of 2 facts.
12
  • Modificar ranura de un hecho

(modify 0 (edad 37))
ltFact-2gt
(facts)
f-1 (persona (nombre "Pedro Pombo") (edad 46)
(estatura 172) (color-de-cabello negro)) f-2
(persona (nombre "Juan Mora") (edad 37) (estatura
168) (color-de-cabello negro)) For a total of 2
facts.
13
  • Crear un hecho con base en otro

(duplicate 1 (nombre Lina Mira))
ltFact-3gt
14
(facts)
f-1 (persona (nombre "Pedro Pombo") (edad 46)
(estatura 172) (color-de-cabello negro)) f-2
(persona (nombre "Juan Mora") (edad 37) (estatura
168) (color-de-cabello negro)) f-3 (persona
(nombre "Lina Mira") (edad 46) (estatura 172)
(color-de-cabello negro)) For a total of 3 facts.
15
(retract 1) (facts)
f-2 (persona (nombre "Juan Mora") (edad 37)
(estatura 168) (color-de-cabello negro)) f-3
(persona (nombre "Lina Mira") (edad 46) (estatura
172) (color-de-cabello negro)) For a total of 2
facts.
16
  • Se pueden eliminar varios hechos con un solo
    retract

(retract 0 2 5)
Se pueden eliminar todos los hechos
(retract )
17
  • Se pueden definir ranuras multicampo, que admiten
    varios valores

(deftemplate individuo ejemplo multislot
(multislot nombre) (slot edad) (slot
estatura) (slot color-de-cabello))
18
  • Así pueden existir hechos como

(individuo (nombre Juan Mora Duarte)
(edad 35) (estatura 168)
(color-de-cabello negro)))
19
  • Se pueden declarar varios hechos como
    conocimiento inicial con deffacts

(deffacts gente algunas personas (persona
(nombre "Marta Paez") (edad 33) (estatura 170)
(color-de-cabello rubio)) (persona (nombre "Diego
Molina") (edad 25) (estatura 168)
(color-de-cabello negro)) (persona (nombre "Luz
Perez Daza") (edad 19) (estatura 166)
(color-de-cabello negro)) )
20
(facts)
f-2 (persona (nombre "Juan Mora") (edad 37)
(estatura 168) (color-de-cabello negro)) f-3
(persona (nombre "Lina Mira") (edad 46) (estatura
172) (color-de-cabello negro)) For a total of 2
facts.
21
  • Los hechos contenidos en deffacts se aseveran a
    la lista de hechos con el comando

(reset)
Efectos
22
(reset)
(facts)
f-0 (initial-fact) f-1 (persona (nombre "Marta
Paez") (edad 33) (estatura 170) (color-de-cabello
rubio)) f-2 (persona (nombre "Diego Molina")
(edad 25) (estatura 168) (color-de-cabello
negro)) f-3 (persona (nombre "Luz Perez Daza")
(edad 19) (estatura 166) (color-de-cabello
negro)) For a total of 4 facts.
23
  • Se pueden crear hechos sin tener un deftemplate
    correspondiente

(assert (jefe Hector Luis)) (assert (jefe Diego
Hector)) (assert (tallas 12 32 34 36 40))
Estos se llaman hechos ordenados, y a ellos CLIPS
les crea un deftemplate implícito
24
El comando watch es útil para depurar
programas. Sintáxis (watch ltitem-observadogt)
(watch facts) (watch activations) (watch
rules) (watch statistics)
Se desactivan con (unwatch ltitem-observadogt)
25
Reglas
(defrule nombre comentario opcional
(patron-1) . . . . (patron-n) gt
(accion-1) . . . . (accion-m) )
El nombre de cada regla debe ser único.
26
Sean estas dos plantillas
(deftemplate peligro (slot tipo)) (deftemplate
respuesta (slot accion))
Ejemplo de regla
(defrule peligro-presion regla ejemplo
(peligro (tipo presion-excesiva)) gt
(assert (respuesta (action
abrir-valvula))))
27
Agenda
CLIPS coloca en la Agenda las reglas cuyos
patrones antecedente concuerdan con hechos.
El contenido de la Agenda se puede inspeccionar
con el comando agenda
  • (agenda)

0 emergencia-tipo-1 f-0 0 emergencia-tipo-2
f-1 5 ambulancia-libre f-2
28
Otros comandos
  • (clear)
  • Restaura el estado inicial de CLIPS borra todos
    los hechos y todas las reglas, reinicia a cero el
    identificador de hechos.
  • (run)
  • Ejecuta el programa. Este termina cuando ya no
    hay activaciones en la agenda
  • (printout t Hola mundo ! crlf)

29
Variables
  • Comienzan por signo de interrogación.
  • Ejemplos
  • ?precio
  • ?nn
  • ?color
  • Durante la comparación de antecedentes de reglas
    con hechos, si hay concordancia entre un patrón
    que tenga variables y un hecho, las variables se
    enlazan a los valores correspondientes dentro del
    hecho son valores válidos dentro de la regla.

30
Variables en reglas
  • Ejemplo, Sea la regla

(defrule R-abuelo (papa ?x ?y ) (papa ?y
?z ) gt (assert (abuelo ?x ?z ) ) )
31
Variables en reglas
  • Y sean los hechos

(papa agustin pedro ) (papa pedro
hernando )
32
Comodines (wildcards)
  • A veces en la comparación de patrones y hechos
    existen campos en un hecho cuyos valores no nos
    interesan para lo que queremos, pero deben
    tenerse en cuenta para que haya concordancia.

Sea el hecho (nombre jose luis ramirez)
El patrón (nombre ? ? ramirez)
hace concordancia con ese hecho y todos los que
tengan 2 nombres y ramirez.
33
Comodines (wildcards)
El patrón (nombre ? ? ramirez)
hace concordancia con hechos como
(nombre jose luis ramirez) (nombre hugo
ramirez) (nombre luis pablo maria ramirez)
? comodín para cero o más campos
34
Ejecutando
(deftemplate persona (slot nombre) (slot
edad) (slot estatura) (slot color-de-cabello))
(assert (persona (nombre juan) (edad 30)
(estatura 173) (color-de-cabello rubio)))
(assert (persona (nombre pedro) (edad 20)
(estatura 166) (color-de-cabello negro)))
CLIPSgt
CLIPSgt
ltFact-0gt
CLIPSgt
ltFact-1gt
35
(defrule hallar-rubios (persona (nombre
?nn) (color-de-cabello rubio)) gt (printout t ?nn
" es rubio" crlf)) (run) juan es
rubio CLIPSgt
CLIPSgt
CLIPSgt
36
Un ejemplo con 2 reglas
CLIPSgt (assert (perro rintintin)) ltFact-0gt CLIPSgt
(assert (perro lassie)) ltFact-1gt CLIPSgt (assert
(perro laika)) ltFact-2gt CLIPSgt (assert (gato
felix)) ltFact-3gt CLIPSgt (assert (gato
garfield)) ltFact-4gt ltCLIPSgt
37
(defrule ladran "" (perro ?x) gt (assert
(ladra ?x)) (printout t "ladra " ?x crlf))
(defrule maullan "" (gato ?x) gt (assert
(maulla ?x)) (printout t "maulla " ?x crlf))
CLIPSgt
CLIPSgt
CLIPSgt
38
(facts) f-0 (perro rintintin) f-1
(perro lassie) f-2 (perro laika) f-3
(gato felix) f-4 (gato garfield) For a total
of 5 facts. CLIPSgt
CLIPSgt
39
(run) maulla garfield maulla felix ladra
laika ladra lassie ladra rintintin CLIPSgt
CLIPSgt
40
(facts) f-0 (perro
rintintin) f-1 (perro lassie) f-2 (perro
laika) f-3 (gato felix) f-4 (gato
garfield) f-5 (maulla garfield) f-6
(maulla felix) f-7 (ladra laika) f-8
(ladra lassie) f-9 (ladra rintintin) For a
total of 10 facts. CLIPSgt
CLIPSgt
41
Variables multicampo
Si anteponemos a una variable en un patrón, esa
variable hara concordancia (matching) con una
lista de cero o más símbolos en un hecho, en
CLIPS esta lista es un valor multicampo. A la
variable se asigna pues la lista multicampo en
este caso. El signo no es parte del nombre de
la variable. El es como una función cuyo
argumento es una variable monocampo y que retorna
una variable multicampo
42
Variables multicampo
(assert (escritor gabriel garcia
marquez)) (defrule
R1 (escritor ?nombres ) gt (printout t
?nombres crlf ) ) (run)
CLIPSgt
ltFact-0gt
CLIPSgt
CLIPSgt
(gabriel garcia marquez) CLIPSgt
43
Restricciones en variables
El patrón (metal oro plata titanio )
hace concordancia con los hechos
(metal oro) (metal titanio) (metal plata)
44
Restricciones en variables
El patrón (metal oro )
hace concordancia con cualquier símbolo excepto
oro
(metal titanio) (metal plata)
45
Restricciones en variables
Se puede usar el operador para poner una
combinación de restricciones a una
variable. Ejemplo, el patrón
(metal ?mtitaniooro)
hará concordancia con cualquier hecho metal en el
cual el metal no sea titanio ni oro, y el valor
de ?m será asignado al valor que concuerde.
46
Prioridades de las reglas
A las reglas se les puede asignar una prioridad
(salience). Estas se pueden declarar así
  • (declare (salience 25) )

en la regla, entre el comentario opcional y el
primer patrón del antecedente.El valor puede ir
de -10000 a 10000.Si no se declara, CLIPS asume
un valor de cero.
47
Orden de ejecución de las reglas
En la Agenda las reglas de mayor valor salience
se colocan sobre las de menor valor, y se
ejecutan primero.Dentro de reglas de igual
salience, la colocación de las reglas en la
agenda está determinada por una estrategia de
resolución de conflictos basada en el orden en
que se van activando las reglas.
48
Orden de ejecución de las reglas
Por defecto, la estrategia de resolución de
conflictos es por primero en profundidad
(depth) Las nuevas reglas activadas van
encima de las que existían en la agenda.
49
Orden de ejecución de las reglas
Se puede usar una estrategia primero en amplitud
(breadth), que coloca las nuevas reglas
activadas debajo de las reglas preexistentes. Para
cambiar de la estrategia por defecto a esta, se
usa el comando
(set-strategy breadth)
Hay otras estrategias pero estas 2 son las más
usuales
50
(deffunction ltnombregt "comentario
opcional" (?arg1 ?arg2 ... ?argM
?argN) ltaccion1gt ltaccion2gt ... ltaccion(K-1)
gt ltaccionKgt )
51
( deffunction hipotenusa (?a ?b)
(sqrt ( ( ?a ?a) ( ?b ?b) ) ) )
( hipotenusa 4 6 ) 7.21110255092798
CLIPSgt
CLIPSgt
CLIPSgt
52
(deffunction interrogar (?pregunta
?allowed-values) (printout t ?pregunta)
(bind ?respuesta (read)) (if (lexemep
?respuesta) then (bind ?respuesta
(lowcase ?respuesta)) ) (while (not (member
?respuesta ?allowed-values)) do (printout t
?pregunta) (bind ?respuesta (read))
(if (lexemep ?respuesta) then (bind
?respuesta (lowcase ?respuesta)) ) )
?respuesta )
53
(deffunction afirmativo (?pregunta) (bind
?larespuesta (interrogar ?pregunta si no s n))
(if (or (eq ?larespuesta si) (eq ?larespuesta
s)) then TRUE else FALSE
) )
54
(defrule licor-disponible "" gt (if
(afirmativo "Tiene brandy (si/no)? ")
then (assert (disponible brandy))
else (if (afirmativo "Tiene conac
(si/no)? ") then (assert
(disponible conac)) else
(printout t "Lo siento, no se puede hacer el
coctel"crlf) ) ) )
55
Otros comandos
Listar nombres de defrules, deftemplates y
deffacts
  • (list-defrules)
  • (list-deftemplates)
  • (list-deffacts)

56
Otros comandos
Listar contenido (declaraciones) de defrules,
deftemplates y deffacts
  • (ppdefrule ltnombregt)
  • (ppdeftemplate ltnombregt)
  • (ppdeffacts ltnombregt)

57
Otros comandos
Borrar defrules, deftemplates y deffacts
  • (undefrule ltnombregt)
  • (undeftemplate ltnombregt)
  • (undeffacts ltnombregt)
Write a Comment
User Comments (0)
About PowerShow.com