Garca Garca Francisco Javier/ Gmez Vzquez Exal Alejandro/ Molina Velasco Jaime Guadalupe INSTITUTO TECNOLGICO DE TUXTLA GUTIRREZ INTELIGENCIA ARTIFICIAL Index TermsInteligencia Articial, Agentes Inteligentes, Sis- tema Experto, Jess, Jade. AbstractDocumentacin del Sistema de Diagnstico Nutri- cional. I. INTRODUCCIN En este reporte que a continuacin se presenta tiene como objetivo indicar las facetas realizadas durante la elaboracin del Sistema de Diagnostico Nutricional, haciendo uso de los agentes inteligentes para poder conformar un sistema experto, el cual de acuerdo a un proceso continuo y sistemtico registra, procesa, reporta y analiza informacin del estado nutricional de cierto paciente. II. FUNDAMENTOS II-A. Inteligencia Articial II-A1. Denicin.: La Inteligencia Articial, puede considerarse como una de las disciplinas ms nuevas, siendo curiosamente considerada a la vez como una gran desconocida. Esto es debido a que poca gente tiene claro qu es la Inteligencia Articial. Pero, qu es realmente la IA? Existen gran variedad de deniciones respecto a lo que es la IA, algunas ms vlidas que otras, pero podramos intentar resumirlas comentando que la IA trata de desarrollar sistemas que piensen y acten racionalmente. En los ltimos aos la IA ha ido evolucionando, quizs con mayor celeridad que otras disciplinas, motivada probablemente por su propia inmadurez. Todo esto ha llevado a que la IA actualmente abarque una gran cantidad de reas, desde algunas muy generales como razonamiento, bsqueda, etc. a otras ms especcas como los sistemas expertos, sistemas de diagnstico, etc. Podramos indicar, sin lugar a dudas, que la IA puede ser aplicada hoy en da a innidad de disciplinas cientcas y es que la IA es susceptible de aparecer all donde se requiera el intelecto humano. Actualmente en la IA ha surgido un nuevo paradigma conocido como paradigma de agentes, el cual est tomando un gran auge entre los investigadores. Dicho nuevo paradigma aborda el desarrollo de entidades que puedan actuar de forma autnoma y razonada. Si retomamos la denicin dada anteriormente donde se consideraba a la IA como un medio para el desarrollo de sistemas que piense y acten racionalmente, podemos pensar que la IA, en su conjunto, trata realmente de construir precisamente dichas entidades autnomas e inteligentes. De acuerdo con esta visin, se puede considerar a la IA como una disciplina orientada a la construccin de agentes inteligentes donde se integran las diferentes reas que sta comprende. Desde hace relativamente poco tiempo esta idea est siendo ya adoptada por investigadores en la materia; el propio Stuart Russell ha remodelado su conocido libro Inteligencia Articial, un enfoque moderno [Russell1996] para dar un enfoque de la IA orientado totalmente al desarrollo de agentes. Es importante resaltar que en el momento en que se disponga de una metodologa clara para la construccin de dichos agentes inteligentes, la aplicabilidad de las tcnicas de IA a cualquier tipo de problema podr abordarse de una manera ms clara y unicada. De momento, se puede asegurar que, hoy en da, existe una idea generalizada dentro de la IA de que nos encontramos ante el nacimiento de una nueva tecnologa, la de agentes inteli- gentes, que permite abordar de una manera ms apropiada la construccin de sistemas inteligentes ms complejos aplicados a muy diversos campos II-B. Agentes Inteligentes II-B1. Denicin.: Al igual que ocurre con la propia denicin de la IA, se pueden encontrar propuestas en la literatura un gran nmero de deniciones del concepto de agente, sin que ninguna de ellas haya sido plenamente aceptada por la comunidad cientca, siendo quizs la ms simple la de Russell [Russell1996], que considera un agente como una entidad que percibe y acta sobre un entorno. Basndose en esta denicin, se pueden caracterizar distintos agentes de acuerdo a los atributos que posean (y que van a denir su comportamiento) [Botti1999] para resolver un determinado problema. Pero centrmonos en esta denicin bsica y apliqumosla al ejemplo dado al inicio. Se dice que un agente est situado 2 en un entorno y dicho entorno para nuestro agente sera la propia red (Internet). Por otra parte en la denicin se indica que debe percibir y actuar en dicho entorno. Quizs esta denicin es muy bsica y puede producir un efecto contenedor en el sentido de que es una denicin muy amplia y numerosos sistemas pueden ser etiquetados como agentes cuando realmente no lo son o por lo menos no deberan haber sido enfocados desde este punto de vista. Hay que indicar que el trmino agente est de moda y mucha gente se ha subido al carro indicando que las aplicaciones que desarrollan son agentes. No es momento de entrar en discusin, pero si que es necesario remarcar el origen por el que se plante esta tecnologa y es el hecho de que debe ser aplicada a sistemas complejos, sistemas donde la aplicacin de las tcnicas existentes hoy en da han fracasado o son sumamente difciles de comprender y/o mantener. En la mayora de las ocasiones, los agentes no son desarrollados de forma independiente sino como entidades que constituyen un sistema. A este sistema se le denomina multi-agente [Huhns1998]. En este caso los agentes deben o pueden interactuar entre ellos. Las interacciones ms habituales como son informar o consultar a otros agentes permiten a los agentes hablar entre ellos, tener en cuenta lo que realiza cada uno de ellos y razonar acerca del papel jugado por los diferentes agentes que constituyen el sistema. La comunicacin entre agentes se realiza por medio de un lenguaje de comunicacin de agentes (ACL Agent Communication Language). II-B2. Aplicaciones de los agentes inteligentes.: Los agen- tes inteligentes pueden ser utilizados por las empresas en numerosos dominios, entre estos: La e-Reputacin. La gestin de riesgos. La inteligencia territorial. El lanzamiento de productos. La vigilancia de la competencia. La vigilancia de lderes de opinin y del lobbying. La vigilancia de las tendencias II-B3. Como funciona un agente inteligente: Un agente inteligente es ms que un simple sistema de bsqueda de informacin. El agente puede operar sin la intervencin del usuario aun si ste est desconectado. Los agentes inteligentes incorporan funciones procedentes de la inteligencia articial. Tres caractersticas fundamentales de los agentes inteligen- tes: 1. La inteligencia: el agente sabe razonar y aprende a partir de la informacin que recoge 2. La interactividad: el agente puede interactuar con su entorno y otros agentes con el propsito de realizar una tarea 3. La autonoma: el agente puede tomar decisiones de manera autnoma. II-C. Plataforma NetBeans II-C1. Denicin: NetBeans es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programacin Java. Existe adems un nmero importante de mdulos para extenderlo. NetBeans IDE1 es un producto libre y gratuito sin restricciones de uso. La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados mdulos. Un mdulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest le) que lo identica como mdulo. Las aplicaciones construidas a partir de mdulos pueden ser extendidas agregndole nuevos mdulos. Debido a que los mdulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fcilmente por otros desarrolladores de software. II-C2. NetBeans IDE: El IDE NetBeans es un entorno de desarrollo integrado - una herramienta para programadores pensada para escribir, compilar, depurar y ejecutar programas. Est escrito en Java - pero puede servir para cualquier otro lenguaje de programacin. Existe adems un nmero importante de mdulos para extender el IDE NetBeans. El IDE NetBeans es un producto libre y gratuito sin restricciones de uso. II-D. Plataforma CLIPS II-D1. Denicion: CLIPS es una herramienta que provee un entorno de desarrollo para la produccin y ejecucin de sistemas expertos. Fue creado a partir de 1984, en el Lyndon B. Johnson Space Center de la NASA. Los fondos cesaron a principios de los aos 1990, y hubo un mandato de la NASA para comprar software comercial. CLIPS es un acrnimo de C Language Integrated Production System (Sistema de Produccin Integrado en Lenguaje C). En la actualidad, entre los paradigmas de programacin que soporta CLIPS se encuentran la Programacin lgica, la Programacin imperativa y la Programacin Orientada a Objetos. CLIPS probablemente es el sistema experto ms amplia- mente usado debido a que es rpido, eciente y gratuito. Aunque ahora es de dominio pblico, an es actualizado y mantenido por su autor original, Gary Riley. 3 II-D2. Caracteristicas principales: Las caractersticas principales de CLIPS son: Representacin del Conocimiento: CLIPS permite mane- jar una amplia variedad de conocimiento, soportando tres paradigmas de programacin: el declarativo, el imperati- vo, y el orientado a objetos. Portabilidad: CLIPS fue escrito en C con el n de hacerlo ms portable y rpido, y ha sido instalado en diversos sis- temas operativos (Windows 95/98/NT, MacOS X, Unix) sin ser necesario modicar su cdigo fuente Integrabilidad: CLIPS puede ser embebido en cdigo imperativo, invocado como una sub-rutina, e integrado con lenguajes como C, Java, FORTRAN y otro Desarrollo Interactivo: La versin estndar de CLIPS provee un ambiente de desarrollo interactivo y basado en texto; este incluye herramientas para la depuracin, ayuda en lnea, y un editor integrado Vericacin/Validacin: CLIPS contiene funcionalidades que permiten vericar las reglas incluidas en el sistema experto que est siendo desarrollado, incluyendo diseo modular y particionamiento de la base de conocimientos del sistema. Documentacin: En la pgina web ocial de CLIPS se encuentra una extensa documentacin que incluye un Manual de Referencia y una Gua del Usuario. Bajo Costo: CLIPS es un software de dominio pblico. III. DESARROLLO III-A. Agentes A continuacin se presentan los diversos diagramas para la obtener una mejor visualizacin de la problemtica y la solucin del mismo. III-A1. Diagrama de casos de uso: Los diagramas de casos de uso documentan el comportamiento de un sistema desde el punto de vista del usuario. Por lo tanto los casos de uso determinan los requisitos funcionales del sistema, es decir, representan las funciones que un sistema puede ejecutar. Figura 1. Diagrama de casos de uso III-A2. Diagrama de clases: Un diagrama de clases es un tipo de diagrama esttico que describe la estructura de un sistema mostrando sus clases, atributos y las relaciones entre ellos. Los diagramas de clases son utilizados durante el proceso de anlisis y diseo de los sistemas, donde se crea el diseo conceptual de la informacin que se manejar en el sistema, y los componentes que se encargaran del funcionamiento y la relacin entre uno y otro. Figura 2. Diagrama de clases III-A3. Diagrama de estados: Los diagramas de estado muestran el conjunto de estados por los cuales pasa un objeto durante su vida en una aplicacin en respuesta a eventos (por ejemplo, mensajes recibidos, tiempo rebasado o errores), junto con sus respuestas y acciones. Figura 3. Diagrama de estados III-A4. Diagrama de actividades: Los diagramas de actividades sirven para representar el comportamiento dinmico de un sistema haciendo hincapi en la secuencia de actividades que se llevan a cabo y las condiciones que guardan o disparan esas actividades. Figura 4. Diagrama de actividades III-B. Sistema A continuacin se presenta las pantallas del programa funcionando. 4 Figura 5. Programa Iniciando En esta imagen podemos apreciar la comunicacin que realizan los agentes. A travs del agente Sniffer Figura 6. Comunicacin de los agentes. En esta imagen podemos ver que el agente llamado agente interactua, para poder indicar el diagnstico de manera completa cuando una de las preguntas es opcional. Figura 7. Agente llamado agente Y en esta ltima imagen podemos apreciar la funcionalidad completa indicando, de esta manera el resultado del test. Figura 8. Resultado III-C. Diseo Para poder tener una idea ms slida de los criterios a considerar para realizar la evaluacin correspondiente del diagnostico, se tom en cuenta la siguiente lista de preguntas. As como la base de hechos III-C1. Preguntas: Qu actitud tiene frente a la comida? Cambian sus hbitos alimentarios luego de una discu- sin o situacin difcil? A la hora de comer, se siente identicado con algn animal en especial? De qu manera se comporta cuando come? En qu ambiente de su casa suele comer? Con qu frecuencia consume frutas y verduras frescas? Qu actividad lo ayuda a cultivar la paz interior? Qu opinin le merecen los alimentos integrales? Tiene problemas de constipacin? Realiza algn tipo de actividad fsica? Con qu frecuencia consume carnes rojas, blancas y embutidos? Qu hace cuando se siente desequilibrado emocional- mente? Suele comer dulces, postres y golosinas? Presenta algn padecimiento de forma frecuente? Qu importancia le da a su imagen? Cuntos litros de lquido toma por da? Se preocupa por comer de forma variada? Qu actividad le atrae realizar con mayor frecuencia? Est en su peso ideal? Qu aspectos predominan en su personalidad? Con qu frecuencia toma leche? Qu alimentos consume entre comidas? Con qu frecuencia cena? III-C2. Base de hechos: HECHOS 1. CLIPS> (defglobal ?*value* = "") 2. CLIPS> (defrule rule1 (rango s)(CV s)(toma_agua s)(fuma s)(azucar n)(balanceado n)(ejercicio n) => (bind ?*value* "(assert (answer1 s))")) 3. CLIPS> (defrule rule2 (rango s)(CV s)(or(ejercicio s)(ejercicio n))(fuma s) (zucar s)(balanceado n)(toma_agua n) => (bind ?*value* "(assert (answer2 s))")) 4. CLIPS> (defrule rule3 (rango s)(CV s)(fuma s)(zucar s)(balanceado s)(agua n)(ejercicio n) => (bind ?*value* "(assert (answer3 s))")) 5 5. CLIPS> (defrule rule4 (rango s)(CF s)(cena s)(vegetariano s)(alcohol n)(desayuno s) => (bind ?*value* "(assert (answer4 s))")) 6. CLIPS> (defrule rule5 (rango s)(CF s)(cena n)(vegetariano s)(or(alcohol s)(alcohol n))(desayuno n) => (bind ?*value* "(assert (answer5 s))")) 7. CLIPS> (defrule rule6 (rango s)(CF s)(cena n)(vegetariano s)(alcohol n)(desayuno s) => (bind ?*value* "(assert (answer6 s))")) 8. CLIPS> (defrule rule7 (rango s)(TR s)(tres_comidas s)(dulces n)(leguminosas s)(animal n)(sal n)(enlatados n)(comidas n) => (bind ?*value* "(assert (answer7 s))")) 9. CLIPS> (defrule rule8 (rango s)(TR s)(tres_comidas s)(dulces s)(leguminosas n)(animal s)(sal n)(enlatados n)(comidas n) => (bind ?*value* "(assert (answer8 s))")) 10. CLIPS> (defrule rule9 (rango s)(TR s)(tres_comidas n)(dulces s)(leguminosas n)(animal s)(sal s)(enlatados s)(comidas s) => (bind ?*value* "(assert (answer9 s))")) 11. CLIPS> (defrule rule10 (rango s)(CG s)(come_afuera s)(come_casa n)(jugos n)(or(cereales s)(cereales n))(leche n)(acei_veg n)(nutri n)(dieta n) => (bind ?*value* "(assert (answer10 s))")) 12. CLIPS> (defrule rule11 (rango s)(CG s)(come_afuera n)(come_casa s)(jugos s)(cereales n)(leche s)(acei_veg n)(nutriologo n)(dieta n) => (bind ?*value* "(assert (answer11 s))")) 13. CLIPS> (defrule rule12 (rango s)(CG s)(come_afuera n)(come_casa s)(jugos s)(cereales s)(leche n)(acei_veg n)(nutriologo n)(dieta n) => (bind ?*value* "(assert (answer12 s))")) 14. CLIPS> (defrule rule13 (rango s)(CG s)(come_afuera s)(come_Casa n)(jugos n)(cereales n)(leche n)(acei_veg s)(nutriologo n)(dieta s) => (bind ?*value* "(assert (ans- wer13 s))")) 15. CLIPS> (defrule rule14 (rango n)(sicos s)(bateria n) => (bind ?*value* "(assert (answer14 s))")) 16. CLIPS> (defrule rule15 (rango n)(psicologicos s)(sicos n) => (bind ?*value* "(assert (answer15 s))")) REGLAS 1. CLIPS> (defglobal ?*value* = "") 2. CLIPS> (defrule rule1 (answer1 s) => (bind ?*value* " Necesitas modicar tus habitos")) 3. CLIPS> (defrule rule2 (answer2 s) => (bind ?*value* " Imprime dieta para hombre/mujer")) 4. CLIPS> (defrule rule3 (answer3 s) => (bind ?*value* " Deberias cambiar tus habitos de vicios cotidianos")) 5. CLIPS> (defrule rule4 (answer4 s) => (bind ?*value* " Tu eres saludable")) 6. CLIPS> (defrule rule5 (answer5 s) => (bind ?*value* " Modica habitos alimenticios")) 7. CLIPS> (defrule rule6 (answer6 s) => (bind ?*value* " Solo modica algunas detalles en tus comidas")) 8. CLIPS> (defrule rule7 (answer7 s) => (bind ?*value* " Tu eres saludable")) 9. CLIPS> (defrule rule8 (answer8 s) => (bind ?*value* " Solo modica algunos detalles de alimentacion")) 10. CLIPS> (defrule rule9 (answer9 s) => (bind ?*value* " Imprime dieta para hombre/mujer")) 11. CLIPS> (defrule rule10 (answer10 s) => (bind ?*value* " Imprime dieta para hombre/mujer")) 12. CLIPS> (defrule rule11 (answer11 s) => (bind ?*value* " Imprime dieta para hombre/mujer")) 13. CLIPS> (defrule rule12 (answer12 s) => (bind ?*value* " Imprime dieta para hombre/mujer")) 14. CLIPS> (defrule rule13 (answer13 s) => (bind ?*value* " Deberias llevar tu dieta al pie de la letra")) 15. CLIPS> (defrule rule14 (answer14 s) => (bind ?*value* " Esta en el diagnostico incorrecto")) 16. CLIPS> (defrule rule15 (answer15 s) => (bind ?*value* " Esta en el diagnostico incorrecto.")) 17. CLIPS> (defrule rule16 (error s) => (bind ?*value* "Tu estas en excelentes condiciones de salud")) IV. CONCLUSIN Esta prctica fue fundamental para poder comprender la funcionalidad y la usabilidad de los agentes inteligentes para el desarrollo de sistemas que colaboren en su ejecucin sin duda alguna la Inteligencia Articial ha dado un paso ms hacia delante. Existen ya prototipos que estn siendo probados tanto en el mbito acadmico como industrial y ya empiezan a aparecer los primeros productos comerciales. Cabe indicar que, como siempre ocurre cuando aparece una nueva tecnologa, no debemos pensar que todo son agentes y lo que haba antes no es vlido. Las opciones a la hora de emplear agentes, tal y como hemos descrito, son mltiples, pero no conviene creer que cualquier problema es tratable de forma sencilla con una aproximacin de sistema basado en agentes. Es posible que en ocasiones el empleo de tcnicas clsicas resulte ms adecuado. V. REFERENCIAS [1] Grupo de Investigacin HIDRA Departamento de Ingeniera de Sistemas y Computacin Universidad de los Andes, AGENTES Y SISTEMAS MULTIAGENTE: INTEGRACIN DE CONCEPTOS BSICOS. [2] Julin Moreno Cadavid & Julin Esteban Santamara. Informe de Avance del Proyecto de Investigacin DIME - Diseo e implementacin de un Sistema Multi-Agente que simule el comportamiento del mercado energtico en Colombia. Modulo: Componentes del Mercado de Energa Elctrica en Colombia, 2003. [3] C.A. Iglesias, "Denicin de una Metodologa para el Desarrollo de Sistemas Multiagentes. Tesis Doctoral", Febrero 1998, Departamento de Ingeniera de Sistemas Telemticos de la Universidad Politcnica de Madrid. 6 [4] Revista "Inteligencia Articial" Revista Iberoamericana de Inteligencia Articial. ISSN 1137-3601 [5] Russell, S: Inteligencia Articial: un enfoque moderno. Prentice - Hall. Mxico, (1996). [6] Franklin, S., Graesser, A.: Is it an Agent, or just a Program?: A Taxonomy for Autonomous Agents. Proceedings of the Third International Workshop on Agent Theories, Ar- chitectures, and Languages. Springer-Verlag (1996). [7] F. Bellifemine, G. Caire, A. Poggi, G. Rimassa (2003). JADE A White Paper. Consultado en Junio 2013 en http://jade.tilab.com/papers/2003/WhitePaperJADEEXP.pdf [8] Cuesta Morales Pedro, Departamento de Informtica (Universidad de Vigo) (). Ingeniera de Software Orientada a Agentes. Consultado en http://www.esiiab.uclm.es/conferencias/traspas/pcuesta.pdf [9] Antonio F. Gmez Skarmeta y Juan A. Bota Blaya (2002). Tecnologas y Plataformas de Agentes. Consultado en marzo 02 de 2009 en http://ants.dif.um.es/~juanbot/page_les/uimp2002.pdf [10] Tulio Jos Marchetti, Alejandro Javier Garca (CACIC 2003). Evaluacin de Plataformas para el Desarrollo de Sistemas Multiagente. Consultado en http://cs.uns.edu.ar/~ajg/papers/2003(Cacic)MarchettiGarcia.pdf