defrule construct ia

Upload: gerson-flores-lapa

Post on 09-Oct-2015

34 views

Category:

Documents


1 download

DESCRIPTION

defrule para clips, una guia y ejemplos

TRANSCRIPT

Defrule Construct

DEFRULE CONSTRUCTINTEGRANTES:CCACCA BELIZARIO, JHON ALBERTDEL CARPIO, MARCO FLORES LAPA, GERSON JAIR JONATAN

PROFESOR:DAVID MAURICIOUna 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 [][] ; * ; =>*) ;

Defrule Construct(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>Defrule Construct(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.Defining rules(Definicin de reglas)Ejemplo:

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

Defining rules(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 razonespara 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.Defining rules(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.Defining rules(Definicin de reglas)El ciclo bsico de ejecucin de reglas es el siguiente:

Las reglas se ejecutan con el comando (run []).

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

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

Defining rules(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 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 .

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:

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.

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.

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.Conflict resolution strategies(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.Conflict resolution strategies(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.

Conflict resolution strategies(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 anteriorvinculante, y las llamadas a las funciones numberp, 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.

Conflict resolution strategies(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.

Conflict resolution strategies(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.

Conflict resolution strategies(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.Conflict resolution strategies(Estrategias de resolucin de conflictos)Sintaxis de LHSEl 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 LHSEl 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)))Elemento Condicional patrnElemento Condicional patternComo 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 para hechos no ordenados(( )...( )

Ejemplo

LiteralesLa 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))COMODINIndican 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) ::= | ? | $?EJEMPLO(reset)

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

(run)Restricciones con comodinesLas 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 MULTICAMPOAlmacena el valor de un campo para despus utilizarlo en otros elementos condicionales o consecuente de la regla. Tipos: Variable monocampo: ? Variable multicampo: $? ::= | ? | $? | | ::= ? ::= $?EC patrn Restricciones con variablesCuando 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

CLIPS> (run) Conectores Permiten unir restricciones y variables Utilizan los conectores lgicos & (and), | (or), ~ (not)

::= ? | $? |

::= | & | | ::= | ~ ::= | | Restricciones conectivas: PrecedenciaOrden 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|azulequivale 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*)=>)Predicate Constraints(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:: Sntaxis: (clear)CLIPS> (defrule ValidarNumero (data ?x&:(numberp ?x)) =>)CLIPS> (assert (data 12) (data 28) (data azul))

CLIPS> (agenda)0 ValidarNumero: f-20 ValidarNumero: f-1For a total of 2 activations.CLIPS> Ejemplo 1.2CLIPS> (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

CLIPS> (agenda)0 MayorDeDos: f-3For a total of 1 activation.CLIPS>

Ejemplo 2CLIPS> (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

CLIPS> (agenda)0 NumeroDoble : f-1For a total of 1 activation.CLIPS>PatternMatching 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: :: = (objeto *) :: = (es-un ) |(nombre ) |( *)

Ejemplo 3(defrule ValorDePartida-1 (object (ancho 10) =>)(defrule ValorDePartida-2 (object (ancho ?x&:(> ?x 20))) =>)(defrule ValorDePartida-3 (object (ancho?x) (alto?x)) =>)PatternAddresses (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:

:: =