Beruflich Dokumente
Kultur Dokumente
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
(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) )