Está en la página 1de 44

INTEGRANTES:

CCACCA BELIZARIO, JHON ALBERT


DEL CARPIO, MARCO
FLORES LAPA, GERSON JAIR JONATAN

PROFESOR:
DAVID MAURICIO
Una regla es una expresin del tipo

Si antecedente, entonces consecuente

Si el antecedente es cierto para algunos hechos almacenados en la lista de
hechos, independientemente de lo que le ocurran a los dems, entonces pueden
realizarse las acciones especificadas en el consecuente.

SINTAXIS:
(defrule <nombre-regla> [<comentario>]
[<propiedades>] ;
<elemento-condicional>* ;
=>
<acciones>*) ;

(Construccin de reglas)
EJEMPLO:
Imagine que usted considera la siguiente reglas: Si est lloviendo y no tengo
paraguas, entonces me mojar.
Si quiere implementarla en CLIPS deber de escribir algo similar a lo que se
muestra:


1: CLIPS> (defrule Lluvia "Mi primera regla"
2: (EstaLloviendo si)
3: (TengoParaguas no)
4: =>
5: (MeMojare si))
6: CLIPS>
(Construccin de reglas)
Una regla con el mismo nombre que otra, hace que la regla anterior con el mismo
nombre sea eliminado, incluso si la nueva definicin tiene errores en ella.
La flecha (=>) separa las condiciones de las acciones.
No hay lmite para el nmero de elementos condicionales o acciones de una regla.
Las acciones se realizan de forma secuencial si, y slo si, todos los elementos
condicionales estn satisfechos.
Puede no haber ningn elemento condicional en el antecedente y se usa
automticamente (initial-fact)como elemento condicional.
(defrule HolaMundo
(initial-fact)
=>
(printout t "Hola Mundo"crlf))
Si no hay acciones, el estado puede ser activado y encendido, pero no pasara nada.

(Definicin de reglas)
Ejemplo:

(defrule regla-ejemplo " Qu pasa si usamos mal el refrigerador "
(refrigerador luz encendida)
(refrigerador puerta abierta)
=>
(assert (refrigerador comida estropeada)))


(Definicin de reglas)
Una vez que se ha especificado el conocimiento de un problema mediante un conjunto
de reglas y una lista de hechos, CLIPS est listo para aplicar las reglas.
El conocimiento (reglas) y los datos (hechos e instancias) se separan, y el motor de
inferencia proporcionada por clips es utilizado para aplicar el conocimiento a los datos.

Se dice que una regla se activa cuando las precondiciones de una reglan se
satisfacen. Es decir, casan o encajan con algunos hechos de la memoria de trabajo.
Notar que una regla puede activarse para distintos conjuntos de hechos (hay distintas
razones
para que la regla se active). En este caso, cada posible activacin de la regla se llama
instancia de una regla.
Se dice que una regla est desactivada si no est activada. Es decir, no existe
ninguna instancia de una regla.

(Definicin de reglas)
Se dice que una regla se dispara si se ha optado por realizar las acciones
(consecuentes) de una regla. Notar que es prerrequisito que la regla est activada.
Se conoce por agenda a la parte del sistema que contiene una lista de las instancias
de las reglas activadas. Es decir, una regla aparecer tantas veces en la agenda como
instancias existan de la regla.
Una estrategia de resolucin de conflictos es el conjunto de criterios que permiten
determinar, en el caso de que haya varias reglas en la agenda (varias reglas activas),
qu regla debe dispararse.
Se llama prioridad de una regla a un valor numrico asociado a la regla que indica la
importancia de la regla, y por tanto la prioridad con que debe ejecutarse. Cuanto
mayor es el valor, mayor es la prioridad. Notar que todas las instancias de una regla
tendrn la misma prioridad.
CLIPS permite establecer valores de prioridad entre los valores -10000 y +10000.
Por defecto, todas las reglas tienen el valor de prioridad 0.

(Definicin de reglas)
El ciclo bsico de ejecucin de reglas es el siguiente:

1. Las reglas se ejecutan con el comando (run [<mximo>]).









2. Si se ha alcanzado el mximo de disparos, la ejecucin se detiene.
3. Se actualiza la agenda segn la lista de hechos.



4. Se selecciona la instancia de regla a ejecutar de acuerdo a prioridades y estrategia de
resolucin de conflictos.
5. Se dispara la instancia seleccionada, se incrementa nmero disparos y se elimina de la agenda.
6. Volver al paso 2.


(Definicin de reglas)
Es decir, a la luz de los hechos iniciales y deducidos en la aplicacin de reglas previas, pueden activarse nuevas reglas o reglas que
anteriormente estaban activas pueden ahora desactivarse.
Las reglas activas nuevas se aadirn a la agenda y aquellas que, estando en la agenda, ahora se desactivan son eliminadas de la agenda.

Si <mximo> no se especifica se ejecutan todas las reglas hasta que no haya mas reglas que aplicar. Si se especifica el
parmetro, se ejecutarn como mximo tantas reglas como el valor <mximo>.


Definicin de reglas y hechos:






Entorno Clips tras inicializar:













Entorno Clips tras ejecutar:
La agenda es la lista de todas las reglas que tienen sus condiciones satisfechas.
Cada mdulo tiene su propia agenda. La agenda de actos similares a una pila (la regla superior de
la agenda es la primera en ser ejecutada).
Cuando una norma es recin activada, su colocacin en el programa se basa (en orden) en los
siguientes factores:

a) Las normas recin activados se colocan por encima de todas las reglas de menor relevancia y
por debajo de todas las reglas de mayor relevancia.

b) Entre las reglas de igual relevancia, la actual estrategia de resolucin de conflictos se utiliza
para determinar la colocacin entre las dems normas de igual relevancia.

c) Si una regla se activa (junto con varias otras normas) por la misma afirmacin o retraccin de
unos datos y los pasos a y b son incapaces de especificar un orden, entonces la regla es
arbitraria ordenndolas en relacin con las otras reglas con el que se activ. Al respecto, el
orden en el que se definen las reglas tiene un efecto arbitrario en la resolucin de conflictos.

(Estrategias de resolucin de conflictos)
CLIPS ofrece siete estrategias de resolucin de conflictos: la profundidad, la amplitud, la
sencillez, la complejidad, lex, mea, y al azar. La estrategia por defecto es la profundidad. La
estrategia actual se puede establecer con el comando set-estrategia (que reordenar la agenda sobre
la base de la nueva estrategia).

ESTRATEGIA PROFUNDIDAD

Reglas recin activadas se colocan por encima de todas las reglas de la misma
relevancia.

Por ejemplo, dado que hecho-a activa la regla-1 y la regla-2 y hecho-b activa la regla-3 y la
regla-4, entonces si el hecho-a es acertada antes del hecho-b, la regla-3 y la regla-4 estarn
por encima de la regla-1 y la regla-2 en la agenda. Sin embargo, la posicin de la regla-1 en
relacin con la regla-2 y la regla-3 en relacin con la regla-4 ser arbitraria.

(Estrategias de resolucin de conflictos)
ESTRATEGIA AMPLITUD

Reglas recin activadas se colocan por debajo de todas las reglas de la misma relevancia.

Por ejemplo, dado que hecho-a activa la regla-1 y la regla-2 y hecho-b activa la regla-3 y la regla-
4, entonces si el hecho-a es acertada antes del hecho-b, la regla-1 y la regla-2 estarn por encima
de la regla-3 y la regla-4 en la agenda. Sin embargo, la posicin de la regla-1 en relacin con la
regla-2 y la regla-3 en relacin con la regla-4 ser arbitraria.

ESTRATEGIA SIMPLICIDAD

Entre las normas de la misma prominencia, reglas recientemente activadas se colocan por
encima de todas las activaciones de reglas con igual o mayor especificidad.




(Estrategias de resolucin de conflictos)
La especificidad de una norma est determinada por el nmero de comparaciones que se deben
realizar en las condiciones de la regla. Cada comparacin con una constante o variables
previamente consolidado aade uno a la especificidad. Cada llamada a la funcin realizada en las
condiciones de un regla como parte de la :, =, o la prueba de elemento condicional aade una a la
especificidad. Las funciones booleano y, o, y no, no aumentan la especificidad de una regla, pero
si sus argumentos.
Por ejemplo:
(defrule ejemplo
(item ?x ?y ?x)
(test (and (numberp ?x) (> ?x (10 + ?y)) (< ?x 100)))
=>)
la siguiente regla tiene una especificidad de 5.
La comparacin para el elemento constante, la comparacin de ?X a su anterior
vinculante, y las llamadas a las funciones numberp, <, y > y cada complemento suman uno a la
especificidad que da un total de 5.
Las llamadas a las funciones and y + no se agregan a la especificidad de la regla.




(Estrategias de resolucin de conflictos)
ESTRATEGIA COMPLEJIDAD

Entre las normas de la misma especificidad, reglas recientemente activadas se colocan por
encima de todas las activaciones de reglas con igual o menor especificidad.

ESTRATEGIA LEX

Entre las reglas de la misma relevancia, nuevas reglas activadas se colocan utilizando la
estrategia de OPS5 del mismo nombre.

Primero lo reciente de las entidades de patrones que activan la regla se utiliza para determinar
dnde colocar la activacin. Todos los hechos y la instancia se marca internamente con una
"etiqueta de tiempo" para indicar su carcter reciente relativo con respecto a cada otro hecho e
instancia en el sistema.





(Estrategias de resolucin de conflictos)

Las entidades de patrones asociados con cada norma de activacin se clasifican en orden
descendente de determinar la ubicacin. Una activacin con una entidad patrn ms reciente se
coloca antes de activaciones con entidades de patrones menos recientes.
Para determinar el orden de colocacin de las dos activaciones, comparar las etiquetas de tiempo
segn de las dos activaciones una por una comenzando por las ms grandes etiquetas de tiempo.
La comparacin debe continuar hasta que una etiqueta de tiempo de activacin es mayor que la
otra correspondiente identificacin de la fecha de activacin. La activacin con la mayor etiqueta
de tiempo se coloca antes de la otra la activacin de la agenda.
Si una activacin tiene ms entidades patrn que la otra activacin y las etiquetas de tiempo en
comparacin son todos idnticos, entonces se coloca la activacin con ms etiquetas de tiempo
antes de que la otra activacin en la agenda.
Si dos activaciones tienen exactamente la misma experiencia reciente, la activacin con la mayor
especificidad se coloca por encima de la activacin con la menor especificidad.





(Estrategias de resolucin de conflictos)
ESTRATEGIA MEA

Entre las reglas de la misma relevancia, nuevas reglas activadas se colocan utilizando la
estrategia de OPS5 del mismo nombre.

En primer lugar la etiqueta de tiempo de la entidad patrn asociado con el primer patrn se utiliza para
determinar dnde colocar la activacin. Una activacin hace que la etiqueta de tiempo del primer patrn sea
mayor que la etiqueta de tiempo de otras activaciones, el primer patrn se coloca antes que otra activacin de la
agenda. Si ambas activaciones tienen la misma etiqueta de tiempo asociado con el primer patrn, entonces la
estrategia de LEX es utilizado para determinar la colocacin de la activacin

ESTRATEGIA RANDOM

Cada activacin se le asigna un nmero aleatorio que se utiliza para determinar su
colocacin entre las activaciones de igual relevancia.

Este nmero aleatorio se conserva cuando se cambia la estrategia de manera que el mismo ordenamiento se
reproduce cuando se vuelve a seleccionar la estrategia aleatoria.

(Estrategias de resolucin de conflictos)
Sintaxis de LHS
El modo de representar conocimiento heurstico en CLIPS es
mediante reglas. Una regla se compone de antecedente (o parte
izquierda de la regla) y consecuente (o parte derecha de la
regla).
El LHS (antecedente) de la regla consta de un conjunto de
elementos condicionales (EC) que deben satisfacerse para que
la regla se aplique (para que se realicen las acciones que dice el
consecuente).

Sintaxis
Hay ocho tipos de elementos condicionales:

EC patron, EC test, ED and, EC or, EC not, EC exists, EC forall, EC logical

Sintaxis de LHS
El elemento condicional ms simple es un patrn. Un patron es
una restriccion que debe verificar sobre los valores de algunos
atributos (casillas o campos de la plantilla) de una entidad
(hecho o instancia). Cuando una entidad verifica la restriccion
se dice que se ajusta al patron.

(deffacts hechos-iniciales
(estacion primavera))
(defrule posibilidades-primaverales
(estacion primavera)
=>
(assert (destino campo)
(destino playa)))
patrn
pattern
Como se dijo anteriormente los elementos mas bsicos son los
llamados patrones, que describen constantes, variables y
restricciones hechos que pueden estar presentes en la memoria de
trabajo.

Restriccin para hechos ordenados
(<restriccin-1> ... <restriccin-n>)

Restriccin para hechos no ordenados
(<nombre-deftemplate>
(<nombre-casilla-1> <restriccin-1>)
.
.
.
(<nombre-casilla-n> <restriccin-n>)

Ejemplo
Literales
La restriccin mas bsica que puede utilizarse en un elemento condicional
es aquella en la que se exige un valor exacto para una casilla de un hecho.
Estas restricciones reciben el nombre de restricciones literales.
Este ejemplo usa la data-facts deffacts mostrados anteriormente


(reset)
(defrule ImprimePerez
(Persona (apellido Perez))
=>
(printout t "Existe al menos un Perez" crlf))
COMODIN
Indican que cualquier valor en esa posicin de la entidad
patrn es vlido para emparejar con la regla.
Tipos:
Comodn monocampo: ?
(empareja con 1 campo)
Comodn multicampo: $?
(empareja con 0 o ms campos)
<restriccin> ::= <constante> | ? | $?
EJEMPLO
(reset)

(defrule Saludo
(Persona (nombre ?))
=>
(printout t "hola" crlf))

(run)
Restricciones con comodines
Las restricciones multicampo y literal se pueden combinar para especificar restricciones
complejas

(dato $? AMARILLO $?)

Emparejara con:
(dato AMARILLO)
(dato AMARILLO rojo azul)
(dato rojo AMARILLO azul)

VARIABLES UNICAMPO Y
MULTICAMPO
Almacena el valor de un campo para despus utilizarlo en otros
elementos condicionales o consecuente de la regla.
Tipos:
Variable monocampo: ?<nombre-variable>
Variable multicampo: $?<nombre-variable>
<restriccin> ::= <constante> | ? | $? |
<variable-monocampo> |
<variable-multicampo>
<variable-monocampo> ::= ?<nombre-variable>
<variable-multicampo> ::= $?<nombre-variable>
EC patrn
Restricciones con
variables
Cuando la variable aparece por 1 vez, acta como un
comodn, pero el valor queda ligado al valor del campo.
Si vuelve a aparecer la variable, ahora debe de coincidir
con el valor ligado.
La ligadura slo se cumple dentro del alcance de la regla.
Ejemplo
(defrule ImprimeNombre
(Apellido-a-Buscar ?x)
(Persona (nombre ?y) (apellido ?x))
=>
(printout t ?y " -- se apellida -- " ?x crlf))
CLIPS> (reset)
CLIPS> (assert (Apellido-a-Buscar Perez))
==> Activation 0 ImprimeNombre: f-6,f-1
==> Activation 0 ImprimeNombre: f-6,f-3
<Fact-6>
CLIPS> (run)
Conectores
Permiten unir restricciones y variables
Utilizan los conectores lgicos & (and), | (or), ~ (not)

<restriccin> ::= ? | $? | <restriccin-conectiva>
<restriccin-conectiva>
::= <restriccin-simple> |
<restriccin-simple> & <restriccin-conectiva> |
<restriccin-simple> | <restriccin-conectiva>
<restriccin-simple> ::= <trmino> | ~<trmino>
<trmino> ::= <constante> |
<variable-monocampo> |
<variable-multicampo>
Restricciones
conectivas: Precedencia
Orden de precedencia: ~, &, |
Excepcin: si la primera restriccin es una variable
seguida de la conectiva &, la primera restriccin (la
variable) se trata como una restriccin aparte
?x&rojo|azul
equivale a
?x&(rojo|azul)
Ejemplo
(defrule NoPuedoCruzar
(Semaforo ~verde)
=>
(printout t "No Puedo Cruzar" crlf))

(defrule PuedoCruzar
(Semaforo ~rojo&~amarillo)
=>
(printout t "Puedo Cruzar" crlf))
(defrule MeAtrevoACruzar
(Semaforo amarillo|verde)
=>
(printout t "Me Atrevo a Cruzar" crlf))

(assert (Semaforo rojo))
(run)
(retract 0)
(assert (Semaforo amarillo))
(run)
(retract 1)
(assert (Semaforo verde))
(run)
(assert (Semaforo amarillo))
(run)
(assert (Semaforo rojo))
(run)

Restricciones conectivas
con variables
(defrule NoPuedoCruzar
(Semaforo ?x&~verde)
=>
(printout t "(" ?x ") No Puedo Cruzar" crlf))

(defrule PuedoCruzar
(Semaforo ?x&~rojo&~amarillo)
=>
(printout t "(" ?x ") Puedo Cruzar" crlf))

(defrule MeAtrevoACruzar
(Semaforo ?x&amarillo|verde)
=>
(printout t "(" ?x") Me Atrevo a Cruzar" crlf))
(assert (Semaforo rojo))
(run)
(retract 0)
(assert (Semaforo amarillo))
(run)
(retract 1)
(assert (Semaforo verde))
(run)
(assert (Semaforo amarillo))
(run)
(assert (Semaforo rojo))
(run)

Variables globales
(defglobal
?*x* = 3
?*y* = ?*x*
?*z* = (+ ?*x* ?*y*)
?*q* = (create$ a b c))
(defrule ReconocimientoPatronConVarGlobal
(Dato ?*x*)
=>
)
(defrule RestriccionPredicadoConVarGlobal
(Dato ?y&:(> ?y ?*x*))
=>
)
(defrule ReglaIlegal
(fact ?*x*)
=>)

(Restricciones de predicado)
El propsito de esta restriccin es admitir o rechazar un campo
dependiendo del valor de una expresin Booleana.

Un predicado restriccin se invoca despus de los dos puntos (:)
con una llamada a la funcin apropiada de un predicado funcin.

Sntaxis Bsica:
: <function-call>
Sntaxis:
<term :: = <constante> |
<single-field-variable> |
<multifield-variable> |
: <function-call>

CLIPS> (clear)
CLIPS>
(defrule ValidarNumero
(data ?x&:(numberp ?x))
=>)
CLIPS> (assert (data 12) (data 28) (data azul))
<Fact-3>
CLIPS> (agenda)
0 ValidarNumero: f-2
0 ValidarNumero: f-1
For a total of 2 activations.
CLIPS>

CLIPS> (clear)
CLIPS>
(defrule MayorDeDos
(data $?x&:(> (length$ ?x) 2))
=>)
CLIPS> (assert (data 4) ; f-1
(data 8 7) ; f-2
(data 3 1 5)) ; f-3
<Fact-3>
CLIPS> (agenda)
0 MayorDeDos: f-3
For a total of 1 activation.
CLIPS>


CLIPS> (clear)
CLIPS> (deftemplate ParDeNumeros (slot x) (slot y))
CLIPS>
(defrule NumeroDoble
(ParDeNumeros (x ?x) (y =(* 2 ?x)))
=>)
CLIPS> (assert (ParDeNumeros (x 2) (y 4)) ; f-1
(ParDeNumeros (x 3) (y 9))) ; f-2
<Fact-2>
CLIPS> (agenda)
0 NumeroDoble : f-1
For a total of 1 activation.
CLIPS>
Pattern-Matching with Object Patterns
(Coincidencia de modelos con los patrones de objetos)
Las instancias de clases definidas por el usuario recientemente puede
ser un patrn de concordancia en el lado izquierdo de reglas de un
defrule.

Los patrones slo pueden igualar los objetos para los que se define la
clase ms especfica del objeto antes del patrn y que son en el mbito
del mdulo actual. Cualquier clase que puedan tener objetos que
coinciden con el patrn no podrn ser borrados o modificados hasta que
se elimine el patrn.

Sntaxis:
<object-pattern> :: = (objeto <attribute-constraint> *)
<attribute-constraint> :: = (es-un <constraint>) |
(nombre <constraint>) |
(<slot-name> <constraint> *)


(defrule ValorDePartida-1
(object (ancho 10)
=>)

(defrule ValorDePartida-2
(object (ancho ?x&:(> ?x 20)))
=>)

(defrule ValorDePartida-3
(object (ancho?x) (alto?x))
=>)
Pattern-Addresses
(Patrn de direcciones)
Ciertas acciones RHS, como retroceder y deshacer un hecho,
operan en toda la CE-patrn. Para indicar que un hecho actuar
sobre una variable que puede estar unido a la direccin del
hecho o direccin de la instancia de un patrn de CE.

Es decir, las direcciones de datos y direcciones de instancia con
destino en la LHS de una regla se conocen como direcciones
de patrones.

Sntaxis:

<assigned-pattern-CE> :: = <variable-symbol> <-? <pattern-
CE>


(defrule comparar-2-hechos
?f1 <- (color ~red)
?f2 <- (color ~green&:(neq ?f1 ?f2))
=>
(printout t Regla disparada de diferentes hechos" crlf))

TEST CONDITIONAL ELEMENT
(Prueba de elemento condicional)
Las restricciones de campo utilizados en patrones ECs permiten limitaciones
muy descriptivos que deben aplicarse a los patrones.
Capacidad adicional se proporciona con el elemento de prueba condicional.
Las funciones externas tambin pueden ser llamados para comparar las
variables como el usuario desee.

Sntaxis:
<test-CE> ::= (test <function-call>)

(Restricciones de retorno)
Con esta restriccin es posible utilizar el valor de retorno de una
funcin externa para limitar el valor de un campo.

La restriccin de valor de retorno (=) permite al usuario llamar a las
funciones externas desde el interior de un patrn.

Sntaxis Bsica:
: <function-call>
Sntaxis:
<term :: = <constante> |
<single-field-variable> |
<multifield-variable> |
: <function-call> |
= <function-call>


CLIPS> (clear)
CLIPS>
(defrule DiferenciaNoNegativa
(data ?x)
(value ?y)
(test (>= (abs (- ?y ?x)) 3))
=>)
CLIPS> (assert (data 6) (value 9))
<Fact-2>
CLIPS> (agenda)
0 DiferenciaNoNegativa : f-1,f-2
For a total of 1 activation.
CLIPS>

Gracias

También podría gustarte