Sistema experto: Elección de jugadores de fútbol a partir de unas determinadas características seleccionadas. Miriam Organista Ayala Sonia Muñoz Benítez Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Avda. De la Universidad, 30 28911, Leganés (Madrid-España) Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Avda. De la Universidad, 30 28911, Leganés (Madrid-España) [email protected] [email protected] RESUMEN 2. DESCRIPCIÓN DE LA NECESIDAD En este documento se describe la utilización de JESS (versión Java de CLIPS) para la realización de un sistema experto. Este sistema nos permitirá elegir cuál es el mejor jugador de fútbol dadas unas ciertas características del mismo. Un ojeador de fútbol normalmente debe decidir según una serie de características cuál es el jugador de fútbol más adecuado para sus objetivos. Este programa intenta dar respuesta a esta necesidad. Categorías y Descriptores de Temas I.2.1 [Computing Methodologies]: Artificial Intelligence— Applications and Expert Systems; I.2.4 [Computing Methodologies]: Artificial Intelligence—Knowledge Representation Formalisms and Methods; Para ello, se tiene información sobre varios jugadores de fútbol. El usuario podrá interaccionar con el programa respondiendo a una serie de preguntas sobre las características del jugador que busca. Y finalmente, el usuario recibirá el nombre del jugador que más se adecúa a dichas características. Algoritmos, Documentación, Diseño, Lenguajes, Teoría. De esta forma se facilita la búsqueda de un jugador que tenga unos requerimientos previos. Además, como el sistema es capaz de aprender se puede ir ampliando el número de jugadores que se pueden ofrecer como solución a la necesidad del usuario. Palabras clave 3. SISTEMA EXPERTO Términos generales Inteligencia artificial, Sistema Experto, Clasificación, Jugador de Fútbol, Elección de Jugador, CLIPS, JESS. 1. INTRODUCCIÓN En Inteligencia artificial uno de los temas a tratar es el de los sistemas expertos. Mediante éstos las máquinas que poseen cierta información base consiguen dar una solución adecuada a la situación planteada por el humano. Este campo de investigación se inicio en la década de los 70. En el año 1974 el profesor de la Universidad de Stanford Ted Shortliffe desarrolló MYCIN, el cual es considerado el primer sistema experto de la historia. MYCIN conseguía, mediante una serie de preguntas que se le hacía a un humano, elegir un diagnóstico adecuado de la enfermedad que sufría un paciente. Éste sistema demostró el poder de los sistemas basados en reglas para la representación del conocimiento y la inferencia en el dominio de los diagnósticos médicos [1]. En el presente documento se describe un sistema experto sencillo parecido a MYCIN. El objetivo de este sistema es que la máquina sea capaz de decidir, según las respuestas que obtiene de una serie de preguntas, cuál es el jugador de fútbol más adecuado de los que tiene conocimiento. También es capaz de ampliar su conocimiento (aprender acerca de nuevos jugadores). Para realizar dicho sistema experto se hará uso de la herramienta JESS (Extensión Java de CLIPS). Un sistema experto es un sistema que resuelve problemas utilizando una representación simbólica del conocimiento humano. Para ello, el sistema experto representa y utiliza conocimiento especializado en un determinado dominio. En nuestro caso, será conocimiento sobre jugadores de fútbol. Además, es capaz de razonar de tal forma que muestra un comportamiento similar al que tendría un experto en la materia. En nuestro caso, un ojeador de fútbol. Para lograr su objetivo, representa el conocimiento de manera simbólica y manipula dichos símbolos. De esta forma, obtiene un alto rendimiento en el dominio en el que es experto (en este ejemplo, los jugadores de fútbol). Los sistemas expertos hacen una separación entre el conocimiento y la forma de utilizarlo. Además, se basan en la naturaleza heurística del conocimiento y no en algoritmos [2]. 3.1 Arquitectura general de un Sistema Experto El sistema experto está formado por las partes que se observan en la figura 1. de inferencia que por el momento se han usado para la resolución de dicho problema. 3.2 Software de implementación Existen distintas soluciones software para implementar sistemas expertos. Este documento se basa en una solución utilizando JESS (extensión Java de Clips). 3.2.1 CLIPS C Language Integrated Production System (Sistema de producción integrado en lenguaje C), sistema creado por la NASA en 1986 como una herramienta para el desarrollo de Sistemas Expertos. Su objetivo era solventar los problemas existentes en el desarrollo con LISP. Aunque la interfaz que usa se parece mucho a LIPS. Es uno de los lenguajes más utilizados ya que tiene una serie de características bastante ventajosas. [4] Figura 1. Estructura general de un sistema experto [3] 3.1.1 Motor de Inferencias Sirve para obtener conclusiones utilizando la base de conocimientos. Para ello, aplica reglas sobre los hechos presentes. En este sistema se aplican las reglas de decisión sobre uno u otro jugador. Entre las funciones que realiza se encuentra la determinación de las acciones que tendrán lugar y el orden en que se llevarán a cabo. También determinará cómo y cuándo se procesarán las reglas, y dado el caso también la elección de qué reglas deberán procesarse. Además, se encargará de controlar el diálogo con el usuario [2]. El fin último del motor de inferencias es usar las reglas de las que dispone y crear un árbol de decisión que sirva para mostrar una solución final al usuario. 3.1.2 Base de conocimiento Contiene los hechos, reglas y procedimientos del dominio del sistema experto que son importantes para resolver el problema. La representación de esta información debe ser coherente, sencilla, independiente, rápida, fácil de modificar, relacional, potente, modular y fácil de mantener [2]. 3.1.3 Interfaz de usuario Debe ser sencilla, rápida, fácil de entender y que evite la introducción de datos incorrectos [2]. 3.1.4 Subsistema de adquisición El conocimiento, es decir, las reglas, los hechos, las relaciones entre los hechos, etc., debe poder introducirse de la forma más sencilla posible. Por esto la representación de la información debe ser clara y la sintaxis debe poder comprobarse automáticamente [2]. 3.1.5 Generador de explicaciones Las soluciones dadas por los expertos deben ser repetibles por el usuario. Por ello, es importante saber el progreso de la resolución de problema mientras se aborda. En esto se debe centrar el generador de explicaciones. Algunos sistemas representan estas explicaciones de forma gráfica [2]. 3.1.6 Memoria de trabajo Mantiene la información de la resolución de un problema en concreto que adquiere de la base de conocimiento y de las reglas Una de ellas es que CLIPS es integrable. Esto significa que puede ser embebido en código imperativo. Además puede ser invocado como una sub-rutina, para ser integrado con lenguajes como C, Java, FORTRAN, etc. Por otra parte, CLIPS tiene un lenguaje orientado a objetos (COOL). Otra característica importante de CLIPS es su portabilidad. Al estar escrito en C, cualquier sistema operativo con un compilador ANSI de C o de C++ puede utilizarlo. Permite además un desarrollo interactivo de sistemas expertos ya que incluye herramientas para la depuración, ayuda en línea, y un editor integrado (adaptadas para cada uno de los distintos Sistemas Operativos). Por otra parte, está creado para que puedan verificarse las reglas incluídas en el sistema experto que se está desarrollando. Además, permite el diseño modular y el particionamiento de la base de conocimientos del sistema. CLIPS puede chequear restricciones de manera estática y dinámica para funciones y otros tipos de datos. Por último, CLIPS permite el análisis semántico de reglas para prevenir posibles inconsistencias. Otra ventaja importante es que CLIPS es un software de dominio público. [5] CLIPS dispone de interfaces y herramientas como JESS (que se usa en el presente estudio) o FuzzyCLIPS (para lógica borrosa). CLIPS trabaja con reglas y hechos. Los hechos permiten que una regla sea aplicable. El encaminamiento de la verdad que hace CLIPS es hacia delante. Pero además, permite añadir reglas, hechos y estrategias para la resolución de conflictos de manera dinámica[4]. 3.2.2 JESS Java Expert System Shell CLIPS. es una consola en Java basada en Entre las características a destacar de JESS es su alta portabilidad, su potencia y su gran flexibilidad. En principio JESS fue creado para simular el núcleo fundamental de CLIPS. Pero, gracias a la importancia creciente de los sistemas desarrollados en Java, se ha convertido en una herramienta muy práctica para permitir dotar a los sistemas desarrollados en Java la capacidad de “razonar”. Una de las ventajas más importantes que presenta es que puede interaccionar en el mundo web. Esto es posible gracias a que puede incluirse en applets o en navegadores. Esto es poco utilizada pues supone un gran carga y se prefiere ubicar el sistema experto en el servidor. Para empezar, hace una serie de preguntas sobre las características que el usuario quiere del jugador. Por último, es lógico que JESS pueda utilizarse mediante la consola, o a través de sistemas como la plataforma Eclipse que facilitan el desarrollo de programas Java [4]. Tras las respuestas del usuario el sistema le ofrece una posible solución de entre las que tiene guardadas en el archivo .dat (ver Tabla 1). La información que se muestra sobre el jugador elegido es su nombre y el club donde está jugando actualmente (ej. Figura 4) 4. DISEÑO Para realizar el sistema experto Malidini en JESS tuvimos que plantear cuáles serían las características que clasificarían a los jugadores. Con esas características se conseguía que el programa desarrollado en JESS pudiera hacer, mediante su motor de inferencia, un árbol de decisión que permitiese resolver el problema propuesto. En algunos casos, el programa tiene más de un posible jugador con las mismas características. En éstos, el usuario puede pedir que se le muestren las otra alternativas o no (ej. Figura 5 y Figura 6) 4.1 Árbol de decision La primera decisión que se debe tomar al arrancar el programa es la posición en la que juega el tipo de jugador que interesa. Dependiendo de qué tipo de jugador se haya elegido se pedirán o no más características sobre él mismo (ver Figura 2). En cada hoja de este árbol hay una última característica de elección común para todas ellas. Esta es la nacionalidad del jugador. Se podrá elegir, entre: España, resto de Europa u otras nacionalidades (ej. Figura 3). Figura 5. Ejemplo de las diferentes opciones dadas sobre un mismo tipo de jugador Figura 3. Ejemplo de elección de nacionalidad Por otra parte, si el usuario no está de acuerdo con ninguno de los jugadores elegidos por el sistema puede introducir el nombre de un nuevo jugador y la característica que lo diferencia de los anteriores. (ej. Figura 7) Figura 2. Árbol de decisión utilizado 5. IMPLEMENTACIÓN El programa sigue los siguientes pasos para llegar a un jugador adecuado. Tabla 1. Relación de Jugadores almacenados Figura 4. Ejemplo de ejecución básica Figura 6. Ejemplo de ejecución con múltiples soluciones Figura 7. Ejemplo de ejecución ampliando el conocimiento del sistema Esto permite que el sistema pueda ampliar su base de conocimiento. 6. POSIBLES TRABAJOS FUTUROS Se podría ampliar este trabajo añadiendo mayor información sobre el jugador o mayor número de jugadores. También se podría distinguir entre los distintos jugadores con nuevas características como la edad, o el club en el que milita, la cláusula de rescisión, etc. Por otra parte, se podría mejorar la interfaz gráfica del programa. 7. CONCLUSIONES Se ha tratado de desarrollar un ejemplo sencillo de sistema experto utilizando JESS. El objetivo no era conseguir un sistema profesional ni muy especializado. Sin embargo, se ha demostrado que esta herramienta es muy potente para este tipo de sistemas. Por otra parte, se ha podido comprobar la utilidad que puede llegar a tener un sistema experto basado en conocimientos para la toma de decisiones sencillas. Por tanto, este tipo de sistemas tienen un amplio campo de aplicación en diversas materias. Ya que, cualquier ámbito en que se requieran soluciones software que permitan la toma de decisiones de manera fácil y rápida a partir de unos datos concretos de entrada puede utilizar un sistema experto. 8. AGRADECIMIENTOS A Julio Villena Román. 9. REFERENCIAS [1] Villena Román, Julio. 2009. Apuntes de la asignatura Inteligencia en Redes de Comunicaciones. Tema: Breve historia de la Inteligencia Artificial. Universidad Carlos III (Madrid, España, 2009) DOI = http://www.it.uc3m.es/jvillena/irc/ [2] Villareal Farrah, Gonzalo. Apuntes de Sistemas Basados en Conocimiento o Sistemas expertos. Asignatura Inteligencia Artificial.DOI=http://www.comenius.usach.cl/gvillarr/cursoia/ present/Sis-Exp%20P2.ppt. [3] Villena Román, Julio. 2009. Apuntes de la asignatura Inteligencia en Redes de Comunicaciones. Tema: Sistemas Basados en Conocimiento. Universidad Carlos III (Madrid, España, 2009) DOI = http://www.it.uc3m.es/jvillena/irc/ [4] González-Ripoll, P. y Lucas, L. 2008. Trabajo de la asignatura Inteligencia en Redes de Comunicaciones. Sistema Experto: Clasificación de animales según su taxonomía. Universidad Carlos III (Madrid, España, 2008) DOI= http://www.it.uc3m.es/jvillena/irc/#7 [5] Gómez, A., Corroto, A. y Bermejo, I. 2008. Trabajo de la asignatura Inteligencia en Redes de Comunicaciones. Sistemas de Producción en CLIPS. Universidad Carlos III (Madrid, España, 2008) DOI= http://www.it.uc3m.es/jvillena/irc/#7