1 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Facultad: Ingeniería Escuela: Computación Asignatura: Sistemas Expertos e Inteligencia Artificial Agentes Inteligentes en Java Contenido En esta práctica se estudian los Agentes Inteligentes en la Inteligencia Artificial, elementos que son útiles para la percepción de estímulos que provienen del entorno que nos rodea. Los agentes hacen uso de los sensores como medio para poder percibir y procesar esos estímulos. Objetivos Específicos Identificar los tipos de agentes a utilizar en la IA. Conocer la librería jade y su aplicación en el tema de los agentes. Implementar agentes inteligentes en Java utilizando la librería jade. Material y Equipo Guía de laboratorio N 3. Computadora con Netbeans 7 o superior. Dispositivo de almacenamiento. Introducción Teórica Se puede considerar a la Inteligencia Artificial (IA) como una disciplina orientada a la construcción de agentes inteligentes. Agente inteligente: son una entidad física o virtual con capacidad para percibir su entorno, procesar tales percepciones y responder o actuar en su entorno de manera racional, los agentes pueden percibir su medioambiente con la ayuda de sensores (permiten al agente obtener información de su entorno) y actuar en ese medio utilizando actuadores (elementos que reaccionan a un estímulo realizando una acción). Estructura de los Agentes La estructura de los agentes se concentra en el núcleo del problema y sobre cómo trabajan internamente. El objetivo de la inteligencia artificial es diseñar el programa del agente para que implemente la función de este. Asumiendo que el programa se ejecutará en un computador con sensores y actuadores, conocido como arquitectura.
2 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Agente = Arquitectura + Programa Arquitectura de un agente: es una metodología particular para construir agentes que especifica cómo el agente puede ser descompuesto en un conjunto de módulos componentes y cómo estos módulos pueden interactuar. El conjunto total de módulos y sus interacciones deben proveer una respuesta a la pregunta de cómo el dato monitoreado y el estado interno del agente determinan las acciones y estados internos futuros. Se tienen tres categorías principales: Arquitecturas deliberativas. Arquitecturas reactivas. Arquitecturas híbridas. Programas de Agente El Programa es un algoritmo que recibe las percepciones del agente y genera una secuencia de acciones. Librería JADE Es una librería que permite trabajar con agentes inteligentes. Un agente JADE cumple las siguientes características: Tiene un nombre único en el entorno de ejecución. Se implementa como un único hilo de ejecución (single-threaded). Tiene un método de inicio (setup) y otro de fin (takedown). El método protegido setup() sirve para inicializar el agente incluyendo instrucciones que especificarán ontología a utilizar y los comportamientos asociados al agente. Se invoca al comenzar la ejecución del agente. El método protegido takedown() sirve para eliminar recursos antes de la eliminación del agente. Este método es invocado cuando se realiza una llamada al método dodelete(), que es el que realmente da por finalizada la ejecución del agente. Ambos métodos deben ser sobreescritos. La clase Agent Es una súper clase común que permite a los usuarios crear software de agentes. Suministra métodos que permiten ejecutar las tareas básicas de los agentes como: o Pasar mensajes utilizando objetos ACLMessage, con correspondencia de patrones. o Dar soporte al ciclo de vida de un agente. o Planificar y ejecutar múltiples actividades de manera concurrente.
3 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Los programadores de aplicaciones basadas en agentes deben escribir sus propios agentes como subclases de Agent, añadiendo tantos comportamientos específicos como sea necesario y explotando las capacidades de la clase Agent. Procedimiento 1. Crear una carpeta en la unidad C con el nombre Jade. 2. Descargar de los recursos de la guía el archivo jade.rar 3. Guardar y descomprimir el archivo en la carpeta creada en la unidad C 4. Crear un proyecto en Netbeans con el nombre G3Agentes. 5. Agregar la librería jade en Netbeans realizando los siguientes pasos: a. Hacer clic en la opción Tools y luego en la opción Libraries b. Hacer clic en el botón New Library
4 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 c. Colocar como nombre a la librería JadeLib Hacer clic en el botón OK d. Seleccionar la librería previamente creada e. Hacer clic en la opción Add JAR/Folder. f. Agregar el archivo jade.jar, el cual se encuentra en la carpeta lib dentro de la carpeta jade
5 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 g. Agregar el archivo commons-codec-1.3.jar, el cual se encuentra en la carpeta commons-codec h. Hacer clic en OK luego de haber agregado los dos archivos.
6 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 i. Hacer clic derecho sobre Libraries y seleccionar la opción Add Library j. Seleccionar la librería JadeLib y hacer clic en Add Library 6. Ahora, vamos a crear nuestro primer agente con el típico Hola Mundo. Veamos qué hay que hacer y cuáles son las configuraciones necesarias. Al crear su proyecto vamos a digitar el siguiente código:
7 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 7. Para poder ejecutar la plataforma y poder ver al agente en acción, se realiza el siguiente procedimiento: a) Clic derecho en nuestro proyecto Seleccionar Propiedades. Luego aparecerá una ventana sobre la cual hacemos las siguientes acciones: 8. Ejecutamos el proyecto y si todo ha salido bien, se abrirá una ventana en donde se administran los agentes: Plataforma de Administración de los Agentes.
8 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Agente comprador de libros A continuación, vamos a implementar la clase Agent, pero haciendo uso del entorno FIPA, lo cual permite la interacción entre agentes. Para este ejemplo se proporcionará el respectivo código. Debe recordar que el proyecto necesita la librería JADE. Su proyecto debe lucir así: Ahora, Cómo ejecutar en entorno FIPA? Como no contamos con una clase main para la ejecución de java. Los que haremos es llamar a una clase dentro de lo que son los componentes de jade, es la clase para bootear jade y que ejecute FIPA. Luego se envían argumentos para interfaz gráfica (GUI). Lo descrito anteriormente lo hacemos en la raíz del proyecto:
9 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Al configurar, encontramos los siguientes parámetros, los cuales dejamos tal y como aparecen por defecto.
10 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Ahora ejecutamos nuestro proyecto. Obtenemos la siguiente ventana, la cual será nuestra plataforma de trabajo: En esta plataforma tenemos los agentes por defecto, pero comenzamos a crear nuestros propios agentes, en este caso agentes compradores y vendedores. Agregando un nuevo agente Ahora ingresamos el nombre del agente, así: En los puntos que están al lado derecho de la pestaña de la lista desplegable del Class Name, hacemos clic y agregamos lo siguiente:
11 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Después de haber seleccionado la clase, entonces nuestro cuadro de creación de agentes debe quedar de la siguiente forma: Hacemos clic en OK y veremos que se ha creado nuestro nuevo agente: Si vemos nuestra consola en NetBeans, nos damos cuenta que en el catálogo ya existe el primer libro y ya se ve incluido en el entorno el agente vendedor: Ahora vamos a generar comportamientos: Creamos un nuevo comprador. Para ello seguimos el mismo proceso anterior y el resultado lo podemos ver en la consola: Note que cada 60 segundo el agente comprador envía el mensaje, en el cual se indica los libros que desea comprar:
12 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Por qué no me aparecen vendedores? Sencillo, porque no hemos creado agentes vendedores. Para el caso, está tratando de encontrar agentes vendedores. En este ejemplo se ejecuta un vendedor con una interfaz para que él agregue a catálogos los libros que puede vender. A continuación, creamos un agente vendedor haciendo el mismo proceso que en la creación del vendedor, con la diferencia de que la clase a elegir es la de agente vendedor. Al seleccionar automáticamente se nos abre la interfaz para poder ingresar los libros al catálogo que probablemente están siendo solicitados por los compradores o quedan disponibles para ventas futuras: Agente vendedor que ofrece Libro de Java
13 Sistemas Expertos e Inteligencia Artificial / Guía III / Ciclo 01-2017 Como podemos observar, al momento de ofrecer los libros, automáticamente el agente comprador toma las opciones de compra que hay en el catálogo. Investigación Complementaria Crear 5 agentes, 4 de ellos con nombres de balnearios (por ejemplo: Los Chorros, Termos del Río, Apuzunga, Aventura Tropical) y nombre del servicio, lo que ofrecen (ejemplos: SPA, Alojamiento, Alojamiento_Y_SPA), el quinto agente, se corresponderá con un cliente que desea un listado de los servicios disponibles, (ej. El Balneario Los Chorros, ofrece las siguientes posibilidades: Alojamiento_Y_SPA). Para crear estos agentes, serán necesarias dos clases diferentes: una clase para los agentes que ofrecen servicios y otra clase para los agentes que solicitan servicios. Los agentes que ofrecen servicios deberán realizar las siguientes tareas: Mostrar por pantalla un saludo, su nombre, su AID y su estado. Pasar como argumentos el tipo y nombre de servicio, capturar estos argumentos y asignárselos al servicio. Registrar su servicio en las páginas amarillas. El agente que solicita servicios deberá realizar las siguientes tareas: Mostrar por pantalla un saludo, su nombre, su AID y su estado. Buscar y listar los tipos y nombres de los servicios que ofrece un agente determinado y mostrar el AID del agente que ofrece ese servicio. Finalmente, los agentes se despiden y eliminan sus registros de las páginas amarillas. Bibliografía https://cibernetica.wordpress.com/2007/05/23/%c2%bfque-es-un-agente-inteligente/ Inteligencia Artificial con Aplicaciones a la Ingeniería, Pedro Ponce Cruz.