You are on page 1of 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 función que separe un texto de los números y guardar la información 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) Solución Primero creamos las plantillas archivo-numero y archivo-texto para guardar los valores que nos arrojará la función. (deftemplate archivo-numero (slot valor)) (deftemplate archivo-texto (slot valor)) Luego crearemos la función separa(n) que recibe como parámetro un valor ya sea numérico o carácter, dentro de la función preguntamos si el valor que nos ha llegado es numérico, 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 carácter, entonces creamos un hecho archivo-texto y guardamos el carácter 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)))) )

5

tendría que verse si esa implementación es mejor o si es igual a la que propongo. rendimiento_alto. edad (entero). genio.rendimiento_bajo. (defrule enfermedad_mental (alumno (nombre ?a) (iq ?x&:(< ?x 80) )) => . iq (entero. En donde observación se obtiene a través de la función observaciónIQ 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 5 Resultados: (facts) (alumno normal")) (nombre johel) (IQ 105) (observacion "rendimiento- Solución Creamos la plantilla alumno con sus respectivos atributos y restricciones de estos mismos.INTELIGENCIA ARTIFICIAL 2. Podría crearse una sola regla que te determine el campo observación. Diseñe una plantilla “alumno” con los campos: nombre (string). default 100).rendimiento_normal. observación (string). (deftemplate alumno "Relación 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.

INTELIGENCIA ARTIFICIAL (assert (alumno (nombre ?a) (iq ?x) (observacion "enfermedad_mental"))) ) 5 (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"))) ) .

edad (entero. 3. nombre (obligatorio). 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) . Usando deffacts registre los hechos para el template “clientes”: Código Nombre Apellidos Crédito Maria Rodriguesz Hernandez Juan Delgadillo Ramirez 25 Karen Anton Rolon edad 26 No 27 No 5 Solución Definimos nuestra plantilla clientes. Default SI). apellidos (multislot obligatorio). Defina un template “clientes” con la estructura: código (autogenerado). NO. (assert (alumno (nombre “juan”) (iq 34) )) Ponemos el comando (run) y se verá que aparece otro hecho con la observación “enfermedad mental”. crédito (valores permitidos: SI. entre 15 y 70). con sus atributos y sus restricciones.INTELIGENCIA ARTIFICIAL Solo bastará con ingresar un alumno con sus datos y al ejecutar el programa nuestra regla saltara y creara el hecho pedido.

(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))) . debemos de poner el comando (reset) para que los hechos se ingresen. cabe resaltar que después de insertar los deffacts .INTELIGENCIA ARTIFICIAL (default SI)) ) 5 Creamos un deffacts para ingresar los clientes .

INTELIGENCIA ARTIFICIAL 5 4 . Ejemplo (run) Los datos de “María” son: Apellidos: “Rodriguez Hernandez”: codigo: gensyn2 edad: 26 Crédito: Si Solución 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) ) .-Defina una regla para buscar y mostrar todos los datos de “Maria”.