Story Transcript
Inteligencia Artificial Facultad de Ciencias Exactas y Tecnología Universidad Nacional de Tucumán Prof. Ing. Franco D. Menendez
Sistemas Expertos - Arquitectura La Arquitectura del Sistema Experto es la siguiente:
Ing. Franco D. Menendez
Sistemas Expertos
Desarrollo del Sistema Experto
1. Planeamiento del Problema. 2. Encontrar expertos humanos que puedan resolver el problema. 3. Diseño de un Sistema Experto. 4. Elección de la herramienta de desarrollo o lenguaje de programación. 5. Desarrollo y prueba de un prototipo 6. Refinamiento y generalización. 7. Mantenimiento y puesta al día.
Ing. Franco D. Menendez
Sistemas Expertos - Desarrollo del Sistema Experto 1. Planeamiento del Problema. La primera etapa en cualquier proyecto es normalmente la definición del problema a resolver. Puesto que el objetivo principal de un sistema experto es responder a preguntas y resolver problemas, esta etapa es quizás la más importante en el desarrollo de un sistema experto. Si el sistema está mal definido, se espera que el sistema suministre respuestas erróneas.
2. Encontrar expertos humanos que puedan resolver el problema. En algunos casos, sin embargo, las bases de datos pueden jugar el papel del experto humano.
3. Diseño de un Sistema Experto. Esta etapa incluye el diseño de estructuras para almacenar el conocimiento, el motor de inferencia, el subsistema de explicación, la interface de usuario, etc. Ing. Franco D. Menendez
Sistemas Expertos - Desarrollo del Sistema Experto 4. Elección de la herramienta de desarrollo o lenguaje de programación. Debe decidirse si realizar un sistema experto a medida, o una herramienta, o un lenguaje de programación. Si existiera una herramienta comercial satisfaciendo todos los requerimientos del diseño, está debería ser la elección, no sólo por razones de tipo financiero sino también por razones de fiabilidad. Las herramientas comerciales están sujetas a controles de calidad, a los que otros programas no lo están.
5. Desarrollo y prueba de un prototipo. Si el prototipo no pasa las pruebas requeridas, las etapas anteriores (con las modificaciones apropiadas) deben ser repetidas hasta que se obtenga un prototipo satisfactorio.
Ing. Franco D. Menendez
Sistemas Expertos - Desarrollo del Sistema Experto
6. Refinamiento y generalización. En esta etapa se corrigen los fallos y se incluyen nuevas posibilidades no incorporadas en el diseño inicial..
7. Mantenimiento y puesta al día. En esta etapa el usuario plantea problemas o defectos del prototipo, corrige errores, actualiza el producto con nuevos avances, etc.
Todas estas etapas influyen en la calidad del sistema experto resultante, que siempre debe ser evaluado en función de las aportaciones de los usuarios.
Ing. Franco D. Menendez
Ejemplo 1 – Cajero Automático Como ejemplo de problema determinista que puede ser formulado usando un conjunto de reglas, considérese una situación en la que un usuario (por ejemplo, un cliente) desea sacar dinero de su cuenta corriente mediante un cajero automático (CA). En cuanto el usuario introduce la tarjeta en el CA, la máquina la lee y la verifica. Si la tarjeta no es verificada con éxito (por ejemplo, porque no es legible), el CA devuelve la tarjeta al usuario con el mensaje de error correspondiente. En otro caso, el CA pide al usuario su numero de identificación personal (NIP). Si el numero fuese incorrecto, se dan tres oportunidades de corregirlo. Si el NIP es correcto, el CA pregunta al usuario cuanto dinero desea sacar. Para que el pago se autorice, la cantidad solicitada no debe de exceder de una cierta cantidad limite diaria, además de haber suficiente dinero en su cuenta. Ing. Franco D. Menendez
Ejemplo 1 – Cajero Automático En este caso se tienen siete objetos, y cada objeto puede tomar uno y solo un valor de entre sus posibles valores. La siguiente tabla muestra estos objetos y sus posibles valores.
Ing. Franco D. Menendez
Ejemplo 1 – Cajero Automático
Ing. Franco D. Menendez
Ejemplo 1 – Cajero Automático En CLIPS forma 1 : (defrule R1:”Si se cumple todo entonces se autoriza el pago” (tarjeta)(fecha)(nip)(NOT(intentos))(balance)(NOT(limite)) => (printout t “Se autorizo el pago”.crlf)) (defrule R2:”Si no se verifica la tarjeta no se autoriza el pago” (NOT(tarjeta)) => (printout t “No tiene autorizada la transición”.crlf)) (defrule R3:”Si la fecha se encuentra expirada no se autoriza el pago” (NOT(fecha)) => (printout t “No tiene autorizada la transición”.crlf))
Ing. Franco D. Menendez
Ejemplo 1 – Cajero Automático (defrule R4:”Si el nip es incorrecto no se autoriza el pago” (NOT (nip)) => (printout t “No tiene autorizada la transacción”.crlf)) (defrule R5:”Si el numero de intentos es supera no se autoriza el pago” (intentos) => (printout t “No tiene autorizada la transición”.crlf)) (defrule R6:”Si el balance es insuficiente no se autoriza el pago” (NOT(balance)) => (printout t “No tiene autorizada la transición”.crlf)) (defrule R7:”Si el limite se encuentre excedido no se autoriza el pago” (limite) => (printout t “No tiene autorizada la transición”.crlf)) Ing. Franco D. Menendez
Ejemplo 1 – Cajero Automático En CLIPS forma 2 : (defrule R1:”Si se cumple todo entonces se autoriza el pago” (cuenta tarjeta verificada)(cuenta fecha no_expirada) (cuenta nip correcto)(NOT(cuenta intentos)) (cuenta balance suficiente)(NOT(cuenta limite excedido)) => (printout t “Se autorizo el pago”.crlf) (modify cuenta pago autorizado)) (defrule R2:”Si no se verifica la tarjeta no se autoriza el pago” (NOT( cuenta tarjeta verificada)) => (printout t “No tiene autorizada la transición”.crlf) (modify cuenta pago no_autorizado)) (defrule R3:”Si la fecha se encuentra expirada no se autoriza el pago” (NOT( cuenta fecha )) => (printout t “No tiene autorizada la transición”.crlf) (modify cuenta pago no_autorizado)) Ing. Franco D. Menendez
Ejemplo 1 – Cajero Automático (defrule R4:”Si el nip es incorrecto no se autoriza el pago” (NOT (cuenta nip)) => (printout t “No tiene autorizada la transacción”.crlf) (modify cuenta pago no_autorizado)) (defrule R5:”Si el numero de intentos es supera no se autoriza el pago” (cuenta intentos) => (printout t “No tiene autorizada la transición”.crlf) (modify cuenta pago no_autorizado)) (defrule R6:”Si el balance es insuficiente no se autoriza el pago” (NOT(cuenta balance suficiente)) => (printout t “No tiene autorizada la transición”.crlf) (modify cuenta pago no_autorizado)) (defrule R7:”Si el limite se encuentre excedido no se autoriza el pago” (cuenta limite excedido) => (printout t “No tiene autorizada la transición”.crlf) (modify cuenta pago no_autorizado)) Ing. Franco D. Menendez
Ejemplo 1 – Cajero Automático (deftemplate cuenta (slot tarjeta (type SYMBOL)(allowed-symbols verificada no_verificada) (slot fecha (type SYMBOL)(allowed-symbols expirada no_expirada) (slot nip(type SYMBOL)(allowed-symbols correcto incorrecto) (slot intentos(type SYMBOL)(allowed-symbols excedidos no_excedidos) (slot balance (type SYMBOL)(allowed-symbols suficiente insuficiente) (slot limite (type SYMBOL)(allowed-symbols excedido no_excedido) (slot pago (type SYMBOL)(allowed-symbols autorizado no_autorizado) )
Ing. Franco D. Menendez
Ejemplo 2 En este ejercicio se pide indicar el orden de ejecución de las reglas en CLIPS. (deffacts HECHOS-INICIALES (A) (D) (C) (B) (Z)) (defrule r1 (A)(B)(C) => (printout t "regla1" crlf)) (defrule r2 (C) (D) => (printout t "regla2" crlf)) (defrule r3 (Z) => (printout t "regla3" crlf)) (defrule r4 (C) (A) => (printout t "regla4" crlf)) Ing. Franco D. Menendez
Ejemplo 2 CLIPS>(load"E:/Docencia/IA/Clips/EjemplosClase/ejemplo1RC.clp") Defining deffacts: HECHOS-INICIALES Defining defrule: r1 +j+j+j Defining defrule: r2 +j+j Defining defrule: r3 +j Defining defrule: r4 =j+j TRUE CLIPS> (reset) ==> f-0 (initial-fact) ==> f-1 (A) ==> f-2 (D) ==> f-3 (C) CLIPS> (run) Ing. Franco D. Menendez
Ejemplo 2 El resultado obtenido es el siguiente: FIRE 1 r4: f-3, f1 regla4 FIRE 2 r2: f-3,f-2 regla2 CLIPS> (clear) Utilizando el parámetro activación ,el resultado de la ejecución sería el siguiente ==> f-0 (initial-fact) ==> f-1 (A) ==> f-2 (D) ==> f-3 (C) ==> Activation 0 r4: f-3,f-1 ==> Activation 0 r2: f-3,f-2 ==> f-4 (B) ==> Activation 0 r1: f-1,f-4,f-3 ==> f-5 (Z) ==> Activation 0 r3: f-5 Ing. Franco D. Menendez
Ejemplo 2 CLIPS>(run) FIRE 1 r3: f-5 regla3 FIRE 2 r1: f-1,f-4,f-3 regla1 FIRE 3 r2: f-3,f-2 regla2 FIRE 4 r4: f-3,f-1 Regla4 CLIPS>(clear)
Ing. Franco D. Menendez
Ejemplo 3 Determinar el orden de disparo de las reglas : (deffacts HECHOS-INICIALES (A) (C) (D) (E) (G) (H) (K) ) (defrule R-1 (K) (L) (M)=> (assert (I))) (defrule R-2 (I) (L) (J)=> (assert (Q))) (defrule R-3 (C) (D) (E)=> (assert (B))) (defrule R-4 (A) (B)=> (assert (Q))) (defrule R-5 (L) (N) (O) (P)=> (assert (Q))) (defrule R-6 (C) (H)=> (assert (R))) (defrule R-7 (R) (J) (M)=> (assert (S))) (defrule R-8 (T) (F) (H)=> (assert (B))) (defrule R-9 (A)=> (assert (F))) (defrule r-10 (A) (R) => (assert (T))) (defrule r-11 (C) (A) (R) => (assert(V)))
Ing. Franco D. Menendez
Ejemplo 4 – Clasificación de Peces Dadas las siguientes reglas, escribir el código en lenguaje CLIPS: R1: Si el pez tiene la boca pequeña y dientes puntiagudos y vive en ríos de muchas partes del mundo ENTONCES estamos hablando de un ejemplar del orden de los Ciprinodontiformes. R2: Si tenemos un individuo del orden de los Ciprinodontiformes y que vive en los ríos de América del Sur y que en el caso de ser macho posee Gonopodio ENTONCES el pez es de la familia de los Poecilidos y la hembra es 3 cm. más grande que el macho. R3: Si tenemos un individuo del orden de los Ciprinodontiformes y que vive en los ríos de América del Sur y que es hembra ENTONCES el pez es de la familia de los Poecilidos y el macho es 3 cm. más pequeño que la hembra. R4: Si tenemos un individuo de la familia de los Poecilidos que tiene manchas a lo largo del cuerpo ENTONCES estamos ante un pez de la raza de la Gambusia affinis.
Ing. Franco D. Menendez
Ejemplo 4 – Clasificación de Peces R5: Si tenemos un individuo de la familia de los Poecilidos que tiene color gris y rayas verdes a lo largo del cuerpo ENTONCES tenemos un ejemplar de raza de Gambusia Punctata. R6: Si el pez es de tamaño medio, tiene dientes puntiagudos, vive en ríos de todo el mundo y posee canales laberínticos para respirar fuera del agua ENTONCES pertenece al orden de los anabatidos. R7: Si el pez es del orden de los anabatidos, es de color azul, tiene rayas rojas y vive en ríos de Asia ENTONCES tenemos un pez de la raza luchadores de Sian. R8: Si el pez es del orden de los anabatidos, no tiene rayas ENTONCES es una perca trepadora. R9: Si el pez tiene la boca pequeña, vive en ríos de todo el mundo tiene la cola redondeada ENTONCES es un ejemplar del orden de los Ciclidos. R10: Si el pez es del orden de los Ciclios, vive en los ríos de Africa y es de color rojo con manchas negras ENTONCES es pez joya.
Ing. Franco D. Menendez
Ejemplo 4 – Clasificación de Peces (defrule R1 : (pez boca pequeña) (pez dientes puntiagudos) (pez vive rio_mundo) => (printout t "Es un ejemplar del orden de los Ciprinodontiformes". crlf) (modify pez especimen ciprinodontiformes)) (defrule R2: (pez especimen ciprinodontiformes) (pez vive rio_america_sur) (pez gonopodio si) => (printout t "El pez es de la familia de los Poecilidos y la hembra es 3 cm. más grande que el macho.". crlf) (modify pez familia poecilidos)) (defrule R3: (pez especimen ciprinodontiformes) (pez vive rio_america_sur) (pez gonopodio no) => (printout t "El pez es de la familia de los Poecilidos y el macho es 3 cm. Más pequeño que la hembra.". crlf) (modify pez familia poecilidos))
Ing. Franco D. Menendez
Ejemplo 4 – Clasificación de Peces (defrule R4: (pez familia poecilidos) (pez particularidad manchas) => (printout t "Es un pez de la raza de la Gambusia affinis.". crlf) (modify pez raza gambusia_affinis)) (defrule R5: (pez familia poecilidos) (pez color gris) (pez particularidad rayas_verdes) => (printout t "Es un ejemplar de raza de Gambusia Punctata.". crlf) (modify pez raza gambusia_affinis)) (defrule R6: (pez tamaño medio) (pez dientes puntiagudos) (pez vive rio_mundo) (pez particularidad respira_fuera_agua) => (printout t "Es un ejemplar del orden anabatidos". crlf) (modify pez especimen anabatidos)) Ing. Franco D. Menendez
Ejemplo 4 – Clasificación de Peces (defrule R7: (pez especimen anabatidos) (pez color azul) (pez particularidad rayas_rojas) (pez vive rio_asia) => (printout t "Es un pez de la raza luchadores de Sian". crlf) (modify pez raza sian)) (defrule R8: (pez especimen anabatidos) (pez particularidad sin_raya) => (printout t "Es un pez perca trepadora". crlf) (modify pez raza perca_trepadora)) (defrule R9: (pez boca pequeña) (pez vive rio_mundo) (pez particularidad cola_redonda) => (printout t "Es un ejemplar del orden de los Ciclidos". crlf) (modify pez especimen ciclidos)) (defrule R10: (pez especimen ciclidos) (pez vive rio_africa) (pez color rojo) (pez particularidad manchas_negras) => (printout t "Es un pez joya". crlf) (modify pez raza joya)) Ing. Franco D. Menendez
Ejemplo 4 – Clasificación de Peces (deftemplate pez (slot boca (type SYMBOL) (allowed-symbols pequeña mediana grande)) (slot dientes (type SYMBOL) (allowed-symbols puntiagudos redondeados)) (slot tamaño (type SYMBOL) (allowed-symbols pequeño mediano grande)) (slot vive (type SYMBOL) (allowed-symbols rio_mundo rio_america_sur rio_asia rio_africa)) (slot gonopodio (type SYMBOL) (allowed-symbols si no)) (slot color (type SYMBOL) (allowed-symbols gris azul rojo)) (slot particularidad (type SYMBOL) (allowed-symbols manchas rayas_verdes respira_fuera_agua rayas_rojas sin_raya cola_redonda manchas_negras)) (slot familia (type SYMBOL) (allowed-symbols poecilidos otros) (slot especimen (type SYMBOL) (allowed-symbols ciprinodontiformes anabatidos ciclidos)) (slot raza (type SYMBOL) (allowed-symbols gambusia_affinis sian perca_trepadora joya)) )
Ing. Franco D. Menendez
Ejemplo 5 Resolver la siguiente situación problemática.
Ing. Franco D. Menendez
PREGUNTAS
Ing. Franco D. Menendez
MUCHAS GRACIAS
Ing. Franco D. Menendez