Sie sind auf Seite 1von 6

INTELIGENCIA ARTIFICIAL

Control de Laboratorio CLIPS Control 2A


1. Un virus ha entrando a la oficina del decano y ha combinado archivos, uno de texto y otros de calculo, se plantea realizar una funcin que separe un texto de los nmeros y guardar la informacin por cada uno de ellos. Ejemplo (separa a) (separa 3) (separa b) (separa 5) Resultados: (facts) (archivo-texto (valor a)) (archivo-numero (valor 3) (archivo-texto (valor b)) (archivo-numero (valor 5) Solucin Primero creamos las plantillas archivo-numero y archivo-texto para guardar los valores que nos arrojar la funcin. (deftemplate archivo-numero (slot valor)) (deftemplate archivo-texto (slot valor)) Luego crearemos la funcin separa(n) que recibe como parmetro un valor ya sea numrico o carcter, dentro de la funcin preguntamos si el valor que nos ha llegado es numrico, si es entonces creamos un hecho archivo-numero donde guardaremos el numero en su atributo valor y si no lo es, o sea es un carcter, entonces creamos un hecho archivo-texto y guardamos el carcter en su atributo valor. (deffunction separa(?n) (if (or (>= ?n 0) (< ?n 0)) then (assert (archivo-numero (valor ?n))) else (assert (archivo-texto (valor ?n)))) )

INTELIGENCIA ARTIFICIAL

2. Disee una plantilla alumno con los campos: nombre (string), edad (entero), iq (entero, default 100), observacin (string). En donde observacin se obtiene a travs de la funcin observacinIQ como sigue: (observacion-IQ n) = enfermedad-mental si n < 80 (observacion-IQ n) = rendimiento-bajo si 80 =< n < 100 (observacion-IQ n) = rendimiento-normal si 100 =< n < 110 (observacion-IQ n) = rendimiento-alto si 110 =< n < 130 (observacion-IQ n) = genio si 130 =< n Ejemplo
(assert (onservacion-IQ 105)) )) (alumno (nombre johel) (IQ 105) (observacion

Resultados:
(facts) (alumno normal")) (nombre johel) (IQ 105) (observacion "rendimiento-

Solucin Creamos la plantilla alumno con sus respectivos atributos y restricciones de estos mismos. (deftemplate alumno "Relacin alumno" (slot nombre (type STRING)) (slot edad (type INTEGER)) (slot iq (type INTEGER) (default 100)) (multislot observacion (type STRING)) ) Aqu creo una regla para cada estado: enfermedad_mental,rendimiento_bajo,rendimiento_normal, rendimiento_alto, genio. Podra crearse una sola regla que te determine el campo observacin, tendra que verse si esa implementacin es mejor o si es igual a la que propongo. (defrule enfermedad_mental (alumno (nombre ?a) (iq ?x&:(< ?x 80) )) =>

INTELIGENCIA ARTIFICIAL

(assert (alumno (nombre ?a) (iq ?x) (observacion "enfermedad_mental"))) )

(defrule rendimiento_bajo (alumno (nombre ?a) (iq ?x&:(>= ?x 80) &: (< ?x 100 ))) => (assert (alumno (nombre ?a) (iq ?x) (observacion "rendimiento_bajo "))) )

(defrule rendimiento_normal (alumno (nombre ?a) (iq ?x&:(>= ?x 100) &: (< ?x 110 ))) => (assert (alumno (nombre ?a) (iq ?x) (observacion "rendimiento_normal"))) )

(defrule rendimiento_alto (alumno (nombre ?a) (iq ?x&:(>= ?x 110) &: (< ?x 130 ))) => (assert (alumno (nombre ?a) (iq ?x) (observacion "rendimiento_alto"))) )

(defrule genio (alumno (nombre ?a) (iq ?x&:(> ?x 1300) )) => (assert (alumno (nombre ?a) (iq ?x) (observacion "genio"))) )

INTELIGENCIA ARTIFICIAL

Solo bastar con ingresar un alumno con sus datos y al ejecutar el programa nuestra regla saltara y creara el hecho pedido. (assert (alumno (nombre juan) (iq 34) )) Ponemos el comando (run) y se ver que aparece otro hecho con la observacin enfermedad mental. 3. Defina un template clientes con la estructura: cdigo (autogenerado), nombre (obligatorio), apellidos (multislot obligatorio), edad (entero, entre 15 y 70), crdito (valores permitidos: SI, NO; Default SI). Usando deffacts registre los hechos para el template clientes: Cdigo Nombre Apellidos Crdito Maria Rodriguesz Hernandez Juan Delgadillo Ramirez 25 Karen Anton Rolon edad 26 No 27 No

Solucin Definimos nuestra plantilla clientes, con sus atributos y sus restricciones. CLIPS> (deftemplate clientes (slot codigo (default-dynamic (gensym*))) (slot nombre (default ?NONE)) (multislot apellidos (default ?NONE)) (slot edad (type INTEGER) (range 15 70)) (slot credito (allowed-symbols SI NO)

INTELIGENCIA ARTIFICIAL

(default SI)) )
5

Creamos un deffacts para ingresar los clientes , cabe resaltar que despus de insertar los deffacts , debemos de poner el comando (reset) para que los hechos se ingresen. (deffacts Insertar-clientes "Insertar clientes" (clientes(nombre Maria ) (apellidos Rodriguesz Hernandez) (edad 26)) (clientes(nombre Juan ) (apellidos Delgadillo Ramirez) (edad 25) (credito NO)) (clientes(nombre Karen ) (apellidos Anton Rolon) (edad 27) (credito NO)))

INTELIGENCIA ARTIFICIAL 5

4 .-Defina una regla para buscar y mostrar todos los datos de Maria. Ejemplo (run) Los datos de Mara son: Apellidos: Rodriguez Hernandez: codigo: gensyn2 edad: 26 Crdito: Si Solucin

Crearemos una regla que preguntara si el nombre es Maria , si es igual entonces nos mostrara por pantalla todos los datos de dicha persona. (defrule datos (clientes (nombre Maria)(codigo ?a)(apellidos $? b)(edad ?c)(credito ?d)) => (printout t " Los datos de Maria son:" crlf) ( printout t " Apellidos : " ?b crlf) (printout t " Codigo : " ?a crlf) (printout t " edad: " ?c crlf) (printout t " credito : " ?d crlf) )

Das könnte Ihnen auch gefallen