Sei sulla pagina 1di 93

II.

Razonamiento con conocimiento preciso

Tema 2
Sistemas Basados en Reglas
Sistemas Basados en el Conocimiento
Grado en Ingeniera Informtica

Razonamiento con conocimiento preciso

Tema 2. Sistemas Basados en Reglas

Descripcin
CLIPS
Ejemplos

Tema 3. Repaso de Lgica


Tema 4. Web Semntica y Web de Datos

Referencias

Inteligencia Artificial Mtodos y Tcnicas.


D. Borrajo, N. Juristo, V. Martnez-Orga, J. Pazos.
Editorial Centro de estudios Ramn Areces. 1997
Sistemas expertos representacin e inferencia problemas resueltos.
A. Fernndez. Dykinson (URJC). 2010
Problemas resueltos de inteligencia artificial aplicada: bsqueda y
representacin.
Fernndez, S.; Gonzlez, J.; Mira, J. Addison-Wesley Iberoamericana. 1998.
Ingeniera del Conocimiento. Aspectos Metodolgicos.
A. Alonso, B. Guijarro, A. Lozano, J. T. Palma, M. J. Tabeada.
Pearson Prentice Hall. 2004

CLIPS:
Sistemas expertos: principios y programacin (3 ed.).
J. Giarratano, G. Riley, G. Editorial. Thompson Ed. 2001.
CLIPS Reference Manual (CLIPS 6.1). http://clipsrules.sourceforge.net/
JESS in Action: Rule-based systems in Java. Friedman-Hill, E. Manning. 2003.
3

Sistemas Basados en Reglas


DEFINICIN
conjunto de sentencias en un LRC

mecanismo de inferencia automtica

<BH,BR,MI>

BASE DE HECHOS

MOTOR DE INFERENCIA

(Memoria de trabajo)
Representa conocimientos sobre el
problema:datos, hechos establecidos
y metas a alcanzar

Razona con el conocimiento del


problema y sobre su solucin
Determina cmo se aplican las reglas

BASE DE REGLAS
Representa conocimientos sobre la solucin
del problema en forma de producciones

Base de Hechos
Hechos:

estructuras de datos: aserciones sobre objetos/situaciones etc.


representamos hechos como listas de smbolos
pueden concebirse como relaciones entre entidades
ejemplo: (ladra perro), (on A B)

Base de hechos (BH):


representa el modelo del mundo (o el problema en curso de solucin)
cambia con el proceso de inferencia
Estado inicial: situacin inicial
Estado final: situacin final
Estado intermedio: situacin actual o en curso de resolucin
ejemplo BH:
(bloque A)
(bloque B)
(on A B)
(on B T)
(clear A)
5

Base de Hechos
Partes de la BH:
permanente: hechos invariantes
describen caractersticas que siempre se dan en el problema
Ejemplo: (bloque A) (bloque B) (clear T)

temporal: hechos variantes


cambian durante el proceso de la solucin del problema
Ejemplo: (on A B) (on B T) (clear A)

Modificacin de la BH:
aadir hechos a la BH
borrar hechos de la BH

Base de Reglas
Regla:
Representa una parte del conocimiento sobre la solucin del problema
Sintaxis: SI <Premisas> ENTONCES <Acciones>
Antecedente, LHS

Ejemplo Regla R1:

Consecuente, RHS

SI (hombre Socrates)
ENTONCES aadir(mortal Socrates)

Semntica:
Si todas las premisas se encuentran en la BH, se pueden ejecutar todas las acciones
sobre la BH
Ej.: Si (hombre Socrates) se encuentra en la BH, se puede aadir (mortal Socrates) a
la BH

Base de Reglas (BR):


conjunto de reglas: agrupa el conocimiento sobre la solucin del problema
La BH describe el problema, la BR da informacin para resolverlo

Base de Reglas
Reglas con variables:
premisas y acciones pueden contener constantes (p.e. A,
ladra, on) o variables (p.e. ?x)
Ejemplos:
Regla R2: SI (hombre ?x) ENTONCES aadir(mortal ?x)
Regla R3: SI (padre ?x ?y) (padre ?y ?z)
ENTONCES aadir(ancestro ?x ?z)

Semntica:
Una variable puede ligarse con cualquier constante de un hecho en la
misma posicin
Una variable ha de ligarse al mismo valor en toda la regla

Ntese:
slo las reglas pueden contener variables, no los hechos
cualquier variable del consecuente ha de ligarse anteriormente en el
antecedente
8

Motor de inferencia
Mecanismo automtico que permite contestar consultas a partir de una BC
basada en reglas
Dos posibles estrategias de inferencia para BC basadas en reglas
Encadenamiento hacia delante (ingls: forward chaining)
Soluciones
intermedias

BH inicial

Consulta
(BH final)

BR
Encadenamiento hacia atrs (ingls: backward chaining)
Objetivo
(Consulta)

Subobjetivos

BR

BH inicial
9

Soluciones

Motor de Inferencia
Mecanismo de encadenamiento hacia delante:
a partir de la BH1 se procura deducir una BHn en la que se cumple la consulta
disparando sucesivamente las reglas Ri de la BR
cada disparo de una regla caracteriza un ciclo de razonamiento CCk

BH1
R1
R2
...
Rm

CC1

BH2
Ri

...
Rj

CC2
CC n-1

10

BHn-1

BHn
Rk

Ciclo de Inferencia
Paso 1:
Deteccin de reglas aplicables
(determinacin del conjunto conflicto)
Paso 2:
Seleccin de una regla aplicable
(resolucin del conjunto conflicto)
Paso 3:
Aplicacin de una regla y
actualizacin de la BH
(disparo de la regla)

11

Ciclo de Inferencia: Deteccin de reglas aplicables


Equiparacin:

Seleccin del conjunto de reglas candidatas para dispararse, las que son
compatibles con la BH (instancias de reglas aplicables o activadas)

BH
(enfermedad Pepe pulmn) (enfermedad ?persona corazn)
(enfermedad Juan corazn)
(enfermedad Mara corazn)
(enfermedad Juan corazn), ?persona=Juan
(edad Pepe 18)
(enfermedad Mara corazn), ?persona=Mara

Conjunto conflicto:

todas las (instancias de) reglas que son aplicables en el presente ciclo

puede haber varias instancias de la misma regla en el conjunto conflicto


12

Ciclo de Inferencia: Seleccin de una regla aplicable


Estrategias de seleccin:
Establecer un orden de preferencia en la aplicacin de las reglas
Preferencia basada en las reglas

prioridad explcita: asignar valores de prioridad a cada regla


prioridad implcita: orden de de las reglas en la BR (Prolog)
refraccin: historia de una regla (la ms/menos disparada)
especificidad: preferir la reglas con ms/menos condiciones

Preferencia basada en las instancias de reglas


la ms antigua en el conjunto conflicto (estrategia de amplitud)
la ms nueva en el conjunto conflicto (estrategia de profundidad)

Preferencia basada en objetos


seleccin de reglas que se aplican a los objetos ms recientes
prioridad explcita: asignacin de prioridades a los patrones ms comunes
de la BH

Combinaciones de las diferentes preferencias


13

Ciclo de Inferencia: Aplicacin y actualizacin de la BH


Disparo de la instancia de regla seleccionada:
Se ejecutan todas las acciones del consecuente de la (instancia de)
regla
se modifica la BH actual dando lugar a una BH nueva al aadir y
borrar elementos de la primera
La BH nueva se tomar como punto de partida en el siguiente ciclo de
funcionamiento (por tanto es posible que algunas reglas han de
eliminarse del antiguo del conjunto conflicto!)

Parada del mecanismo de inferencia:


cuando no hay ms reglas aplicables en el conjunto conflicto
cuando el consecuente de una regla ejecuta un comando de parada
(regla de terminacin, puede codificar la consulta)
14

Ejemplo de inferencia hacia adelante en BC de reglas


CONSULTA: (perro Tucky)?

BASE DE HECHOS BH1


(animal Tucky)
(animal Pioln)
(esqueleto Pioln si)
(esqueleto Tucky si)
(ladra Tucky)

BASE DE REGLAS
Regla R1:
SI (animal ?A)
(esqueleto ?A si)
ENT aadir (vertebrado ?A)

Motor de inferencia
Regla R2:
SI
(animal ?A)
(esqueleto ?A no)
ENT aadir (invertebrado ?A)

Ciclo1

R1,?A=Tucky
R1,?A=Pioln

(animal Tucky)
(animal Pioln)
(esqueleto Pioln si)
(esqueleto Tucky si)
(ladra Tucky)
(vertebrado Tucky)

Regla R3:
SI
(vertebrado ?A)
(ladra ?A)
ENT aadir (perro ?A)
15

Ejemplo de inferencia hacia adelante en BC de reglas


BASE DE HECHOS BH2

CONSULTA: (perro Tucky)?

(animal Tucky)
(animal Pioln)
(esqueleto Pioln si)
(esqueleto Tucky si)
(ladra Tucky)
(vertebrado Tucky)

BASE DE REGLAS
Regla R1:
SI (animal ?A)
(esqueleto ?A si)
ENT aadir (vertebrado ?A)

Motor de inferencia
Ciclo2

Regla R2:
SI
(animal ?A)
(esqueleto ?A no)
ENT aadir (invertebrado ?A)

R1,?A=Tucky
R1,?A=Pioln
R3, ?A=Tucky

(animal Tucky)
(animal Pioln)
(esqueleto Pioln si)
(esqueleto Tucky si)
(ladra Tucky)
(vertebrado Tucky)
(vertebrado Pioln)

Regla R3:
SI
(vertebrado ?A)
(ladra ?A)
ENT aadir (perro ?A)
16

Ejemplo de inferencia hacia adelante en BC de reglas


BASE DE HECHOS BH3

CONSULTA: (perro Tucky)?

(animal Tucky)
(animal Pioln)
(esqueleto Pioln si)
(esqueleto Tucky si)
(ladra Tucky)
(vertebrado Tucky)
(vertebrado Pioln)

BASE DE REGLAS
Regla R1:
SI (animal ?A)
(esqueleto ?A si)
ENT aadir (vertebrado ?A)

Motor de inferencia
Ciclo3

Regla R2:
SI
(animal ?A)
(esqueleto ?A no)
ENT aadir (invertebrado ?A)

R1,?A=Tucky
R1,?A=Pioln
R3, ?A=Tucky

(animal Tucky)
(animal Pioln)
(esqueleto Pioln si)
(esqueleto Tucky si)
(ladra Tucky)
(vertebrado Tucky)
(vertebrado Pioln)
(perro Tucky)

Regla R3:
SI
(vertebrado ?A)
(ladra ?A)
ENT aadir (perro ?A)
17

BASE DE HECHOS BH4

Ciclo de Inferencia: Aspectos de Implementacin


Problema:
Ineficiencia del mecanismo de inferencia debido a la fase 1
(determinacin del conjunto conflicto)
en cada ciclo se equiparan todas las reglas con todos los elementos de
la MT para construir el nuevo conjunto conflicto
Solucin: Algoritmo de Redundancia Temporal (RETE)
se construye el conjunto conflicto de forma incremental
Cambios en la MT

Red RETE

Cambios en el CC

La red RETE se genera al principio de la ejecucin del sistema de


produccin mediante un compilador.

18

RETE (Redundancia Temporal)


Red de nodos (RETE)
En cada ciclo de funcionamiento, las acciones modifican
Memoria de Trabajo (inclusin o borrado)
En cada ciclo, no es necesario equiparar todas las reglas
con todos los elementos de la MT
La red RETE se genera al principio mediante un
compilador

19

RETE: Ejemplo

Compartir partes comunes


Ej.:

es 1 una a?

R7: SI (a b ?x) (c ?x d e ?y) ENT ...


R8: SI (a b ?x) (c ?x d f ?y) ENT ...

es 1 una c?

es 3 una d?

es 2 una b?

es 4 una e?

es 4 una f?

Nodo de unin si
3 izda = 2 dcha

Nodo de unin si
3 izda = 2 dcha

Informar de
cambios en R7

Informar de
cambios en R8

20

Diseo de BCs: Errores frecuentes


Una regla NO es una estructura if-then-else
SI condicion1
condicion2
...
ENTONCES
acciones1
EN CASO CONTRARIO
acciones2
QU HACER?
Identificar las condiciones que no se cumplen para la
ejecucin de las acciones2
Crear dos reglas, una para cada bloque de acciones
21

Diseo de BCs: Errores frecuentes


No pueden aparecer OR en el consecuente de la regla
SI condicion1
condicion2
...
ENTONCES
acciones1 OR acciones2
QU HACER?
Crear dos reglas, una para cada bloque de acciones
para conservar la precedencia, p.e. establecer prioridades entre las reglas
Ri: SI condicion1
condicion2...
ENTONCES acciones1

Rj: SI condicion1
condicion2...
ENTONCES acciones2
22

Diseo de BCs: Errores frecuentes


En el consecuente de la regla NO hay elementos de decisin
SI condicion1 , condicion2 ...
ENTONCES
acciones1
SI condicion4 ...
ENTONCES
acciones2
QU HACER?
Introducir sealizadores que provoquen la ejecucin prioritaria de
reglas con tales elementos
No olvidar borrar los sealizadores
Ri: SI condicion1 , condicion2 ...
ENTONCES acciones1
aadir S
23

Rj: SI S, condicion4 ...


ENTONCES acciones2
borrar S

Diseo de BCs: Errores frecuentes


Desde una regla nunca se puede lanzar otra regla
Ri: SI condicion1
condicion2
...
ENTONCES
Rj

QU HACER?
Introducir sealizadores que provoquen la ejecucin de Rj
No olvidar borrar los sealizadores al ejecutar la regla Rj

24

Diseo de BCs: Errores frecuentes


BR

Regla R1:
SI (envio ?e ?origen ?destino)
(dia-entrega ?e hoy)
(coste ?e ?coste)
ENTONCES
aadir(coste ?e ?coste+10)

BH (envio E1 Madrid Barcelona)

Motor de inferencia

Ciclo1
?e=E1
?origen=Madrid
?destino=Barcelona
?coste=7

(dia-entrega E1 hoy)
(coste E1 7)

BH (envio E1 Madrid Barcelona)


ERROR: El coste del envo es nico
SOLUCIN: Modificar la regla
25

(dia-entrega E1 hoy)
(coste E1 7)
(coste E1 17)

Diseo de BCs: Errores frecuentes


BR

Regla R1:
SI (envio ?e ?origen ?destino)
(dia-entrega ?e hoy)
(coste ?e ?coste)
ENTONCES
borrar (coste ?e ?coste)
aadir (coste ?e ?coste+10)

BH (envio E1 Madrid Barcelona)

Motor de inferencia

Ciclo1
?e=E1
?origen=Madrid
?destino=Barcelona
?coste=7

(dia-entrega E1 hoy)
(coste E1 7)

BH

PROBLEMA: Bucle infinito


SOLUCIN:
Introducir sealizadores,
Utilizar nuevo hecho (coste-final)
26

(envio E1 Madrid Barcelona)


(dia-entrega E1 hoy)
(coste E1 7)
(coste E1 17)

Caractersticas de la Representacin del Conocimiento


Ventajas
Representacin prxima a la forma de proceder de los expertos
Sintaxis simple y homognea
Permite seguimiento del proceso de deduccin

Inconvenientes
Conocimiento procedimental y heurstico
Dificultad para verificar la consistencia de la BC

27

Sistemas Basados en Reglas

Tema 2. Sistemas Basados en Reglas

Descripcin
CLIPS
Ejemplos

...

28

Qu es CLIPS
CLIPS (C Language Integrated Production System):
herramienta para desarrollar sistemas inteligentes basadas en reglas
desarrollada en C/ANSI por Software Technology Branch, NASA/Lyndon B.
Johnson Space Center desde 1986
implementacin eficiente del encadenamiento hacia delante

Facilidades adicionales

diferentes estrategias de resolucin de conflictos


adicin dinmica de reglas
sistema de mantenimiento de verdad
lenguaje orientado a objetos: COOL (Clips Object-Oriented Language)

Extensiones:

fcilmente embebible en aplicaciones en C, FORTRAN, Java, ...


disponible en diversas plataformas (MS-DOS/Windows, Unix)
extensiones para Lgica Borrosa (FuzzyCLIPS)
JESS: versin en Java que usa el sistema de objetos correspondiente
29

Sistemas Basados en Reglas

Tema 2. Sistemas Basados en Reglas


1. Descripcin
2. CLIPS
1. Base de Hechos
2. Base de Reglas
3. Motor de Inferencia
3. Ejemplos

30

CLIPS: Base de Hechos


Terminologa
La BH en CLIPS se llama memoria de trabajo (MT)
puede contener diferentes tipos de hechos

Hechos ordenados (ordered facts)


Patrones con uno o varios campos
la posicin de la informacin en el hecho es relevante
informacin tipada: smbolos, integers, real, string, etc.
sintaxis acostumbrada

Ejemplos:
(hola)
(alumnos Pepe Juan Luis)
(nombre "Juan")
(edad 14)
(pi 3.1415)
31

CLIPS: Base de Hechos


Patrones no-ordenados (deftemplate)
Permiten definir la informacin en forma de clases de elementos y
atributos de esas clases.
Permiten abstraer la estructura de un hecho asignando un nombre a
cada campo
campos slot: pueden tener exactamente un valor
campos multislot: pueden tener varios valores (de varios tipos)

Se permite una cadena de caracteres como comentario (opcional)


Ejemplo: (deftemplate clase
"Informacion sobre clases"
(slot grupo)
(slot aula)
(slot hora)
(multislot alumnos)
(multislot profesor))
32

CLIPS: Base de Hechos


Hechos no-ordenados (unordered facts, deftemplate facts)

hechos que instancian los patrones deftemplate


el primer nombre del hecho no-ordenado referencia su deftemplate
el orden de los campos no tiene importancia
se pueden omitir slots del patrn deftemplate
Ejemplo:
(cliente
(cliente
(clase

(nombre Juan Prez)


(id 33435))
(id 33435)
(nombre Juan Prez))
(aula "III-002")
(profesor Alberto Fernndez)
(alumnos))

33

CLIPS: Base de Hechos


Hechos iniciales:
los hechos iniciales, se definen con la estructura deffacts
ejemplo1:
(deffacts hechos-600
informacin del 600
(modelo 600)
(puertas 2) )
ejemplo2:
(deffacts OtrosHechos
(cliente (nombre Juan Prez) (id 33435))
(cliente (nombre Rosa Gmez) (id 33436)) )

por defecto existe el hecho inicial (initial-fact)


los hechos iniciales se aadirn a la MT al hacer reset
34

CLIPS: Base de Hechos


Indices de hechos (etiquetas temporales, time-tags)
CLIPS genera para cada hecho un ndice relativo al tiempo de su creacin:
Al primer hecho creado le corresponde la etiqueta temporal 0 :
f-0 (initial-fact)
Ejemplo: Si (ladra perro) es el segundo hecho aadido a la MT, su
etiqueta temporal el f-1
Nunca disminuye y nunca se reasigna. Para cada nuevo hecho que se cree o
modifique se incrementa en uno

Sirven para
Identificar de forma nica y simplificada cada hecho
Saber el tiempo que lleva un hecho en la memoria de trabajo

35

CLIPS: Base de Hechos


Ordenes bsicas de manejo de la MT
(facts)
Lista los hechos de la MT
(assert <hecho>) Aade (si no existe) un hecho a la MT
(retract <indice-hecho>) Elimina un hecho de la MT
(modify <indice-hecho> <slot>*)
Modifica un hecho (no ordenado) de la MT
(duplicate <indice-hecho> <slot>*)
Como modify pero sin borrar el antiguo
(clear)
Elimina todos los hechos y construcciones de la MT
(reset)
Elimina todos los hechos de la MT, elimina las activaciones
de la agenda y restaura las condiciones iniciales:

Aade initial-fact
Aade el conocimiento inicial definido con deffacts
Aade las variables globales con su valor inicial
Fija como mdulo principal el mdulo MAIN

36

CLIPS: Base de Hechos


Ejemplo:
CLIPS> (reset)

CLIPS> (retract 1)

CLIPS> (facts)

CLIPS> (assert (hola))

f-0 (initial fact)

<Fact-2>

For a total of 1 fact.

CLIPS> (facts)

CLIPS> (assert (hola))

f-0 (initial-fact)

<Fact-1>

f-2 hola

CLIPS> (facts)

For a total of 2 facts.

f-0 (initial-fact)

CLIPS> (clear)

f-1 hola

CLIPS> (facts)

For a total of 2 facts.

CLIPS>

37

Sistemas Basados en Reglas

Tema 2. Sistemas Basados en Reglas


1. Descripcin
2. CLIPS
1. Base de Hechos
2. Base de Reglas
3. Motor de Inferencia
3. Ejemplos

38

CLIPS: Base de Reglas


Sintaxis

Ejemplo

(defrule marca-del-600
(defrule <nombre_regla>
"Marca del modelo 600"
[<documentacion opcional>]
(modelo 600)
[<caracteristicas op.>]
=>
(premisa 1)
(assert (marca-es SEAT))
(premisa 2)
)
...
(premisa N)
Semntica
=>
Si se cumplen todas las premisas
(accion 1)
Se ejecutan todas las acciones
(accion 2)
...
(accion M)
)
39

CLIPS: Base de Reglas

Elementos de las premisas


Patrones
existencia / ausencia de hechos en la BH
pueden instanciar variables a partir de hechos

Restricciones
restricciones como premisas (tipo test)
restricciones de variables (conectivas)

40

CLIPS: Base de Reglas


Patrones: Constantes
equiparacin con hechos concretos en la MT
Ejemplos:
(defrule encontrar-dato
(dato 1 azul rojo)
=>)
(defrule encontrar-Roberto
(persona (nombre Roberto) (edad 20))
=>)

41

CLIPS: Base de Reglas


Equiparacin de patrones constantes
Caso a: Hechos ordenados
BR

(defrule R1
(A B)
=> (assert (C D))

MT

f-1
f-2

(A B)
(C D)

1 equiparacin
Conjunto Conflicto={R1(f-1)}
La ejecucin de la regla introduce en la MT a (CD)

Caso b: hechos no ordenados


BR

(defrule R1
(clase1 (nombre1 A))
=> (assert (C D))

MT

f-1(clase1
(nombre1 A))
f-2(C D)

1 equiparacin
Conjunto Conflicto={R1(f-1)}

La ejecucin de la regla introduce en la MT a (CD)

42

CLIPS: Base de Reglas


Patrones: Comodines
patrones genricos que equiparan con diferentes hechos
se usan cuando no importa el valor de un campo
? :
Equipara con un campo
$? : Equipara con cero a n campos
Ejemplos:

(defrule encontrar-dato
(dato ? azul rojo $?)=>)
(defrule encontrar-dato
(dato $? amarillo $?)=>)

43

CLIPS: Base de Reglas


Equiparacin con comodines
cada par hecho-comodn puede dar lugar a una instanciacin
Ejemplo:

BR

(defrule R1
(A $? B)
=>...

MT

f-1
f-2
f-3

3 equiparaciones de la misma regla


Eq1: $?=
Eq2: $?=3
Eq3: $?= C E B

(A B)
(A 3 B)
(A C E B B)

Conjunto Conflicto:
{R1(f-1),R1(f-2),R1(f-3)}

Un comodn repetido puede tener valores diferentes


44

CLIPS: Base de Reglas


Patrones: Variables
patrones genricos que equiparan con diferentes hechos
almacenan valores de campos para usarlos posteriormente
?x : variable de valor nico
$?x : variable multivalor (cero, uno o ms valores)
Ejemplos:
(defrule encontrar-dato
(dato ?x ?y ?z)=>)
(defrule encontrar-dato
(dato ?x $?y ?z)=>)

45

CLIPS: Base de Reglas


Equiparacin con variables
Una variable que aparece dos o ms veces en la regla debe
equipararse en todas las ocurrencias con el mismo valor

BR

(defrule R1
(animal ?x)
(piel pelo ?x)
=>
(assert (especie mamifero ?x))

MT

f-1
f-2
f-3
f-4
f-5

(animal Tucky)
(piel pelo Dolly)
(piel pelo Tucky)
(animal Dolly)
(animal Dumbo)

Eq1: ?x=Tucky : (animal Tucky) (piel pelo Tucky)


Eq2: ?x=Dolly : (animal Dolly) (piel pelo Dolly)
Dumbo no equipara por no tener (piel pelo Dumbo) en la MT
Conjunto Conflicto = { R1(f-1,f-3), R1(f-4,f-2) }
46

CLIPS: Base de Reglas


Patrones: Ausencia de patrones
Sintaxis: (not (<patron>))
la premisa se cumple, si no hay ningn hecho en la MT
que equipara con <patron>
Ejemplo:
(defrule volar
(pajaro ?x)
(not (avestruz ?x))
=>
(assert (vuela ?x))
)

Hiptesis del mundo cerrado:


todo lo que no se encuentra en la MT es falso

47

CLIPS: Base de Reglas

Equiparacin basada en la ausencia de patrones


Ejemplo:
(defrule R1
(A ?x)
(not (B ?x))
=> )
MT: (A C) (B D) (A B) (A A) (B A)

Eq1: ?x=C
Eq2: ?x=B
?x=A no equipara porque en la MT est (B A)

48

CLIPS: Base de Reglas


Patrones: Direcciones de hechos (referencia a la MT):
se pueden almacenar referencias a los hechos de la MT en variables
dichas referencias pueden ser usadas en las acciones de consecuente
Ejemplo
(defrule matrimonio
?ref-soltero <- (soltero ?nombre)
=>
(retract ?ref-soltero)
(assert (casado ?nombre))
)

49

Premisas de las Reglas CLIPS: Restricciones


Restricciones de premisa:
premisa del tipo (test (<expresin booleana>))
forma ms general para comprobar el cumplimiento de una condicin
Expresiones booleanas se construyen en notacin prefija sobre:
Funciones de comparacin
Numrica: =, <>, <, >, >=, <=
Cualquier tipo: eq, neq
Funciones lgicas: or, not, and
Funciones de predicado: stringp, numberp, symbolp...
Ejemplo: (defrule mes-valido
(entrada ?mes)
(test (and (>= ?mes 1)
(<= ?mes 12) ) )
=>)
50

Premisas de las Reglas CLIPS: Restricciones


Restricciones conectivas (connective constraints) :
limitan la posibilidad de equiparacin de variables
restricciones conectivas con constantes:
Sintaxis: ?x&<valor>
Semntica:?x equipara con cualquier valor menos <valor>
ejemplos
(defrule no-rojo-ni-verde
(color ?x&~rojo&~verde)
=>)

(defrule no-rojo-ni-verde-test
(color ?x)
(test (neq ?x rojo verde))
=>)

(defrule datos-distintos
(dato ?x ?y&~?x)
=>)

(defrule datos-distintos-test
(dato ?x ?y)
(test (neq ?x ?y))
=>)

51

Premisas de las Reglas CLIPS: Restricciones


Restricciones conectivas de resultado (return value constraints)
Sintaxis: ?x&=(<expresion>)
Semntica:
?x equipara slo con el valor que resulta de evaluar <expresion>
<expresion> puede ser de cualquier tipo (i.e. se aplica eq)

Ejemplos:
(defrule mas-una
(dato ?x ?y&=(+ ?x 1))
=>)

(defrule mas-una-test
(dato ?x ?y)
(test (= ?y (+ ?x 1)))
=>)

(defrule segundo-elemento
(lista $?l)
(valor ?x&=(nth$ 2 $?l))
=>)

(defrule segundo-elemento-test
(lista $?l)
(valor ?x)
(test (eq ?x (nth$ 2 $?l)))
=>)

52

Premisas de las Reglas CLIPS: Restricciones


Restricciones conectivas de predicado (predicate constraints)
Sintaxis: ?x&:(<expr.booleana>)
Semntica:
?x equipara con cualquier valor si slo si <expr.booleana> es true
<expr.booleana> tambin suele contener variables

Ejemplos:
(defrule valor-numerico
(valor ?x&:(numberp ?x))
=>)

(defrule valor-numerico-test
(valor ?x)
(test (numberp ?x))
=>)

(defrule dos-o-mas
(lista $?y&:(> (length$ ?y) 2))
=>)

(defrule dos-o-mas-test
(lista $?y)
(test (> (length$ ?y) 2))
=>)

53

Acciones de las Reglas CLIPS

Modificar MT: assert, retract, modify, duplicate


Entrada/Salida: printout, read, readline, open, close
Parada del proceso de inferencia: halt
Asignar valores a variables (en el consecuente): bind
Ejemplo:
(defrule coste-del-envio
(envio ?paquete ?origen ?destino)
(dia-entrega ?paquete hoy)
?coste-inicial<-(coste ?paquete ?precio)
=>
(retract ?coste-inicial)
(bind ?suplemento (read))
(bind ?nuevo-precio (+ ?precio ?suplemento))
(assert (coste-final ?paquete ?nuevo-precio))
(printout t "Coste final es " ?nuevo-precio crlf)
(halt)

)
54

Funciones predefinidas en CLIPS


Funciones de predicado

Funciones campos multislot Funciones matemticas

numberp
floatp
integerp
lexmep
stringp
symbolp
evenp
oddp
multifieldp
eq
neq
=, <>, >, >=, <, <=
or, not, and

create$
nth$
member$
subsetp
delete$
explode$
implode$
subseq$
replace$
insert$
first$
rest$

55

+, -, *, /, div
max, min
abs
float
integer

Se pueden definir ms funciones al


estilo LISP con deffunction
(ver manual)
(deffunction aplicar (?op ?e1 ?e2)
(switch ?op
(case + then (+ ?e1 ?e2))
(case - then (- ?e1 ?e2))
(case * then (* ?e1 ?e2))
(case / then (/ ?e1 ?e2))
(default error)
)
)

Sistemas Basados en Reglas

Tema 2. Sistemas Basados en Reglas


1. Descripcin
2. CLIPS
1. Base de Hechos
2. Base de Reglas
3. Motor de Inferencia
3. Ejemplos

56

CLIPS: Motor de inferencia


Algoritmo de seleccin de reglas aplicables en CLIPS
1. elegir la regla aplicable con mxima prioridad
2. elegir regla segn estrategia de resolucin de conflictos
3. elegir de forma arbitraria

Definir prioridades en CLIPS


asignar un valor de prioridad (entero positivo o negativo) a cada regla
se definen como propiedades de reglas
por defecto su valor es 0
(defrule marca-del-600
"Marca del modelo 600"
(declare (salience 10))
(modelo 600)=> (assert (marca-es SEAT)))

recomendacin: minimizar el uso de prioridades de reglas


57

Motor de inferencia: Estrategias de resolucin del CC


Estrategias de resolucin de conflictos (I):
Depth Strategy (estrategia por defecto)
Una activacin ms reciente se sita por encima de las activaciones con
igual o mayor antigedad

Breadth Strategy
Una activacin ms reciente se sita por debajo de las activaciones con
igual o mayor antigedad

Complexity Strategy
Las nuevas activaciones se sitan por encima de las activaciones con
igual o menor especificidad

Simplicity Strategy
Las nuevas activaciones se sitan por encima de las activaciones con
igual o mayor especificidad

58

Motor de inferencia: Estrategias de resolucin del CC


Especificidad en CLIPS
nmero de comparaciones que deben realizarse en el antecedente de la
regla
Se suma uno a la especificidad por cada:
Comparacin con una constante
Comparacin con una variable previamente asignada (ligada a un valor)
Llamada a funcin que forme parte de una premisa de test o de una
utilizacin del valor de retorno de una funcin (:,=), exceptuando
Llamadas a funciones booleanas (and, or, not)
Llamadas a funciones anidadas

Ejemplo:

Especificidad=5

(defrule ejemplo
(item ?x ?y ?x)
(test (and (numberp ?x) (> ?x (+10 ?y)) (< ?x 100))) =>)
59

CLIPS: Motor de inferencia


Estrategias de resolucin de conflictos (II):
LEX Strategy
Se ordenan los time-tag en orden decreciente y se comparan uno
a uno, hasta encontrar uno mayor que otro
En caso de que no haya el mismo nmero de time-tag se aaden
ceros al final
Si igual entonces se elige la ms especfica
Ejemplo:
Conjunto Conflicto= {R1(f-4), R2(f-2,f-4)}
Para R1: 4, 0 / para R2: 4, 2 / por tanto LEX elige R2

MEA Strategy
parecido a LEX, pero mirando slo el primer patrn que equipara en la
regla (si es el mismo se usa LEX)
Ejemplo: R1

Random Strategy
A cada activacin se le asigna un nmero aleatorio para determinar su
orden en la agenda.
60

Sistemas Basados en Reglas

Tema 2. Sistemas Basados en Reglas

Descripcin
CLIPS
Ejemplos

61

Diseo de BCs
Proceso:
Definir el modelo:
conceptualizar el mundo: qu es importante?
p.e.: bloques, mesas, posicin vertical relativa de los bloques

Definir la ontologa:
Escoger vocabulario
p.e.: block1, clear, on, encima...

Definir conocimiento del dominio:


Codificar el conocimiento general sobre el dominio
p.e.: (defrule R (on ?x ?y) => (assert (encima ?x ?y)))

Definir conocimiento del caso:


Codificar una descripcin del caso especfico (p.e.: estado actual)
p.e.: (deffacts ((On A B) (On B T)))

Hacer consultas
62

Ejemplo: El mundo de los circuitos

Construir una BC que permita contestar preguntas acerca del


comportamiento del siguiente circuito

1
2

xor1

xor2

and2
or1

and1

Circuito C
63

El mundo de los circuitos


Definir el modelo:
caractersticas relevantes
circuitos, puertas binarias, tipos de puertas binarias (and, or, xor), terminales de
puertas/circuitos, conexiones entre terminales, seales, seales en las terminales, ...

caractersticas irrelevantes
rutas de las lneas, posicin de las puertas, tamao de las puertas etc.

Definir la ontologa:
Puertas: patrn no ordenado puerta
Identificacin puerta: slot id-puerta
Tipo de puertas: slot tipo
Terminales: slots id-entrada-1, id-entrada-2, id-salida

Circuito: patrn circuito


Identificacin circuito: slot id-circuito
Terminales: multislots id-entradas, id-salidas

Conexiones entre terminales: patrn ordenado conexin/4


Seales: valores booleanos TRUE y FALSE
Seales en las terminales: patrn no ordenado estado-terminal
64

Declaracin parcial de la Ontologa


Declaracin de la estructura de patrones no-ordenados:
(deftemplate puerta
"Puertas logicas binarias"
(slot id-puerta)
(slot tipo (allowed-symbols
(slot id-entrada-1 (default
(slot id-entrada-2 (default
(slot id-salida-1 (default

AND OR XOR))
e1))
e2))
s1)) )

(deftemplate circuito
"Circuito con multiples entradas y salidas"
(slot
id-circuito)
(multislot id-entradas)
(multislot id-salidas ) )
(deftemplate estado-terminal
"Senyal en terminales de una puerta o circuito"
(slot id-elemento)
(slot id-terminal)
(slot senyal (allowed-symbols TRUE FALSE)) )
65

Conocimiento del dominio


Regla para modelar el comportamiento de una puerta AND:
(defrule logica-AND
(puerta
(id-puerta ?p)
(tipo AND)
(id-entrada-1 ?e1)
(id-entrada-2 ?e2)
(id-salida-1 ?s1) )
(estado-terminal
(id-elemento ?p)
(id-terminal ?e1)
(senyal ?senyal-e1) )
(estado-terminal
(id-elemento ?p)
(id-terminal ?e2)
(senyal ?senyal-e2) )
=>
(assert (estado-terminal
(id-elemento ?p)
(id-terminal ?s1)
(senyal (and ?senyal-e1 ?senyal-e2)) ) ) )
66

Conocimiento del dominio


Regla para modelar el comportamiento de una puerta OR:
(defrule logica-OR
(puerta
(id-puerta ?p)
(tipo OR)
(id-entrada-1 ?e1)
(id-entrada-2 ?e2)
(id-salida-1 ?s1) )
(estado-terminal
(id-elemento ?p)
(id-terminal ?e1)
(senyal ?senyal-e1) )
(estado-terminal
(id-elemento ?p)
(id-terminal ?e2)
(senyal ?senyal-e2) )
=>
(assert (estado-terminal
(id-elemento ?p)
(id-terminal ?s1)
(senyal (or ?senyal-e1 ?senyal-e2)) ) ) )
67

Conocimiento del dominio


Regla para modelar el comportamiento de una puerta XOR:
(defrule logica-XOR
(puerta
(id-puerta ?p)
(tipo XOR)
(id-entrada-1 ?e1)
(id-entrada-2 ?e2)
(id-salida-1 ?s1) )
(estado-terminal
(id-elemento ?p)
(id-terminal ?e1)
(senyal ?senyal-e1) )
(estado-terminal
(id-elemento ?p)
(id-terminal ?e2)
(senyal ?senyal-e2) )
=>
(assert (estado-terminal
(id-elemento ?p)
(id-terminal ?s1)
(senyal (not (eq ?senyal-e1 ?senyal-e2))) ) ) )
68

Conocimiento del dominio


Regla para propagar seales por conexiones:
(defrule logica-conexion
"Si dos terminales estan conectados, entonces
tienen la misma senyal"
(estado-terminal
(id-elemento ?elemento-A)
(id-terminal ?terminal-A)
(senyal ?senyal))
(conexion ?elemento-A ?terminal-A
?elemento-B ?terminal-B)
=>
(assert (estado-terminal
(id-elemento ?elemento-B)
(id-terminal ?terminal-B)
(senyal ?senyal))))
69

Conocimiento del caso


Hechos iniciales para definir los elementos de un circuito concreto:
(deffacts lista-de-elementos
(circuito (id-circuito C)
(id-entradas e1 e2 e3)
(id-salidas s1 s2)
)
(puerta
(id-puerta X1)
(tipo XOR))
(puerta
(id-puerta X2)
(tipo XOR))
(puerta
(id-puerta A1)
(tipo AND))
(puerta
(id-puerta A2)
(tipo AND))
(puerta
(id-puerta O1)
(tipo OR )) )

70

Conocimiento del caso


Hechos iniciales para definir las conexiones concretas entre elementos:
(deffacts lista-de-conexiones
(conexion C e1 X1 e1)
(conexion C e1 A1 e1)
(conexion C e2 X1 e2)
(conexion C e2 A1 e2)
(conexion C e3 A2 e1)
(conexion C e3 X2 e2)
(conexion X1 s1 X2 e1)
(conexion X1 s1 A2 e2)
(conexion A1 s1 O1 e2)
(conexion A2 s1 O1 e1)
(conexion X2 s1 C s1)
(conexion O1 s1 C s2) )

Regla para completar conexiones:

(defrule conexion
"La conexion es conmutativa"
(conexion ?p1 ?t1 ?p2 ?t2)
=>
(assert (conexion ?p2 ?t2 ?p1 ?t1)) )
71

Conocimiento del caso


Regla para leer las seales iniciales en las entradas:
(defrule leer-entradas
(circuito (id-circuito ?c)
(id-entradas $? ?t $?))
=>
(printout t "Circuito: " ?c
" Entrada: " ?t
" Senyal: " )
(bind ?senyal (read))
(assert (estado-terminal
(id-elemento ?c)
(id-terminal ?t)
(senyal ?senyal)) ) )

72

Conocimiento del caso

Regla para escribir las seales deducidas en las salidas:


(defrule imprimir-salidas
(estado-terminal
(id-elemento ?c)
(id-terminal ?t)
(senyal ?senyal))
(circuito (id-circuito ?c)
(id-salidas $? ?t $?))
=>
(printout t "Circuito: " ?c
"
Salida: " ?t
"
Senyal: " ?senyal crlf) )

73

Realizar Consultas

Preguntar por las salidas que producen ciertas entradas:


Consulta a la BC
CLIPS> (reset)
CLIPS> (run)
Circuito: C Entrada: e1
Circuito: C Entrada: e2
Circuito: C Entrada: e3

Senyal: TRUE
Senyal: TRUE
Senyal: FALSE

Respuesta:
Circuito: C
Circuito: C

Senyal: FALSE
Senyal: TRUE

Salida: 11
Entrada: e2

74

Ejercicio
Suponga que se ha cargado la anterior Base de Conocimiento en CLIPS, y
que se ha configurado para que aplique la estrategia breadth (amplitud).
Suponga tambin que todos los hechos sobre conexiones se encuentran ya
en la MT, y que se han ledo ya los seales en los terminales de entradas,
dando lugar a estos hechos
(estado-terminal
(estado-terminal
(estado-terminal
(estado-terminal
(estado-terminal
(estado-terminal

(id-elemento
(id-elemento
(id-elemento
(id-elemento
(id-elemento
(id-elemento

A2)
X2)
X1)
A1)
X1)
A1)

(id-terminal
(id-terminal
(id-terminal
(id-terminal
(id-terminal
(id-terminal

e1)
e2)
e2)
e2)
e1)
e1)

(senyal
(senyal
(senyal
(senyal
(senyal
(senyal

TRUE)
TRUE)
FALSE)
FALSE)
TRUE)
TRUE)

Simule algunos ciclos de razonamiento de CLIPS. Qu se escribira en


en pantalla? Cul es la funcionalidad del circuito C?
75

Modelar acciones
Para modelar la funcin expandir:
un estado se caracteriza por un hecho en la memoria de trabajo
reglas modelan acciones:
el antecedente representa las precondiciones
el consecuente modela el resultado de la accin

al disparar todas las reglas activadas por un estado, se obtienen los estados
sucesores
Implementacin 1 (destructiva):
la regla borra el estado que la activaba, y slo deja el estado actual en la
memoria
Problema:
no queda traza de los estados visitados
al no mantener los estados hermanos en la MT, no se puede dar marcha atrs

76

Modelar acciones
Implementacin 2:
se mantienen todos los estados en la memoria (rbol de bsqueda)
las reglas aplicables en cada momento se encuentran en la agenda
(conjunto conflicto)
completo con estrategia breadth (amplitud)
Ejemplo:
dos jarras, con una capacidad de 3 litros (llamada Tres), y 4 litros (llamada Cuatro).
inicialmente Tres y Cuatro estn vacas, y se intenta que haya 2l de agua en Cuatro
cualquiera de ellas puede llenarse con el agua de un grifo G.
el contenido tanto de Tres como de Cuatro puede vaciarse en una pila P.
es posible echar todo el agua de una jarra a la otra., pero no se dispone de
dispositivos de medicin adicionales.

77

Modelar acciones
Llenar jarras del grifo
(defrule llenar-cuatro-del-grifo
?nodo <- (situacion
(litros-en-cuatro ?cuatro)
(litros-en-tres ?tres) )
(test (< ?cuatro 4))
=>
(assert (situacion (padre ?nodo)
(litros-en-cuatro 4)
(litros-en-tres ?tres))) )
(defrule llenar-tres-del-grifo
?nodo <- (situacion
(litros-en-tres ?tres) )
(test (< ?tres 3))
=>
(duplicate ?nodo (padre ?nodo)
(litros-en-tres 3)) )

78

Modelar acciones
Vaciar jarras en la pila
(defrule vaciar-cuatro-en-pila
?nodo <- (situacion
(litros-en-cuatro ?cuatro) )
(test (> ?cuatro 0))
=>
(duplicate ?nodo (padre ?nodo)
(litros-en-cuatro 0)) )
(defrule vaciar-tres-en-pila
?nodo <- (situacion
(litros-en-tres ?tres) )
(test (> ?tres 0))
=>
(duplicate ?nodo (padre ?nodo)
(litros-en-tres 0)) )

79

Modelar acciones
Llenar una jarra de la otra

(defrule llenar-cuatro-desde-tres
?nodo <- (situacion
(litros-en-cuatro ?cuatro)
(litros-en-tres ?tres) )
(test (> (+ ?cuatro ?tres) 4))
(test (< ?cuatro 4))
=>
(assert (situacion (padre ?nodo)
(litros-en-cuatro 4)
(litros-en-tres (- ?tres (- 4 ?cuatro))))) )

80

Modelar acciones
Llenar una jarra de la otra

(defrule llenar-tres-desde-cuatro
?nodo <- (situacion
(litros-en-cuatro ?cuatro)
(litros-en-tres ?tres) )
(test (> (+ ?cuatro ?tres) 3))
(test (< ?tres 3))
=>
(bind ?nuevo-cuatro (- ?cuatro (- 3 ?tres)))
(assert (situacion (padre ?nodo)
(litros-en-cuatro ?nuevo-cuatro)
(litros-en-tres 3))) )

81

Modelar acciones
Vaciar una jarra en la otra:
(defrule vaciar-tres-en-cuatro
?nodo <- (situacion
(litros-en-cuatro ?cuatro)
(litros-en-tres ?tres) )
(test (<= (+ ?cuatro ?tres) 4))
(test (> ?tres 0))
=> (assert (situacion (padre ?nodo)
(litros-en-cuatro (+ ?tres ?cuatro))
(litros-en-tres 0)) ) )
(defrule vaciar-cuatro-en-tres
?nodo <- (situacion
(litros-en-cuatro ?cuatro)
(litros-en-tres ?tres) )
(test (<= (+ ?cuatro ?tres) 3))
(test (> ?cuatro 0))
=> (assert (situacion (padre ?nodo)
(litros-en-cuatro 0)
(litros-en-tres (+ ?tres ?cuatro)) ) ) )
82

Ejercicio

Representacin de acciones con reglas:


Aunque el nmero de estados para el problema de las
jarras el relativamente pequeo, existen muchos ciclos,
por lo que se genera un rbol de bsqueda bastante
grande
Cmo se podran modificar las reglas para evitar ciclos
simples?
Cmo se podran modificar las reglas para evitar todos
los ciclos?

83

Modelar cambio
Cmo representar acciones en el mundo de los bloques ?

C
A B

B
C A

C A B

A
B
C

Problema:
estados parcialmente caracterizados
slo algunas propiedades del estado son relevantes
no se puede definir de antemano un deftemplate para estados

Solucin:
hechos ordenados: asignar un nombre a cada estado, y aadirlo como
argumento a cada propiedad
p.e.: (on C A S0), (on A T S0), (on B T S0), (clear C S0),
(clear B S0),(clear T S0)
84

Modelar cambio: Axiomas de efecto


Reglas de efecto:
describir qu propiedades son relevantes para una accin
el antecedente describe las precondiciones para que se pueda realizar la
accin
el consecuente describe las nuevas propiedades (las que no se cumplen en
el estado actual S1, pero s en el estado resultante S2)
(defrule efecto-move
(clear ?x ?s1)
(clear ?z&~?x ?s1)
(on ?x ?y&~?z ?s1)
=>
(bind ?s2 (gensym*))
(assert (on ?x ?z ?s2))
(assert (clear ?y ?s2))
(assert (clear T ?s2))
(assert (move ?s1 ?s2 ?x ?y ?z)) )
85

Modelar cambio: Axiomas de marco


Reglas de marco:
Problema:
las acciones slo cambian algunas propiedades
la mayora de las propiedades no es afectada por una accin
de momento no se puede deducir que despus de poner C de A
sobre T en el estado s0, se cumple (on A T S1)

Solucin:
describir qu propiedades no cambian con una accin

Reglas de marco:
reglas que indican qu propiedades no cambian
aqu: una reglas de marco para cada par propiedad/accin

86

Modelar cambio: Axiomas de marco

Regla de marco para clear:


(defrule marco-move-1
(move ?s1 ?s2 ?x ?y ?z)
(clear ?u&~?z ?s1)
=>
(assert (clear ?u ?s2)) )

Regla de marco para on:


(defrule marco-move-2
(move ?s1 ?s2 ?u ?v ?z)
(on ?x&~?u ?y ?s1)
=>
(assert (on ?x ?y ?s2)) )

87

Ejemplo de ejecucin (Breadth): ciclo 0


Memoria de Trabajo
f-0
f-1
f-2
f-3
f-4
f-5

(initial-fact)
(on B T S0)
(on A B S0)
(on C A S0)
(clear C S0)
(clear T S0)

C
A
B

Agenda:
0 efecto-move: f-4,f-5,f-3

88

move(C,A,T)

Ejemplo de ejecucin: ciclo 1


Se ejecuta la regla efecto: cambios producidos por move(C,A,T)
Memoria de Trabajo
f-0
f-1
f-2
f-3
f-4
f-5

(initial-fact)
(on B T S0)
(on A B S0)
(on C A S0)
(clear C S0)
(clear T S0)

f-6
f-7
f-8
f-9

(on C T gen1)
(clear A gen1)
(clear T gen1)
(move S0 gen1 C A T)

Agenda:
0 marco-move-1: f-9,f-4
0 marco-move-2: f-9,f-1
0 marco-move-2: f-9,f-2

89

clear(C) persiste en gen1


on(B,T) persiste en gen1
on(A,B) persiste en gen1

Ejemplo de ejecucin: ciclo 2


Se ejecuta la regla marco: clear(C) persiste despus de move(C,A,T)
Memoria de Trabajo
f-0
f-1
f-2
f-3
f-4
f-5

(initial-fact)
(on B T S0)
(on A B S0)
(on C A S0)
(clear C S0)
(clear T S0)

f-6 (on C T gen1)


f-7 (clear A gen1)
f-8 (clear T gen1)
f-9 (move S0 gen1 C A T)
f-10 (clear C gen1)

Agenda:
0 marco-move-2: f-9,f-1
0 marco-move-2: f-9,f-2
0 efecto-move: f-10,f-7,f-6

90

on(B,T) persiste en gen1


on(A,B) persiste en gen1
move(C,T,A) en gen1

Ejemplo de ejecucin: ciclo 3


Se ejecuta la regla efecto: on(B,T) persiste despus de move(C,A,T)
Memoria de Trabajo
f-0
f-1
f-2
f-3
f-4
f-5

(initial-fact)
(on B T S0)
(on A B S0)
(on C A S0)
(clear C S0)
(clear T S0)

f-6 (on C T gen1)


f-7 (clear A gen1)
f-8 (clear T gen1)
f-9 (move S0 gen1 C A T)
f-10 (clear C gen1)
f-11 (on B T gen1)

Agenda:
0 marco-move-2: f-9,f-2
0 efecto-move: f-10,f-7,f-6

91

on(A,B) persiste en gen1


move(C,T,A) en gen1

Ejemplo de ejecucin: ciclo 4


Se ejecuta la regla efecto: on(A,B) persiste despus de move(C,A,T)
Memoria de Trabajo
f-0
f-1
f-2
f-3
f-4
f-5

(initial-fact)
(on B T S0)
(on A B S0)
(on C A S0)
(clear C S0)
(clear T S0)

f-6 (on C T gen1)


f-7 (clear A gen1)
f-8 (clear T gen1)
f-9 (move S0 gen1 C A T)
f-10 (clear C gen1)
f-11 (on B T gen1)
f-12 (on A B gen1)

Agenda:
0 efecto-move: f-10,f-7,f-6
0 efecto-move: f-7,f-10,f-12
0 efecto-move: f-7,f-8,f-12

...
92

move(C,T,A) en gen1
move(A,B,C) en gen1
move(A,B,T) en gen1

Ejemplo de ejecucin: ciclo 5


Se ejecuta la regla efecto: cambios producidos por move(C,T,A)
Memoria de Trabajo
f-0
f-1
f-2
f-3
f-4
f-5

(initial-fact)
(on B T S0)
(on A B S0)
(on C A S0)
(clear C S0)
(clear T S0)

f-6 (on C T gen1)


f-13 (on C A gen2)
f-7 (clear A gen1)
f-14 (clear T gen2)
f-8 (clear T gen1)
f-15 (move gen1 gen2
f-9 (move S0 gen1 C A T)
C T A)
f-10 (clear C gen1)
f-11 (on B T gen1)
f-12 (on A B gen1)

Agenda:
0
0
0
0
0
0

efecto-move: f-7,f-10,f-12
efecto-move: f-7,f-8,f-12
marco-move-1: f-15,f-8
marco-move-1: f-15,f-10
marco-move-2: f-15,f-11
marco-move-2: f-15,f-12
93

move(A,B,C) en gen1
move(A,B,T) en gen1
clear(T) persiste en gen1
clear(C) persiste en gen1
on(B,T) persiste en gen1
on(A,B) persiste en gen1

...

Potrebbero piacerti anche