Inteligencia Artificial

Departamento de Cs. e Ingenier´ıa de la Computaci´on Universidad Nacional del Sur Inteligencia Artificial Proyecto N◦ 2 A∗spibot: Agentes y B´ usqued...
11 downloads 1 Views 161KB Size
Departamento de Cs. e Ingenier´ıa de la Computaci´on Universidad Nacional del Sur

Inteligencia Artificial Proyecto N◦ 2 A∗spibot: Agentes y B´ usqueda Segundo Cuatrimestre de 2008 A∗spibot es un proyecto para desarrollar un robot aspiradora que efect´ ue la limpieza del piso de una habitaci´on. El prototipo a desarrollar, denominado A∗spibot (como el proyecto), ser´a dise˜ nado e implementado como un agente que percibe informaci´on de su entorno (la habitaci´on) a trav´es de sensores y act´ ua sobre ´el mediante efectores. Desde el punto de vista del agente, la habitaci´on ser´a un entorno no accesible, est´atico, discreto y determin´ıstico. A∗spibot ser´a capaz de desplazarse por el suelo de la habitaci´on, percibir suciedad y aspirarla. Naturalmente, la habitaci´on contendr´a muebles y paredes que obstaculizar´an su desplazamiento, de esta forma el agente deber´a ser capaz de detectarlos para luego eludirlos. Adem´as, A∗ spibot cuenta con una bater´ıa que le permite desempe˜ nar sus funciones sin necesidad de estar enchufado a la pared mediante un cable, y tiene la capacidad de percibir el nivel de carga de la bater´ıa en todo momento. En general, una sola carga de bater´ıa no le ser´a suficiente para realizar su tarea por completo, de forma que A∗spibot deber´a dirigirse peri´odicamente hacia su posici´on de inicio, donde podr´a recargarla y continuar. Deber´a ser suficientemente precavido para no agotar su bater´ıa antes de arribar a la posici´on de recarga, o quedar´a varado en medio de la habitaci´on y sin haber terminado su tarea. A∗spibot deber´a limpiar la habitaci´on lo mejor posible, y con el m´ınimo consumo de energ´ıa. Por esta raz´on, entre otras capacidades de razonamiento, el agente es capaz de efectuar b´ usquedas A∗ con el fin de hallar caminos ´optimos (respecto al consumo de energ´ıa) para moverse por la habitaci´on, y de ah´ı la estrella (‘∗’) junto a la ‘A’ en su nombre. Para el presente proyecto deber´a dise˜ nar e implementar el programa de agente que ∗ controlar´a a A spibot. Adem´as deber´a implementar un simulador de entorno que permita testear el programa de agente desarrollado. Como lenguaje de implementaci´on tanto para el programa del agente como para el simulador de entorno se adoptar´a el lenguaje Prolog. Finalmente, deber´a implementar una interfaz gr´afica en Java que facilite el ingreso de los datos de entrada de la simulaci´on y la interpretaci´on de los resultados de la misma. Concretamente, la interfaz deber´a ofrecer una representaci´on visual de una habitaci´on, permitiendo al usuario definir una configuraci´on particular. Adem´as permitir´a ejecutar la simulaci´on, mostrando visualmente la evoluci´on paso a paso de la misma.

La habitaci´ on (entorno) La habitaci´on ser´a representada mediante una grilla de n filas (numeradas de 0 a n − 1) por m columnas (numeradas de 0 a m − 1). Cada celda de la grilla pude ser de tipo obst´ aculo, baldosa, alfombra o ser la celda home. La celda home es la posici´on donde la aspiradora comienza su tarea, donde recarga energ´ıa y donde deber´a guardarse al terminar. Una celda de baldosa, al igual que una de alfombra, puede estar limpia o sucia. Observaci´on: Por tratarse de una habitaci´on, se asume que las celdas del borde son de tipo obst´aculo (representando pared y puertas cerradas). En otras palabras, la superficie de la habitaci´on estar´a delimitada por un contorno de obst´aculos. 1

La aspiradora (agente) En cada instante el agente se encuentra en una posici´on (celda) determinada, y al comenzar a funcionar se encuentra en la celda home. El agente es capaz de realizar una serie de acciones y cada vez que ejecuta una acci´on percibe del entorno a trav´es de sus sensores. Percepciones. El agente posee cuatro sensores, a trav´es de los cuales percibe informaci´on del entorno: un sensor de tacto, que le indica si ha chocado con alg´ un obst´aculo (pared, mueble, etc.), consecuencia de la acci´on anterior. un sensor de luz, que le indica si hay suciedad (polvo) en la posici´on en la que se encuentra. un sensor de superficie, que le indica si la superficie de la celda actual es de alfombra. un sensor de energ´ıa, que le indica el nivel de carga actual de la bater´ıa. Acciones. El agente cuenta con acciones para desplazarse por la habitaci´on: adelante, atr´ as, izquierda y derecha. Tambi´en cuenta con la acci´on aspirar, para limpiar la superficie del piso sobre la que se encuentra, y con la acci´on apagar, para detener su funcionamiento. Metas. La meta del agente es limpiar la habitaci´on, volver a la posici´on inicial (home) y apagarse.

Efectos de acciones (sobre el entorno) El agente puede moverse hacia cualquiera de las cuatro posiciones adyacentes a la actual mediante las acciones adelante, atr´as, izquierda y derecha. Mediante la acci´on adelante, el agente intentar´a desplazarse hacia la celda que se encuentra en la misma columna que la actual, pero en la fila anterior (F ilaActual − 1), mediante la acci´on derecha, a la celda que se encuentra en la misma fila pero en la columna siguiente (ColumnaActual + 1), etc. Si la celda a la que intenta desplazarse el agente contiene un obst´aculo, entonces no se desplaza (permanece en la posici´on en la que estaba) y su sensor de tacto le indicar´a que choc´o. El agente puede ejecutar la acci´on aspirar en cualquier momento. Si la celda sobre la que se encuentra el agente est´a sucia, entonces pasar´a a estar limpia luego de la ejecuci´on de aspirar. Si estaba limpia, entonces el entorno permanecer´a inalterado. Cada acci´on efectuada por el agente consume energ´ıa de la bater´ıa. Una acci´on de movimiento (adelante, atr´as, izquierda y derecha) consume 1 barra de energ´ıa si el agente se desplaza hacia una celda de baldosa o si se choca contra un obst´aculo, mientras que consume 2 barras si se desplaza sobre una celda de alfombra. La acci´on aspirar consume 1 barra de energ´ıa y la acci´on apagar no consume energ´ıa en absoluto. Si el agente se desplaza sobre la celda home, su bater´ıa ser´a cargada por completo, y as´ı podr´a continuar normalmente con su tarea. Sin embargo, si la energ´ıa se agota (el nivel de energ´ıa llega a 0) y las aspiradora no se encuentra sobre la celda home, simplemente dejar´a de funcionar.

Conocimiento del agente acerca del entorno Inicialmente, el agente no conoce la configuraci´on de la habitaci´on (es decir, la ubicaci´on de los obst´aculos ni de las celdas de alfombra y baldosa), y por supuesto tampoco sabe qu´e celdas 2

est´an sucias y cu´ales limpias. La u ´nica informaci´on acerca del entorno que el agente tiene inicialmente es la ubicaci´on (coordenadas) de la celda home (donde inicia la simulaci´on). Aparte de este conocimiento inicial, el agente podr´a obtener informaci´on acerca del entorno mediante las percepciones que le brindan sus sensores (tacto, luz, superficie y energ´ıa). De esta forma, mediante el conocimiento inicial y considerando las acciones de movimiento ejecutadas (y si tuvieron ´exito o no) el agente ser´a capaz de calcular su posici´on actual en la grilla en cada instante. M´as a´ un, el agente podr´a ir descubriendo la configuraci´on de la grilla mediante el an´alisis de sus percepciones. Importante: notar que para el programa de agente que controlar´a a A∗spibot, la bater´ıa forma parte del “entorno”, y la u ´nica forma de conocer el nivel actual de bater´ıa es a trav´es del sensor de bater´ıa.

Capacidades de Razonamiento: b´ usqueda A* Como parte de su mecanismo de razonamiento, el agente podr´a emplear cuando resulte apropiado el m´etodo de b´ usqueda A* con el prop´osito de hacer m´as eficiente su desplazamiento (en t´erminos de consumo energ´etico). Concretamente, el agente podr´a emplear el m´etodo de b´ usqueda A* para hallar un camino ´optimo en t´erminos de consumo de energ´ıa, desde un origen (generalmente su posici´on actual) a un destino determinados. Cuando el agente efect´ ue una b´ usqueda lo har´a desde su posici´on actual, sin moverse. En otras palabras, la b´ usqueda se llevar´a a cabo por completo antes de ejecutar la pr´oxima acci´on, y por lo tanto s´olo podr´a emplear conocimiento de la habitaci´on recabado hasta el momento. Debido a que el agente desconoce el contenido de las celdas a´ un no exploradas, no puede predecir, en el instante actual, c´ ual ser´a el costo de atravesarlas. M´as a´ un, siquiera sabe si podr´a atravesarlas (ya que podr´ıan ser celdas de obst´aculo). Por esta raz´on, el agente s´ olo considerar´ a en la b´ usqueda celdas de la habitaci´ on ya exploradas. Las b´ usquedas A* pueden emplearse para diversos prop´ositos, y la u ´nica restricci´on para su uso es que ´este sea razonable (es decir, que pueda ser justificado). Por supuesto, como requerimiento del proyecto, el algoritmo A* debe ser empleado al menos una vez durante el desempe˜ no del agente. Consideremos un ejemplo de aplicaci´on de A*. Una vez terminada su tarea el agente podr´ıa utilizar A* para encontrar un camino de costo m´ınimo desde su posici´on actual a la posici´on home. Luego de encontrar el camino podr´a seguirlo mediante la ejecuci´on de acciones de movimiento, y as´ı llegar a home con un consumo ´optimo de energ´ıa. Tambi´en podr´ıa emplear A* simplemente para saber cu´anta energ´ıa le demandar´ıa viajar desde una posici´on hasta otra. Esto puede ser de utilidad para planificar una recarga de bater´ıa “segura”, evitando que se agote la energ´ıa antes de llegar al cargador. ´ n: Como heur´ıstica deber´a emplearse la distancia de Manhattan entre la posiConvencio ci´on considerada y la posici´on destino.

Evaluaci´ on del desempe˜ no del agente Para evaluar el desempe˜ no del agente en la tarea de limpiar la habitaci´on se tendr´an en cuenta tres aspectos: - grado de completitud de la tarea de limpieza, es decir, qu´e fracci´on del total de celdas sucias fueron limpiadas. Este aspecto es capturado por el cociente Limpiadas/Sucias, donde Limpiadas es la cantidad de celdas de la habitaci´on que el agente efectivamente limpi´o y Sucias es la cantidad de celdas sucias en la habitaci´on al momento en que el agente comenz´o a funcionar. 3

- consumo energ´etico, capturado simplemente por la cantidad de barras de energ´ıa consumidas por el agente durante la simulaci´on. - guardado, es decir si el agente finaliz´o la simulaci´on en la posici´on home, o lo hizo en cualquier otra posici´on (ya sea porque ejecut´o la acci´on apagar, o porque se qued´o sin bater´ıa). El valor que se asociar´a a este aspecto es binario (si/no).

Convenciones de Dise˜ no e Implementaci´ on Representaci´ on en PROLOG Habitaci´ on Utilizaremos el par [F, C] (lista de dos elementos) para hacer referencia a la celda o posici´on de la grilla ubicada en la fila F y columna C. La configuraci´on de la habitaci´on ser´a representada mediante hechos de la forma celda(Pos, Tipo, Estado), donde Pos representa una posici´on en la grilla, Tipo ∈ {obs, alf, bal, home} y Estado ∈ {limpio, sucio, −}. El ‘-’ en Estado se emplea para las celdas con obst´aculos (ya que no tiene sentido representar el estado de limpieza de un obst´aculo) y para la celda home (ya que se asume que home siempre est´a limpia). Percepciones y Acciones Las percepciones ser´an representadas mediante la siguiente estructura (lista) Prolog: [Choco, Sucio, Alfombra, Energ´ ıa] donde Choco es 1 si el sensor de choque detect´o una colisi´on resultado de ejecutar la u ´ltima acci´on, y 0 en caso contrario, Sucio es 1 si el sensor de luz detecta suciedad, y 0 en caso contrario, Alfombra es 1 si el sensor de superficie detecta que el piso es de alfombra, y 0 en caso contrario y finalmente Energ´ ıa es un natural entre 0 y CapacidadBateria indicando el nivel actual de bater´ıa detectado por el sensor de energ´ıa. Las acciones ser´an representadas mediante las constantes Prolog adelante, atr´ as, izquierda, derecha, aspirar y apagar.

Programa de Agente y Simulador de Entorno La implementaci´on del programa de agente consta de dos predicados. Por un lado, el predicado aspibot setup(+PosHome), cuyo prop´osito es efectuar tareas de inicializaci´on, entre ellas almacenar en el estado interno del agente el conocimiento inicial acerca del entorno (posici´on de la celda home). Por otro lado, el predicado aspibot(+Perc, -Acc), implementando el comportamiento del agente en respuesta a las percepciones recibidas del entorno. La implementaci´on del simulador de entorno consta de tres predicados: 1. sim setup(+CapacBater´ ıa), cuyo prop´osito es efectuar tareas de inicializaci´on para el simulador, entre ellas definir la capacidad (carga m´axima) de la bater´ıa de A∗spibot, que constituye un par´ ametro de la simulaci´ on. Importante: aunque el usuario del simulador podr´ıa elegir cualquier valor para la capacidad de la bater´ıa, se adoptar´a bn ∗ m/2c como valor default, donde n y m son las dimensiones de la grilla. La c´atedra emplear´a principalmente este valor para efectuar las pruebas.

4

Figura 1: Interfaz Java y comunicaci´on con simulador en Prolog 2. termination/0, para determinar si se verifica la condici´on de terminaci´on de la simulaci´on. 3. run step/0, para implementar un paso o iteraci´on del ciclo de simulaci´on. Concretamente, se obtiene la siguiente percepci´on que recibir´a el agente, se invoca aspibot/2 con la percepci´on, obteniendo la acci´on que el agente decidi´o realizar, y finalmente se actualiza el estado del simulador de entorno para reflejar la ejecuci´on de la acci´on.

Interfaz Java y comunicaci´ on con simulador en Prolog La interfaz permitir´a ingresar en forma visual una configuraci´on para la habitaci´on e iniciar´a la simulaci´on, invocando a los predicados sim setup/1 y aspibot setup/1. Luego, mediante un bot´on STEP, permitir´a la ejecuci´on paso por paso de las simulaci´on. Es decir, al hacer click sobre el bot´on STEP, se ejecutar´a un paso de la simulaci´on (previa verificaci´on de la condici´on de terminaci´on), reflejando en la representaci´on visual de la habitaci´on los cambios que se produjeron en esta iteraci´on, junto a cualquier otra informaci´on adicional que se desee mostrar relativa a la iteraci´on. M´ınimamente, deber´a distinguirse celdas exploradas de las no exploradas hasta el momento, (por ejemplo, podr´ıan pintarse los bordes de las celdas exploradas). La figura 1 muestra un esquema de la funcionalidad del bot´on STEP y la comunicaci´on entre Java y Prolog. La interfaz permitir´a tambi´en ejecutar n pasos de la simulaci´on mediante un bot´on n STEPS (ver figura 1). Al finalizar la simulaci´on, deber´a mostrarse los valores asociados a los tres aspectos de evaluaci´on del desempe˜ no (definidos en la secci´on Evaluaci´on del desempe˜ no del agente). A∗spibot thoughts Con el prop´osito de entender lo que el agente est´a haciendo (y “pensando”) en cada instante de la simulaci´on, se establece un esquema de comunicaci´on entre el agente y la interfaz mediante el cual este primero “publica” sus pensamientos e intenciones. Concretamente, en cada iteraci´on 5

de la simulaci´on, el programa del agente puede hacer asserts de uno o m´as hechos de un predicado din´amico thought/1, donde el argumento de thought es un string con un pensamiento que el agente quiere publicar. Luego de cada iteraci´on (step) de la simulaci´on, se efectuar´an retracts desde Java (m´as precisamente desde el propio m´etodo STEPActionPerformed ) de todos los hechos thought/1 “assertados” por el agente en dicha iteraci´on, publicando los pensamientos en un ´area de texto con scroll, como muestra la figura 1. El prop´osito de esta facilidad es brindar al usuario del simulador informaci´on necesaria para entender qu´e est´a ocurriendo en cada instante. Esto puede resultar de gran utilidad en la etapa de desarrollo y prueba del agente, pero tambi´en para la correcci´on del proyecto. Como requerimiento m´ınimo del proyecto, cada vez que el agente decida ejecutar el A* deber´a publicarlo por esta v´ıa, indicando (muy brevemente) el prop´ osito de la realizaci´ on de la b´ usqueda y fundamentalmente la soluci´ on obtenida (camino).

Condiciones de Entrega Para el presente proyecto se establecen las siguientes condiciones de entrega: 1. Aparte de la implementaci´on de la simulaci´on, se deber´a realizar un informe completo que documente las principales decisiones de dise˜ no e implementaci´on adoptadas al desarrollar tanto el entorno como el programa de agente, as´ı como cualquier otra observaci´on que se considere pertinente. Particularmente, debe quedar clara la estrategia que seguir´a el agente para desarrollar su tarea. El informe debe incluir ejemplos de corridas de la simulaci´on y tambi´en un listado de los principales programas implementados. Incluir una secci´on que explique detalladamente los pasos requeridos para ejecutar la interfaz suministrada. 2. Las comisiones pueden estar conformadas por hasta 2 integrantes (recordar que ´estos deben estar previamente registrados con la c´atedra). 3. La fecha l´ımite de entrega del presente proyecto es el d´ıa lunes 27 de Octubre de 2008 en el horario de clase. Los proyectos entregados fuera de t´ermino recibir´an una penalizaci´on en su calificaci´on, la cual ser´a proporcional al retraso incurrido. 4. Deber´a presentarse un folio pl´astico CERRADO (no entregar carpetas) conteniendo los siguientes elementos: El informe impreso, que deber´a estar encabezado por una car´atula identificando claramente a los integrantes de la comisi´on. Un disquete o cd conteniendo: a) Una carpeta Prolog, que contenga el c´odigo Prolog de los predicados implementados. En un archivo “entorno.pl” incluir todos los predicados que implementan el simulador de entorno. En un archivo “aspibot.pl” incluir todos los predicados que implementan al agente. b) Una carpeta Java, que contenga el c´odigo Java de la interfaz implementada. c) Una carpeta Test, que contenga todos los archivos requeridos para ejecutar la interfaz implementada, entre ellos el archivo ejecutable de la interfaz (.jar). ´ n del proyecto se tendra ´ en cuenta que la implementacio ´n 5. en la evaluacio respete todas las convenciones establecidas. se recomienda prestar aten´ n a dichas convenciones. cio 6