sistemas expertos
Curso 2003–2004
Tema 1(I): Programaci´n
o
basada en reglas con CLIPS
Jos´ A. Alonso Jim´nez
e
e
Francisco Jes´ s Mart´ Mateos
u
ın
Jos´ Luis Ruiz Reina
e
Dpto. de Ciencias de la Computaci´n e Inteligencia Artificial
o
Universidad de Sevilla
IA-II 2003–2004
Cc Ia
Programaci´n basada en reglas con CLIPS
o
1(I).1
Programaci´n basadaen reglas
o
x
Paradigma de la programaci´n basada en reglas
o
u
u
x
Hechos: pieza b´sica de informaci´n
a
o
Reglas: describen el comportamiento del programa en funci´n de la informaci´n
o
o
existente
Modelo de regla:
=>
x
Condiciones acerca de:
u
u
Ausencia de cierta informaci´n
o
u
x
Existencia de cierta informaci´n
o
Relaciones entre datosAcciones:
u
Incluir nueva informaci´n
o
u
Eliminar informaci´n
o
u
Presentar informaci´n en pantalla
o
IA-II 2003–2004
Cc Ia
Programaci´n basada en reglas con CLIPS
o
1(I).2
Definici´n de hechos
o
x
Estructura de un hecho: (*)
u
Ejemplo: (conjunto a b 1 2 3)
u
(1 2 3 4) no es un hecho v´lido
a
x
La acci´n de a˜ adir hechos: (assert *)
o
n
xHechos iniciales:
(deffacts
*)
IA-II 2003–2004
Cc Ia
Programaci´n basada en reglas con CLIPS
o
1(I).3
Definici´n de reglas
o
x
Estructura de una regla (I):
(defrule
*
=>
*)
:=
x
Ejemplo:
(defrule mamifero-1
(tiene-pelos)
=>
(assert (es-mamifero)))
IA-II 2003–2004
Cc Ia
Programaci´n basada en reglas con CLIPS
o
1(I).4
Interacci´n con elsistema
o
x
Cargar el contenido de un archivo:
(load )
x
Trazas:
u
Hechos a˜ adidos y eliminados:
n
(watch facts)
u
Activaciones y desactivaciones de reglas:
(watch activations)
u
Utilizaci´n de reglas:
o
(watch rules)
IA-II 2003–2004
Cc Ia
Programaci´n basada en reglas con CLIPS
o
1(I).5
Interacci´n con el sistema
o
x
Inicializaci´n:
o(reset)
x
Ejecuci´n:
o
(run)
x
Limpiar la base de conocimiento:
(clear)
x
Ayuda del sistema:
(help)
IA-II 2003–2004
Cc Ia
Programaci´n basada en reglas con CLIPS
o
1(I).6
Ejemplo de base de conocimiento (hechos y reglas, I)
(deffacts hechos-iniciales
(tiene-pelos)
(tiene-pezugnas)
(tiene-rayas-negras))
(defrule mamifero-1
(tiene-pelos)
=>
(assert(es-mamifero)))
(defrule mamifero-2
(da-leche)
=>
(assert (es-mamifero)))
(defrule ungulado-1
(es-mamifero)
(tiene-pezugnas)
=>
(assert (es-ungulado)))
IA-II 2003–2004
Cc Ia
Programaci´n basada en reglas con CLIPS
o
1(I).7
Ejemplo de base de conocimiento (hechos y reglas, II)
(defrule ungulado-2
(es-mamifero)
(rumia)
=>
(assert (es-ungulado)))
(defrule jirafa(es-ungulado)
(tiene-cuello-largo)
=>
(assert (es-jirafa)))
(defrule cebra
(es-ungulado)
(tiene-rayas-negras)
=>
(assert (es-cebra)))
IA-II 2003–2004
Cc Ia
Programaci´n basada en reglas con CLIPS
o
1(I).8
Tabla de seguimiento
x
El modelo de ejecuci´n en CLIPS
o
u
u
Base de reglas
u
Activaci´n de reglas y agenda
o
u
x
Base de hechos
Disparo de reglasTabla de seguimiento:
Hechos
f0 (initial-fact)
f1 (tiene-pelos)
f2 (tiene-pezugnas)
f3 (tiene-rayas-negras)
f4 (es-mamifero)
f5 (es-ungulado)
f6 (es-cebra)
IA-II 2003–2004
Cc Ia
E
0
0
0
0
1
2
3
Agenda
D
mamifero-1: f1
1
ungulado-1: f4,f2 2
cebra: f5,f3
3
Programaci´n basada en reglas con CLIPS
o
1(I).9
Un ejemplo de sesi´n en CLIPS
o
CLIPS> (load"animales.clp")
$******
TRUE
CLIPS> (watch facts)
CLIPS> (watch rules)
CLIPS> (watch activations)
CLIPS> (reset)
==> f-0
(initial-fact)
==> f-1
(tiene-pelos)
==> Activation 0
mamifero-1: f-1
==> f-2
(tiene-pezugnas)
==> f-3
(tiene-rayas-negras)
CLIPS> (run)
FIRE
1 mamifero-1: f-1
==> f-4
(es-mamifero)
==> Activation 0
ungulado-1: f-4,f-2
FIRE
2 ungulado-1: f-4,f-2
==>...
Regístrate para leer el documento completo.