Anda di halaman 1dari 59

Curso : Inteligencia Artificial Profesor: Mauricio Snchez Integrantes: Matias Rayme Nataly Melissa Marcos Ardin Erickson Ramrez

rez Morales Claudia

QU ES CLIPS?
CLIPS (C Language Integrated Production System) es una herramienta para el desarrollo de sistemas expertos (SE). Se dise para facilitar el desarrollo de software que modele el conocimiento humano.

El conocimiento humano se implementa en CLIPS mediante:

Reglas, que se formulan a partir del conocimiento heurstico basado en la experiencia. Deffunction, o funciones generalizadas, que se formulan a partir de conocimiento procedural. Programacin orientada a objetos

Estructura de un programa en CLIPS


Elementos bsicos de un SE: 1. memoria global de datos (memoria de trabajo, MT): conocimiento factual (fact-list e instancelist). 2. base de conocimiento (knowledge base): contiene las reglas de la base de reglas. 3. motor de inferencia (inference engine): controla la ejecucin global de las reglas
Un programa escrito en CLIPS puede consistir en reglas, hechos y objetos.

INTERACTUANDO CON CLIPS


Puede ser ejecutado en tres formas:

Lnea de comandos

INTERACTUANDO CON CLIPS


Interfaz ventana/men/mouse

Integrado a otro sistema

COMANDOS DE NIVEL SUPERIOR


Cuando CLIPS se imprima en pantalla, un comando podr incluirse en la evaluacin. Donde todos los comandos comienzan y terminan en parntesis:(comando).

Los comandos pueden ser llamadas a funciones, construcciones, variables locales o globales o constantes.

COMANDOS DE NIVEL SUPERIOR

COMANDOS DE NIVEL SUPERIOR

ELEMENTOS BSICOS E PROGRAMACIN


CLIPS proporciona tres elementos bsicos para escribir programas: Tipos primitivos de datos: para representar informacin. Funciones: para manipular los datos. Constructores: para aadir conocimiento a la BC.

TIPOS PRIMITIVOS DE DATOS


CLIPS proporciona ocho tipos de datos para representar la informacin. Un numero consta de: los dgitos (0-9), un punto decimal (.), un signo (+ o -), y, opcionalmente una notacin exponencial (e) con su correspondiente signo.
Los nmeros se almacenan en CLIPS como reales o enteros. Entero :
1453 -1590 +524 -18

Punto flotante:
152.21 27e-7 -57.2 -25e-8

TIPOS PRIMITIVOS DE DATOS


Un smbolo es cualquier secuencia de caracteres que no sigue exactamente el formato de un numero. empieza con cualquier carcter ASCII imprimible y finaliza con un delimitador (caracteres ASCII no imprimibles).
es-hijo-de Hola 2var

Un string es un smbolo que empieza y termina por dobles comillas.


Una cadena

TIPOS PRIMITIVOS DE DATOS


Una direccin externa es la direccin de una estructura de datos externa devuelta por una funcin escrita en C o Ada y que ha sido integrada con CLIPS.
La impresin de una direccin externa es de la forma <Pointer-XXX> donde XXX es la direccin externa.

Una instancia es un caso particular de un objeto de CLIPS.

TIPOS PRIMITIVOS DE DATOS


Un hecho es una lista de uno o mas valores que bien son referenciados por su posicin (para hechos ordenados) o por un nombre (para hechos no ordenados).
La impresin de la direccin de un hecho es de la forma <Fact-XXX> donde XXX es el ndice que ocupa el hecho en la memoria de CLIPS.

Ejemplo :
CLIPS (Quicksilver Beta 3/26/08) CLIPS> (deftemplate Hombreacusado (slot nombre (type STRING) (default ?NONE)) (slot edad (type INTEGER) (range 17 100) (default ?NONE)) (slot condicion (type SYMBOL) (allowed-values inocente sospechoso condenado antecedentes) (default inocente))) CLIPS> (facts) f-0 (initial-fact) For a total of 1 fact. CLIPS> (assert (Hombreacusado (nombre "Mario")(edad 30)(condicion sospechoso))) <Fact-1> CLIPS> (assert (Hombreacusado (nombre "Daniel")(condicion condenado)(edad 19))) <Fact-2> CLIPS> (assert (Hombreacusado (nombre "Venito")(condicion antecedentes))) [TMPLTRHS1] Slot edad requires a value because of its (default ?NONE) attribute. CLIPS> (facts) f-0 (initial-fact) f-1 (Hombreacusado (nombre "Mario") (edad 30) (condicion sospechoso)) f-2 (Hombreacusado (nombre "Daniel") (edad 19) (condicion condenado)) For a total of 3 facts. CLIPS> (assert (Hombreacusado (nombre "Venito")(condicion antecedentes)(edad 17))) <Fact-3> CLIPS> (facts) f-0 (initial-fact) f-1 (Hombreacusado (nombre "Mario") (edad 30) (condicion sospechoso)) f-2 (Hombreacusado (nombre "Daniel") (edad 19) (condicion condenado)) f-3 (Hombreacusado (nombre "Venito") (edad 17) (condicion antecedentes)) For a total of 4 facts. CLIPS>

TIPOS PRIMITIVOS DE DATOS


Un CAMPO: es un lugar que puede tomar un valor.
Valores uni-campo: los formados por tipos de datos primitivos. Valores multi-campo: los formados por una secuencia de cero o mas valores uni-campo.
(12 Hola 5.5 hola )

OPERACIONES ARITMTICAS EN CLIPS


Se pueden realizar operaciones aritmticas sobre datos de tipos numricos.

El lenguaje proporciona las operaciones y funciones aritmticas bsicas: +, -, *, /, div, max, min, abs, float e integer.
Las expresiones numricas se representan en CLIPS en el estilo conocido como notacin prefija.

OPERACIONES ARITMTICAS EN CLIPS


Ejemplo: Definir 4 variables globales donde la primera tenga valor de 3, la segunda sea el resultado de la suma de la primera variable y 11, la tercera sea el resultado de la multiplicacin de la primera y segunda variable y la cuarta sea el resultado de la divisin de la tercera variable con la primera.

FUNCIONES
Parte de cdigo ejecutable identificado por un nombre especfico que puede devolver o no un valor til. Funciones definidas por el sistema: aquellas que estn implementadas en CLIPS. Ej.

FUNCIONES (Cont.)
Funciones definidas por el usuario:
Funciones externas: escritas en un leguaje externo (Ej. C, FORTRAN). Funciones definidas directamente en CLIPS utilizando la sintaxis de CLIPS (deffunctions). Funciones genricas: se pueden definir utilizando los constructores defgeneric y defmethod. Permite ejecutar diversas partes del cdigo dependiendo de los parmetros que se pasan.

Constructor deffunction
Sintaxis: (deffunction <nombre_funcion> (<parametros>) (<contenido>) ) Ej. Realice una funcin que devuelva el factorial de un nmero n.

CONSTRUCTORES
Son sentencias de CLIPS que permiten crear objetos. La llamada a un constructor se realiza siempre entre parntesis y suele empezar con la palabra def. Altera el entorno de CLIPS adicionndolas a la base del conocimientos. Los constructores no tienen un valor de retorno.

CONSTRUCTORES (Cont.)
Con la excepcin de defglobal los constructores permiten incorporar en su definicin un comentario directamente con comillas ( ). En las dems partes pueden intercalarse con el cdigo usando el punto y coma (;).

CONSTRUCTORES (Cont.)
Algunos constructores:
Defrule: define reglas. Deffacts: define hechos. Deftemplate: define plantillas. Defglobal: define variables globales. Deffunction: define funciones externas. Defclass: define clases.

CONSTRUCTORES (Cont.)
Ej.

ABSTRACCIN DE DATOS
Hay tres formatos principales para representacin de la informacin en CLIPS: Hechos
Hechos ordenados Hechos no ordenados Hechos iniciales

la

Objetos Variables globales

Hechos:
Representan un fragmento de informacin que se ha colocado en la llamada lista de hechos (fact-list) Un identificador de hecho es una notacin abreviada para la visualizacin de un hecho que sigue la siguiente forma: f-<ndice de hecho>
Ej. f-10, se refiere al hecho con "ndice de hecho" 10.

Hechos:
Comandos de manejo de hechos: Aadir un hecho: (assert <hecho>). Eliminar un hecho: (retract <ref. a hecho>). Modificar campos: (modify < ref. a hecho >). Copiar:(duplicate <ref. hecho> <nuevo slot> ...)

Comandos assert y duplicate

Comandos retract y modify

Hechos ordenados
Los hechos ordenados consisten en un smbolo seguido de una secuencia de cero o ms campos separados por espacios y delimitados por parntesis. El primer campo de un hecho de orden especifica una "relacin" que se aplica a los campos que quedan en "el hecho de pedido". Ej. (padre de Jack Bill) afirma que Bill es el padre de Jack.

Hechos ordenados (Cont.)


los hechos ordenados codifican la informacin segn la posicin, por lo que el usuario, cuando accede a la informacin, no solo debe saber qu datos estn almacenados, sino tambin qu campos contienen esos datos. Por ejemplo los siguientes hechos no son iguales:
(maestro Luis Daniel) (maestro Daniel Luis)

Hechos no ordenados (Cont.)


Los hechos no ordenados (deftemplate) proporcionan al usuario la habilidad de abstraerse de la estructura del hecho, asignando un nombre a cada campo del mismo De esta forma, podemos acceder a los diferentes campos por su nombre. El constructor deftemplate crea una plantilla o patrn que se usa para acceder, por su nombre, a los campos (slots) de un hecho no ordenado.

Hechos no ordenados (Cont.)


Un hecho no ordenado es una secuencia de cero o ms campos con nombre separados por espacios y delimitados por parntesis. (deftemplate <nombre> <definicin-slot><tipo>*)

Ej.(deftemplate X9354A))

client

(nombre

Joe)(ide

Hechos no ordenados (Cont.)


Tenga en cuenta que el orden de los campos en un hecho deftemplate no es importante. Por ejemplo, los siguientes hechos son idnticos.
(class (teacher "Martha Jones") (#-students 30) (Room 37A")) (class (#-students 30) (teacher "Martha Jones") (Room "37A")

Ejemplo:
Ej.:

Hechos iniciales
El constructor deacts permite establecer un conocimiento inicial o a priori , mediante la especicacin de una lista de hechos. Cuando el entorno CLIPS se restablece (mediante el comando reset) cada hecho especificado en los constructores deffacts se aade a la lista de hechos (fact-list).

Ejemplo:

OBJETOS
Un objeto se define como un smbolo, cadena, nmero, valor multicampo, una direccin externa o una instancia de una clase definida por el usuario. Se describe en dos partes bsicas:
Propiedades Comportamiento.
Una clase es una plantilla que agrupa a un conjunto de objetos con propiedades y comportamiento comunes.

Defclass: permite crear clases, especifica las ranuras (atributos) de una nueva clase de objetos. Defmessage-handler crea los elementos procedimentales (mtodos) de una clase de objetos.

Ejemplo:

Tipos Primitivos
Se referencian dando su valor. Se crean y suprimen implcitamente en CLIPS. No tienen nombre o ranuras (slots). Sus clases estn predefinidas por CLIPS. Ejemplo: smbolo, cadena, nmero, etc.

Instancias de clases definidas por el usuario


Se referencian por su nombre o direccin. Se crean y suprimen explcitamente a travs de mensajes y funciones especiales.

DIFEENCIA ENTRE OBJETOS Y HECHOS:

HERENCIA Las propiedades y comportamientos de los objetos puede heredarse, es decir, a una clase se le puede asignar directamente ranuras y manipuladores de mensajes de otras clases.

OBJETOS INICIALES
Definstances: permite construir un conjunto de objetos con conocimientos inicial o a priori, que son una coleccin de instancias definidas por el usuario.

VARIABLES GLOBALES
Defglobal: permite crear variables globales cuyo valor es independiente de los constructores y puede accederse desde cualquier ambiente de CLIPS. Sintaxis: (defglobal ?*<nombre_variable>* =<valor>)

Ejemplo:

REPRESENTACIN DEL CONOCIMIENTO


CLIPS define el conocimiento mediante dos paradigmas: 1. Conocimiento Heurstico
Se desarrolla mediante un conjunto de reglas. Una regla se compone:
Antecedente(parte izquierda) Consecuente(parte derecha)

Defrule: permite definir reglas. Si antecedente, entonces consecuente


Sintaxis:
(defrule <nombre_de_la_regla>[<comentario-string>] [propiedades] <antecedentes>* => <acciones>*)

Si hay ms de una regla que aplicarse, el motor de inferencia utiliza una estrategia de solucin de conflicto que selecciona la regla que debe aplicarse primero.

Ejemplo:
Todo libro que est disponible se puede prestar. Si BD es un libro. Si BD est disponible. => BD se puede prestar.

2. Conocimiento Procedimental
Las funciones genricas y el constructor deffunctions permite al usuario definir componentes ejecutables que o bien desarrollan un conjunto de actividades tiles o retornan un valor. defmodules permite una base de conocimiento para dividirse.

Deffunction
Permite definir una nueva funcin en CLIPS. El valor que devuelve es el ltimo valor de la ultima expresin evaluada en deffunction. Sintaxis:
(deffunction <nombre_funcin>
(<?parametro>*[<$ ?parametro-wilcard>]) <accion>*)

Ejemplos:
Funcin suma CLIPS> (deffunction suma(?a ?b) (bind ?suma (+ ?a ?b)) (printout t Suma = ?suma crlf) (+ ?a ?b) ) CLIPS> (suma 3 4) Suma = 7
Funcin hipotenusa: (deffunction Hipotenusa (?m ?n) (printout t El resultado es: crlf) (sqrt (+ (* ?m ?m) (* ?n ?n))) )

Funciones genricas
Permite definir un nuevo cdigo procedural directamente en CLIPS. Son mucho mas potentes ya que se pueden sobrecargar. Por ejemplo:
Es posible sobrecargar al operador + para hacer una concatenacin de cadenas, sin embargo el operador + seguir realizando suma aritmtica.

Objeto de paso de mensaje (message-passing)


Se utiliza para manipular objetos.

Defmodules
Permite que el conocimiento se divida en mdulos, cada constructor definido debe ser colocado en un mdulo.

CLIPS lenguaje orientado a objetos (COOL)


Lenguaje que incluye elementos de abstraccin de datos como representacin del conocimiento. Basado en la programacin orientada a objetos, se caracteriza por:
1. 2. 3. 4. 5. Abstraccin Encapsulamiento Herencia Polimorfismo Enlace dinmico

Anda mungkin juga menyukai