Sistemas Expertos Caso de Estudio: Selección de un microcontrolador Introducción Un Sistema Experto (SE) clásico comienza con una serie de preguntas. En base a las respuestas genera una recomendación. Para la recomendación de un microcontrolador se debe proveer cierta información sobre el sistema en el cual se aplicará. El primer paso es colectar la información. Ingeniería del conocimiento Un sistema basado en reglas se relaciona con un dominio. Dominio: Subconjunto del conocimiento global. El proceso de colectar la información sobre el dominio es llamado Ingeniería del Conocimiento (IC). El ingeniero del conocimiento -sin tener que convertirse en un experto- debe conocer los requerimientos, principios, recursos y fronteras Entrevistas y Documentación La IC es un proceso iterativo: – – – – – – Charlas con los clientes (necesidades y recursos). Estimaciones del tiempo de desarrollo. Estudio sobre el dominio (se logra mejor comunicación con los expertos). Entrevista con el experto. Estructura de la información recabada (esbozo, diagrama de flujo, etc). Código Jess con comentarios. Entrevistas Debe haber acuerdos entre los clientes y los potenciales usuarios del sistema. La gente es la mejor fuente de información. La gente también recomienda libros, sitios web, y a otra gente que puede ayudar a entender el dominio del problema. Es conveniente no utilizar lenguaje específico de programación. Reglas potenciales I Juguetes especiales, como un auto a control remoto requiere alta velocidad de respuesta, necesita un ancho de palabra de 32 bits y consume bastante energía. Un sistema de frenos ABS implementa cálculos críticos en tiempo limitado y 16 bits de ancho de palabra son suficientes. La implementación de un lavarropas es de 16 bits y consume bastante energía. Reglas potenciales II La placa de un mouse óptico requiere más de 80 MHz de velocidad, 32 bits y consume menos de 4.8 V. Cualquier sistema que requiera cálculos críticos en tiempo limitado necesita alta velocidad de respuesta. Sistemas que requieren bastante energía deben contar con placas de más de 4.8 Voltios. Una placa de alta velocidad de respuesta debe proveer más de 80 MHz. Reglas potenciales III Características de algunos microcontroladores PIC32: – – PIC32MX320: 4.8 V a 6 V, 80 MHz. PIC32MX200: menos de 4.8 V, 80 MHz. Características de algunos microcontroladores PIC16: – – – PIC16F1947: 80 MHz. PIC16F8XX: 4.8 V a 6 V. PIC16F6XX: 80 MHz. Reglas en Jess (defrule calculos-criticos ?t <- (MAIN::aplicacion (complejidad-calculos "critica") (tiempo "limitado")) => (modify ?t (velocidad "rapido"))) (defrule energia-alta ?t <- (MAIN::aplicacion (energia "bastante")) => (modify ?t (energia (> 4.8)))) Revisión de reglas I Generalmente, falta información. Se debe desarrollar una serie de nuevas preguntas y reunirse con el experto nuevamente (iteraciones). La IC no necesariamente termina cuando comienza el desarrollo. Se comienza a mostrar un prototipo en las entrevistas. A veces el ingeniero del conocimiento es también un programador. Revisión de reglas II (defrule calculos-criticos ?t <- (MAIN::aplicacion (complejidad-calculos "critica") (tiempo "limitado") (velocidad nil)) => (modify ?t (velocidad "rapido"))) (defrule energia-alta ?t <- (MAIN::aplicacion (energia "bastante")) => (modify ?t (energia 6))) Organización de los datos Las reglas Jess trabajan por reconocimiento de patrones sobre los hechos. Para escribir las reglas se debe tener idea de cómo serán los hechos y viceversa. ¿Cómo empezar? – Candidatos para deftemplate: micro (un microcontrolador específico), usuario (el operador del sistema), aplicación (requerimientos), pregunta, respuesta, recomendación. Estructura del sistema El recomendador necesita hacer cuatro cosas: – – – Inicializar la aplicación. Ver qué micro recomendar. Mostrar al usuario los micros recomendados. Estos tres pasos se mapean a tres fases de procesamiento: Módulos inicio, recomendacion, reporte. Organización de las reglas Defmodules particiona los hechos y las reglas. Se necesita decidir qué templates van en cada módulo observando qué reglas necesitan acceder a los datos. Recordar que si dos módulos necesitan compartir una plantilla, ésta debe estar en el módulo main. – Observemos que en nuestro ejemplo tendremos dos templates: aplicacion y micro en el módulo MAIN. Escribiendo el código I Se codifica todo el conocimiento al formato de las reglas Jess: (defrule auto-palabra ?t <- (MAIN::aplicacion (nombre "Auto a control remoto")) => (modify ?t (palabra 32))) Para lanzar el sistema: (deffunction ejecutar () (reset) (focus inicio recomendacion respuesta) (imprime-inicio) (run)) Escribiendo el código II La activación y el lanzamiento de las reglas conduce a la asignación del nombre del microcontrolador: (defrule responder ?m <- (micro (nombre ~nil)) => (printout t ?m.nombre crlf)) Código Resultante