<<

INTELIGENCIA EN REDES DE COMUNICACIONES Trabajos de la asignatura Curso 11-12

Departamento de Ingeniería Telemática

Universidad Carlos III de Madrid

INTELIGENCIA EN REDES DE COMUNICACIONES

Trabajos de la asignatura

Curso 11-12

Julio Villena Román Raquel M. Crespo García Departamento de Ingeniería Telemática Universidad Carlos III de Madrid {jvillena, rcrespo}@it.uc3m.es

ÍNDICE

1. El coche inteligente...... 1 Daniel Asegurado Turón Si alguna vez has soñado con tener un coche como KITT, el coche fantástico, ese sueño podría hacerse realidad en un futuro no muy lejano. El sueño del coche fantástico es una realidad que está emergiendo con fuerza en varios países, incluido España. El objetivo del presente documento es realizar un recorrido por la historia del automóvil hasta llegar a los considerados coches inteligentes, donde nos detendremos a analizar los diferentes proyectos que trabajan con esta idea.

Palabras clave: Coche autónomo, automatización de vehículos, autoconducción, Mecatrónica, , LIDAR, GPS, visión artificial, eye tracking, estereoscopía.

2. Sistemas expertos: MYCIN ...... 11 Ainhoa Sesmero Fernández, Sandra Pinero Sánchez En este documento se explica lo que es un sistema experto, sus principales usos y en concreto hablaremos del sistema MYCIN. Uno de los primeros sistemas expertos para la detección y tratamiento de enfermedades de la sangre.

Palabras clave: Sistemas expertos (SE), aplicaciones en medicina, MYCIN, medicina, organismos, conocimiento.

- i - 3. Diseño e implementación de un agente inteligente Mario A.I. .. 19 Yuchen Du, Virginia Izquierdo Bermúdez En este artículo se detalla el diseño y la implementación de un agente inteligente capaz de jugar al videojuego de Mario así cómo las técnicas utilizadas para este diseño.

Palabras clave: Árbol de decisión, agente inteligente, Mario, enemigos, agente, inteligencia, escenario.

4. Jugador virtual de póker Texas Hold’em ...... 29 Alberto Álvarez Polegre, Lucas Bernalte Pérez, David Díaz Chinea El póquer es un juego de cartas de los llamados de "apuestas", en los que los jugadores, con todas o parte de sus cartas ocultas, hacen apuestas sobre una puja inicial, recayendo la suma total de las apuestas en el jugador o jugadores con la mejor combinación de cartas. Este trabajo hace un diseño de un jugador virtual de póker Texas Hold’em.

Palabras clave: Póker, Texas Hold’em, probabilidad, jugada, mano, estrategia.

5. Inteligencia artificial en el mundo de la aviación ...... 37 Daniel Ruesga Ibañez, Hector Molla Ruiz En este documento vamos a realizar un estudio del impacto que ha tenido la inteligencia artificial en el mundo de la aviación moderna. Nos centraremos de forma especial en los sistemas de pilotaje automático disponibles en los aviones y su avance hasta los vehículos no tripulados (UAVS).

Palabras clave: Sistemas expertos, aviación, piloto automático, navegación, vuelo, UAV.

6. Sistemas Expertos en meteorología ...... 45 Carlos Lentisco Sánchez, Tania Romero Rodríguez Las aplicaciones basadas en inteligencia artificial son innumerables y van desde la biomedicina o educación hasta la predicción de las condiciones meteorológicas que realizan los sistemas expertos, objeto de estudio y razón de ser de este documento. Esta es la razón que justifica la búsqueda del ser humano por predecir fiablemente las condiciones meteorológicas. A lo largo de este documento nos introduciremos más en los sistemas expertos repasando su evolución histórica hasta nuestros días para abordar posteriormente y con mayor profundidad un ejemplo de estos sistemas. Centrándonos en el sistema Prometeo.

Palabras clave: Inteligencia, meteorología, sistemas expertos, predicción meteorológica.

- ii - 7. Traducción automática. Técnicas y aplicaciones ...... 53 Isabel Cuadrado Gutiérrez, David Ferrer Figueroa En este texto se aborda un tema de gran relevancia en la actualidad, el concepto de la traducción automática. Se analizará esta área desde su origen hasta la actualidad, tratando la evolución de las distintas técnicas empleadas para obtener la mayor calidad posible en las traducciones. Asimismo, en el trrabajo se hace un breve repaso a las aplicaciones más utilizadas y al desarrollo futuro previsto en este campo teniendo en cuenta, entre otros factores, la rentabilidad del negocio y la calidad de la traducción.

Palabras clave: Inteligencia artificial, Traducción automática, algoritmo de corpus.

8. Resolución de Puzzles Deslizantes ...... 61 Lara Rojo Celemín, Iván Suárez Morejudo En 1878, Sam Loyd daba un premio de $1.000 a quien fuera capaz de resolver su famoso 14-15 Puzzle. Se trataba de un puzzle deslizante de 16 piezas que no tenía solución, lo que hizo que muchas personas se volvieran locas tratando de resolverlo. En este trabajo tratamos de presentar diferentes algoritmos para resolver el 15-Puzzle desde el punto de vista de la Inteligencia Artificial. Para ello, utilizamos el algoritmo de búsqueda en árboles A*, del que daremos una visión general que luego particularizaremos a nuestro caso del 15-Puzzle. Aunque en este trabajo sólo nos hemos centrado en resolver el rompecabezas de 16 piezas, los algoritmos explicados pueden utilizarse para resolver cualquier puzzle deslizante n x n con solución.

Palabras clave: Puzzles, Algoritmos, permutaciones pares, heurística, Inteligencia Artificial, resolución humana, puzzles deslizantes, 15-puzzle, Sam Loyd, Algoritmo A*, herística, Turing.

9. Desarrollo de un agente autónomo jugador de Super Mario .... 70 Adrián Amor Martín, Cristina García Muñoz En este documento se va a detallar cómo realizar un agente, basado en árboles de decisión, que sea capaz jugar de forma autónoma al juego Super Mario en el marco del concurso Mario AI 2011.

Palabras clave: Agente, árboles de decisión, inteligencia artificial, Super Mario.

10. Implementación de un Agente para un jugador de Mario A.I. .. 78 Alejandro Pérez Cruz, David de la Horra Iglesias En este documento presentamos una posible implementación de un agente que pueda jugar al juego SuperMario Bross. con una cierta inteligencia autónoma.

- iii - Palabras clave: Algoritmos de búsqueda, lenguaje de programación Java, diseño e implementación de un agente, búsqueda, inteligencia artificial, agentes.

11. Robot de Robocode ...... 86 Felipe Llinares López, Juan José Torres García En esta memoria describimos una implementación que hemos realizado de un robot de competición para el programa Robocode.

Palabras clave: Algoritmos, Rendimiento, Diseño, Robocode.

12. Minería de Datos ...... 94 Óscar Palomo Miñambres En este artículo analizaremos las ideas básicas que sustentan el Data Mining y, más concretamente, la utilización de árboles de decisión como herramienta estadística avanzada. Presento también un ejemplo ficticio de la aplicación de estas técnicas: predecir clientes que tienen un alto porcentaje de impagos.

Palabras clave: Minería de Datos, árboles de decisión, impagos, predicción.

- iv - El coche inteligente En busca de mayor seguridad, sostenibilidad y confort

Daniel Asegurado Turón Universidad Carlos III de Madrid Leganés, Madrid, España

[email protected]

RESUMEN Durante muchos años, esta idea del automóvil no ha sido más que Si alguna vez has soñado con tener un coche como KITT, el coche mera ciencia ficción. Sin embargo, la realidad hoy es bien fantástico, ese sueño podría hacerse realidad en un futuro no muy diferente. En los casi treinta años que separan la emisión de la lejano. El sueño del coche fantástico es una realidad que está legendaria serie de la actualidad, se han realizado grandes emergiendo con fuerza en varios países, incluido España. El progresos en el estudio del coche inteligente. Organismos objetivo del presente documento es realizar un recorrido por la oficiales, como la Unión Europea, fabricantes de automóviles, historia del automóvil hasta llegar a los considerados coches como Volvo, o incluso compañías de otros sectores ajenos al inteligentes, donde nos detendremos a analizar los diferentes motor, como es el caso de Google, se han lanzado a la carrera por proyectos que trabajan con esta idea. conseguir el coche del futuro. ¿Cuál es el interés por obtener un coche de estas características? Palabras clave Siguiendo con la analogía del coche fantástico, el principal interés Coche autónomo, automatización de vehículos, autoconducción, sigue siendo salvar vidas. Mientras que KITT se preocupaba de Mecatrónica, radar, LIDAR, GPS, visión artificial, eye tracking, salvarle la vida a su compañero Michael, el objetivo de los estereoscopía organismos institucionales como la Unión Europea es reducir el número de muertes al volante. Según la DGT [1], en el primer semestre de 2011 ya se contabilizaban 986 víctimas mortales por 1. INTRODUCCION accidentes en la carretera (no están incluidas las víctimas de Todos hemos tenido envidia del mítico Michael Knight cuando, lesiones graves o leves en el total de accidentes). En cifras con sólo una orden de voz llamaba a KITT, su coche fantástico, relativas, en Europa murieron 62 personas por millón de para que le fuese a recoger allá donde se encontrase. KITT no sólo habitantes el pasado 2010, según el informe del ETSC sobre era capaz de conducir autónomamente, sino que era capaz de seguridad vial [2]. Aunque la cifra vaya en descenso en los reaccionar a todo tipo de peligros a los que se enfrentase gracias a últimos años, sigue siendo demasiado elevado el número de una supercomputadora integrada dotada de inteligencia artificial personas que pierden la vida en accidentes de tráfico, por lo que (cerebro), que era capaz de interpretar los datos procedentes de es necesario la puesta en marcha de proyectos que trabajen por los diversos sensores de sonidos, imágenes e incluso olores (los aumentar la seguridad y evitar el mayor número posible de órganos de los sentidos). Hasta era capaz de hablar. En definitiva, siniestros. Con el coche inteligente podríamos mejorar en un coche con el comportamiento de un ser humano. cuestiones de seguridad gracias a la incorporación, por ejemplo, de sistemas de alerta ante el alejamiento involuntario del carril, detectores de peatones o sistemas de control del conductor que sean capaz de reaccionar si el conductor se duerme al volante. Por otro lado, el coche inteligente tiene que velar por la mayor eficiencia energética posible. Con el creciente número de coches en el mundo (sólo en 2010 se fabricaron más de 58 millones en todo el mundo según el informe del OICA [3]), y la cada vez más escasa cantidad de recursos energéticos, debida en gran parte a la crisis del petróleo, exigen que los nuevos vehículos gestionen más eficientemente las fuentes de energía con las que cuente. Las propias instituciones gubernamentales exigen, para cumplir con las normativas de sostenibilidad y respeto del medio ambiente, que además se reemplacen los modelos más antiguos por nuevos que sean más ecológicos. En España, un 13% del parque automovilístico supera los 20 años de antigüedad según el último informe de la DGT [4], por lo que un gran número de coches deberá ser renovado en los próximos años. En este punto, el coche Figura 1. KITT, el coche fantástico inteligente juega también un papel crucial, pudiendo dotársele de la capacidad para controlar el consumo de forma autónoma. Los

- 1 - nuevos coches eléctricos y los futuribles coches de hidrógeno u modelos que se venían desarrollando paralelamente a finales del otras fuentes de energía limpias, exigirán aún más si cabe una siglo XIX, no dejaba de ser un mero carro (más bien un triciclo gestión eficiente de la energía, y el desarrollo del mismo grande) propulsado por un motor. incentivará la creación de coches cada vez más sostenibles. Al automóvil, que ha vivido grandes transformaciones desde su invención, le llega por tanto el momento de cobrar inteligencia. Para ello, siguiendo el prototipo de KITT, es necesario incrementar la capacidad de percepción (mejorar los órganos de los sentidos para adquirir más información del exterior) y dotarle de un cerebro que controle, analice y sea capaz de decidir autónomamente. Nuevos medidores no sólo de mayor precisión de los niveles internos del automóvil, como tradicionalmente se ha venido desarrollando, sino para incorporar nuevas funcionalidades como detectores de obstáculos para el aparcado automático, detectores de otros objetos móviles -como otros vehículos- para aumentar la seguridad en el adelantamiento, o detectores de posición para el ambicioso plan de la autonavegación. Todo ello, una vez más, para facilitarle la vida un poco más al ser humano del siglo XXI. Figura 2. Benz Patent-Motorwagen (1885) El presente documento analizará el concepto de coche inteligente, Ya antes del invento de Benz, la idea del coche eléctrico estaba como el resultado de la incorporación de elementos de desarrollándose. Los primeros coches eléctricos se remontan a inteligencia artificial en el automóvil, según el siguiente esquema: 1828, cuando el húngaro Ányos Jedlik inventa el motor eléctrico y crea el primer modelo de coche propulsado por dicho motor. - Sección 1 presenta una introducción al tema de la inteligencia artificial aplicada al automóvil y motiva el Diversos ingenieros trabajan en la idea del coche eléctrico hasta estudio realizado en este informe. que alrededor de 1839, el escocés Robert Anderson inventa el primer coche eléctrico impulsado por baterías eléctricas no - Sección 2 realiza una breve reseña histórica de la recargables. Sin embargo, la abundancia de carburantes líquidos y evolución del automóvil y de la incorporación de la eficiencia de los motores de gasolina hacen que el coche elementos de inteligencia artificial en el mismo. eléctrico quede aparcado hasta la actualidad, cuando la necesidad de nuevas alternativas a los derivados del petróleo hace que se - Sección 3 analiza las distintas tecnologías en las que recupere esta vieja idea de coche eléctrico. actualmente trabaja la iniciativa i2010 Intelligent Car Initiative, promovida por la Comisión Europea. La etapa comprendida entre los últimos años del siglo XIX y la primera mitad del siglo XX está cargada de avances en la - Sección 4 aborda el concepto de autoconducción, donde producción de automóviles. Entre ellos, la invención de la cadena se presentarán diferentes proyectos que trabajan en de montaje en 1910 de la mano de Henry Ford. A partir de este conseguir coches que se conduzcan solos. Una especial momento, gracias a la producción industrial de modelos de coches atención se prestará al proyecto de Google, ya que está y su uso extendido para todas las clases sociales, la industria del actualmente en marcha en Estados Unidos, y al proyecto automóvil adquiere una importancia vital en la economía de los que los compañeros de la Universidad Carlos III están países y se convierte en una de las industrias en las que más desarrollando en esta materia. recursos se invierten en investigación y desarrollo. - Sección 5 valora el futuro de los coches inteligentes Los avances más destacados en la industria del automóvil durante para la sociedad en los próximos años, desde el punto el siglo XX se orientan principalmente en la mejora del motor. de vista del autor del documento. Las distintas empresas automovilísticas inician la guerra por conseguir los motores más potentes y eficientes, y se investigan en 2. HISTORIA los motores de explosión, o comúnmente conocidos como diesel. Para entender con mayor detalle hacia dónde va dirigida la carrera En los últimos años del siglo pasado y los primeros del XXI, por el coche del futuro, es interesante hacer un breve recorrido etapa considerada como la edad moderna del automóvil, aparecen por la evolución del automóvil y repasar los avances que se han las primeras automatizaciones dentro del coche. A continuación, ido desarrollando en la senda de la automatización desde su se presentan algunas de estas incorporaciones: invención hasta los modelos contemporáneos y los nuevos coches autónomos. El elevalunas eléctrico: mediante un mecanismo eléctrico controlado por el usuario gracias a un botón de dos posiciones, se suben y bajan las ventanillas del 2.1 El automóvil clásico automóvil, sustituyendo así a la tradicional manivela Aunque hubo vehículos a vapor que se pueden considerar los manual. precursores del automóvil (como el invento de Cugnot en torno a 1769, o el modelo de Murdoch), se considera a Karl Benz el El airbag: sistema de bolsas de aire que inventor del automóvil moderno, con la incorporación de la automáticamente se dispara cuando el automóvil sufre combustión por gasolina. El primer modelo de Benz, el Benz un choque brusco. Mediante un sistema electro- Patent-Motorwagen (representado en la Figura 2), al igual que los

- 2 - mecánico, el coche es capaz de saber cuándo debe El origen de la Mecatrónica se remonta a las investigaciones en el activar el airbag y cuándo no. área de la Cibernética de Turing (1936), Wiener y Morthy (1948) y Devol (1954) y los autómatas programables de Bedford El climatizador: un sistema de calefacción que mantiene Associates en 1968. En la década de los setenta, la Mecatrónica se la temperatura interna del vehículo a la temperatura centra en la tecnología de servomecanismos, empleada en deseada por el conductor. Cuenta con un sensor de productos como puertas automáticas. En los años ochenta, en temperatura gracias al cual determina la temperatura del pleno auge de la tecnología de la información, los habitáculo y si debe proporcionar mayor calor o frío microprocesadores empiezan a ser introducidos en los sistemas para mantener la temperatura dentro de los márgenes mecánicos para mejorar su desempeño. Las máquinas de control fijados por el usuario. numérico y los robots se volvieron más compactos, y las El ordenador de abordo: con mayor o menor aplicaciones automotrices como los mandos electrónicos del sofisticación, los nuevos automóviles incorporan una motor y los sistemas anticerrado y frenando se hicieron extensas. pantalla que facilita información sobre kilómetros Por los años noventa, se agregó la tecnología de comunicaciones, recorridos, consumo medio cada 100km, velocidad creando productos que podían conectarse en amplias redes. Al media, etc. mismo tiempo, se están usando novedosos microsensores y microactuadores en nuevos productos como los sistemas Aviso de cinturón de seguridad: mediante sensores de microelectromecánicos como los diminutos acelerómetros de presencia en los asientos, y sensores en el cierre del silicio que activan las bolsas de aire de los automóviles. El cinturón de seguridad, el sistema de alarma detecta, concepto de automatización en el automóvil viene ligado cuando el coche arranca el motor, los asientos que están precisamente a esta rama de la ingeniería y en la aplicación ocupados y si en dichos asientos sus pasajeros tienen práctica de la Mecatrónica en técnicas que asistan al conductor en abrochado el cinturón de seguridad. En caso contrario, el control del vehículo. se activa una alarma sonora y visual, indicando que hay En este punto en el que se ha repasado brevemente la historia del pasajeros sin cinturón de seguridad. automóvil y la aparición de distintas técnicas de automatización Aviso de puertas abiertas: mediante un sistema de de la mano de la Mecatrónica, es necesario hacer una clasificación sensor de cierre, similar al del aviso de cinturón de de los nuevos vehículos, en función de la inmersión de la seguridad, cuando el motor se enciende un piloto avisa inteligencia artificial en su producción. Así, podemos diferenciar de si hay alguna puerta mal cerrada o abierta. tres tipos de vehículos:

Subida automática del volumen en función de la Vehículos inteligentes: aquellos que emplean técnicas velocidad: al superar determinada velocidad punta, el de automatización de la Mecatrónica, y en particular de coche sube automáticamente el volumen del reproductor la inteligencia artificial, para disminuir o facilitarle las de música, avisando al conductor de que está responsabilidades del manejo del automóvil al sobrepasando el límite de velocidad, o incluso conductor. En general, las características inteligentes de despertarte el caso de que el aumento de velocidad se estos vehículos hacen referencia a tareas de baja o deba a que el conductor se ha dormido. media dificultad. El control del automóvil recae totalmente en el conductor y la tarea fundamental de la El limpiaparabrisas automático: gracias a un sensor de inteligencia del vehículo es asistirle. lluvia en el parabrisas, la velocidad y frecuencia de Existen muchas técnicas de automatización aplicadas al barrido de los limpiaparabrisas se ajustan automóvil. Principalmente se clasifican en tres automáticamente de acuerdo con la cantidad de lluvia categorías: detectada. o Asistencia sensorial (informativa): informan Aunque no puedan considerarse como elementos de inteligencia al conductor sobre eventos que ocurren y de artificial como tal en el automóvil, estas sutiles incorporaciones los que el conductor puede que no se dé en los coches modernos son, por así decirlo, antecedentes de los cuenta. Algunos ejemplos son: proyectos que hay en marcha ya para dotar a los coches de inteligencia. El auge de las nuevas tecnologías y la aparición de la . Detectores de obstáculos conocida Sociedad de la Información, afectan a todos los ámbitos . Visión nocturna (con detección de de la vida moderna. El automóvil, herramienta que empleamos a peatones) diario, no podía ser menos y, dado el enorme capital económico . Sistema de aviso para el cambio de carril que genera la industria del automóvil, cualquier mejora en este aspecto proporcionará grandes beneficios económicos, al margen de cualquier otro progreso en sostenibilidad, seguridad o confort. . Detección anticipada de colisión . Faros adaptativos 2.2 La automatización en el automóvil . Reconocimiento de señales de tráfico Con el auge de las nuevas tecnologías, surgen también nuevas ramas en la ingeniería. Surge además la llamada ingeniería o Asistencia para actuación (correctiva): Mecatrónica, que engloba los campos de las ingenierías mecánica, modifican las instrucciones del conductor electrónica, de control e informática, con el objetivo de diseñar para ejecutarlas de una forma más eficiente. productos o procesos inteligentes, involucrando sistemas de Entre las técnicas más conocidas están: control en su diseño. . ABS (sistema de antibloqueo de frenos)

- 3 - . TCS (sistema de control de tracción) Aunque la idea se remonta a los años treinta, no es hasta los ochenta cuando se empiezan a implementar los primeros modelos . AWD (motor a las cuatro ruedas) reales, no sólo teóricos. En estos años, Mercedes-Benz presenta . ESC (control electrónico de estabilidad) una caravana robótica capaz de alcanzar hasta 100 km/h en . DSR (respuesta a la dirección dinámica) carreteras sin tráfico. El éxito del modelo animó a la Comisión Europea a lanzar el proyecto EUREKA-Prometheus (1987-1995) o Asistencia sistémica: introducen mejoras que para el desarrollo de vehículos autónomos, el mayor proyecto de no se incluyen en las anteriores. Son por I+D en el campo de los vehículos autónomos hasta el momento. ejemplo: . Aparcamiento automático Al mismo tiempo en Estados Unidos el Departamento de Defensa realiza sus propios experimentos en el llamado Autonomous Land . Asistencia para el control de distancias Vehicle (ALV) y lleva a cabo la primera demostración de . Dead man's switch: sistemas para detener vehículos capaces de seguir un camino utilizando LIDAR, visión el coche de forma segura en caso de que el artificial y control robótico autónomo para controlar un vehículo conductor quede inconsciente robótico hasta los 30 km/h. En 1987, consiguen que el ALV sea capaz de viajar autónomamente fuera de carretera mediante un La Comisión Europea está llevando a cabo un sistema de navegación autónomo basado en sensores. El nuevo programa de desarrollo de coches inteligentes, en el modelo es capaz de viajar 600m a 3 km/h en terrenos complejos cuál se engloban diferentes proyectos de universidades, con fuertes pendientes, barrancos, grandes rocas y vegetación. centros de investigación y empresas del mundo automovilístico. Entre los objetivos de este proyecto están el control de crucero autónomo, sistemas de alerta para el cambio de carril o estudios para atacar el problema del conductor somnoliento. En la siguiente sección se presentarán en detalle en qué consiste este programa y que tecnologías se están investigando para el futuro coche inteligente. Vehículos semiautónomos: aquellos que emplean las técnicas de automatización para tareas de mayor dificultad, especialmente en cuestiones relacionadas con la navegación. El control del automóvil recae principalmente en el conductor pero parte de la responsabilidad se le cede al control automático. El coche semiautónomo es un paso intermedio entre el coche inteligente y el coche totalmente autónomo. Figura 3. DARPA: Autonomous Land Vehicle (ALV) Vehículos autónomos o robóticos: aquellos que En 1994 y de vuelta a Europa, los vehículos robóticos VaMP y su confían por completo en el sistema de automatización gemelo Vita-2 logran circular miles de kilómetros por una del vehículo. Se les conoce también por el nombre de autopista parisina de tres carriles, con tráfico denso, alcanzando driverless, es decir, coches sin conductor. El vehículo velocidades de hasta 130 km/h con una mínima intervención sustituye por completo las funciones que humana. El vehículo empleaba visión artificial para reconocer tradicionalmente llevaba a cabo el conductor y, como el obstáculos que se podían mover rápidamente, como otros coches, propio nombre sugiere, conduce “solo”. El vehículo y poder realizar cambios de carril a izquierda o derecha evitando autónomo es capaz de percibir el entorno (a imitación colisionar con otros vehículos. El éxito del proyecto dio paso a de los sentidos humanos) mediante , radar, muchos otros proyectos en los siguientes años que demostraron LIDAR, GPS y visión artificial, y navegar por sí ser capaces de recorrer mayores distancias a mayores velocidades. mismo. El papel del humano en este caso se limita a elegir un destino, pero ya no se le requiere realizar En 1996, el proyecto ARGO consigue completar una ruta de 2000 ninguna operación mecánica sobre el vehículo. km a lo largo de autopistas del norte de Italia durante 6 días y con una velocidad media de 90 km/h. Lo sorprendente del proyecto 2.3 El coche autónomo fue que el vehículo consiguió funcionar en modo totalmente automático el 94% del tiempo. El automóvil contaba sólo con dos Aunque en el apartado anterior se han descrito las principales cámaras detectoras de blancos y negros de bajo coste y utilizaba características de los vehículos autónomos y posteriormente se algoritmos de visión estereoscópica para entender el entorno (se presentarán diferentes proyectos que están trabajando en el guiaba gracias a que la carretera es negra y las líneas delimitantes desarrollo del coche autónomo, es interesante realizar también un son blancas) en contraposición a la aproximación laser/radar de breve recorrido por la historia del coche autónomo. los proyectos anteriores en el mismo campo. La primera idea que se conoce sobre coches autónomos corresponde al diseño Futurama, del americano Normal Bel Si hasta finales del siglo pasado, todos estos proyectos de coches Geddes y financiado por General Motors, que fue presentado en la autónomos no eran más que proyectos, con el cambio de milenio Exposición Universal de Nueva York de 1939. El proyecto se han conseguido implantar sistemas de autoconducción en presentaba coches eléctricos, alimentados por circuitos integrados distintos lugares del mundo, como puede ser el caso del en la calzada, y que eran controlados por radio. ParkShuttle en Rotterdam, un sistema de minibuses que funcionan sin conductor. En 2010 además, con motivo de la Exposición

- 4 - Universal de Shanghai, cuatro furgonetas eléctricas realizaron el mantener la distancia de seguridad con el vehículo de delante, primer viaje intercontinental sin conductor, saliendo desde Italia y ajustando automáticamente la velocidad del vehículo. Si el alcanzando China. vehículo de delante frena, el sistema ACC hace que el vehículo reduzca la velocidad para mantener la distancia de seguridad y, cuando el otro vehículo vuelve a acelerar, automáticamente el sistema ACC acelera hasta una velocidad programada. Actualmente la mayoría de sistemas funcionan para una gama de velocidades limitada y el objetivo de la iniciativa es hacer que el sistema funcione a cualquier velocidad, incluso que sea capaz de detener el coche por completo si la situación lo requiere.

3. EL COCHE INTELIGENTE Los problemas derivados de incremento del tráfico en Europa, tales como congestión en las redes de carreteras y áreas urbanas, el daño al medio ambiente y a la salud pública, el incremento del gasto energético y el elevado número de accidentes (40.000 personas mueren al año en las carreteras europeas) han llevado a la Comisión Europea a lanzar una iniciativa en favor del coche inteligente para impulsar su implantación en los nuevos coches europeos. Entre los objetivos que persiguen alcanzar con los nuevos sistemas inteligentes están aumentar la seguridad, ayudando a los conductores a prevenir o evitar accidentes y mitigando las consecuencias de éstos, y reducir el gasto Figura 4. Sistema de control de crucero adaptativo (ACC) energético, facilitando a los conductores información en tiempo Aunque los sistemas ACC más comunes están basados en real sobre el estado del tráfico para evitar zonas congestionadas y detectores radar, existen también sistemas basados en láser, optimizando el funcionamiento del motor para mejorar la aunque éstos tienen la limitación de no detectar correctamente al eficiencia energética global. coche de delante en caso de condiciones meteorológicas adversas. La iniciativa europea, i2010 Intelligent Car Initiative, presenta Los sistemas ACC son infraestructuras totalmente independientes una serie de tecnologías en las que se está trabajando o ya están y no necesitan de ninguna señal satélite para funcionar. Sin disponibles para los usuarios, y que se clasifican en tres embargo, estos sistemas pueden aprovechar también las señales categorías: sistemas de ayuda a la conducción, sistemas GPS para realizar mejores estimaciones. Por ejemplo, si el cooperativos para la seguridad en carretera y sistemas basados en vehículo de delante frena no por congestión del tráfico sino localización para la seguridad en carretera. porque se aproxima a una salida de la autopista, en lugar de frenar como el sistema ACC convencional haría, gracias a la señal de 3.1 Sistemas de ayuda a la conducción GPS que avisa de que el otro coche tomará la próxima salida, el coche mantendría su velocidad normalmente. Los sistemas de ayuda a la conducción buscan en última instancia Existen multitud de fabricantes que incorporan el sistema ACC ayudar al conductor a evitar accidentes o a mitigar el daño parcialmente (es decir, requieren la intervención del conductor a causado por estos. Son los sistemas conocidos como eSafety a partir de cierta velocidad), aunque BMW, Mercedes-Benz, Volvo bordo. A continuación, vamos a analizar con más detalle algunas y Audi ya cuentan con modelos que incorporan sistemas ACC de las tecnologías más interesantes relacionadas con estos capaces de detener al vehículo por completo. sistemas: La nueva generación de sistemas ACC incluirá también 3.1.1 Sistema antibloqueo de frenos (ABS) información facilitada por el coche de delante, en lo que se Como su propio nombre indica, el sistema antibloqueo de frenos conoce como sistemas cooperativos. Pero para ello, hará falta un (ABS) evita que las ruedas se bloqueen cuando el conductor pisa acuerdo entre los distintos fabricantes y la estandarización del el freno. Esto se consigue modulando automáticamente la presión sistema para la correcta comunicación entre vehículos. ejercida sobre la rueda gracias a una bomba que se incorpora a los circuitos del líquido de freno y a unos detectores que controlan las 3.1.3 Asistente de cambio de carril / Detector de revoluciones de las ruedas. Cuando los sensores detectan una punto muerto reducción repentina en las revoluciones de las ruedas (debida a Estos sistemas controlan en todo momento los puntos traseros del una frenada brusca), interpreta que las ruedas están a punto de vehículo que quedan fuera del alcance de la vista del conductor. bloquearse, por lo que envían una señal al Módulo de Control del Cuando el conductor pretende cambiar de carril y acciona la luz sistema ABS, el cual reduce la presión ejercida sobre los frenos intermitente, el sistema se activa y, en caso de que los sensores (sin intervención del conductor). El sistema ABS se empleó por detecten que hay otro vehículo que el conductor no ha podido ver, primera vez en los años 70 y es uno de los sistemas inteligentes avisa del peligro de choque mediante una señal luminosa o más extendidos en la actualidad. mediante vibración en el volante. 3.1.2 Control de crucero adaptativo (ACC) 3.1.4 Sistema de control y alerta antisueño Este sistema cuenta con un detector radar de gran alcance, un El sistema de control y alerta antisueño entran dentro de lo que procesador de señales y un control longitudinal del vehículo para comúnmente se conoce por sistema de monitorización del

- 5 - conductor, y se encargan de analizar la atención del conductor información de la zona alrededor del ojo y también ángulos de sobre la carretera y detectar la somnolencia del mismo de posicionamiento de la cabeza. Con esta información, el sistema es diferentes formas: atendiendo a las expresión facial, los capaz de calcular si la mirada se está fijando en la carretera o no, movimientos de manos y pies, analizando el parpadeo y la aplicando geometría y una serie de márgenes donde la mirada posición de la cabeza o incluso las alteraciones del ritmo cardiaco. debería estar situada, y también, de los gestos de la cara, Cuando el sistema, mediante alguna combinación de los factores comparando con modelos que la máquina haya aprendido o anteriores, entiende que el conductor está durmiéndose o contenga de fabricación, detectar síntomas de fatiga. distrayéndose de la conducción, alerta al mismo mediante una En la Figura 5 podemos ver los puntos que emplea un modelo de señal acústica, una fuerte señal luminosa o, en algunos vehículos, Nissan para detectar síntomas de fatiga. El sistema monitoriza la tirando del cinturón de seguridad para con la presión captar su posición de determinadas zonas de la cara que, cuando superan un atención. umbral una serie de puntos, se considera que el conductor está dormido y se activan los sistemas de alerta. 3.1.5 Sistema de protección de peatones y usuarios vulnerables de la vía pública

Los primeros modelos, de la mano del fabricante Lexus, monitorizaban la posición exacta y el ángulo de la cabeza del conductor mientras el coche estaba en marcha. Si el sistema de alerta de colisión (directamente relacionado con éste) detecta un obstáculo delante del coche, y el sistema de monitorización

Figura 5. Sistema de monitorización del conductor observa que la cabeza del conductor se ha mantenido fuera de la atención de la carretera demasiado tiempo, se activan los sistemas de aviso para evitar el choque. Toyota fue más allá e implantó un sistema en el Toyota Crown de 2008 que era capaz de detectar si el conductor se dormía analizando el movimiento de las pestañas. Los nuevos modelos son más ambiciosos. Gracias a las imágenes tomadas por la cámara, es posible realizar un seguimiento del movimiento de los ojos. La técnica conocida como eye tracking en inglés evalúa el punto donde se fija la mirada o también el Figura 6. Sistema de detección de peatones movimiento del ojo en relación con la cabeza. Los últimos Aunque aún no haya implementaciones en esta materia, sí hay un modelos de Mercedes-Benz monitorizan el nivel de fatiga y especial interés en el seno de la iniciativa i2010 por impulsar un somnolencia del conductor aplicando esta técnica. sistema de protección de peatones y ciclistas. La idea de partida Las cámaras que se utilizan para eye tracking contienen un sensor de este sistema es similar a la que se viene empleando para evitar CCD con diminutas células fotoeléctricas que registran la imagen, colisiones con otros vehículos. Se trataría de instalar una serie de cuyo número determina la resolución de la imagen. El sistema de sensores de diferentes tipos que vigilen la zona delantera del detección por tanto funciona enviando una señal infrarroja que se vehículo y alerten de la presencia de usuarios vulnerables. refleja en los ojos del conductor y se captura por el sensor óptico. El sistema integraría un control para accionar de forma automática Generalmente, se suelen emplear la señal reflejada en la córnea y el sistema de frenado para poder evitar la colisión. En caso de que en el centro de la pupila para realizar el seguimiento de la visión la colisión fuese inminente y no pudiera evitarse, el sistema del conductor. accionaría nuevos elementos de seguridad pasiva del coche, por En estos sistemas, es fundamental que no sólo se analice el ojo en ejemplo airbags en el parachoques, elevación del capó del coche, sí (como por ejemplo en los sistemas de reconocimiento de ) etc., que disminuyesen el riesgo de lesiones graves de las sino en la dirección de la mirada. Por ello, además de analizar las víctimas. señales reflejadas en la zona del ojo (para poder detectar también La Figura 6 representa las mediciones realizadas por la tecnología parpadeos o si el ojo está cerrado) es importante almacenar implementada por el proyecto de coche inteligente de la

- 6 - Universidad Carlos III de Madrid. El sistema analiza no sólo 3.1.8 Sistema de reconocimiento de señales de todos los peatones que rodean al vehículo sino que también debe tráfico tener en cuenta los movimientos de éstos para poder determinar La detección de señales puede ser útil para alertar al conductor de quienes pueden presentar un problema de colisión con el posibles señales que se le escapen a la vista, pero es muy automóvil. importante para los coches autónomos. El sistema de reconocimiento de señales se basa también en la visión artificial para, dada una serie de imágenes tomadas desde la parte frontal del coche hacia la carretera, es capaz de distinguir e interpretar Especial interés recibe esta técnica no sólo como un sistema de distintas señales de tráfico. alerta del cambio involuntario del carril, sino por ser una técnica que también será útil en el diseño del coche autónomo. Se trata de La localización de las señales no es trivial, ya que hay que un sistema que vigila la posición del vehículo dentro de un carril emplear modelos geométricos que tengan en cuenta el color y la y, en caso de que el conductor se salga o esté próximo a salirse y forma y debe funcionar ante condiciones luminosas muy diversas. el conductor no haya activado el intermitente, avisarle o, en los Además, el diseño de las señales no está totalmente estandarizado, modelos más autónomos, corregir la posición del vehículo y las señales antiguas y modernas son bastante diferentes. automáticamente hasta que el coche esté posicionado correctamente dentro del carril. Los sistemas que simplemente 3.1.9 Otros sistemas alertan al conductor se conocen como LDW (lane departure Existen otras tecnologías recogidas en el proyecto europeo sobre warning) mientras que los que corrigen automáticamente la sistemas de ayuda a la conducción que sólo vamos a mencionar posición se conocen como LKS (lane keeping system). sin entrar en más detalle: Luces autoadaptables Sistemas electrónicos de asistencia en la frenada Control electrónico de estabilidad Indicador de cambio de marcha Sistemas de control de presión de neumáticos 3.2 Sistemas cooperativos para la seguridad en carretera Más allá de la asistencia individualizada, los nuevos modelos deben ser capaces de interactuar y comunicarse. El automóvil pasaría a ser un elemento de una red de comunicaciones y se podría gestionar la red de una forma eficiente, como ocurre con Figura 7. Sistema de aviso de cambio involuntario de carril las redes de telecomunicaciones. Con la cooperación entre Los sensores empleados por estos sistemas se basan en sistemas vehículos, la iniciativa europea pretende obtener una mayor de vídeo (montados detrás del parabrisas para tener una visión eficacia del transporte, maximizando la eficiencia de uso de las general en ángulo de los límites del carril), sensores láser (en la infraestructuras disponibles, y además mejorar la seguridad. A parte delantera del vehículo) y sensores infrarrojos (detrás del continuación se detallan algunas tecnologías relacionadas. parabrisas o bajo el coche). 3.2.1 Gestión dinámica del tráfico Los primeros modelos, como el Citröen de 2005, empleaban Los paneles de señalización variable, o paneles luminosos, que infrarrojos para monitorizar las líneas pintadas en la carretera. actualmente están desplegados por las carreteras de toda Europa, Cuando los sensores detectaban la presencia de la línea divisoria, ayudan al conductor a conocer en tiempo real el estado de las alertaban al conductor para que corrigiera la dirección. carreteras y ofrecen información sobre rutas alternativas en caso Audi por su parte, desarrolla en 2007 un sistema basado en una de accidente. Los mensajes de obligatoriedad, de aviso de peligro videocámara de espectro visible situada en el frontal del coche, y o informativos que actualmente se envían a través de los paneles que captura imágenes en el ángulo de visión del conductor para de señalización pueden ser enviados a un receptor situado en el estimar el carril. Además, incorpora ya un sistema en la dirección interior del vehículo, facilitando la llegada de información útil al que vibra en caso de salirse del carril, corrigiendo usuario sin necesidad de que éste tenga que llegar a la carretera automáticamente la dirección para que el vehículo retorne al que se encuentra con problemas de tráfico para conocer su estado. carril. Muchos GPS ya disponen de esta funcionalidad de controlar el estado de las carreteras. Pero en la actualidad no deja de ser un 3.1.7 Visión nocturna sistema meramente informativo. En una red futura, en la que los Para aumentar la capacidad visual del conductor durante la noche, coches cooperan entre sí para una gestión eficiente del tráfico, la se incorporan al vehículo un sistema de visión nocturna basado en decisión de ruta debería gestionarse por elementos enrutadores infrarrojos, con un alcance similar al de las luces largas. El (similares a los routers de las redes de ordenadores) y así evitar sistema no deslumbra, pues se trata de luz infrarroja, y la escena que ciertas zonas se congestionen. iluminada se le muestra al conductor en una pantalla especial, siendo capaz de percibir éste mejor posibles obstáculos o 3.2.2 eCall vehículos distantes, adelantándose a situaciones peligrosas y así El sistema eCall incorporaría a la red de comunicaciones de poder reaccionar con mayor rapidez. coches a los servicios de urgencia. En caso de accidente, el

- 7 - sistema establecería una conexión de voz con el servicio de Todas estas medidas se recogen en la iniciativa eSafety, impulsada emergencias 112, enviando la hora y lugar del accidente, las por la Comisión Europea para mejorar la seguridad en la carretera. características del vehículo afectado o incluso facilitar información adicional sobre el conductor si fuese necesario ponerse en contacto con los familiares. El ahorro de tiempo en 4. AUTOCONDUCCIÓN atender la emergencia supondría salvar la vida de muchos Las mismas tecnologías que asisten al conductor en los coches afectados en accidentes que mueren debido a que no es posible inteligentes, se toman desde una nueva perspectiva en los modelos atenderles a tiempo. de coches autónomos. La técnica es la misma; la filosofía cambia. En lugar de alertar al conductor para que reaccione, ¿por qué no reaccionar autónomamente sin intervención del conductor? Con Uno de los puntos negros en los que más accidentes se producen esta idea se empieza a trabajar en el coche sin conductor, es en las intersecciones. La iniciativa de la Comisión también aplicando estas tecnologías y delegando toda la funcionalidad del plantea actuar de forma cooperativa entre vehículos para aumentar conductor sobre la inteligencia artificial del vehículo. la seguridad en los cruces. Para ello, se proponen dos sistemas. El primero, aviso de preferencia, que indique al conductor que ceda En la actualidad existen ya varios modelos de vehículos el paso a la derecha en una pantalla y, en caso de que el conductor autónomos que funcionan sin problemas sin la necesidad de un no reaccione, avisarle del peligro de colisión. El segundo, conductor. En este documento vamos a analizar dos proyectos asistente de semáforos, recibiría la información del semáforo concretos: el modelo de Google, por ser el que más atención está inalámbricamente para que el coche adecúe la velocidad y poder acaparando en el sector de los vehículos autoconducidos, y el cruzarlo en verde. modelo que están desarrollando investigadores de la Universidad Carlos III de Madrid, por ser parte de nuestra universidad. 3.2.4 Sistema de aviso de obstáculo o colisión Las soluciones que actualmente hay implementadas sobre la 4.1 El coche sin conductor de Google detección de obstáculos son una extensión del sistema de control El proyecto que presenta Google en el ámbito del coche autónomo de crucero adaptativo: utilizan también información obtenida por está liderado por el ingeniero Sebastian Thrun, director del detectores radar y generan avisos acústicos y visuales para alertar laboratorio de inteligencia artificial de la Universidad de al conductor de un peligro inminente. Standford y coinventor de sistema Google Street View. El mismo grupo de desarrollo de este prototipo ya ganó en 2005 un premio Sin embargo, hacia lo que se está caminando es a utilizar en un del Departamento de Defensa norteamericano gracias al vehículo futuro radares de largo y corto alcance, sistemas LIDAR y robótico Stanley. Los coches sin conductor de Google son legales procesado de imágenes de vídeo en la detección, y contar con un en el estado de Nevada desde junio de 2011, convirtiéndose en el sistema de frenado automático, capaz de frenar a máxima primer estado que permite la circulación de vehículos autónomos potencia, preparar los airbags o tensar los cinturones de seguridad y convirtiendo al proyecto de Google como pionero en la en caso de una colisión inminente. comercialización de estos modelos. Los sistemas LIDAR (Laser Imaging Detection and Ranging) que se mencionan se posicionan como la tecnología de detección del futuro más inmediato y es la tecnología que emplean por ejemplo las pistolas láser de la policía para determinar la velocidad de los vehículos que circular en el tráfico rodado. Estos sistemas determinan distancias entre un emisor láser y un objeto utilizando haces láser pulsados y midiendo el tiempo de retardo entre la emisión del pulso y la detección de la señal reflejada (igual que el radar pero con ondas de luz en vez de radio). Entre las principales ventajas del LIDAR sobre el radar están: es mucho más rápido; los haces de luz divergen menos que los de ondas sonoras, que se dispersan y rebotan en el entorno, y por tanto son más precisos en detección; son más económicos; puede funcionar también de noche; y es más fácil de transportar y mantener.

3.3 Sistemas basados en la localización para Figura 8. Toyota Prius modificado para operar como la seguridad en carretera Google driverless car En el apartado anterior ya se presentaba la tecnología eCall en El sistema de Google combina información obtenida directamente materia de comunicar a los servicios de emergencias la posición de Google Street View con software de inteligencia artificial. exacta del lugar donde se ha producido un accidente en carretera. Cuenta con diversos sensores: videocámaras dentro del vehículo Además de este sistema, existen también proyectos que trabajan (que permiten controlar el movimiento del vehículo y detectar con mapas de a bordo como sensores de posición para (al igual peatones, ciclistas y semáforos), un sensor LIDAR en el capó del que se utiliza el sensor radar para detectar obstáculos u otros coche (que permite al vehículo detectar a más de 60 m en todas vehículos) predecir donde estará el coche momentos después, las direcciones y así crear un mapa 3D para el vehículo), sensores pudiendo prever que le sucederá cuando llegue a dicho punto, si radar en la parte delantera un sensor de posición adherido a una hay algún corte de tráfico, o algún otro imprevisto en la carretera. de las ruedas traseras y que ayuda a localizar la posición del coche en la carretera. Los vehículos además circulan a la velocidad indicada por los mapas proporcionados por Google y lleva

- 8 - instalado un sistema de control de distancias con sensores para Sistema de control del conductor: midiendo parpadeo evitar colisionar con el vehículo delantero. de los ojos, movimiento de la cabeza y apertura de la boca para detectar el grado de atención. Sistema de reconocimiento de señales de tráfico: emplean Algoritmos Genéticos y Templado Simulado como algoritmos de búsqueda para encontrar las señales presentes en las imágenes captadas por una cámara a color. 4.2 El proyecto de la UC3M La Universidad Carlos III de Madrid cuenta con un proyecto Sistema de control de velocidad variable: el propio en la carrera por el vehículo autónomo. El proyecto cuenta reconocimiento del vehículo delantero se realiza con 3 modelos de vehículos: el IVVI, el iCab y el IVVI 2.0. mediante análisis de imágenes en lugar de por sensores radar. El sistema se fusiona con el módulo de detección de carriles para delimitar la búsqueda. La segunda versión, el IVVI 2.0, mejora el diseño del vehículo e incorpora como novedad que los sistemas de ayuda a la conducción sólo informan al conductor cuando éste esté en una situación real de peligro. Además se incorpora una sonda CAN- bus (que obtiene información del funcionamiento del vehículo) así como un sistema GPS-IMU (que informa sobre posición y velocidad del vehículo) para determinar el estado del vehículo. El tercer vehículo, el iCab, es un pequeño vehículo eléctrico de golf que es controlado por un ordenador embarcado. La función de estos vehículos será llevar de forma autónoma a los visitantes del Campus, por lo que la autonomía estará limitada al entorno del Campus y a entornos previamente conocidos.

Figura 9. Vehículo Inteligente basado en Información Visual 5. EL FUTURO DEL COCHE (IVVI). Universidad Carlos III de Madrid En este documento se ha pretendido hacer un recorrido por las El IVVI (acrónimo en inglés de Vehículo Inteligente basado en distintas tecnologías que se están empleando en construir los Información Visual) es el homólogo al coche desarrollado por coches del futuro hoy. Sin embargo, aunque ya haya muchos Google. Cuenta con un sistema estéreo blanco y negro, con modelos que incorporen tecnología inteligente y ya estén cámaras de barrido progresivo para poder captar imágenes en circulando vehículos sin necesidad de conductor, aún queda movimiento y evitar así los problemas inherentes al vídeo mucho camino por recorrer. entrelazado, además de una cámara a color para otros temas cómo la detección de señales de tráfico. Para detectar obstáculos como En la línea de la iniciativa europea, considero que, una vez peatones u otros vehículos en condiciones de visibilidad adversas, perfeccionadas las técnicas que hacen que un vehículo sea capaz cuenta con una cámara de infrarrojo lejano capaz de distinguir de conducirse sólo, sin necesidad de una figura humana, hay que objetos por el calor desprendido. En cuanto al interior, el sistema trazar un plan para que los vehículos cooperen entre ellos. Del cuenta con tecnología de monitorización del estado del conductor, mismo modo que una a persona que entiende la mecánica del empleando para ello una cámara infrarroja. El cerebro del coche coche no le es suficiente para circular por carreteras con tráfico, viaja en el maletero, en donde se hayan dos PC encargados del sino que tiene que aprender el reglamento de circulación, el coche procesamiento de los sistemas de visión por computador. Para autónomo tiene que ir a la autoescuela. Es decir, el coche que se conocer el estado del vehículo, éste incorpora además un sistema conduce sólo debe también saber conducirse en compañía de otros GPS. coches. Entre las tecnologías que se incorporan en este proyecto están: El período que se abre para los próximos años, en el que convivirán vehículos autónomos y vehículos tradicionales, se Sistema de alerta ante el alejamiento involuntario del debe prestar especial atención en que los vehículos autónomos carril: se trabaja con imágenes que simulan una vista comprendan la inexactitud del conductor humano y, del mismo aérea de la vía y se acompañan de algoritmos de modo, lanzar un sistema de gestión de vehículos autónomos que calibración automática. Se distinguen los carriles por la permita la cooperación entre los distintos automóviles. Como ya discontinuidad de los niveles de gris de la imagen. adelantaba anteriormente, uno de los objetivos finales es la Sistema de detección de peatones: dada la enorme eficiencia, entendida no sólo como el eficiente uso de los recursos diversidad de apariencia de los peatones y los cambios energéticos del automóvil sino también la gestión eficiente de las en la forma de estos entre imágenes sucesivas, se infraestructuras: las redes de carreteras. Y entendiéndolas como emplea un algoritmo basado en los Contornos Activos tales redes y aplicando un modelo similar al de las redes de (técnica empleada para delinear el contorno de un ordenadores, en las que una serie de sistemas se encargan de objeto en una imagen 2D ruidosa), inicializados con los gestionar el tráfico, se podría –en un futuro algo más lejano- resultados de un sistema estéreo y teniendo en cuenta la construir redes de carreteras inteligentes, donde los coches simetría de las formas de los peatones. autónomos sean enrutados como los paquetes en los routers.

- 9 - 6. REFERENCIAS [7] Wikipedia. 2011. The history of the automobil. Artículo colectivo.DOI=http://en.wikipedia.org/wiki/History_of_the_ automobile (última visita noviembre 2011) [1] Dirección General de Tráfico (DGT). 2011. Accidentalidad mortal en carretera. Informe oficial. Ministerio del Interior, [8] Wikipedia. 2011. Vehicle Automation. Artículo colectivo. España. DOI=http://en.wikipedia.org/wiki/Vehicle_Automation DOI=http://www.dgt.es/was6/portal/contenidos/documentos/ (última visita noviembre 2011) seguridad_vial/estadistica/accidentes_24horas/resumen_anua [9] Comisión Europea, Sociedad de la Información y Medios. l_siniestralidad/resumen_siniestralidad037.pdf (última visita 2010. i2010 Intelligent Car Initiative. Publicación Oficial. noviembre 2011). DOI=http://ec.europa.eu/information_society/activities/intelli gentcar/index_en.htm (última visita noviembre 2011) [2] European Transport Safety Council (ETSC). 2010. 2010 Road Safety Target Outcome:100,000 fewer deaths since [10] Wikipedia. 2011. Autonomous system. 2001. 5th Road Safety PIN Report. Unión Europea. Artículo colectivo. DOI=http://www.etsc.eu/documents/pin/report.pdf (última DOI=http://en.wikipedia.org/wiki/Autonomous_cruise_contr visita noviembre 2011). ol_system(última visita noviembre 2011) [3] Organisation Internationale des Constructeurs d’Automobiles [11] Wikipedia. 2011. Driver monitoring system. Artículo (OICA). 2010. 2010 Production Statistics. Informe oficial. colectivo. DOI=http://oica.net/category/production-statistics/ (última DOI=http://en.wikipedia.org/wiki/Driver_Monitoring_Syste visita noviembre 2011). m (última visita noviembre 2011) [4] Dirección General de Tráfico (DGT). 2009. Anuario [12] Lexus. 2011. Driver Monitoring System. Catálogo de Estadístico General 2009. Informe oficial., Ministerio del prestaciones. DOI=http://www.lexus.eu/range/ls/key- Interior. España. features/safety/safety-driver-monitoring-system.aspx (última DOI=http://www.dgt.es/was6/portal/contenidos/documentos/ visita noviembre 2011) seguridad_vial/estadistica/parque_vehiculos/series_historicas [13] Wikipedia. 2011. Google driverless car. Artículo colectivo. _parque/series_historicas_parque.pdf (última visita DOI=http://en.wikipedia.org/wiki/Google_driverless_car noviembre 2011). (última visita noviembre 2011) [5] Wikipedia. 2011. Automobile. Artículo colectivo. [14] Universidad Carlos III de Madrid. 2010. Sistemas DOI=http://en.wikipedia.org/wiki/Automobile (última visita Inteligentes de Transportes. Sitio Web. noviembre 2011). DOI=http://www.uc3m.es/portal/page/portal/dpto_ing_siste [6] Wikipedia. 2011. Autonomous car. Artículo colectivo. mas_automatica/investigacion/lab_sist_inteligentes/sis_int_tr DOI=http://en.wikipedia.org/wiki/Autonomous_car (última ansporte/ (última visita noviembre 2011). visita noviembre 2011)

- 10 - SISTEMAS EXPERTOS: MYCIN Ainhoa Sesmero Fernández Sandra Pinero Sánchez Estudiante Ing. Telecomunicación Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid Avda. De la Universidad, 30 Avda. De la Universidad, 30 28911, Leganés (Madrid-España) 28911, Leganés (Madrid-España) [email protected] [email protected]

RESUMEN lo general, los expertos solucionan los problemnas de su especialización basándose en la experiencia. Muy sucintamente, En este documento se explica lo que es un sistema esta experiencia consta de conocimientos de hechos y de experto, sus principales usos y en concreto hablaremos del sistema soluciones de problemas. Con el desarrollo de los Sistemas MYCIN. Uno de los primeros sistemas expertos para la detección Expertos se pretende estructurar este conocimiento de hechos y y tratamiento de enfermedades de la sangre. soluciones de problemas de tal forma, que sean almacenados en un ordenador y procesables por un programa. Por lo tanto, los Sistemas Expertos son programas para ordenador, en los que se Categorias y Descriptores de Temas han reflejado conocimientos humanos. Pero ya que el conocimiento humano es extremadamente complejo, tenemos que limitarnos, en estas “imitaciones técnicas” a campos [Inteligencia artificial]: Sistemas expertos (SE) y especializados muy delimitados.1 ” aplicaciones en medicina. Se puede dividir los componenetes de un sistema Terminos Generales experto en tres subsistemas direfentes: base de conocimientos, motor de inferencias e interfase. (ver figura 1) Algoritmos, medidas, documentación, diseño, factores humanos y teoría.

Palabras clave

Sistema expertos, MAYCIN, medicina, organismos, conocimiento.

1. INTRODUCCIÓN

Los sistemas expertos son programas que emulan el comportamiento de un experto, como su propio nombre indica.

Están desarrollados en un entorno de tal forma que son capaces de gestionar la propia base de datos de conocimiento, resolver un Figura 1 problema específico, producir nuevos conocimientos y explicar su razonamiento. Existen tres tipos de sistemas expertos principalmente. MYCIN fue el primer sistema experto que llego a Están los llamados “basados en reglas”, los “basados en casos” y funcionar con la misma calidad que un experto humano. Muchos los “basados en redes bayesianas”. En el conjunto de sistemas de los sistemas posteriores utilizaron MYCIN para comparar lo expertos basados en reglas nos encontramos con MYCIN del que que era un sistema experto. hablaremos más adelante, pero también nos encontramos con MYCIN era un sistema estrictamente para investigación, DENDRAL que fue el primer sistema experto utilizado para fue desarrollado para ayudar a los médicos en el diagnóstico y propósitos reales y la inspiración de MYCIN. tratamiento de meningitis y enfermedades bacterianas como explicaremos a lo largo de este documento. 2.1 Base del Conocimiento 2. SISTEMAS EXPERTOS En ella se representan todos los conocimientos acerca Por tener más definiciones de sistemas expertos, unida a de un dominio concreto. Puesto que el ordenador no posee dichos la anterior podemos decir de forma más rigurosa: “Los Sistemas Expertos son programas que simulan el comportamiento de los 1 NEBENDAHL, D.,Sistemas Expertos, Vol. 2, Marcombo. Barna., 1991. sistemas expertos humanos a la hora de resolver problemaas. Por p. 1.

- 11 - conocimientos es necesario que sean introducidos por un experto la base del conocimiento y controla de forma estratégica la el humano en el tema en cuestión. sistema de conocimiento. Además de utilizar la base del conocimiento el motor de Ya que como su nombre indica es la base, es necesario inferencias también hace de controlador de la consulta del usuario que las reglas establecidas sean lo más clara posibles para evitar y decide el orden en el que se hacen las inferencias. ambigüedad, eficiencia, que se facilite la deducción a la maquina por inferencia, y fuerza de expresión para definir de forma adecuada y completa todos los elementos del universo del tema 2.3 Interfase elegido. Como vemos por lo descrito anteriormente, es Se encarga de proporcionar el usuario una interfaz lo complicado traducir a un lenguaje todos los conocimientos de un mas amigable posible para poder interactuar con el sistema experto humano de forma que pueda entenderlo y reflexionar experto de una forma fácil y sencilla. Recordemos que lo que sobre ellos como si del humano mismo se tratara y para el cual hacemos es solucionar problemas como lo solucionaría un muchos de sus actos son de forma intuitiva. experto, con esto se ayuda a las personas y usuarios del sistema, no queremos que le sea más difícil y complicada su utilización. ¿Qué se le pide o que se le podría pedir a un experto humano? Esta interfase se encargara de gestionar las entradas y salidas al sistema experto. - Habilidad para llegar a una solución de la forma más rápida posible y a poder ser de forma certera. Para que sea de una forma rápida y certera 2.4 Ventajas y desventajas de los SE obligamos al experto, no solo a que sepa en que campo se mueve si no, que tenga experiencia en el. - Habilidad para explicar a las personas que no 2.4.1 Ventajas de los SE cuentan con ese conocimiento o esa experiencia los

resultados obtenidos. Los sistemas expertos tienen multitud de ventajas, entre ellas - Habilidad de poder reestructurar el conocimiento podemos ver: para que se adapte a las circunstancias.

- Habilidad para poder aprender de las experiencias. Los expertos deben aprender de sus experiencias - Un sistema experto puede replicarse tantas veces propias, pero además también de las de los demás. queramos. Una vez que un SE ha sido creado podemos Esto implica que un experto debe estar al día en replicarlo y usarlo por donde queramos. cuanto a sus conocimientos. - Por causa de su replica su coste a largo plazo es bajo. Aun que inicialmente crearlo puede ser caro, al poder ser replicado su coste a largo plazo es bajo. 2.1.1 Tipos de Conocimiento - Los SE no se ven afectados por la edad, o el entorno

que les rodea como los seres humanos por lo que Existen tres tipos de conocimiento para construir un sistema también es una ventaja a considerar. experto:

• Reglas 2.4.2 Limitaciones de los SE Declaraciones estructuradas en forma de oraciones

condicionales. En cuanto a sus limitaciones podemos hablar de: • Estructuras Contienen jerarquía de componentes y de atributos - El lenguaje es algo problemático. Con un humano objeto que pueden ser asignados heredados de otras podemos conversar y explicarnos mejor, con un SE lo estructuras a través de diversos procedimientos. que hay esta en sus reglas y no podemos usar • Lógica explicaciones, aclaraciones, gestos… Son expresiones con predicados, valores y átomos para - Es difícil que un SE aprenda de sus errores. Para un ser evaluar hechos del mundo real. humano la experiencia, los errores y los aciertos hace que vaya mejorando, en un SE esto es difícil de conseguir. 2.2 Motor de Inferencias - Perspectiva global. Un experto humano es capaz de separar los datos realmente relevantes de los El motor de inferencia lo que hace es decidir, interpretar irrelevantes, un SE no. Y a estos podemos añadirle que y aplicar el conocimiento que se ha obtenido de la base del no están abiertos a nueva fuente de datos para ver como conocimiento a la base de los hechos para poder así obtener la se puede resolver un problema ya que sus datos están solución adecuada, o dicho de otra forma, es el encargado de programados. hacer uso de los hechos y las reglas que el experto ha integrado en - Elevado coste y tiempo.

- 12 -

2.5 Aplicaciones • Primero es necesario concluir si el paciente tiene una infección significativa.

• A continuación hay que establecer al o los posibles En el siguiente cuadro podemos observar algunas de las organismos involucrados. áreas en las que los sistemas expertos tienen aplicación. • Después escoger el conjunto de antibióticos que puedan ser necesarios. • Por último elegir el antibiótico.

Sin embargo dicho proceso no es nada fácil. Esto se debe a que el cuerpo humano está normalmente poblado por bacterias. Se toma del paciente las muestras necesarias realizándole un cultivo. Por lo que el diagnóstico inicial se base en criterio clínico, fiebre y dolor. Los resultados de las pruebas pueden tomar de 24 a 48 horas o más. Una vez que el médico dispone de los resultados debe elegir el tratamiento basándose en:

Veamos algunos ejemplos: • Posibles identidades del organismo.

• La probabilidad efectiva del agente antimicrobiano - En el campo de la medicina tenemos varios como contra este rango de posibilidades. DENDRAL, MYCIN o PUFF. De entre ellos el más

famoso es MYCIN del que hablaremos en el siguiente apartado. Una vez que el médico dispone de los resultados del cultivo debe de decir que tratamiento hay que aplicar al paciente. - En el campo de la programación tenemos sistemas como Sin embargo, este tratamiento puede tener diferentes síntomas o EURISKO, sistema que es capaz de aprender a medida efectos en cada paciente con lo que es necesario cambiarle el que funciona y crear circuitos microelectrónicos tratamiento. tridimensionales. Por otra parte, es evidente que el médico necesite ayuda - Sistemas militares tenemos TWIRL, que simula guerras con la selección antimicrobiana. Con lo que el problema se completas y guía de mejores accionas para realizar en continúa aunque haya habido intentos para educar a los médicos; casi todas las situaciones. pocos parecen ir a través del proceso metódico de decisión. La - En la industria podemos ver RI, Programa utilizado para sobre-prescripción en EEUU durante los años 70 fue estimado el descubrimiento de yacimientos petrolíferos bajo con un factor de 10 a 20, con lo que el coste anual para pacientes aguas marinas. y hospitales es monumental. Asimismo, la sobre-prescripción - En el ámbito económico tenemos el TRADING, una puede resultar en el desarrollo de cepas bacterianas resistentes. serie de reglas matemáticas bien estructuradas en las El objetivo de MYCIN es asistir al doctor, el cual no que se basan las operaciones en bolsa. tiene por qué ser experto en el área de los antibióticos con el - En la geología encontramos el PROSPECTOR, diagnóstico y tratamiento de infecciones sanguíneas. utilizado para hallar yacimientos de minerales. Este sistema experto consta fundamentalmente de tres componentes:

3. MYCIN 1) Un sistema de consulta entre el programa y el doctor. Este sistema consiste en realizar una serie de preguntas, Es un sistema experto desarrollado por Edgar ShortLiffe entrega de conclusiones y dar consejos. en la Universidad de Stanford a principios de los años 70. Su 2) Un sistema de explicación por parte del sistema al objetivo es el diagnóstico de enfermedades infecciosas de la doctor en el cual, éste responde a las preguntas del sangre. Incluso es capaz de razonar el proceso seguido para llegar médico y justifica sus propios consejos. a los diagnósticos y de recetar medicaciones personalizadas a cada 3) Un sistema para conseguir las reglas, agregas nuevas paciente. reglas y cambiar las existentes.

3.1 Tratamiento de infecciones sanguíneas

Elegir el tratamiento adecuado para una infección bacteriana sigue un proceso de cuatro partes:

- 13 - si tiene ese paciente algún cultivo pendiente que es nuestro caso. Entonces MYCIN le dice que necesita conocer la información del cultivo pendiente. El usuario le responde con una serie de datos y por último le contesta que no hay ningún organismo. Por lo tanto, el sistema experto no puede sacar conclusiones y sigue planteando preguntas. En cierto momento de la consulta llega a esto:

13) ¿Ha presentado David síntomas de cefalea persistente un otros síntomas neurológicos anormales (vértigo, letargo,…)? Sí 14) ¿Hay en David alguna evidencia objetiva

reciente de signos neurológicos anormales 3.2 Sistema de consulta (rigidez de nuca, coma, convulsiones,…), documentados por observación o examen

clínico? Esta primera parte del MYCIN consiste en generar el Sí. conjunto de hipótesis relacionado con el organismo dañoso y de este modo realizar una serie de recomendaciones de terapias para Hay que destacar que los cultivos LCR (cultivo de estas hipótesis. Recalcar que MYCIN suele describirse líquido cefalorraquídeo) están asociados con meningitis. incorrectamente como un programa de diagnóstico médico; en realidad es un programa para tratamiento de infecciones Las dos siguientes preguntas representan un enfoque sanguíneas. más tradicional al diagnóstico por síntomas y tras tener la Para comprender mejor un sistema de consulta a contestación de la pregunta 14, MYCIN informa de su primera continuación se muestra un ejemplo: conclusión: la infección del LCR es probablemente meningitis.

Primero MYCIN necesita cuatro datos del paciente ya Después continúa con otra tanda de preguntas para que son esenciales para cualquier diagnóstico. Una vez que identificar el organismo concreto causante de la infección dispone de ellos realiza una serie de preguntas para conocer la meningítica. disponibilidad del cultivo. 1) Nombre del paciente: 34) ¿La meningitis se ha contraído en el hospital? David King No 2) Edad: 35) ¿Es la historia clínica de David consistente 34 con Epiglotis? 3) Sexo: No Varón 36) ¿Es la historia clínica de David consistente 4) Raza con Otitis-media? Caucasiana No 5) ¿Hay cultivos de David qué puedan estar 37) ¿Ha estado alguna vez el paciente en una zona relacionados con su enfermedad actual, en los endémica de coccidiomicosis? que hayan llegado a crecer organismos en el Desconocido laboratorio de microbiología? 38) ¿Se ha sometido David a esplenotomía? No No 6) ¿Hay cultivos pendientes de David? 39) ¿Ha sufrido David quemaduras? Sí Si 7) ¿De qué lugar se tomó la muestra para el He encontrado evidencia (REGLA 507) de cultivo? que el tratamiento debe cubrir Diplococcues- LCR pneumoniae causante de meningitis. 8) Por favor, escriba la fecha y la hora de la toma He encontrado evidencia (REGLA 545) de del cultivo de LCR pendiente (m/d/a hora) que el tratamiento debe cubrir E. coli causante Junio/24/84 7:00 de meningitis. 9) ¿Se examinó un frotis cuando se obtuvo la He encontrado evidencia (REGLA 545 muestra para el cultivo pendiente de LCR? REGLA 578) de que el tratamiento debe Sí cubrir Pseudomonas-aeruginas causante de 10) ¿Se vio organismo en el frotis de la muestra meningitis. sometida al cultivo de LCR pendiente? No A partir de este momento ha finalizado la parte diagnóstica de la consulta. Ahora el programa se encarga de Antes que nada deja que sea el propio médico quién buscar el conjunto de medicamentos para acabar a los organismos diga los hechos conocidos. Pero en este ejemplo al paciente no se sin perjudicar al paciente. Con lo que vuelve a realizar otra serie le ha realizado ningún cultivo positivo con lo que MYCIN insiste

- 14 - de preguntas. Aunque hay que destacar que estas preguntas son 3.2.2 Estructuras de datos diferentes dependiendo de los resultados intermedios. 40) ¿Tiene David signos neurológicos focales?  Estructuras de datos estáticas No 41) ¿Presenta David alguna reacción alérgica Se encarga de guardar la información de definición. importante frente algún agente Dicha información es mantenida separada del antimicrobiano? conocimiento inferencial, en la forma de listas simples Sí (enumeran todos los organismos y sitios estériles 42) ¿Cuál es el más reciente aclaramiento de conocidos por el sistema), tablas de conocimiento creatinio, en ml/min, que usted considera (tienen los registros de ciertos parámetros clínicos y los representativo de la función renal de David? valores que toman bajo diversas circunstancias) y un 77 sistema de clasificación para parámetros clínicos. 43) Peso de David en Kg 77  Estructuras de datos dinámicas Dicho sistema de consulta consiste en una serie de reglas de producción, un conjunto de estructuras estáticas y Son almacenados en un árbol de contexto, el cual se dinámicas, y una estructura de control. utiliza para organizar la información referente a un paciente en concreto. El consejo estará basado tanto en 3.2.1 Reglas de producción los cultivos, organismos, operaciones previas y tratamientos relacionados con el paciente, como en La gramática que se utiliza para realizar dichas reglas es características personales del paciente. Con lo que el representada internamente como código LISP. El cual es un árbol ayuda a estructurar el problema clínico y lenguaje de alto nivel de procesamiento de listas en el cual relacionar un contexto con otro. MYCIN está implementado. La sintaxis que se maneja es la siguiente: ::= ::= ($AND ... ) ::= ( ) | ($OR ... ) ::= | Un ejemplo de esta estructura es el siguiente: PREMISE: ($AND (SAME CNTXT GRAM GRAMNEG) (SAME CNTXT MORPH ROD) (SAME CNTXT AIR AEROBIC)) Figura 2 ACTION: (CONCLUDE CNTXT CLASS ENTEROBACTERIACEAE TALLY .8) 3.2.3 Estructura de control Donde gram se refiere a la cepa del organismo, morph a la morfología del organismo y air a la aerobicidad del organismo.  Encaminamientos hacia atrás El símbolo CNTXT es una variable que es instanciada por el nombre que MYCIN le da al nodo contextual que está actualmente observando. MYCIN tiene una regla meta de máximo nivel que define la tarea completa del sistema de consulta: El médico, el cual utiliza este sistema experto, no IF there is an organism which observa dicho código. Simplemente las reglas son traducidas en el requires therapy, and consideration terminal del siguiente modo: has been given to the possibility of If 1) the stain of the organism is gramneg, aditional organisms and requiring therapy 2) the morphology of the organism is rod, THEN compile a list of possible and therapies, and determine the best 3) the aerobicity of the organism is therapy in this list. aerobic Para realizar una sesión de consulta es necesario seguir THEN there is strongly suggestive evidence los siguientes pasos: (.8) that the class of the organism is enterobacteriaceae. • Crear el contexto del paciente como el nodo de más alto nivel en el árbol de contexto. Donde (0.8) indica el factor de confianza que • posteriormente se explicara. Intentar aplicar la regla meta a este contexto del paciente.

- 15 - Al aplicar la regla meta es necesario evaluar primero su 3.4 Sistema de adquisición de reglas premisa, la cual necesita determinar si hay un organismo que requiera terapia. En el programa se pueden agregar nuevas reglas de Por lo tanto la consulta se realiza mediante una decisión o cambiar alguna presente. El usuario no las agrega en búsqueda a través de un árbol meta. La meta superior en LISP sino en formato inglés. Es el propio programa que se la raíz del árbol es la parte de acción de la regla meta. encargar de traducirla. Las sub-metas futuras hacia abajo en el árbol, las cuales determinar el organismo involucrado y el ver si es importante. Puede ocurrir que estas sub-metas tengan a Sin embargo puede ocurrir que una nueva regla puede su vez más sub-metas, como por ejemplo para descubrir contradecir a otra del sistema o simplemente agregar una regla las propiedades de la cepa y morfología del organismo. presente en el programa. Con lo que Shortliffe discutió planes Las hojas del árbol son metas fácticas, también para proveer facultades para verificar los efectos que pueden conocidas como hechos, que no pueden ser deducidos causar al ingresar una nueva regla en su libro. como por ejemplo datos de laboratorio. Como se puede observar en la figura (ver figura 2). Randall Davis desarrollo estos planes ampliamente en Se llama estructura de control de encadenamiento hacia un sistema llamado TEIRESIAS. Este sistema ayuda a un experto atrás porque el programa razona hacia atrás desde lo que a depurar y llenar el conjunto de reglas de un sistema experto quiere probar hacia los hechos que necesita para existente. Además utiliza generalizaciones acerca de la estructura hacerlo. de reglas existentes. 3.5 Ventajas y Desventajas  Factor de certeza A este sistema experto realizaron una serie de A cada regla se le asocia un factor de certeza, CF, investigaciones para saber su grado de fiabilidad. Los resultados comprendido entre [-1, 1]. Este factor indica el grado de obtuvieron una tasa de aciertos de aproximadamente el 65%. Con confianza en la conclusión obtenida, dada la evidencia lo que mejoraba las estadísticas de los doctores no especializados de las premisas. Si es positivo indica un grado de en el diagnóstico de infecciones bacterianas, que ejercían la confianza, mientras que si es negativo un grado de profesión en aquellos años. desconfianza. Además este sistema experto presenta una 3.3 Sistema de explicación representación sencilla y una facilidad de comunicación con el sistema. Este sistema consiste en explicar al doctor todo lo referente a la consulta. Dicho doctor puede realizar las preguntas Sin embargo, a pesar de los resultados favorables generales o relacionadas con la consulta necesaria al programa no obtenidos, MYCIN fue cayendo en desuso. El motivo es las sólo al final de la consulta sino durante la consulta misma. debilidades que tenía el programa y por cuestiones legales y éticas debido a que se dejaba en manos de una máquina la responsabilidad de la salud de una persona. Estas preguntas pueden ser del estilo ¿Qué te hace pensar que el organismo puede ser un Proteus?Ante esta situación MYCIN escribe las reglas que utilizó, su grado de certeza en cada decisión y la última pregunta hecha. Todo esto lo 3.6 Ejemplo puede hacer porque lleva un registro de las decisiones que se hace. A continuación mostramos un pequeño ejemplo realizado en Prolog para simular el comportamiento de un sistema La facilidad que tiene MYCIN para responder a dichas experto en el ámbito de la medicina. preguntas está basada en sus habilidades para: No es un ejemplo MYCIN porque es el propio sistema el que realiza las preguntas al usuario y con dichas respuestas • Desplegar aquellas reglas que se están concluye el organismo infeccioso y el posible tratamiento. utilizando durante la consulta. • Almacenar dichas reglas y asociarlas con eventos. En el siguiente código se muestra los síntomas y posibles tratamientos de enfermedades habituales. • Utilizar el indizado de reglas para recuperar reglas particulares como respuestas a peticiones. El código de dicho programa es el siguiente:

sintomas_de(dolor_cabeza,gripe). sintomas_de(escalofrios,gripe). sintomas_de(tos_seca,gripe). sintomas_de(fiebre,gripe).

- 16 - sintomas_de(tos,pulmonia). sintomas_de(fiebre_alta,pulmonia). sintomas_de(escalofrios,pulmonia). En la imagen anterior preguntamos por los síntomas de sintomas_de(dificultad_respirar,pulmonia). la varicela y nos devuelve los cinco síntomas y con el orden sintomas_de(dolor_pecho,pulmonia). exactamente igual que están en el programa. La última sentencia sintomas_de(dolor_muscular,pulmonia). es false para indicar que ya no hay más síntomas para esa enfermedad. sintomas_de(manchas_cuerpo,varicela). sintomas_de(dolor_cabeza,varicela). sintomas_de(fiebre_baja,varicela). sintomas_de(falta_hambre,varicela). sintomas_de(cansancio,varicela). sintomas_de(fiebre_alta,meningitis). sintomas_de(dolor_cabeza_intenso,meningitis) . sintomas_de(nuca_riguida,meningitis). A continuación consultamos el tratamiento que hay que sintomas_de(vomitos_bruscos,meningitis). seguir para pacientes con dicha enfermedad. sintomas_de(somnolencia,meningitis). sintomas_de(perdida_conciencia,meningitis). tratamiento_de(gripe,reposo). tratamiento_de(gripe,beber_mucho_liquido). tratamiento_de(gripe,analgesicos). tratamiento_de(pulmonia,antibioticos). tratamiento_de(pulmonia,beber_mucho_liquido) . tratamiento_de(pulmonia,reposo). tratamiento_de(varicela,analgesicos). tratamiento_de(varicela,crema_calman_picor). tratamiento_de(meningitis,hospital). tratamiento_de(meningitis,antibioticos). También podemos saber con dicho programa la

enfermedad que se corresponde con el síntoma especificado,

como se puede observar en la captura de arriba. Como se puede observar solamente tratamos cuatro enfermedades, gripe, pulmonía, varicela y meningitis.

Ejecutamos el programa y obtenemos:

Para el siguiente ejemplo el programa trata de mostrar las posibles enfermedades que tienen como tratamiento la variable reposo.

Finalmente, con este último ejemplo buscamos si tenemos alguna enfermedad que tenga como síntoma de dolor de garganta. En este caso el programa nos responde con false porque

en nuestro programa no tenemos ninguna enfermedad con dicho síntoma.

- 17 -

4. CONCLUSIONES

Como podemos ver el uso de los sistemas expertos en la sociedad tiene numerosas ventajas. Por un lado como ya se ha dicho en este documento los sistemas expertos no se cansan, no les afecta el medio están en continuo funcionamiento y si los programas bien son rápidos y además eficaces. Pero entrando en el terreno que nos ocupa, ¿Cómo de lejos puede llegar un sistema experto en medicina?, ¿los pacientes se fiarían de una “máquina”, o prefieren el trato personal? Estas preguntas serian fácilmente contestables viendo la caída de MYCIN. ¿De quién es la culpa de un mal tratamiento?, ¿Del médico?, si es del experto, ¿Para qué queremos la máquina? Desde nuestro punto de vista los sistemas expertos son un gran avance en la sociedad, parece mentira a lo que llega la sociedad con el paso del tiempo, es increíble que una máquina programada pueda diagnosticar, y ayudar a las personas como si de un experto humano se tratara y sobre todo es increíble que este programada para aprender. Aun así, después de las ventajas comentadas a lo largo del documento, e incluso las ventajas que nosotras en este mismo momento pudiéramos verle todavía desde nuestro punto de vista hay sistemas expertos, como en medicina que no consideramos que estén preparados para anular al experto, sencillamente podrían complementarlo, ayudarlo, o podrían usarse para otro fin médico. Muchos expertos podrían pensar que los sistemas expertos no son tan buenos ya que si empezamos a usar los sistemas expertos los expertos del mundo se quedarían inservibles, o peor aún, solo servirían para darle conocimiento a una máquina.

5. REFERENCES

[1] Inteligencia artificial y derecho By Danièle Bourcier, Pompeu Casanovas

[2] Fundamentos de inteligencia artificial Escrito por Luis Álvarez Munárriz

[3] Sistemas Expertos Escrito por David King,Paul Harmon

- 18 - Diseño e implementación de un agente inteligente Mario A.I.

Yuchen Du Virginia Izquierdo Bermúdez Ingeniería de Telecomunicación Ingeniería de Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid [email protected] [email protected]

RESÚMEN ninguna atención a los distintos elementos presentes en escenario. En este artículo se detalla el diseño y la implementación de un agente inteligente capaz de Adicionalmente, comprobaremos la funcionalidad jugar al videojuego de Mario así cómo las técnicas de diversos métodos y variables implementados en utilizadas para este diseño. otras clases dentro del paquete de software que nos serán de gran ayuda para la construcción en Categorías y descriptores código Java de nuestro agente inteligente. Java [Lenguaje de programación] Por último, procedemos a implementar y Términos generales programar el árbol de decisión construido Árbol de decisión, agente inteligente previamente y a comprobar su funcionamiento real en diversos escenarios utilizando las distintas Palabras claves opciones de simulación disponibles.

2. ÁRBOLES DE DECISIÓN

1. INTRODUCCIÓN Se trata de modelos de predicción en los cuales se utilizan técnicas mediante las que se pueden Para la implementación de este agente inteligente analizar decisiones secuenciales basadas en el uso analizaremos el uso de técnicas utilizadas de resultados. Estos árboles son utilizados para frecuentemente en aplicaciones de Inteligencia generar sistemas expertos, árboles de juegos o Artificial, tales como árboles de decisión. búsquedas binarias. Mediante su uso, un sistema Después, construiremos nuestro propio árbol de dotado de Inteligencia Artificial podrá tomar decisión para la solución del problema de agente decisiones en situaciones previamente definidas. inteligente planteado en la página web de 2011 Mario AI Championship. En un árbol de decisión, se dispone de unas ciertas entradas o situaciones, a partir de las cuales se A continuación, haremos un estudio detallado del devuelve un resultado, convergiendo así en una paquete de software proporcionado por dicha nueva situación donde una nueva decisión ha de página web, sobre el cual se apoya nuestra ser tomada. Esta acción será realizada tantas veces implementación del agente de Mario inteligente. como sea necesario, hasta llegar a un punto final, Para ello, analizaremos agentes básicos llamado hoja en nuestro árbol de decisión, donde proporcionados dentro del paquete de software, se determina la acción a realizar tras el camino tales como el ForwarJumpingAgent el cual tomado, aquella que se ajusta a la situación simplemente salta hacia delante sin prestar requerida.

- 19 - Un ejemplo de árbol de decisión, binario en este Cada nodo consiste en una posible situación a la caso, se muestra a continuación. que se podría enfrentar el agente a lo largo de una partida. A continuación, veremos detalladamente en qué consiste cada una de ellas, para tener especial cuidado a la hora de implementar nuestro sistema, evitando implementaciones que puedan dar lugar a comportamientos erróneos del agente inteligente.

3.1 Obstáculos delante

Si mientras caminamos observamos un objeto el cual no es franqueable, necesitaremos saltar para evitar situaciones en las que nos encontraríamos estancados. Será conveniente adelantarnos a esta situación y no detectar el obstáculo cuando se encuentra justo a nuestro lado, sino que convendrá 3. DISEÑO DEL AGENTE intentar predecir la presencia de obstáculos a distancias un poco mayores. De ésta manera se Para el diseño de nuestro agente, haremos uso de mejorará el rendimiento del sistema al tratar de un árbol de decisión, no binario en éste caso, adelantarse en la resolución de problemas que donde se tomarán decisiones dependiendo del pueden ser evitados fácilmente con un simple escenario al que se enfrenta Mario en cada salto a tiempo. momento, indicándole la acción a realizar para tratar de llegar lo menos dañado posible al final 3.2 Agujero delante del nivel. Al igual que en el caso anterior, será necesario Aquí mostramos el árbol de decisión que hemos predecir cuándo hay agujeros para tratar de evitar diseñado para resolver el presente problema: caer en ellos y consecuentemente perder de forma definitiva la partida. Para superar estos agujeros, tomaremos la misma acción que anteriormente, es decir, saltar en el momento necesario para evitar situaciones indeseadas una vez más.

3.3 Enemigos delante

Los enemigos también han de ser evitados para no ser dañados innecesariamente. Por ello, cuando veamos un enemigo próximo y siempre que sea posible (antes de saltar siempre habría que comprobar si dicha acción es conveniente, véase 3.4), saltaremos hacia delante para evitar ser alcanzados por un enemigo que pueda dañar a Mario y reducir su nivel en un rango (disparo → grande → pequeño → fin de partida).

- 20 - 3.4 Obstáculos encima 4. IMPLEMENTACIÓN DEL AGENTE

Será necesario también comprobar si cuando es Para la implementación del agente en Java, con necesario saltar, es decir, si nos encontramos en ayuda del código proporcionado por 2011 Mario las situaciones 3.1, 3.2 o 3.3, esto es conveniente. AI Championship necesitaremos analizar ciertas En concreto, necesitamos comprobar si cuando se funciones y variables ya implementadas o requiere realizar un salto, hay algún tipo de definidas, que nos serán de apoyo a la hora de enemigo u obstáculo infranqueable por encima de programar. Mario. Si se diese alguna de estas situaciones, lo más sensato sería no saltar, sino retroceder, ya que 4.1 Escenario de lo contrario estaríamos arriesgando a ser En primer lugar, y como información más dañados de forma innecesaria (enemigo encima) o importante será necesario observar el escenario en saltar en vano (objeto infranqueable) y estar el que se mueve Mario. Según las descripciones expuesto de nuevo a los peligros detectados de la página web de la competición, este escenario anteriormente. consiste en una matriz de 22 x 22 en el que Mario 3.5 Estancados se encuentra siempre en el centro de la perspectiva, es decir, en esta matriz siempre Puede darse la situación en la que tratamos de ir aparece en la columna 11 y en la fila 11. hacia delante y saltar para evitar algún tipo de obstáculo, pero no podemos franquearlo por En esta matriz, podemos encontrar todo tipo de encontrar nuevos impedimentos y quedarnos información acerca de los objetos que aparecen en estancados, por ejemplo si chocamos con un pantalla, tales como enemigos, obstáculos o objeto que se encuentra justo encima nuestro y a monedas. la vez tenemos una pared o una tubería delante Existen diversos métodos que permiten acceder a nuestro no podríamos avanzar con un simple salto la información de esta matriz en todo momento hacia delante. Por ello, la acción correcta a con distinto nivel de detalle, pudiendo seleccionar realizar si esta situación ocurre es la descrita en el tipo de información que se quiere conocer, bien 3.7, es decir, retroceder y probar a saltar de nuevo. sea los enemigos, los obstáculos o ambas a la vez.

3.6 Saltar Por simplicidad utilizaremos los siguientes Si hemos llegado a esta hoja del árbol, la acción métodos: getLevelSceneObservationZ (int level), final a realizar es saltar hacia delante. La duración para ver únicamente los obstáculos en el y por tanto la altura del salto depende del escenario; getEnemiesObservationZ (int level), en propósito de dicho salto, ya que depende de si este caso para ver solo los obstáculos; y por estamos intentando evitar un obstáculo o si último, getMergedObservationZZ(int level, int queremos recoger más monedas, nos interesa level) en el cual se pueden observar ambas saltar alturas diferentes. informaciones.

3.7 Retroceder Es importante mencionar que, a diferencia de la matriz de perspectiva completa de dimensiones 22 Finalmente, si llegamos a esta hoja, ya sea para x 22, estas funciones que simplifican la tarea de evitar una situación de estancamiento, o para obtención de información dividiéndola según su escapar de un enemigo cuando no era conveniente clase, nos devuelven una matriz de perspectiva de saltar directamente, retrocederemos hacia detrás dimensiones 19 x 19 con la información requerida durante un tiempo determinado para después según la función invocada. Al igual que antes, poder saltar hacia delante sin chocarnos con Mario siempre estará situado en el centro de ningún tipo de obstáculo que podríamos habernos perspectiva, que en este caso pasa a ser la fila 10 y encontrado. la columna 10.

- 21 - La variable level permite modificar el nivel de disponga de la opción de disparar, lo hará detalle de los objetos en la pantalla que queremos repetidamente mientras que va avanzando obtener. Cuando se le asigna el valor 2 a esta rápidamente por el nivel. Después de sufrir algún variable de entrada, los datos que devuelve la daño y perder la capacidad de disparo, perdemos función tendrán la forma más simple protección contra los enemigos que vienen de (mayoritariamente 0s y 1s) facilitando su frente, por lo que dejaremos de correr para procesamiento y manipulación posterior, mientras mejorar nuestra reacción contra las distintas que si se le asigna 0 a esta variable, los datos situaciones adversas que puedan tener lugar. obtenidos tendrán la máxima precisión, siendo posible la distinción entre distintos tipos de 4.2.3 marioEgoRow y marioEgoCol enemigos u obstáculos. A la hora de programar, Estas dos variables indican la posición de Mario dependiendo del propósito y las necesidades de la en la matriz de perspectiva de escenario en un función determinada, utilizaremos un nivel de momento determinado. detalle mayor o menor, para adaptarnos mejor a la situación concreta. 4.2.4 action

4.2 Variables utilizadas A parte de los atributos anteriores que utilizamos para obtener información acerca del escenario A parte de estos tres métodos que utilizamos presente, también cabe mencionar que, para para obtener información acerca del entorno en el indicar las acciones que debe tomar Mario en cada que se desenvuelve Mario, aprovecharemos momento, modificamos el array de variables también otros atributos que se encuentran boolean action, que contiene la información distribuidos en el paquete de software Mario AI: acerca de qué botones deben ser pulsados durante 4.2.1 isMarioOnGround una ronda determinada. Los que utilizamos principalmente son: Indica si en un momento determinado Mario está  sobre una plataforma fija, o si está en medio del action[Mario.Key_RIGHT]  action[Mario.Key_LEFT] aire. Este atributo nos será de gran utilidad para  action[Mario.Key_JUMP] determinar si estamos preparados para detectar  action[Mario.Key_SPEED] nuevos enemigos u obstáculos y saltar de nuevo, o si por el contrario tenemos que prestar mayor Que tienen nombres bastante intuitivos. atención a la zona donde Mario va a caer, 4.3 Enemigos comprobando la proximidad a enemigos y decidiendo si se debe retroceder hacia atrás para Siempre que sea posible, como dijimos en la parte evitar un posible choque y daño indeseado. de diseño, al encontrarnos con un enemigo al lado nuestro trataremos de saltar para no ser dañados. 4.2.2 Mario.fire En caso de que esto no fuera posible, bien porque Este atributo nos permite saber si Mario aún hay más enemigos encima o porque tenemos mantiene en su situación inicial con capacidad de algún obstáculo que nos lo impide, nos disparo, o si ya ha sufrido daños y desplazaremos hacia atrás para poder huir de él y consecuentemente es grande o pequeño, tomar distintas decisiones más adelante. Por lo inhabilitado para disparar. Esto es útil ya que, en general, esta funcionalidad no es utilizada muy el caso de que podamos disparar, sería muy frecuentemente, pero en ocasiones resulta de vital interesante disparar continuamente para destruir importancia ya que nos evita ser dañados por un los enemigos que vienen de enfrente y por tanto estrecho margen. También se da la situación para aumentar las posibilidades de sobrevivencia. cuando estamos cayendo después de un salto, que Nótese que, al tratarse el botón de disparar el Mario hace contacto muchas veces (sin llegar a mismo que sirve para correr, mientras Mario saltar encima) con un enemigo justo cuando está a punto de tocar el suelo, por lo que es imposible - 22 - realizar otro salto para evitar ser dañado (para Del código fuente del paquete software, podemos realizar un salto es necesario que Mario esté sobre saber que cuando se utiliza un nivel de detalle 0, alguna plataforma firme). Para prevenir y una flor enemiga será “traducida” con el valor de solucionar este peligro, analizamos la posibilidad 91 cada vez que se invoque el método de que algún enemigo se encuentre alrededor de la getEnemiesObservationZ(...). zona de aterrizaje, y cuando se dé el caso, trataremos de retroceder o bien frenar la De esta forma, cuando detectamos un obstáculo trayectoria y así evitar algunos enemigos que delante, y cuando no observamos ningún podrían habernos atacado si simplemente impedimento para saltar por la existencia de hubiéramos seguido el salto con nuestra obstáculos, procedemos a comprobar la existencia trayectoria inicial. de flores enemigas en las celdas siguientes. En caso de encontrarlas, nos pegaremos a la tubería, 4.4 Obstáculos o Monedas esperaremos a que dichas flores bajen y cuando ya el camino está libre, saltaremos hacia delante. Aparte de los enemigos, a la hora de comprobar obstáculos, nos interesa diferenciar si nos 5. RESULTADOS encontramos ante un objeto sólido, al que haría falta realizar un gran salto por encima para Una vez implementado nuestro sistema podemos superarlo y así poder seguir avanzando en el nivel, comprobar cómo este funciona aceptablemente, o de monedas, que en vez de esquivarlas lo que siendo capaz de terminar diversos escenarios, con realmente nos interesa es recolectar la mayor distintas dificultades y obstáculos sin ser apenas cantidad posible, realizando saltos pequeños para dañados. También es cierto que nuestro agente no intentar coger todas las monedas cercanas. En este es infalible y en ocasiones comete fallos que le caso, esta tarea es relativamente fácil, pues suponen la pérdida de fuerza, sin embargo las utilizando un nivel de detalle 2, bajo la presencia consecuencias no son tan graves en comparación de monedas, el método para obtener información con la dificultad de la implementación de de escenario devuelve 2s en aquellas posiciones soluciones a dichos problemas. donde éstas se encuentran, diferenciándolas Por tanto, hemos tratado de llegar a una fácilmente de los obstáculos indeseados, que implementación en la que exista un compromiso corresponderían a ‘1’s, evitando franquearlas de entre funcionalidad y dificultad, consiguiendo, en forma innecesaria. nuestra opinión una solución muy acertada en cuanto a resolución de problemas por parte de 4.5 Flores enemigas Mario y la dificultad a la que su implementación Por lo general, para obtener la matriz con la está sometida. información del escenario será suficiente con un nivel de detalle 2, pero en ocasiones, como por No obstante, comentaremos posteriormente ciertas ejemplo cuando tratamos de evitar las flores mejoras que pueden realizarse para conseguir un enemigas que se esconden en las tuberías, nos agente mucho más inteligente y capaz de superar interesara saber específicamente si los enemigos problemas mayores a los que nuestro agente puede que encontramos delante se tratan de dichas flores enfrentarse. o no, ya que dependiendo de eso actuaremos de Antes de eso, mostraremos algunas de nuestras una forma u otra: en el caso de que se trate de implementaciones más destacadas, demostrando enemigos comunes, no habría ningún problema y su correcto funcionamiento, obteniendo el efecto por tanto actuaremos igual que ante el resto de deseado según lo explicado anteriormente, enemigos, mientras que cuando detectamos flores atendiendo a las decisiones que se toman tras enemigas, es mucho más seguro esperar a que se recorrer nuestro árbol de decisión definido. refugien de nuevo en las tuberías antes de avanzar de nuevo hacia delante.

- 23 - 5.1 Enemigos 5.2 Flores enemigas

La tarea básica para hacer que nuestro agente Otra acción a realizar, es esquivar flores funcione es tratar de esquivar enemigos que se enemigas, emergente de las tuberías del escenario acercan hacia nosotros, a nivel del suelo. Para de Mario. Para ello, ya hemos explicado que ello, antes de que estos nos ataquen, daremos un trataremos de esperar, hasta que esta se ha salto evitándolos de forma exitosa, tal y como se escondido para saltar, evitando que la flor nos muestra en las imágenes a continuación: dañe:

- 24 - 5.3 Situaciones de estancamiento 6. POSIBLES MEJORAS

Otra situación muy incómoda es cuando Mario se Debido a limitaciones tales como el tiempo encuentra atascado entre varios bloques disponible, nuestra implementación no resulta ser irrompibles, ya que si no se toman medidas, Mario la más idónea, ya que existen detalles en el se mantendrá en la misma posición infinitamente, funcionamiento del sistema que podrían ser pues ni puede seguir hacia delante ni puede saltar, mejorados realizando implementaciones más al chocar con algún bloque de su alrededor. Por complejas. ello, será necesario hacer que Mario retroceda Una de las posibles mejoras que a priori parece cuando se encuentre en esta situación, pudiendo asequible es la siguiente: del motor de generación completar el escenario tal y como se muestra: de niveles automático que utiliza el paquete de software, muchas veces genera escenarios en el cual hay muchos enemigos en distintos niveles moviéndose hacia la izquierda (hacia Mario) y cayéndose. Utilizando el agente que hemos implementado, se necesita mucha suerte para poder esquivar todos, ya que no es nada fácil evitar contacto con 5 o más enemigos cayendo. A simple vista, una posible solución sería: cuando se detecta una gran cantidad de enemigos por delante, en vez de seguir hacia delante, Mario puede permanecer quieto o incluso retroceder un poco, y esperar hasta que los enemigos hayan caído sobre plataforma firme para seguir avanzando, utilizando nuestro árbol de decisión para esquivar los enemigos.

Sin embargo, esta solución no es óptima del todo. Uno de los problemas generados por intentar esquivar los enemigos saltándolos es que, cuando hay una presencia numerosa de enemigos, es complicado evitar el contacto con todos. Nosotros intentamos detectar si en el aterrizaje de un salto es posible hacer colisión con algún enemigo y así cambiar la trayectoria del salto. Pero esto no evita colisiones al 100% y muchas veces perdemos vida justo en los instantes siguientes de un salto.

Además, en los niveles avanzados que se generan con el paquete de software, son muy comunes los enemigos con alas que pueden moverse en todas las direcciones. Dado el caso, no sería de utilidad esperar a que todos los enemigos aterricen, ya que es algo que no ocurriría.

Para hacer frente a esta situación y resolver los problemas que puedan presentarse, es necesario diseñar una implementación más compleja: haría

falta conocer las posiciones de todos los enemigos - 25 - y los obstáculos presentes y, teniendo en cuenta import ch.idsia.benchmark.mario.engine.sprites.Mario; import ch.idsia.benchmark.mario.environments.Environment; las direcciones de movimiento de los enemigos, import ch.idsia.benchmark.mario.environments.MarioEnvironment; calcular hacia que posiciones sería conveniente public class AiAgent extends BasicMarioAIAgent implements Agent { saltar (ya sea un hueco entre los enemigos o saltar // Variable para controlar el salto int trueJumpCounter = 0; sobre algún enemigo, aunque esta última opción // Variable para controlar retrocesos implicaría un pequeño salto forzado después de int trueBufferCounter = 0; matar al enemigo, que habría que tener en cuenta public AiAgent() { super("AiAgent"); para contemplar posibles resultados). Al mismo reset(); } tiempo, habría que tener conocimiento sobre las /** * Metodo de inicializacion Estado inicial: todos capacidades de Mario, es decir, sus velocidades de los botones sin presionar */ movimiento y de salto, para ver de la lista de public void reset() { posiciones seguras hacia dónde es factible saltar. action = new boolean[Environment.numberOfKeys]; Y eso no es todo: habría que tener un control action[Mario.KEY_RIGHT] = false; action[Mario.KEY_SPEED] = false; exhaustivo en todo momento sobre las posiciones action[Mario.KEY_JUMP] = false; trueJumpCounter = 0; futuras de los enemigos y de Mario para así evitar trueBufferCounter = 0; } cualquier sorpresa. /** * Metodo para chequear si hay enemigos delante * Como podemos imaginar, esta solución, que * @param environment funcionaría de forma correcta en todas las * : el entorno en el que se * desenvuelve Mario. De ahi sacaremos situaciones posibles, requiere una enorme * la informacion necesaria para * interactuar con el resto de complejidad ya que se necesitaría estudiar * elementos que aparecen en la * pantalla. ecuaciones sobre los movimientos de Mario y los * @return boolean existencia de un enemigo * cercano Simplemente comprobamos enemigos, y se escapan del rango de * la existencia de enemigos en la requerimientos de este trabajo. En cualquier caso, * posicion consecutiva del array */ el sistema para evitar enemigos que hemos private boolean checkEnemiesFront(Environment environment) { implementado funciona razonablemente bien para byte[][] enemies = environment.getEnemiesObservationZ(2); niveles de dificultad limitada, superando incluso a if (enemies[marioEgoRow][marioEgoCol + 1] != 0) { las capacidades de un jugador humano con poca return true; experiencia. } else { return false; } También existen otros aspectos en donde se puede } /** implementar mejoras, tales como recolectar * Metodo para chequear si hay obstaculos * champiñones y flores para mejorar el estado de * @param environment * : el entorno en el que se Mario, así como colectar todas las monedas que * desenvuelve Mario. * @return boolean existencia de obstáculos aparecen en pantalla. Sin embargo, todo eso * delante Comprobamos la aumentaría en gran medida la complejidad del * existencia de elementos bloqueantes * por delante de la posicion sistema, por lo que para el presente diseño se ha * actual de la figura de Mario * Prestamos atencion a si el elemento decidido por un sistema más simple y al mismo * se trata de una moneda ya que de ser * asi, no se le considera como tiempo veloz, que es capaz de resolver problemas * un elemento bloqueante */ de cierta magnitud. private boolean checkObsFront(Environment environment) { byte[][] obstacles = environment.getLevelSceneObservationZ(2); 7. CÓDIGO FUENTE if ((obstacles[marioEgoRow][marioEgoCol + 1] != 0 && obstacles[marioEgoRow][marioEgoCol + 1] != /** 2) || (obstacles[marioEgoRow][marioEgoCol * Inteligencia en Redes de Comunicaciones + 2] != 0 && * Curso 2011 - 2012 obstacles[marioEgoRow][marioEgoCol + 2] != * Diseño e Implementación de un agente inteligente Mario 2) || (obstacles[marioEgoRow][marioEgoCol A.I. + 3] != 0 && * @author - Yuchen Du 100073084 obstacles[marioEgoRow][marioEgoCol + 3] != * @author - Virginia Izquierdo Bermúdez 100072580 2) || */ (obstacles[marioEgoRow - 1][marioEgoCol + package ch.idsia.agents.controllers; 1] != 0 && import ch.idsia.agents.Agent;

- 26 - obstacles[marioEgoRow - 1][marioEgoCol + /** 1] != 2)) { * Metodo para comprobar si hay monedas cerca return true; * } else { * @param environment return false; * : el entorno en el que se } * desenvuelve Mario. } * @return boolean si hay monedas cerca /** * Comprobamos en los alrededores de la * Metodo para chequear si hay un agujero delante * posicion actual de Mario la * * existencia de monedas * @param environment */ * : el entorno en el que se private boolean areCoins(Environment environment) * desenvuelve Mario. { * @return boolean existencia un agujero delante byte[][] coins = * Verificamos si hay en la environment.getLevelSceneObservationZ(2); * columna delante existe una posicion if (coins[marioEgoRow - 1][marioEgoCol] == * vacia 2 || coins[marioEgoRow - 1][marioEgoCol + */ 1] == 2) { private boolean checkGapFront(Environment return true; environment) { } else { byte[][] obstacles = return false; environment.getLevelSceneObservationZ(2); } if (obstacles[marioEgoRow + 1][marioEgoCol } + 1] == 0) { /** return true; * Metodo para comprobar si hay enemigos cerca } else { * en los instantes finales de return false; * un salto } * } * @param environment /** * : el entorno en el que se * Metodo para chequear si se puede saltar * desenvuelve Mario. * * @return boolean la existencia de peligro * @param environment * cercana Comprobamos si hay * : el entorno en el que se * enemigos alrededor de la zona en * desenvuelve Mario. * donde caeria mario * @return boolean si debemos saltar Comprobamos */ * la existencia de enemigos private boolean checkWhileFalling(Environment * por encima de la posicion de Mario. environment) { * Si se diera la situación, no * se debe saltar para evitar colision. */ if (things[marioEgoRow + 1][marioEgoCol + private boolean checkJump(Environment environment) 1] != 0 || things[marioEgoRow + { 1][marioEgoCol + 2] != 0 || byte[][] things = things[marioEgoRow + 1][marioEgoCol + 3] environment.getEnemiesObservationZ(2); != 0 || things[marioEgoRow + if (things[marioEgoRow - 1][marioEgoCol] 2][marioEgoCol + 3] != 0 || != 0 || things[marioEgoRow + 2][marioEgoCol + 2] things[marioEgoRow - 2][marioEgoCol] != 0 != 0) { || return true; things[marioEgoRow - 3][marioEgoCol] != } else { 0) { return false; return false; } } else { } return true; /** } * Metodo para comprobar si ha salido una flor } * enemiga de alguna de las /** * tuberías cercanas * Metodo para chequear si se ha llegado a una * * situacion de estancamiento * @param environment * * : el entorno en el que se * @param environment * desenvuelve Mario. * : el entorno en el que se * @return boolean la existencia de una flor * desenvuelve Mario. * carnivora Chequeamos en los * @return boolean si Mario esta estancado en * puntos cercanos si hay alguna flor * algun punto Verificamos si * enemiga * Mario se encuentra en una situacion */ * de estancamiento, es decir, private boolean checkFlower(Environment * si por delante de el hay un muro environment) { * infranqueable, pero al mismo byte[][] things = * tiempo existe elementos irrompible environment.getEnemiesObservationZ(0); * por encima de el if (things[marioEgoRow - 2][marioEgoCol + */ 1] == 91 || things[marioEgoRow - private boolean stucked(Environment environment) { 3][marioEgoCol + 1] == 91 || byte[][] things2 = things[marioEgoRow - 4][marioEgoCol + 1] environment.getLevelSceneObservationZ(2); == 91 || things[marioEgoRow - if ((things2[marioEgoRow - 2][marioEgoCol] 2][marioEgoCol + 2] == 91 || == -60 || things2[marioEgoRow - things[marioEgoRow - 3][marioEgoCol + 2] 3][marioEgoCol] == -60) == 91 || things[marioEgoRow - && 4][marioEgoCol + 2] == 91) { (things2[marioEgoRow][marioEgoCol + 1] == return true; 1 && things2[marioEgoRow - 1][marioEgoCol } else { + 1] == 1)) { return false; return true; } } else { } return false; /** } * Metodo auxiliar para imprimir el array por la } * pantalla - 27 - * // y asi determinar las acciones a * @param environment // desarrollar * : el entorno en el que se else if ((checkEnemiesFront(env) || * desenvuelve Mario. checkObsFront(env) || checkGapFront(env)) * @return void && trueBufferCounter == 0) { */ if (isMarioOnGround == false) { private void printout(Environment environment) { // Si hay enemigos byte[][] things = // cercanos al punto de environment.getLevelSceneObservationZ(2); // caida, for (int i = 0; i < 19; i++) { // retrocedemos System.out.println(""); if (checkWhileFalling(env)) { for (int j = 0; j < 19; j++) { action[Mario.KEY_RIGHT] = false; System.out.print(things[i][j]+" action[Mario.KEY_LEFT] = true; "); trueBufferCounter = 1; } } } } } // Si se puede saltar con /** // seguridad y Mario no se * Metodo para decidir en cada momento las // encuentra en una situacion de * acciones a tomar // estancamiento, movemos hacia * // la derecha * @return boolean[] el array indicando los * botonos que se deben mantener * pulsado Utilizando los métodos action[Mario.KEY_RIGHT] * definidos anteriormente, = true; * comprobamos la situacion en la que se // Si no hay una flor * encuentra Mario en cada // enemiga fuera de una * momento y decidimos los botones que // tuberia, saltamos * debemos accionar // En caso contrario */ // esperamos hasta que public boolean[] getAction() { // la flor se refugie if (!checkFlower(env)) { MarioEnvironment env = MarioEnvironment.getInstance(); action[Mario.KEY_JUMP] = true; // Si Mario se dispone de la habilidad de trueJumpCounter = 7; // disparo, } // encendemnos y apagamos alternativamente } // el botón // Si no es asi, retrocedemos // de SPEED y así disparar continuamente // hacia la izquierda if (Mario.fire) { else { action[Mario.KEY_SPEED] = action[Mario.KEY_RIGHT] = false; !action[Mario.KEY_SPEED]; action[Mario.KEY_LEFT] = true; } trueBufferCounter = 3; // En caso contrario, avanzamos a } // velocidad regular } else { // Si hay monedas cerca action[Mario.KEY_SPEED] = false; else if (areCoins(env) && } trueBufferCounter == 0) { // Primero comprobamos si Mario esta // Si saltar no implica ningun // retrocediendo // peligro, // para evitar un enemigo o un obstaculo // saltamos un poco para coger if (trueBufferCounter > 0) { // mas monedas trueBufferCounter--; if (checkJump(env)) { // Si este contador se ha llegado action[Mario.KEY_RIGHT] // a 0, dejamos de mover = true; // hacia la izquierda y volvemos action[Mario.KEY_JUMP] = // hacia la derecha true; if (trueBufferCounter == 0) { trueJumpCounter = 1; action[Mario.KEY_RIGHT] } = true; } action[Mario.KEY_LEFT] = // Finalmente si no pasa nada, false; // simplemente } // movemos hacia la derecha } else if (trueBufferCounter == 0) { // Ahora comprobamos si Mario estaba action[Mario.KEY_RIGHT] = true; // saltando, action[Mario.KEY_JUMP] = false; // gracias al contador trueJumpCounter } if (trueJumpCounter > 0) { return action; trueJumpCounter--; } // Si mario ya se encuentra sobre } // alguna plataforma, // reseteamos el contador if (isMarioOnGround) { trueJumpCounter = 0; 8. REFERENCIAS } // Si el contador esta a 0, // dejamos de pulsar el boton de [1] Página web de Mario AI Championship 2011: // saltar if (trueJumpCounter == 0) { http://www.marioai.org/ action[Mario.KEY_JUMP] = false; } [2] Ejemplo del árbol de decisión tomado: } // Si no se da lugar ninguna de las http://dms.irb.hr/tutorial/tut_dtrees.php // situaciones anteriores, // Comprobamos si hay enemigos, obstaculos // o agujeros delantes - 28 -

JUGADOR VIRTUAL DE PÓKER TEXAS HOLD’EM Alberto Álvarez Polegre Lucas Bernalte Pérez David Díaz Chinea Ingeniería de Telecomunicación Ingeniería de Telecomunicación Ingeniería de Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid Universidad Carlos III de Madrid [email protected] [email protected] [email protected]

RESUMEN la grande). La primera de estas tres rondas se conoce como Flop y El póquer es un juego de cartas de los llamados de "apuestas", en en ella se mostrarán en la mesa tres cartas sacadas del montón de los que los jugadores, con todas o parte de sus cartas ocultas, cartas que no se ha repartido. Posteriormente pasamos al Turn hacen apuestas sobre una puja inicial, recayendo la suma total de donde solo se enseña una carta conocida como Cuarta Calle. Por las apuestas en el jugador o jugadores con la mejor combinación último, se gira una última carta, Quinta Calle, en la ronda llamada de cartas. River, formando las cinco Cartas Comunes. Con tres de estas cartas mostradas combinadas con las dos obtenidas al principio de Palabras Clave la partida el jugador deberá formar su mano de cartas con las que Póker, Texas Hold „em, probabilidad, jugada, mano, estrategia. intentar ganar la partida. Así pues a partir de aquí se presentan las manos posibles que puede tener cada jugador, ordenadas de mayor 1. INTRODUCCIÓN a menor valor. El Texas Hold‟em es una variación del conocido juego de cartas conocido como Póker. En este juego se utilizan las 52 cartas de la Escalera Real de Color baraja inglesa, las cuales tienen los valores, de menor a mayor, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K y A, en las cuatro combinaciones de palos diferentes: trébol , corazones , picas , y diamantes . En el póker se realizan una serie de apuestas en las que el jugador que obtenga la mejor combinación de cartas será el ganador de esta, llevándose el bote acumulado que será la suma de todo lo apostado por el resto de jugadores. Además el jugador también La mejor jugada del póker. Comprende las cartas 10, J, Q, K y A puede obtener el premio si el resto de jugadores de la mesa se ha del mismo palo. retirado de la partida. Cada jugador será eliminado si pierde todas las fichas que ha apostado. Escalera de Color 2. REGLAMENTO Esta variación se caracteriza sobre todo porque cada jugador obtiene dos cartas boca abajo al inicio de la partida, que serán siempre fijas. Dichas cartas serán reveladas al final de la ronda por parte de los jugadores que queden al cerrar las apuestas, en caso de que todos se retiren si el que no lo haga lo desea, o si los apostantes que siguen en la partida apuestan todas sus fichas Cinco cartas de orden consecutivo del mismo palo. Cuanto mayor restantes (jugada conocida como All-In). sea la carta más alta de la escalera, mejor es el ranking de la mano. En este ejemplo la carta más alta es el 10; vencería a una A partir de aquí cada jugador comienza apostando a continuación escalera de color con un 9 de carta más alta. de la ciega grande (jugador que parte obligatoriamente con la apuesta mínima, de modo que el jugador solo puede igualarla o aumentarla si no quiere retirarse) siguiendo las agujas del reloj. A Póker esta ronda se le denomina, en términos del juego, Pre-Flop, y si quedan más de dos jugadores tras esta se seguirá apostando. Posteriormente se inicia una fase de tres rondas conocida como Post-Flop, cada una con sus respectivas rondas de apuestas y ,en cuanto a las mismas, a partir de aquí el jugador puede pasar (no apostar nada) solo si los anteriores han pasado o es él el primero; retirarse de la partida, igualar la apuesta o subirla. En este caso la Cuatro cartas del mismo valor. Cuanto más alto es el valor de ronda la iniciará el jugador a la izquierda de la ciega grande, estas cuatro cartas, más alto es el ranking de la mano. En caso de conocido como ciega pequeña (apuesta inicialmente la mitad que empate gana la mano cuya quinta carta sea más alta.

- 29 - Una doble pareja está formada por dos cartas del mismo valor en combinación con otras dos cartas también de un mismo valor, Full pero diferente al valor de las dos primeras. Cuando dos manos muestran doble pareja, gana la mano cuya pareja es más alta. Como siempre, en caso de empate decide la carta más alta.

Pareja

Esta jugada reúne 3 cartas de un valor y 2 de otro. Cuando se comparan dos fulls, gana el que tiene el valor de las tres cartas más alto. Así pues, un full 7-7-7-2-2 supera a un full 5-5-5-A-A. En caso de que los tríos sean del mismo valor en dos manos, gana la mano que tenga la pareja de cartas restante más alta, con lo que Dos cartas del mismo valor. Cuanto más alto es el valor de la por ejemplo 7-7-7-A-A superaría a 7-7-7-K-K. pareja, más alto es su ranking. En caso de igualdad, se recurre a la carta más alta. Color Carta Más Alta

Cuando ningún jugador consigue formar una de las jugadas arriba expuestas, gana la mano aquel que tiene la carta más alta. Y en caso de empate, se usa la siguiente carta más alta.

El color lo forman cinco cartas no consecutivas del mismo palo. 3. OBJETIVO Y PRESENTACIÓN DEL Gana el desempate entre dos colores aquel que tenga la carta más MODELO alta. 3.1 Introducción Escalera Primero, decir que un modelo que simule el comportamiento de un humano jugando al póker, es casi inviable, por la cantidad de factores que influyen, tanto dentro del juego como factores externos. El modelo que se presenta aquí, y la inmensa mayoría de modelos existentes son modelos simplificados, que sólo tienen en cuenta factores internos del juego y siempre será una máquina, luego Para la escalera se precisan cinco cartas de valor consecutivo. siempre pensará “con la cabeza fría” y elegirá la mejor jugada en Entre dos escaleras gana la que sea más alta. Por otra parte, el As cada momento. puede usarse para formar la escalera A-K-Q-J-10, que sería una A corto plazo puede no resultar victorioso, pero este modelo sigue Escalera Real, y también la escalera 5-4-3-2-A. un criterio de probabilidades, por el cual está comprobado que a Poquer.com.es. xx medio/largo plazo se obtienen ganancias. Trío Nuestro modelo empezará siguiendo una determinada estrategia, y

podrá ir cambiando a lo largo de la partida, dependiendo del comportamiento del rival.

3.2 Modelos de jugador de Póker

Podemos analizar que básicamente hay distintos tipos Lo componen tres cartas del mismo valor. Entre dos tríos gana el de jugadores de Póker. Encontramos que podemos agrupar a los que está formado por cartas más altas. Si ambos tríos están diferentes tipos de jugadores en cuatro categorías, de acuerdo a formados por cartas del mismo valor, decide el desempate la carta dos criterios: tight y loose y por otro aggressive y passive. más alta de las dos restantes de que consta la mano, y si esas dos cartas fueran iguales, se compararían las quintas cartas de cada Así podemos empezar por explicar que significa tight y loose y mano. aggressive y passive.

Doble Pareja De acuerdo con la cantidad de manos de Póker podemos clasificar a un jugador como tight o loose. Un jugador loose juega

muchas y diferentes manos. En cambio uno tight juega pocas manos y además con buenas cartas, es decir que tiene muchas posibilidades de ganar. Asimismo, encontramos los jugadores pasivos y agresivos. En

general el jugador pasivo sigue las apuestas del otro de la mesa de

- 30 - Póker, en cambio el agresivo sube con frecuencia la apuesta y 3.4.2 Fuerza de la mano toma la iniciativa. La fuerza de la mano es la probabilidad que tiene ésta de ganar la jugada sin saber qué cartas tienen nuestros adversarios. La fuerza de la mano inicial (en el pre-flop) se basa en la tabla del punto 3.3. 3.3 Fuerza de la mano inicial A partir de aquí se calculará de la siguiente manera: -En el Flop: ODDS*4 + 1 (%) -En el Turn: ODDS*2 - 1 (%) -En el River: ODDS (%) *ODDS: Las ODDS son las cartas que faltan por salir para tener la mano ganadora a la que aspira el jugador. 3.4.3 Ratio de ganancia El ratio de ganancia es la cantidad de fichas que ganarás (en %) en función de la apuesta que se haga y la cantidad de fichas en el bote. Por ejemplo, si la apuesta es 20 fichas y hay 40 fichas en el bote, entonces el ratio de ganancia será 20/(20+40) = 0.333. 3.4.4 Ratio de devolución El ratio de devolución es (en media) la proporción en que se multiplicará la apuesta si se continúa jugando esa mano. Se calcula como el cociente entre la fuerza de la mano y el ratio de ganancia. Normalmente, seguiremos jugando esa mano si este parámetro es igual o superior a 1 (como se mostrará en el punto 4). 3.4.5 Ratio de subida El ratio de subida es la cantidad de fichas que se apostarán en caso de que se decida ver y subir. Se calcula teniendo en cuenta los 3 parámetros anteriores de la siguiente forma:

3.4.6 Probabilidad total La probabilidad total es la suma de la fuerza de la mano con un Random de C++. Esta parámetro ha de ser igual o superior a la probabilidad umbral para jugar la mano. 3.4.7 Random Para simular de mejor manera el jugador virtual, utilizaremos la función de C++ Random y así poder hacer un jugador más imprevisible. En todas las tomas de decisiones utilizaremos esta función.

4. DESARROLLO DEL JUEGO 3.4 Parámetros en los que basar las 4.1 Pre-Flop decisiones. El jugador comprobará si es ciega grande o pequeña y pondrá la En esta sección explicares los parámetros en los que se basa el cantidad de fichas necesarias que estas indiquen. jugador para tomar una decisión u otra.

if (ciega_grande == true) 3.4.1 Probabilidad umbral Poner_ciega_grande(); La probabilidad umbral es la probabilidad mínima de ganar que debe tener la mano para jugar. Está es diferente dependiendo la if (ciega_pequeña == true) cantidad de jugadores en mesa. Por debajo se este umbral, se Poner_ciega_pequeña(); considera que la mano tiene muy pocas probabilidades de ganar y se supone una pérdida innecesaria de fichas. A lo largo de la partida, dependiendo del tipo de jugadores a los que nos Luego, se reparten dos cartas a cada jugador, y en ese momento enfrentemos, esta probabilidad umbral variará a más o menos. calculamos la probabilidad que tiene nuestra mano de ganar

- 31 - (fuerza de la mano), dependiendo del número de jugadores, de nuestra posición en la mesa y de si hemos sido ciega (grande o pequeña) o no. Diagrama de las fases del juego:

if (ciega_grande == true || ciega_pequeña == true)

{ Poner ciega probabilidad_total = Fuerza_mano(mano_inicial) + Random(0,0.2) - Random(0,0.2) + 0.05; Irse else

probabilidad_total = Fuerza_mano(mano_incial) + Calcular FM Igualar Random(0,0.2) - Random(0,0.2); } Subir Mientras las apuestas no hayan sido igualadas, calcularemos el ratio de ganancia y el ratio de devolución para realizar la jugada.

Teniendo en cuenta estos parámetros y los factores Random jugaremos (función Jugar) de un modo u otro (Irse, Igualar o Flop Subir). Irse A lo largo de las manos, se analizará a los adversarios y teniendo en cuenta la variables para este análisis jugaremos siguiendo una estrategia u otra (definidas en el punto 3.2). Calcular FM Igualar

4.2 Flop

Con esto llegamos al Flop, donde se reparten tres cartas Subir comunitarias. A partir de este momento nuestra mano pasará a tener 5 cartas, y la probabilidad para calcular la fuerza de la mano se calculará por un método señalado anteriormente. Hay que señalar que este método no es del todo exacto, pero nos da una muy buena aproximación de nuestras probabilidades de ganar la Turn mano. Irse Como ya se hiciera en el Pre-Flop, calcularemos de nuevo los parámetros básicos para la toma de decisiones y en función de ellos jugaremos (función Jugar). Calcular FM Igualar

4.3 Turn

Igual que en las fases anteriores, realizaremos un tipo de jugada u otra según los parámetros básicos. Subir 4.4 River En esta última fase se decidirá quién gana finalmente esa mano después de las apuestas. River Irse Como añadido, el jugador hará un All in (apostarlo todo) si sus fichas actuales son diez veces menos que sus fichas iniciales para intentar salvar la partida (o perder inmediatamente). Calcular FM Igualar

Subir

*FM: Fuerza de la mano

- 32 - Subir(ratio_subida); 5. TOMA DE DECISIONES (función Jugar) } En el código se ha implementado una función que decidirá cómo jugar teniendo en cuenta el ratio de devolución. 5.4 Ratio de devolución superior a 1.3 Después de calcular este parámetros, se entrará en una serie de En cuanto nuestro ratio de devolución sea superior a 1.3 condiciones para saber si ver la apuesta, subirla (o hacer un farol) significará que tenemos una mano difícilmente de ganar. Para este o irse. caso igualaremos con un 30% y subiremos con un 70%. Tampoco 5.1 Ratio de devolución inferior a 0.8 nos iremos en ningún caso. Este caso se considera una mano realmente mala, por lo que con el 95% de probabilidad el jugador se irá, con un 5% subirá la apuesta (farol) y en ningún caso igualará. {

if (aleatoriedad > 0.3) if (ratio_devolucion < 0.8) Subir(ratio_subida); { if (aleatoriedad <= 0.3) if (aleatoriedad > 0.05) Igualar(); Irse(); } if (aleatoriedad <= 0.05)

Subir(ratio_subida); El hecho de tomar una decisión u otra dependerá del factor de } aleatoriedad que nos brinda la función Random de C++. Cuánto apostar en caso de subida lo determinará el ratio de subirá que se calcula con la fórmula vista en el punto 3.4.5. 5.2 Ratio de devolución inferior a 1 En cuanto se igualen las apuesta de resolverá la jugada y se verá En este caso nuestra mano seguirá siendo bastante mala, por lo qué jugador gana ese mano. que lo más lógico sería irse. No obstante, ha mejorado con respecto al caso anterior conque nuestras probabilidades cambiarán. Con un 80% de probabilidad nos iremos, subiremos con un 15% (farol) y tan solo con un 5% igualaremos la apuesta. Diagrama del ratio de devolución:

if (ratio_devolucion < 1) Si { Irse (95%) if (aleatoriedad > 0.15)

Irse();

if (aleatoriedad <= 0.15 && 0.05 < aleatoriedad) RD < 0.8 Igualar (0%)

Subir(ratio_subida); Subir (5%) if (aleatoriedad <= 0.05)

Igualar();

} Si

Irse (80%) 5.3 Ratio de devolución inferior a 1.3 En este punto nuestra mano ya se considerará buena y tendremos opciones reales de hacernos con el boto final. Así que en este caso RD < 1 Igualar (5%) igualaremos la apuesta con un 60% de probabilidad y subiremos con un 40%. En ningún caso nos iremos.

Subir (15%) if (ratio_devolicion < 1.3)

{

if (aleatoriedad > 0.4)

Igualar();

if (aleatoriedad <= 0.4)

- 33 - 7. BIBLIOGRAFÍA

Si [1] Wikipedia, La Enciclopedia Libre, www.wikipedia.org Irse (0%) [2] Cowboy Programming, Programming Poker AI [3] Reglas del Póker, Tipos de jugaroes, www.reglasdelpoker.es/Hay-diferentes-tipos-de-jugadores-

RD < 1.3 Igualar (60%) de-poker

[4] Apuntes de la asignatura Inteligencia en Redes de

Subir (40%) Comunicación, Universidad Carlos III de Madrid [5] Probabilidades Póker, www.probabilidadespoker.es [6] World Series of Poker: Tournoment of Championship, vídeojuego PlayStation 2 [7] Poker Stars, www.pokerstars.com

Si Irse (0%) 8. ANEXO. PSEUDO CÓDIGO EN C++

// Variables RD > 1.3 Igualar (30%) int numero_jugadores, probabilidad_umbral, probabilidad_total,

Subir (70%) aletoriedad; int fichas_iniciales, fichas_disponibles, bote, apuesta, ratio_devolucion, ratio_subida; *RR: Ratio de devolución bool ciega_grande, ciega_pequeña, apuesta_igualada, hablo, perder; char mano_inicial [2], 6. CONCLUSIONES cartas_comunitarias [5];

El juego está basado en la minimización del factor suerte, luego // Funciones (sólo se define Jugar()) sólo sería rentable tras un número bastante grande de manos. Y void Poner_ciega_grande(void); todo esto teniendo en cuenta sólo factores del juego, aunque no se void Poner_ciega_pequeña(void); hayan contemplado todos (sería demasiado trabajoso y casi void Igualar(void); inviable). void Irse(void); Si la máquina se enfrentara a un jugador principiante, lo más void Subir(int); probable es que gane, puesto que todas las probabilidades usadas, void All_in(void); fórmulas y estrategias son reales. Está comprobado que si se juega int Fuerza_mano(char); de esa forma se obtienen beneficios a largo plazo. Esto, sumado a int Ratio_ganancia(int, int); que una máquina siempre piensa fríamente y que siempre va a elegir la que cree que es su mejor opción, la hace un rival muy bool Jugar(int, int, int, int); difícil de batir. bool Resolucion_jugada(void);

Por otro lado, si tenemos el juego muy estudiado y sabemos cuál void main(void) es la mejor opción, podríamos predecir el comportamiento del jugador virtual. { // Cálculo de probabilidad umbral Cabe mencionar, en cuanto al tema de poker y la inteligencia suponiendo un máximo de cuatro jugadores artificial, el ordenador Polaris, que se usó como experimento, switch (numero_jugadores) contra Phil Laak y Ali Eslami, dos jugadores de póquer de Los Ángeles clasificados entre los mejores del mundo. Aunqué ganó y { empató las 2 primeras partidas (de 500 manos cada una), al final case 2: el resultado se decantó para el lado humano. probabilidad_umbral = 0.58; case 3: Todo esto demuestra que a pesar de los años de estudio de la inteligencia artificial, todavía estamos en una constante evolución probabilidad_umbral = 0.42; y nos queda mucho camino por recorrer. case 4: probabilidad_umbral = 0.32; }

- 34 - // Inicio de la partida Fuerza_mano, ratio_devolucion, while (1) aletoriedad); { } // Se ponen las ciegas } if (ciega_grande == true) Poner_ciega_grande(); // Turn (cuatro cartas comunitarias) if (ciega_pequeña == true) probabilidad_total = Poner_ciega_pequeña(); Fuerza_mano(mano_inicial, cartas_comunitarias) // Se reparte la mano (dos cartas + Random(0,0.2) - privadas) Random(0,0.2); if (ciega_grande == true || if (probabilidad_total >= ciega_pequeña == true) probabilidad_umbral) { { probabilidad_total = while (apuesta_igualada == false Fuerza_mano(mano_inicial) + || perder == false) Random(0,0.2) - Random(0,0.2) + 0.05; { else Ratio_ganancia(bote, probabilidad_total = apuesta); Fuerza_mano(mano_incial) + Random(0,0.2) ratio_devolucion = - Random(0,0.2); Fuerza_mano / Ratio_ganancia; } aleatoriedad = Random(0,1); Jugar(Ratio_ganancia, // Pre-Flop Fuerza_mano, ratio_devolucion, if (probabilidad_total >= aletoriedad); probabilidad_umbral) } { } while (apuesta_igualada == false) { // River (cinco cartas comunitarias) Ratio_ganancia(bote, probabilidad_total = apuesta); Fuerza_mano(mano_inicial, ratio_devolucion = cartas_comunitarias) Fuerza_mano / Ratio_ganancia; + Random(0,0.2) - aleatoriedad = Random(0,1); Random(0,0.2); if (probabilidad_total >= Jugar(Ratio_ganancia, Fuerza_mano, probabilidad_umbral) ratio_devolucion, aletoriedad); { } while (apuesta_igualada == false } || perder == false) { // Flop (tres cartas comunitarias) Ratio_ganancia(bote, probabilidad_total = apuesta); Fuerza_mano(mano_inicial, ratio_devolucion = cartas_comunitarias) Fuerza_mano / Ratio_ganancia; + Random(0,0.2) - aleatoriedad = Random(0,1); Random(0,0.2); Jugar(Ratio_ganancia, if (probabilidad_total >= Fuerza_mano, ratio_devolucion, probabilidad_umbral) aletoriedad); { } while (apuesta_igualada == false } || perder == false) { bool Jugar(void){ Ratio_ganancia(bote, if (hablo == true) apuesta); { if (fichas_disponibles < fichas_iniciales / 10) aleatoriedad = Random(0,1); All_in(); Jugar(Ratio_ganancia, else

- 35 - if (ratio_devolucion < 0.8) mano //Muy mala mano { { if (aletoriedad if (aleatoriedad > > 0.4) 0.05) Igualar(); Irse(); if (aletoriedad if (aleatoriedad <= <= 0.4) 0.05) // Farol ratio_subida = (10*Ratio_ganancia) * fichas_disponibles / ratio_subida = (10*Ratio_ganancia) (100*Fuerza_mano); * fichas_disponibles / (100*Fuerza_mano); Subir(ratio_subida); } Subir(ratio_subida); else } // Muy else if buena mano (ratio_devolucion < 1) // Mala { mano if (aletoriedad { > 0.3) if (aletoriedad > 0.15) ratio_subida = (10*Ratio_ganancia) Irse(); * fichas_disponibles / if (aletoriedad (100*Fuerza_mano); <= 0.15 && 0.05 < Aletoriedad) // Farol Subir(ratio_subida); if (aletoriedad ratio_subida = (10*Ratio_ganancia) <= 0.3) * fichas_disponibles / Igualar(); (100*Fuerza_mano); } } Subir(ratio_subida); else if (aletoriedad <= 0.05) Igualar(); perder = } Resolucion_jugada(); else if } (ratio_devolicion < 1.3) // Buena

- 36 - Inteligencia artificial en el mundo de la aviación

Daniel Ruesga Ibañez Hector Molla Ruiz Estudiante Ing. Telecomunicación Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid Avda. De la Universidad, 30 Avda. De la Universidad, 30 28911, Leganes (Madrid) 28911, Leganés (Madrid) [email protected] [email protected]

RESUMEN 2. SISTEMAS EXPERTOS En este documento vamos a realizar un estudio del impacto que ha tenido la inteligencia artificial en el mundo de la aviación Como ya se ha comentado en la introducción un sistema experto moderna. Nos centraremos en los sistemas de pilotaje automático es aquel que puede almacenar el conocimiento de un experto en disponibles en los aviones y su avance hasta la los vehículos no un campo determinado y limitado, y a su vez solucionar tripulados (UAVS). problemas mediante la inducción- deducción lógica. Los sistemas expertos son programas de computación que

capturan el conocimiento de un experto y tratan de imitar su proceso de razonamiento cuando resuelven los problemas en un Categorías y Descriptores de Temas determinado dominio. [Inteligencia Artificial]: sistemas expertos [Aviónica]: pilotaje Para que un sistema experto sea efectivo, los usuarios tienen que interactuar de una manera sencilla, siendo necesarias dos

Terminus Generales capacidades para poder cumplirlo: Documentación, diseño, fiabilidad, seguridad, factores humanos, teoría. 1. Explicar conocimientos y razonamientos: es necesario Palabras Clave que al realizar los sistemas se sigan unas pautas y reglas Sistemas expertos, aviación, piloto automático, navegación, vuelo, que resulten comprensibles para lograr que se genere uav. una explicación para cada una de ellas. 1. INTRODUCTION 2. Obtención mientos e integrador del sistema: mecanismos que modifican los conocimientos Un piloto automático es un sistema mecánico, eléctrico o previos. Puede decirse que los sistemas son el resultado hidráulico usado para guiar un vehículo sin la ayuda de un ser de investigaciones en el campo de la inteligencia humano. Aunque puede usarse en distintos tipos de vehículos nosotros nos centramos en el pilotaje de aviones. De esta forma artificial, puesto que no busca sustituir a los expertos tenemos que el sistema de piloto automático que se implementan sino que sirvan de ayuda a la hora de realizar las tareas en los aviones son sistemas expertos. con mayor rapidez y eficacia.

Un sistema experto es una aplicación informática que emula la forma de pensar y razonar de un experto en un campo Los sistemas expertos están formados por diversos elementos: determinado, que normalmente requiere de una gran cantidad de base de conocimientos, base de hechos, motor de inferencia, conocimientos asociados. Con esta clase de sistemas lo que se módulos de justificación e interfaz de usuario. busca es una mejora en la rapidez y velocidad de las respuestas. 2.1 Base de conocimientos El sistema de piloto automático tiene implementados los conocimientos necesarios de navegación y fundamentos de vuelo necesarios para pilotar un avión de manera automática sin Son bases de datos con los conocimientos de los expertos necesidad de la interacción del piloto. implementados en el sistema sobre el campo concreto de trabajo. A través de la base de conocimiento, el sistema experto obtiene los razonamientos que debe aplicar en su funcionamiento. Un vuelo está dividido en varias etapas: rodaje, despegue, ascenso, crucero, descenso, aproximación, y aterrizaje. De todas las anteriores las únicas etapas que nos pueden ser controladas únicamente por el sistema de pilotaje automático son la de rodaje y despegue.

- 37 - 2.2 Base de hechos fuerza que se ejerce consigue contrarrestar al peso propio de la aeronave manteniéndola de esta forma en el aire. Compuesta por los hechos descubiertos durante el análisis que se realiza cuando existe algún problema.

Fig.2. Fuerzas sobre aeronave 3.2 Control aeronave

Para el movimiento de la aeronave es necesaria una fuerza de empuje que se obtiene gracias a los motores de reacción. Estos motores se encargan de contrarrestar la resistencia aerodinámica Fig.1. Estructura sistema experto que se genera precisamente por la sustentación.

2.3 Motor de inferencia Los aviones son capaces de rotar sobre tres ejes perpendiculares entre sí. El punto donde se cruzan estos tres ejes se encuentra en el centro de gravedad del avión. Los tres ejes son los siguientes: Se encarga de modelar el proceso del razonamiento humano. Para ello utiliza el conocimiento disponible en las bases de conocimientos y hechos.

2.4 Módulos de justificación

Se encarga de proporcionar una explicación al usuario del razonamiento que ha utilizado el sistema experto para obtener una conclusión determinada.

2.5 Interfaz de usuario Fig.3. Ejes del avión

La interfaz de usuario es el medio por el cual la máquina y el  Transversal usuario se comunican. Comprende todos los puntos posibles de Este eje cruza de una punta a la otra de las alas del avión. contacto entre el usuario y la máquina. Comúnmente suelen ser El movimiento asociado a este eje se le llama cabeceo y su con diseños intuitivos, fáciles de entender y manejar. función es la de levantar el morro del avión para variar su sustentación.

3. FUNDAMENTOS DE VUELO  Longitudinal Este eje cruza el avión desde el morro hasta la cola. Es necesario profundizar un poco en los fundamentos de vuelo de El movimiento asociado a este eje se le llama alabeo y consiste en los aviones para entender como el piloto automático es capaz de levantar un ala mientras bajas la otra. manejar un avión de manera independiente.

 Vertical 3.1 Sustentación Este eje cruza el avión desde la parte inferior hasta la superior pasando por el centro de gravedad. El principio básico por el que los aviones se mantienen en el aire El movimiento asociado a este eje se le llama guiñado y sirve para y consiguen volar es por la fuerza de sustentación. Se crea gracias modificar el rumbo hacia el que apunta el morro del avión. a las alas de los aviones, la cola y en general su estructura. Esta

- 38 - Para el control de los movimientos, la aeronave dispone de una  Brújula: Permite conocer el rumbo que esta siguiendo serie de superficies de control que se encuentran en las alas: el avión.  Indicador de rumbos: Permite eliminar los defectos de la brújula.  ADF: Capta la señal emitida por una estación terrestre y nos muestra la dirección en la que se encuentra.  DME: Calcula la distancia del avión a un punto emisor.  CDI: Muestra la posición relativa de la aeronave con respecto al radial que queremos seguir.  ILS: Muestra el ángulo de descenso y la alineación con la pista de aterrizaje. Fig.4. Superficies de control

 Alerones: Se tratan de superficies móviles colocadas en los extremos de las alas del avión, sobre el borde de 5. PILOTO AUTOMATICO salida. La funcionalidad de los alerones es la de controlar el movimiento de alabeo. Una vez comprendimos los componentes básicos que permiten a los aviones moverse y los sistemas que proporcionan la información necesaria para la navegación podemos mostrar el  Flaps: Son dispositivos de hipersustentación que están funcionamiento del piloto automático. colocados también en el borde de salida del ala. Normalmente se encuentran cerrados y cuando se El avión está equipado para su guiado automático con dos utilizan se despliegan separándose del ala. Los flaps computadores digitales de vuelo (DFGG) que suministran la solo se usan en determinadas maniobras como el información necesaria para la realización de las funciones de despegue y el aterrizaje. piloto automático, estabilidad, empuje, altitud y dirección de vuelo.

Los pilotos automáticos utilizan sistemas informáticos para  Spoilers: Son superficies con movilidad situadas en el controlar diversos aspectos del avión, desde el control del vuelo a extradós del ala. El objetivo es reducir la fuerza de componentes para la comunicación, sistemas para evitar sustentación que se genera en el ala. colisiones y maniobras de gran precisión como aterrizajes sin visibilidad.  Slaps: Son dispositivos hipersustentadores como los El sistema de piloto automático obtiene la información necesaria flaps con la diferencia de que estos están situados sobre de la posición del avión gracias a los sistemas implementados de el borde de ataque del ala y sirven para aumentar la navegación. Estos datos le permiten calcular los movimientos que curvatura de esta. serán necesarios efectuar para seguir el rumbo establecido. Los datos obtenidos del sistema de navegación son enviamos al sistema de gestión de vuelo que se encarga de establecer los Existen también otras superficies necesarias para el control del cambios necesarios en el rumbo y la altitud del avión. avión pero que a diferencia de las anteriores no se encuentran en el ala. Estas son el timón de dirección y el de profundidad. El sistema tiene los conocimientos necesarios sobre los fundamentos de vuelo del avión para poder actuar sobre los diferentes elementos de control de movimiento que hemos visto  Timón de dirección: Es una superficie de control anteriormente además de sobre los motores para aumentar o generalmente colocada en el estabilizador vertical y disminuir el empuje según sea necesario. Basándose en estos cuya función es la de controlar el movimiento de conocimientos proporcionados previamente por un experto, el guiñada. sistema es capaz de controlar los ejes de cabeceo, alabeo y guiñado del avión.

 Timón de profundidad: Es una superficie estabilizadora situada en la parte posterior del avión y su función es la de controlar el movimiento de cabeceo

4. SISTEMA DE NAVEGACION

El sistema de navegación de un avión esta compuesto por varios instrumentos esenciales que permiten orientarse seguir el rumbo deseado. Los instrumentos básicos del sistema de navegación son los siguientes:

- 39 - Los datos necesarios de posición del avión se obtienen de un información al ordenador del piloto automático, el cual procesa sistema de guía inercial. Estos sistemas tienen el problema de que los datos recibidos y toma una decisión para actuar sobre esta acumulan errores con el tiempo de forma que se implementan variación. Esta decisión se lleva a cabo mediante el envío de las sistemas de reducción de errores. señales necesarias a los mecanismos de control de la aeronave, en El error que se produce en los giroscopios es conocido como error este caso a los que controlan los alerones. Estas señales son de deriva y viene dado por las propiedades físicas del sistema, que comandos muy específicos que indican que se tienen que producir corrompen los datos de localización. Estos errores se resuelven unos ajustes muy precisos. Esta actuación sobre los alerones con la ayuda del procesamientos digital de señales, mediante un provoca que las alas se muevan de tal forma que se vuelva al nivel filtro de Kalman hexadimensional. Siendo estas seis direcciones el establecido en el control dl piloto automático. Una vez se balanceo, la inclinación, orientación, altitud, latitud y longitud. restablece el nivel adecuado, el ordenador retira el comando de actuación sobre los alerones. Las rutas por las que se mueven los aviones tienen asociadas un factor de rendimiento exigido, de forma que el error tiene que ser controlado para poder volar sobre dichas rutas. EL sistema de pilotaje automático utiliza las ayudas de radio y los instrumentos de navegación junto con sistemas como el GPS para corregir la posición de la aeronave. En la siguiente imagen podemos observar en detalle la sección de control del piloto automático de un avión.

Fig.5. Piloto automático

En el panel podemos observar los siguientes controles:

 A/T: activa el control automático de la velocidad. Fig.6. Algoritmo piloto automático  AP: activa el piloto automático.

 HDG: activa la fijación de rumbo.  ALT: activa el seguimiento de altitud.  SPD/MACH: activan el control de velocidad en nudos o mach.  NAV: activa el seguimiento de un radial. Cuando el piloto automático falla el piloto puede desactivarlo  APR: activa el seguimiento de ILS fácilmente devolviendo el control del avión a un modo manual.  BC: permite alejarse de una pista. Una de las limitación que se tiene en estos sistemas es la imposibilidad de activar el piloto automatico durante la fase de  LVL: mantiene el avión nivelado. despegue, hasta que no se hayan superado los 200 pies de altitud  Y/D: amortigua el giro. sobre el terreno. También se tienen cuadros numéricos para establecer valores de funcionamiento.  COURSE: establecer radial. 6. UAV

 HDG: dirección hacia donde volar. En este último apartado del trabajo vamos a ir más allá del  ALT: altitud en pies. concepto de piloto automático para tratar lo que se podría  IAS/MACH: velocidad respecto al aire. considerar como la evolución lógica de este. Si bien el piloto automático toma como principal objetivo la sustitución  VS: velocidad vertical. momentánea y circunstancial de algunas de las funciones de un  piloto humano, llegando a tener en cuenta solo un conjunto Un caso de demostración de un sistema de pilotaje automático se reducido de variables de todas la que pueden llegar a influir en la da cuando el piloto fija un modo de control para que las alas del toma de decisiones que el piloto humano, el siguiente paso avión se mantengan en un nivel concreto. Durante el vuelo se natural en la evolución de este tipo de sistemas experto sería la pueden producir diferentes tipos de sacudidas de forma que el sustitución completa del ser humano en el pilotaje del avión. Y avión puede sufrir una inclinación. Este cambio es detectado por de esta idea nace el concepto de Vehículo aéreo no tripulado o, los sensores colocados en las alas de forma que envían dicha

- 40 - como comúnmente se le conoce por sus siglas en inglés, los UAV (Unmanned Aerial Vehicle). En este momento es necesario aclarar que aunque inicialmente se empezaron a desarrollar los UAV como aviones, también se Los UAV pueden volar de forma autónoma o bien ser controlados pueden considerar representados por estas siglas los helicópteros de forma remota desde una estación de control, aunque en este no tripulados y todas aquellas aeronaves que vuelen de forma trabajo nos centraremos principalmente en los que vuelan de totalmente autónoma. Es por ello por lo que se amplía su campo forma autónoma. de utilización a más actividades de naturaleza mucho más delicada, como lo son el apoyo en rescates de montaña o en zonas de difícil acceso, exploración de cuevas o cualquier tipo de lugares desconocidos que entrañen peligro. 6.1 Piloto Automático vs UAV Además de todo esto y como muchos de los grandes avances Para una clara diferenciación de estos dos conceptos (piloto tecnológicos, los UAV tienen su base en la industria militar. En automático y UAV), vamos a hacer una breve comparativa que este sector cobran una gran relevancia, ya que posibilitan la motive claramente la aparición de los UAV, dejando a la vista el realización de misiones demasiado arriesgadas para una aeronave gran avance que estos suponen. tripulada y además, gracias a que no se necesita un habitáculo para el humano en su interior ni equipos para su acondicionamiento, permite diseñar aeronaves con geometrías  Un piloto automático recibe información del sistema de mucho más difíciles de detectar por los radares enemigos. gestión de vuelo acerca de las correcciones necesarias Principalmente se utilizan para tareas de vigilancia, combate y de altitud, rumbo, etc. que han sido calculadas en base a misiones espía. la información de la posición que proporciona el sistema de navegación. Con esta información, se pretende que el piloto automático sea capaz de actuar Como último punto de la exposición del gran avance que suponen sobre los distintos elementos que influyen en el los UAV en nuestro mundo actual, cabe señalar que a medida que movimiento del avión para mantener el rumbo prefijado. vaya evolucionando y creciendo la potencia de la Inteligencia Artificial, llegará el día en que los aviones comerciales o aeronaves de combate estén pilotados de forma totalmente  Una UAV, al margen de tener un piloto automático que autónoma sin la necesidad de ningún tipo de intervención humana se encargue de todo lo descrito anteriormente, debe ser más allá de la fijación de los objetivos. capaz de gestionar cualquier otra situación en la que un piloto intervendría, como puede ser: elección de rumbo óptimo o cambios en el mismo por distintos motivos 6.3 IA en los UAV (climáticos, situaciones de combate, obstáculos no previstos, escasez de combustible, etc.), gestión de los Anteriormente se han enumerado algunas de las tareas que debe diferentes recursos del avión en función de las realizar un UAV de forma autónoma pero, sin duda, la más necesidades del momento (combustible, munición o la importante de todas ellas será la de la elección del rumbo óptimo. propia integridad de la aeronave). Con toda certeza el número de variables que forman parte de esta decisión es demasiado elevado como para analizarlo en este trabajo, ya que se escapa a las pretensiones del mismo, pero si nos 6.2 Utilidades de los UAV centraremos en los algoritmos que actualmente se utilizan para, en función de un conjunto de variables, calcular el mejor camino En primera instancia, puede parecer que estos aviones no entre un origen y un destino prefijados. tripulados tienen y tendrán su principal mercado en el mundo militar, pero esto no es así. Actualmente hay diversas empresas 6.3.1 Búsqueda de la ruta óptima que se dedican al desarrollo de un tipo de UAV de bajo coste El algoritmo más utilizado en el presente en la búsqueda del mejor orientado a actividades civiles, ofreciendo una alternativa más camino posible es el algoritmo A*. Este algoritmo se basa en la económica que evita poner en peligro vidas humanas y que búsqueda mediante grafos del camino de menor coste entre los permite liberar al humano de la carga de tareas rutinarias. Algunas nodos origen y destino. Es completo, por lo que el propio de estas actividades son o podrían ser: prevención y control de algoritmo asegura que siempre que exista una solución, este la incendios, fotografía aérea, control de tráfico en carreteras, encontrará. búsqueda de personas desaparecidas, ayuda crítica en los momentos posteriores a un desastre natural, apoyo en estudios La búsqueda se realiza a través de un espacio de nodos en el que medioambientales, etc. Además, ya se está yendo más allá y se sólo se visitan los posibles nodos en los que se puede alcanzar una están implementando flotas enteras de UAV que trabajan en mejor solución que la última encontrada. Para ello se hace uso de equipo en labores tan complejas como la predicción una función heurística, que será la encargada de determinar el meteorológica o la monitorización y control de incendios nodo que supone la mejor opción. forestales. En estas flotas, cada UAV no solo tiene en cuentas un objetivo individual, sino que en la toma de sus decisiones El funcionamiento global del algoritmo se describe a interviene también el trabajo llevado a cabo por el resto de UAV continuación: del grupo, para conseguir así un resultado óptimo en conjunto.

- 41 - menor que el que es en realidad. Para construir una de estas  En un primer paso cogemos como nodo a expandir el funciones admisibles podemos basarnos en dos técnicas: nodo origen.

 Expandimos el nodo origen dando lugar a todos sus  Relajando la definición del problema. nodos hijos que cumplen que puede haber un camino al nodo destino mejor que el que hasta ahora se ha  Aprendiendo de la experiencia entrenando la función encontrado. Evidentemente estos hijos representarán con diversos tipos de problemas. todos los posibles lugares a los que la aeronave podrá llegar en un solo movimiento (considerando como un movimiento el resultado de la actuaciones sobre los En el otro lado, tenemos la elección de los costes que suponen elementos de control del rumbo de la aeronave en un cada uno de los nodos del recorrido, que habrán de ser elegidos ciclo de decisión del algoritmo) con especial cuidado atendiendo a una escala de prioridades que estará formada por todo el conjunto de variables que la aeronave  A continuación nos quedaremos con el que según la tendrá en cuenta para la elección de la ruta. Como en la elección función heurística vaya a tener un menor coste de entre de la función heurística, ahora también será necesario el todos los nodos posibles a los que podemos llegar desde entrenamiento, para conseguir la experiencia necesaria que nos de los nodos expandidos y que no han sido, a su vez, unos costes óptimos. expandidos. Es por esto por lo que es crucial la buena

elección de la heurística a utilizar, así como los pesos que se reparten a las diferentes variables (montañas, En la siguiente figura podemos ver un ejemplo de lo que sería una tormentas, combustible, obstáculos móviles, etc.) que búsqueda del camino óptimo muy simplificada. En ella podemos influyen en la decisión. apreciar como el espacio se ha dividido en un enjambre de nodos a los que se les han asignado una serie de costes. Estos costes  Si el nodo al que llegamos es el nodo destino, podrían deberse en la vida real a multitud de factores: comprobamos si es mejor camino que el mejor combustible, obstáculos, clima, territorio enemigo, corrientes de encontrado hasta el momento, sino, seguimos con el aire, etc. Además se puede observar como también hay nodos que mismo algoritmo. tienen coste infinito (los grises), es decir, que en ninguno de los casos pueden ser elegidos. En la realidad estos nodos  Este proceso se repetirá cíclicamente hasta que no representarían zonas no accesibles, como por ejemplo las existan otros nodos que sean capaces de mejorar el delimitadas por la propia elevación del terreno que se sobrevuela. mejor camino encontrado hasta el momento.

 Un aspecto importante que se ha de tener en cuenta es que la heurística sea admisible, es decir, que nunca se debe tener un valor heurístico mayor que el coste mínimo del nodo, lo cual ha de cumplirse para cualquier nodo.

Con este algoritmo se consigue dar solución a los problemas que se producen en algunos algoritmos de búsqueda en estructuras de cierta complejidad, como por ejemplo el algoritmo voraz, que se guían solo por la función heurística, la cual puede no indicar siempre el camino de menor coste, o por el coste real de desplazarse de un nodo a otro, pudiéndose dar la circunstancia de que sea preciso llevar a cabo un movimiento de mayor coste para llegar a la solución. Por este motivo en muy intuitivo el hecho de que un buen algoritmo de búsqueda, como lo es el A*, debería tener en cuenta los dos factores: Fig.7. Elección de la ruta optima con A*

Es evidente, que si extrapolamos este algoritmo a un escenario  Valor heurístico de los nodos real, el número de nodos y de variables que influyen en el cálculo  Coste real del recorrido. de los costes es elevadísimo, lo que supone la ayuda de un gran potencial computacional para poder llevar a cabo la elección de la ruta óptima en tiempo real. Centrémonos primero en la elección de la función heurística. Es evidente que de su buena elección dependerá el buen 6.3.2 Gestión de flotas de UAV funcionamiento de todo el algoritmo por lo que hay que poner Otro aspecto importante a tener en cuenta en lo que a algoritmos especial atención es ello. Una buena función heurística será de navegación se refiere es la forma en la que se gestiona una flota aquella que nunca sobrestime el coste real de alcanzar el objetivo. para poder controlar un grupo de UAV que trabajan en equipo Las funciones heurísticas admisibles serán por naturaleza optimistas, porque creerán que el coste de resolver el problema es

- 42 - para la consecución de un objetivo común. El algoritmo utilizado como avión de reconocimiento. En este proyecto para tal fin está definido y consta de cuatro capas: España cobra mucha importancia, estando, junto con otros países, al frente del mismo.

 1ª) Describe el sistema de navegación encargado de la A través de los programas Marco también se están creando planificación de la misión, elección de objetivos, distintas líneas de desarrollo de UAV. En el VPM se encuentra el reparto de trabajo entre los distintos miembros de la proyecto COMMETS, que se llevó a cabo en la Universidad de flota, comunicación entre ellos, etc Sevilla. Este proyecto consistía en el desarrollo e implementación de una flota de UAV que fuese capaz de realizar en tiempo real una monitorización y detección de incendios. El proyecto fue  2ª) Es la encargada de analizar toda la información ejecutado con éxito. proveniente de los sensores de los UAV

También en Sevilla, se está desarrollando el proyecto AWARE,  3ª) Es la que controla el sistema de interpretación (FIS). que consiste en la integración de una flota de UAV con redes de Este sistema tiene como misión principal utilizar la sensores terrenos. En el proyecto también se contempla el información de la capa anterior para evitar colisiones despliegue autónomo de la red a través de un conjunto de con obstáculos dinámicos o estáticos. helicópteros no tripulados y totalmente autónomos orientados principalmente a seguridad civil y como herramienta de ayuda ante catástrofes naturales.  4ª) En esta última capa es en la que se engloba el sistema de navegación y el piloto automático.

Otras funciones importantes del sistema de control de flotas de UAV serían:

 ALO (Avión Ligero de Observación),  Evitar colisiones entre los distintos vehículos que  SIVA (Sistema Integrado de Vigilancia Aérea) forman la flota.  ALBA (Avión Ligero Blanco Aéreo)

Y otros más recientes como:  Control del entorno por visión mediante tratamiento y reconocimiento de imágenes.  HADA (Helicóptero Adaptativo Avión)

 MILANO (versión de largo alcance del SIVA)  DIANA (Avión Blanco de Bajo Coste).

6.4 Proyectos de UAV

En el mercado de los UAV es evidente que, como en todo lo relacionado con tecnología militar, los Estado Unidos están al frente con un gran número de compañías que dedican muchos fondos a su desarrollo. Además, también hay otros países punteros en la materia, como por ejemplo Alemania, Japón o Israel, que han conseguido grandes avances.

Centrándonos solo a nivel Europeo cabe destacar un gran número de iniciativas bastante interesantes. Algunas de las más interesantes se enumeran a continuación:

 NEURON: quizás sea el UAV más famosos (junto con el Barracuda) por su peculiar geometría. El principal objetivo del programa es conseguir un UAV de combate, capaz de atacar un objetivo sin que sea detectado por ningún radar. Aquí España tiene diversos frentes de colaboración a través de Fig.8. EADS Barracuda

EADS-Casa: realización del ala del avión en fibra de carbono, de la estación de control y de la integración del Data Link.

 ADVANCED: es un programa que trata de diseñar un UAV de gran altitud llamado HALE para su uso

- 43 - [6] Empresa del sector de los UAV: http://www.iuavs.com/

[7] Información algoritmo A*:

[8] Información sobre UAV: http://es.wikipedia.org/wiki/Veh%C3%ADculo_a%C3%A9r eo_no_tripulado

[9] Información sobre proyectos de UAV: http://es.wikipedia.org/wiki/Anexo:Veh%C3%ADculos_a% C3%A9reos_no_tripulados Fig.9. Neuron

[10] Almudena Jiménez Sierra, Fco. Javier Muñoz Rodríguez, Por último vamos a ver algunos gráficos que estiman la evolución Gonzalo Torres Porta,2006, Aplicación de métodos de IA en los próximos años del número de UAV que se van a construir y para la stoma de decisiones en simulaciones de móviles: de la cantidad de fondos que se van a invertir en su desarrollo. http://eprints.ucm.es/8938/1/TC_2006-14.pdf

Unidades de UAS por regiones 2012 2013 2014 2015 2016 2017 [11] Raúl Morales, 2008, Incorporan un algoritmo a un AUV para predecir el tiempo con más exactitud: USA 189 267 1772 1722 1747 1787 http://www.tendencias21.net/Incorporan-un-algoritmo-a-un- Europe 283 403 572 655 492 174 avion-no-tripulado-para-predecir-el-tiempo-con-mas- Mid East 98 178 171 110 109 23 exactitud_a2844.html Asia 687 788 662 604 542 679

[12] A. Barrientos, J. del Cerro, P. Gutiérrez, R. San Martín, A. Martínez, C. Rossi, 2007, UAV para uso civil. Tecnología y Financiación por regiones (M$) aplicaciones: 2012 2013 2014 2015 2016 2017 http://webdiis.unizar.es/~neira/docs/ABarrientos- USA 2105 2035 1865 1765 2095 2060 CEDI2007.pdf Europe 470 655 697 761 623 566 Mid East 492 280 266 43 122 448 Asia 478 510 609 625 718 613

7. REFERENCIAS

[1] Villena, J. Apuntes de la asignatura Inteligencia en redes de Comunicaciones. 5º Ingeniería de Telecomunicación.

[2] Muñoz, M. A., Manual del vuelo http://www.manualvuelo.com/

[3] Sistemas expertos: http://es.wikipedia.org/wiki/Sistema_experto

[4] Información piloto automático: http://es.wikipedia.org/wiki/Piloto_autom%C3%A1tico

[5] Nogueira, J. I... Apuntes de la asignatura Aviónica. 3º Ingeniería de Telecomunicación.

- 44 - Sistemas Expertos en meteorología Carlos Lentisco Sánchez Tania Romero Rodríguez Ingeniería de Telecomunicaciones Ingeniería de Telecomunicaciones Universidad Carlos III de Madrid Universidad Carlos III de Madrid Av. de la Universidad, 30 28911 Leganés (Madrid) Av. de la Universidad 30 28911 Leganés (Madrid) [email protected] [email protected]

RESUMEN Esta es la razón que justifica la búsqueda del ser humano por predecir fiablemente las condiciones meteorológicas. In this paper, we describe the formatting guidelines for ACM SIG A lo largo de este documento nos introduciremos más en los Proceedings. sistemas expertos repasando su evolución histórica hasta nuestros días para abordar posteriormente y con mayor profundidad un Categorías y Descripciones de Temas ejemplo de estos sistemas. Centrándonos en el sistema Prometeo.

[Inteligencias Artificial]: Sistemas expertos y aplicaciones metorológicas 2. EVOLUCIÓN HISTÓRICA

Términos Generales El interés del ser humano por reproducir las habilidades mentales humanas se remontan muy atrás en la historia, desde la antigua Meteorología, Medidas, documentación, diseño y teoría. Grecia (mito del coloso de Rodas) y pasando por la edad medieval (estatuas parlantes) hasta el androide Von Kempelen que jugó al Palabras clave ajedrez con Napoleón y el motor analítico de Charles Babbage que calculaba logaritmos. Inteligencia, meteorología, sistemas expertos, predicción meteorológica. Hemos abierto con una cita de Aristóteles y no sin un porqué, Aristóteles (322-384 antes de Cristo) fue el primero en formular 1. INTRODUCCIÓN un conjunto de leyes que gobernaban la parte racional de la inteligencia. Desarrolló un sistema informal para razonar con “La inteligencia consiste no sólo en el conocimiento, sino también silogismos, que se podían extraer conclusiones mecánicamente a en la destreza de aplicar los conocimientos en la práctica” partir de una serie de premisas iníciales. Aristóteles define perfectamente en esta frase lo que entendemos por inteligencia, la inteligencia es un atributo que tenemos por La idea de inteligencia artificial ha ido acompañada pues por la naturaleza y el ser humano como creador se ve impulsado a dotar filosofía, en 1315 d.c. Ramón Lull adelanto que se podría obtener a sus creaciones (artificiales y no naturales) de este atributo, razonamiento útil mediante medios artificiales. Thomas Hobbes consiguiendo de esta forma obtener un sin fin de beneficios y (1588-1679 d.c.) relacionó la inteligencia artificial con la aplicaciones destinados a mejorar la calidad de vida del ser computación numérica. humano, o por lo menos, así debería ser. El último elemento en la discusión filosófica es la relación que Las aplicaciones basadas en inteligencia artificial son existe entre conocimiento y acción, el objetivo es pues crear un innumerables y van desde la biomedicina o educación hasta la agente que tome decisiones que sean razonables o estén predicción de las condiciones meteorológicas que realizan los justificadas. El algoritmo de Aristóteles (análisis basado en sistemas expertos, objeto de estudio y razón de ser de este objetivos) se implementa 2300 años más tarde por Newell y documento. Simon con la ayuda de su programa SRGP. De inicio no se propone que hacer cuando varias alternativas nos llevan al mismo objetivo o que hacer si ningún camino lleva a la solución. Las ideas filosóficas necesitan formalizarse formalmente por las matemáticas y Boole es el primero que desarrolla el concepto de lógica formal.

Los fenómenos meteorológicos son ocurrencias físicas observables dentro de la atmósfera, algunos de estos fenómenos son por ejemplo lluvia, nieve, granito o niebla. Estos eventos pueden alterar y alteran la actividad humana proponiendo en algunos casos situaciones de peligro y amenaza.

- 45 - A pesar de que una computadora puede ejecutar una instrucción en un nanosegundo (mucho más rápido que una neurona) el cerebro acaba siendo 100.000 veces más rápido en su conjunto. Más cercano a nuestra época y en el 1940 introducimos el campo de ingeniería computacional, para que la inteligencia artificial llegue a ser posible se necesitan dos cosas, inteligencia y un artefacto. El artefacto es la computadora y la ingeniería de computación tiene como objetivo desarrollar eficaz y eficientemente un computador inteligente. Como podemos ver la génesis de la inteligencia artificial desde sus orígenes es extensa y Aparece el teorema de incompletitud que demostró que en complicada. cualquier lenguaje que tuviese la capacidad suficiente para La inteligencia artificial nace en 1956 y los conceptos que se expresar las propiedades de los números naturales existen deducen de ella se explican en la asignatura por lo que no aseveraciones verdaderas no decidibles en el sentido de que no es ahondaremos en ellos y pasaremos a presentar los sistemas posible decidir su validez con ningún algoritmo. expertos. Más tarde Turing afirma que su máquina es capaz de computar cualquier función computable pero que ninguna máquina puede 3. SISTEMAS EXPERTOS decidir si se producirá una respuesta dado una entrada o si por lo contrario seguirá computando indefinidamente. Se considera a alguien experto en un problema cuando un Otro principio importante de cara a abordar la inteligencia individuo tiene un conocimiento especializado sobre dicho artificial es el concepto de intratabilidad que dice que un problema problema es intratable si el tiempo que se necesita para resolverlo crece Podría afirmarse que para resolver un problema en la práctica exponencialmente con el tamaño de los casos. habría que conocer la respuesta de antemano, ¿si no conocemos la solución como sabremos que lo hemos resuelto? Además de la lógica y cálculo otro pilar básico de la inteligencia El programa DENDRAL es el primero que enfocan este problema, artificial se proporciona mediante la probabilidad, siendo diseñado por Feigebaum y Lederberg encuentran una solución al Cardano el primero que propone el concepto en si de problema de inferir una estructura molecular a partir de la probabilidad. La economía empleando dicho concepto aporta su información proporcionada por un espectro de masas. Se resolvía beneficio con la teoría de decisiones y juegos. de la siguiente manera: generación de todas las posibles estructuras que correspondieran a la formula, predicción a Más cerca de nuestro tiempo actual y con la Neurociencia (1861 posteriori del espectro de masas y comprobación con el espectro hasta presente) se ahonda más en la IA (Inteligencias Artificial) ya real. que esta se basa en el estudio del sistema neurológico y en A continuación comienza el proyecto de programación heurística particular, del cerebro. (PPH) se dedico a determinar el grado con el que la nueva Santiago Ramón y Cajal que terminó acudiendo a sesiones metodología de sistemas expertos podía aplicarse a otras áreas de espiritistas para intentar comprender aquello que no podía la actividad humana. comprender utilizo la técnica de Golgi para la observación de Los sistemas expertos emulan el razonamiento de un experto en neuronas individuales en el cerebro un dominio concreto. Con ellos se busca una mejor calidad y rapidez en las respuestas dando así lugar a una mejora de la productividad del experto, en la mayoría de las ocasiones no suplen al experto pero si lo ayudan en su labor. Para un persona sería una experiencia traumática realizar una búsqueda de reglas posibles al completado de un problema, mientras la persona responde a las preguntas formuladas por el sistema experto este recorre las ramas más interesantes del árbol hasta dar con la respuesta al fin del problema. Estos SSEE (sistemas expertos) son aplicaciones informáticas, son una amalgama de programas cimentados sobre una base de conocimientos de uno o más expertos en un área. Estos sistemas imitan a los humanos en la resolución de problemas, que no necesariamente tienen que estar relacionados con la IA, aunque en este documento es en ese tipo de sistemas expertos en los que nos vamos a centrar. La ciencia está todavía lejos en este aspecto ya que no hay Los sistemas expertos tienen una gran flexibilidad ya que solo ninguna teoría de cómo se almacenan recuerdos individuales. basta con introducir una nueva regla sin necesidad de cambiar el La conclusión increíble de todo esto, por si no es ya de por si funcionamiento del programa. increíble, es que una colección de pequeñas células genera Otra de las ventajas de este tipo de sistemas es la gran cantidad de razonamiento, acción y conciencia. Los cerebros generan información que manejan, manejar tal volumen de información es inteligencias. una tarea compleja para el analista humano.

- 46 - (Saussure 1781). Y es que hasta que no existieron estos aparatos de medida la predicción meteorológica era imprecisa y, en demasiadas ocasiones, arbitraria y localizada ya que las previsiones se basaban en sucesos meteorológicos ya pasados y en circunstancias pasadas que posiblemente podían no ser parecidas a las del momento posterior de predicción, no siempre que hay nubes en el cielo llueve, por ejemplo. Fue Benjamin Franklin el primer americano en registrar de modo seguro y detallado la condición del tiempo sobre la base diaria y hacer una previsión sobre esa misma. El primero en realizar una explicación general de la circulación atmosférica global fue George Hadley. A este le siguieron otros estudios de Gaspard-Gustave Criolis y William Ferrel entre otros.

No fue hasta comienzos del siglo XX cuando el progreso en la compresión de la dinámica atmosférica dio comienzo a la creación

de la moderna previsión del tiempo basada en modelos Un SE se basa en conocimiento declarativo (hechos sobre objetos) matemáticos. En 1922, Lewis Fry Richardson descubrió como y de control (información sobre el seguimiento de una acción). simplificar las variantes de las ecuaciones de los fluidos para Este tipo de sistemas tienen una serie de requisitos para poder ser facilitar una previsión del tiempo sencilla mediante soluciones considerados eficaces. matemáticas. Aun con estas simplificaciones, el cálculo numérico era bastante grande. En primer lugar deben ser capaces de dar explicaciones sobre los razonamientos a los que llegan. Cada regla debe tener su Finalmente, en los años 50 se empezaron a mostrar factibles los explicación y debe estar basada en hechos. experimentos de cálculo numérico con computadores. Dando lugar a la primera previsión realizada con este método usando los En segundo lugar, un SE, debe ser capaz de adquirir conocimiento modelos baroscópicos. fruto de la experiencia. Es decir, tiene que ser capaz de modificar los conocimientos almacenados si la experiencia indica que no En los años 60 la meteorología adopto la teoría del caos y los son correctos del todo. avances matemáticos obtenidos en este campo, de esta forma se Las partes básicas de un SE, como ya se vio en clase, son la base ayudó a estabilizar el límite de previsibilidad del modelo de conocimientos, la base de hechos, el motor de inferencia, los atmosférico (efecto mariposa). módulos de justificación y la interfaz de usuario. Otro hito importante en la meteorología es el lanzamiento de Existen diversos tipos de SE atendiendo al modo de llegar a la satélites meteorológicos. El primero fue el TIROS-1, lanzado en solución de los problemas que se plantean. Están los sistemas 1960, que marcó el inicio de una difusión global de la información basados en reglas previamente establecidas (lógica difusa), los climática. basados en casos (CBR, razonamiento basado en casos) y los basados en redes bayesianas (razonamiento basado en la estadística y en el teorema de Bayes). Algunos ejemplos importantes dentro del ámbito de los SSEE son DENDRAL (como se cito antes), XCon, Mycin, CLIPS, Prolog…

4. SISTEMAS EXPERTOS EN EL ÁMBITO DE LA PREDICCIÓN METEOROLÓGICA

Este documento ha comenzado con una cita de Aristóteles, este filósofo griego no solo reflexionó sobre la inteligencia sino que también fue el primero en hablar de la meteorología. Él acuño ese término que proviene del griego meteoron (referente a objetos altos en el cielo). De esta forma, sin saberlo, Aristóteles trabajo en dos temas muy diferentes a priori que, en la actualidad, están muy relacionados y que están siendo tratados en este documento. Aunque fue Aristóteles quien acuño el término meteorología, fue su discípulo Teofrason quien habló por primera vez de previsiones del tiempo basadas en experiencias vividas y recopiladas. Sin embargo, fueron necesarios algunos avances técnicos para que se llegara a poder medir la temperatura ambiental con un termómetro (Galileo 1607), la presión con un barómetro (Torricelli 1643), la velocidad del viento con un anemómetro Y así llegamos hasta el día de hoy, en el que el uso de (Hooke 1667) o la humedad con el higrómetro de cabello computadores y modelos matemáticos para la previsión del

- 47 - tiempo están totalmente afianzados y en el que los satélites juegan un papel crucial a la hora de saber como se desplazan las tormentas, ciclones,… En la actualidad existen muchos y muy diversos SSEE relacionados con los fenómenos atmosféricos. Algunos de ellos son: Sistema Automático de Información Hidrológica (SAIH), pronóstico de vientos en el Mediterráneo (MEDEX), pronóstico de ciclones tropicales, análisis del tipo de nubes en imágenes satelitales, estudio de imágenes satelitales para clasificar el hielo marino y Prometeo diseñado para la generación y distribución automática de la predicción a partir de modelos matemáticos, entre otros. Este último se tratara en este documento con una mayor extensión y profundidad. Además, existen sistemas expertos que, basándose en los datos meteorológicos recogidos por otros sistemas, llevan a cabo labores de otra índole como puede ser por ejemplo facilitar a los conductores información meteorológica en tiempo o real o ayudar a los órganos gestores de 4.2 Pronóstico de vientos en el Mediterráneo tráfico para un uso más dinámico y en tiempo real de los datos meteorológicos. (MEDEX)

MEDEX (MEDiterranean EXpert system) es un paquete software 4.1 Sistema Automático de Información que usa tecnologías de inteligencia artificial para predecir la creación, continuación y fin de vientos huracanados. Este software Hidrológica (SAIH) hace uso de sistemas expertos que simulan la experiencia de un meteorólogo de aproximadamente 25 años de experiencia en el El SAIH es una red de recogida de datos de precipitación y de Mediterráneo para hacer frente a la imprecisión inherente a este control de caudales circulantes. tipo de conocimientos. Pero, ¿por qué surge la idea de MEDEX? En la zona del mediterráneo son especialmente útiles estos La zona del mediterráneo, como ya se ha indicado anteriormente, sistemas porque las crecidas de los ríos son muy comunes (existe es una de las de más difícil pronóstico principalmente debida esta una creciente ocupación humana de las vegas y riberas fluviales) y circunstancia a la topografía montañosa que lo rodea. La muy repentinas. Estas inundaciones causan grandes daños, tanto predicción de los vientos aleatorios de esta zona requiere muchos materiales como humanos, económicos o sociales, por lo que se años de experiencia y de muchos datos los cuales no se tienen. De puso de relieve la necesidad de medidas eficaces de previsión, esta forma, MEDEX es diseñado como un sistemas de predicción predicción y control de las crecidas de los ríos. (que proporciona probabilidades de eventos de vientos huracanados para complementar las decisiones de pronóstico de Sin embargo, esto no es sencillo, existen dos problemas sistemas) y un sistema de aprendizaje (fue entrenado con la principalmente: hay un tiempo muy corto para avisar a la experiencia de 25 años en el mediterráneo y aprende con la población expuesta al riesgo y una escasa información hidrológica utilización de los usuarios). en los momentos clave. Se hacen necesarios datos en tiempo real o incluso poder preveer mediante modelos el comportamiento de MEDEX hace uso de sistemas expertos y de tecnologías de las cuencas. conjuntos difusos. Las reglas que siguen sus sistemas expertos en sus inicios fueron derivadas por Brody y Nestor (1980). La ayuda El primer sistema de este tipo que se creo en España fue el de la de los sistemas difusos, cuyas respuestas no son si o no, sino Confederación Hidrográfica del Júcar en 1984 tras el desastre del rangos de 0 (“absolutamente no”) a 4 (“definitivamente si”). Las embalse de Tous (el cual se podría haber prevenido con un buen reglas están expresadas en términos de lógica difusa, de forma que sistemas automático q trabajara con los datos como hace el los umbrales son reemplazados por conjuntos difusos. Finalmente, SAIH). las salidas difusas son porcentajes (de 0 a 100%) que indican la Los datos captados por los sensores del sistema se almacenan en probabilidad de la predicción los puntos de control. A su vez, estos puntos de control transmiten . la información vía radio y vía satélite al Centro de Proceso (para el caso del SAIH del Júcar este centro se encuentra en Cuenca). El 4.3 Meteosafety centro de proceso es una sala de control del SAIH donde se centralizan las labores de gestión y mantenimiento de la El proyecto Meoteosafety pretende mejorar la seguridad vial en información que se recibe y, en el caso de España, se suele situar las carreteras españolas haciendo un uso inteligente de la en la sede de la Confederación correspondiente. Para el caso del información recibida por parte de los sistemas meteorológicos Júcar la sede de la Confederación del Júcar está en Cuenca. existentes. Está liderado por el Instituto de Robótica y Tecnologías de la Información y la Comunicación (IRTIC) de la Universidad de Valencia (UV) y también está financiado, en parte, por el Centro de Estudios y Experimentación de Obras Públicas (CEDEX). Se inició en el 2008 y la creación del prototipo final se llevo a cabo a finales del 2010, la cual está en fase de implantación en este momento.

- 48 -

Los modelos actuales de predicción meteorológica se basan en la integración numérica de un conjunto de ecuaciones diferenciales de compleja resolución. El tiempo de cómputo necesario que tenemos que asumir como coste es tan elevado que el tamaño de la rejilla no es suficiente para dar pronósticos locales que se adecuen a las propias características de la zona. Este proyecto cuenta con dos líneas de actuación: Un ejemplo de esto es el Centro Europeo de Predicción a Plazo - Actualización dinámica y en tiempo real de los paneles Medio cuya rejilla no permite obtener un pronóstico luminosos de carretera, para que los usuarios tengan en meteorológico a una resolución menor a 100 Km. cada momento la información meteorológica. El sistema A pesar de ello contamos con un registro completo de las experto Meteosafety trata los datos provenientes los características de los”microclimas” gracias al I.N.M (Instituto diferentes sistemas meteorológicos para ofrecer dichas Nacional de Meteorología). predicciones. Nos encontramos con el problema de tener diferencias no - Análisis de las acciones a tomar para reducir las despreciables en los patrones climáticos de estaciones cercanas consecuencias de los fenómenos meteorológicos observando que los patrones de correlación son muy diferentes y adversos (envío de datos al Centro de Gestión de mostrando la limitación de los modelos numéricos a la hora de Tráfico, por ejemplo) realizar pronósticos de forma local. Además de estos dos frentes de actuación se pretende aprovechar el conocimiento adquirido para asesorar a los organismos responsables de carreteras y analizar la influencia de los factores meteorológicos sobre la accidentalidad de las 2. Sistema Prometeo mismas y así poder ofrecer soluciones. Para facilitar la implantación de este innovador sistema los El proceso de inferencia se basa en dos etapas: se realiza un trabajos se han basado en los estándares y tecnologías que ya cálculo de analogías entre la salida del modelo numérico para el existen en el mercado. día problema y los datos recogidos por ERA que hemos La integración de estos sistemas expertos va a ayudar a comentado anteriormente, obteniéndose un conjunto de días realizar un gran avance para la seguridad de los conductores y análogos. para la gestión eficaz del tráfico y de las carreteras, Posteriormente se infieren pronósticos a mayor resolución en base a los datos numéricos y registros para los días análogos obtenidos 4.4 PROMETEO: Sistema Experto basado en utilizando un modelo de regresión múltiple y una red neuronal. redes Neuronales

1. Introducción

Prometeo, de la estirpe de los Titanes, fue según la mitología el creador de la humanidad, que este hizo con barro y agua. Es por tanto un buen nombre para definir a este sistema experto ya que el ser humano se ve atraído a dotar de inteligencia (al igual que Prometeo) los sistemas consiguiendo de estos beneficios prácticos para la humanidad. Este sistema utiliza las predicciones a baja resolución de los modelos numéricos sobre el grid peninsular y busca En la figura anterior podemos ver las etapas que se realizan para configuraciones análogas en las serie diaria 1979-1993 de la base llegar finalmente a la predicción meteorológica, vamos a ir de datos ERA (del Centro Europeo de Meteorología). Estas documentando progresivamente dichas etapas. configuraciones análogas permiten entrenar una red neuronal La recogida de datos ERA (datos que utiliza Prometeo) consiste utilizando como salida los datos locales de cualquier observatorio en la producción de un re-análisis a partir de los datos recogidos del Instituto Nacional de Meteorología obteniendo, de esta forma, mediante diversos medios. un sistema para mejorar la resolución de los modelos numéricos. Con los datos obtenidos se construyen las condiciones iníciales para introducir en el modelo numérico del CEPPM obteniendo predicciones sobre la evolución temporal de la atmósfera.

- 49 - Una vez hecho esto debemos calcular un conjunto de días Vamos a profundizar un poco en este concepto para tener más análogos para un día problema, para obtenerlos se compara el claro en qué consiste una red neuronal y como se aplica al caso de estado de la atmósfera del día problema con los estados que nuestro estudio. tenemos de ERA. El número de variables asociadas con el grid del Como hemos comentado brevemente el cerebro humano tiene modelo es demasiado grande por lo que seleccionamos variables 10^11 de neuronas y 10^14 sinapsis (conexiones) en el sistema representativas que satisfacen nuestros objetivos. nervioso, esto implica que por razones físicas somos capaces de Las variables tienen en cuenta el comportamiento de la atmósfera mejorar el tiempo de conmutación de las neuronas, el problema es en la escala sinóptica (global) y el comportamiento en la que las neuronas naturales mejoran la conectividad en un orden de mesoescala (local). 1000 veces superior. La discrepancia de dos días se obtendría en base a la distancia Vamos a explicar con mayor detalle los modelos de regresión y euclidea de los vectores numéricos resultantes de la mesoescala y redes neuronales desde un punto de vista más matemático. la escala sinóptica en los días analizados. Los modelos de regresión estudian las relaciones entre una serie de variables (independientes) „xi‟ y otras variables dependientes o de respuesta denotadas por „y‟ en función de los valores de las „xi‟. 3. Modelos de regresión y redes neuronales

Una vez obtenidos los días análogos como hemos visto anteriormente se puede obtener un pronóstico local donde tengamos un observatorio del INM, para ello lo que realiza es la extracción de una relación entre los valores del modelo numérico como son la dirección del viento o temperatura y el valor a pronosticar y registrado en el observatorio. Para ello lo más sencillo es utilizar un modelo de regresión múltiple para obtener una relación lineal óptima entre las variables. Sin embargo en la figura siguiente podemos ver la necesidad de obtener un modelo no lineal que nos permita más flexibilidad en el modelo.

Otro problema importante es determinar el número óptimo de análogos. Si usamos un conjunto reducido no obtendremos buenos resultados de estimación. Por otra parte, si usamos un conjunto muy amplio corremos el riesgo de ocultar la dinámica particular Donde: del conjunto de observaciones.

Donde h(.) es la función que liga las componentes βi son los coeficientes, N es el número de variables independientes y β0 es la pendiente. Como hemos comentado lo más sencillo es utilizar un modelo lineal, este modelo lineal se puede implementar como un modelo una red neuronal simple. La red neuronal tiene una unidad de sesgo constante a 1, una entrada „x‟ y una salida:

Se ve aquí por tanto la importancia de las redes neuronales en estos sistemas expertos.

- 50 - como pueden ser Cantabria y Asturias. Estas comarcas se El modelo lineal tiene por lo tanto 3 componentes, la variable encuentran en el territorio norte de la península Ibérica pero deben aleatoria y (con media μ y varianza σ2), un componente que mostrar sus diferencias locales como se sobreentiende. relaciona las variables independientes (observaciones) „xi‟ con el Los pronósticos se actualizan cada 12 horas y tras la supervisión predictor lineal η y una función que relaciona la media con el de un experto se envían a una página web. predictor lineal. Como podemos ver en la figura anterior tenemos múltiples Como hemos comentado lo más sencillo es utilizar un modelo de variables de salida que contienen el estado de las rachas de viento, regresión múltiple lineal, este es una generalización de lo que niebla, nubosidad, lluvia si la hubiere, granizo, o el estado de la acabamos de contar si se considera que la variable aleatoria se marea. distribuye como una normal y la función h(.) asume que es la Mostramos aquí los resultados: identidad . El modelo quedaría por lo tanto de la siguiente forma:

Donde . El objetivo es encontrar los coeficientes βi que minimizan la suma de cuadrados de los errores. Este problema es equivalente al de una red neuronal con una sola capa donde los βi son los pesos y la función de activación es la identidad. El problema es que necesitamos un modelo no lineal que nos de la flexibilidad que nos falta. Para ello la función de activación debe ser una función no lineal, el modelo quedaría de la siguiente forma:

Donde como ya sabemos „xip‟ son las entradas e „yi‟ las salidas. Cada procesador realiza una actividad muy simple: valor sigmoidal de la combinación lineal de las actividades recibidas por la neurona:

5. CONCLUSIONES

A lo largo de este documento hemos hecho una introducción a la inteligencia artificial cuya primera piedra pone Aristóteles en su obra Metafísica, hemos visto la parte más histórica de la inteligencia artificial viendo su evolución hasta nuestros días. Hemos justificado por lo tanto la razón de ser de este documento y dado el porqué de la razón que hace tan importante la IA. Una vez hecho esto nos hemos centrado en los sistemas expertos, los hemos definido y comprendido para pasar a los sistemas expertos en el ámbito de la meteorología. Hemos visto los SEs SAIH, MEDEX y METEOSAFETY para pasar a un ejemplo práctico de esto: el sistema experto PROMETEO.

4. Salidas del sistema Hemos introducido PROMETEO y visto en que etapas resuelve el A continuación vamos a mostrar las salidas del sistema proceso de predicción describiendo el modelo de regresión lineal PROMETEO para un par de predicciones entre distintas comarcas y no lineal desde el punto de vista de las redes neuronales.

- 51 - Por último hemos visto algún resultado práctico del sistema [3] Kandel, A. (1992). Fuzzy Expert Systems, CRC Press, Boca Prometeo. Raton, FL, 314 pp. (MEDEX) Visto todo lo anterior podemos concluir la importancia de la IA no solo para un proceso que puede no parecer crítico como la [4] Zadeh, L.A. (1983). The role of fuzzy logic in the predicción meteorológica (realmente si es crítico y beneficioso), management of uncertainty in expert systems. Fuzzy Sets Syst., sino en cualquier ámbito que involucra a la especia humana. 11: 199. (MEDEX) Es por tanto una herramienta que en sí misma es altamente interesante y beneficiosa y que solo bajo un mal uso del ser humano puede ser destinada para fines pocos éticos. Es por tanto [5]MEDEX labor nuestra usar el conocimiento con fines justificados y http://www.nrlmry.navy.mil/~medex/ beneficiosos para nosotros.

Desde el punto de vista meteorológico, permite evitar la sesga de [6] SAIH vidas por catástrofes naturales y nos ha permitido comprender mejor los sistemas expertos. http://www.mma.es/portal/secciones/acm/aguas_continent_zonas_ asoc/saih/index.htm El sistema PROMETEO nos resulta pues, un sistema de alta importancia que nos permite realizar predicciones locales gracias a los modelos de regresión no lineales que hemos explicado en [7] METEOSAFETY este documento, logrando de esta forma, una buena precisión y resolución en la predicción que como su nombre indica no deja de http://www.tecnocarreteras.es/web/items/1/6/meteosafety-un-uso- ser eso, una predicción. inteligente-de-la-informacion-meteorologica

6. BIBLIOGRAFÍA [8] PROMETEO [Bishop97] Bishop, B. Neural Networks for Pattern Recognition. [1] Wikipedia Clarendon Press, 1997 http://es.wikipedia.org/wiki/Sistema_experto Juan Miguel Marín Diazaraque. Introducción a las Redes Neuronales Aplicadas http://es.wikipedia.org/wiki/Historia_de_la_meteorolog%C3%AD a PROMETEO: Un Sistema Experto para el Pronóstico Meteorológico Local basado en Redes Neuronales y http://es.wikipedia.org/wiki/Sistema_Autom%C3%A1tico_de_Inf Cálculo de Analogías. ormaci%C3%B3n_Hidrol%C3%B3gica grupos.unican.es/ai/meteo/articulos/caepia99.pdf

[2] Brody, L. R. & Nestor, M.J.R. (1980). Regional Forecasting http://www.monografias.com/trabajos30/sistemas- Aids for the Mediterranean Basin (Handbook for Forecasters in expertos/sistemas-expertos.shtml#ejempl the Mediterranean, Part 2) (MEDEX) http://grupos.unican.es/ai/meteo/Book.html

- 52 - Traducción automática. Técnicas y aplicaciones Isabel Cuadrado Gutiérrez David Ferrer Figueroa Ingeniería de Telecomunicación Ingeniería de Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid [email protected] [email protected]

ABSTRACTO en día en todo tipo de lenguas hace que sea más que necesaria la mecanización de la traducción.

En este texto se aborda un tema de gran relevancia en la La traducción supone todo un reto para los seres humanos dado actualidad, el concepto de la traducción automática. Se analizará que no tenemos el mismo dominio en ambas lenguas, pero el esta desde su origen hasta la actualidad, tratando la evolución de hecho de intentar que todo el proceso de traducción lo lleve a cabo las distintas técnicas empleadas para obtener la mayor calidad un sistema automatizado se convierte en un trabajo todavía más posible en las traducciones. complejo. Asimismo, se hace un breve repaso a las aplicaciones más utilizadas y al desarrollo futuro previsto en este campo teniendo Por este motivo, hoy en día uno de los principales objetivos del en cuenta, entre otros factores, la rentabilidad del negocio y la ser humano es conseguir que, mediante el uso de tecnología, se calidad de la traducción. puedan pasar las palabras habladas y escritas en una lengua a otra sin perder información por el camino ni decir cosas diferentes a

las del texto original. Categorías y descripciones I.2.6.g [Computing Methodologies]: Uno de los pioneros en dar a conocer la traducción automática fue Warren Weaver que además de introducir este concepto I.2.7.f [Computing Methodologies]: Machine translation sugirió algunos métodos para encarar la disciplina como son el uso de técnicas criptográficas, los análisis estadísticos, la exploración de la lógica subyacente, la aplicación de los teoremas Términos generales de Shannon. Los primeros desarrollos informáticos se realizaron a finales de la década de 1950 pero no se obtuvieron los resultados Documentación, Algoritmos, Teoría que se esperaba.

En la actualidad, no hay ningún sistema capaz de obtener Palabras clave resultados de igual calidad que un traductor humano. Especialmente, si la traducción se realiza sobre un texto de lenguaje común o coloquial. Nadie ha sido capaz hasta ahora, ni empleando el mejor programa que hay en el mercado, de ofrecer

la fluidez y habilidad que nos proporcionan los nativos de un 1. INTRODUCCIÓN idioma y los traductores humanos. No nos cansaremos de reiterar lo complicada que puede llegar a ser la traducción, debido en gran Desde el origen de los tiempos, el hombre, como ser social, ha medida a que el significado de las palabras depende siempre del necesitado comunicarse con otras personas. Si bien en un contexto en el que se formulan. principio el entorno del ser humano era restringido, conforme ha ido avanzando el tiempo, el hombre ha ido expandiendo su área de Todos los traductores de los que disponemos en la red hacen que acción, lo cual le supone un problema cuando ha de hacerlo con en la gran mayoría de ocasiones la traducción se haga inteligible alguien que no habla su misma lengua. Esta necesidad de entre otros motivos porque realizan mal las puntuaciones, tienen comunicación unida a la cantidad de información disponible hoy errores gramaticales, desplazan las palabras y son bastante imprecisos. La deficiencia con la que cuentan algunos sistemas en cuanto a traducciones se refiere es tal que sólo son capaces de traducir algunas palabras o frases hechas como ocurre por ejemplo

con algunos sistemas de reservas de vuelos. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that Se ha observado sin embargo, que cuando se pretende realizar una copies are not made or distributed for profit or commercial advantage traducción entre dos lenguas que no tienen raíces comunes (como and that copies bear this notice and the full citation on the first page. por ejemplo el español y el alemán) la calidad de la traducción To copy otherwise, to republish, to post on servers or to redistribute empeora mucho en comparación con la que se consigue to lists, requires prior specific permission and/or a fee. traduciendo entre lenguas de raíces afines (por ejemplo, las Copyright © 2011 Isabel Cuadrado Gutiérrez y David Ferrer lenguas romances: Español, portugués, francés, etc.). Figueroa Se ha comprobado que uno de los factores más importantes para Inteligencia en Redes de Comunicación. 2011 obtener una traducción de alta calidad, es el grado de especialización, ya que cuanto más especializado esté el sistema al

- 53 - tipo de texto y vocabulario que se pretende traducir mejor será la La idea de utilizar ordenadores para traducir idiomas fue calidad del texto obtenido. propuesta en 1946 por A.D. Booth entre otros. Así pues, un sistema especializado en traducir cotizaciones en bolsa produce traducciones muy buenas, incluso para lenguas que En la década de 1950, se llevó a cabo el conocido como no son afines. Sin embargo, esta idea no se puede aplicar a “Experimento de Georgetown”, donde se tradujeron exitosamente campos como la medicina. más de cincuenta frases del inglés al ruso. Este experimento supuso un punto de inflexión en esta área de trabajo, y también el La traducción es un proceso más tedioso de lo que parece ya que comienzo de una época dorada en el campo, donde se invirtió una con sustituir todas las palabras por su significado correspondiente gran cantidad de dinero. no es suficiente, tenemos que tener en cuenta otra gran cantidad En 1954, en el Birkbeck College (Universidad de Londres) se de factores como son el orden en que aparecen las palabras, la consiguió realizar una traducción muy básica entre el francés y el influencia que tienen unas sobre las otras, el contexto en el que inglés usando la máquina APEXC. Otro ejemplo, fue la lectura y son escritas, etc. Esto es debido a que todos los idiomas cuentan escritura de textos Braille por ordenador. con tres factores fundamentales en las construcciones de oraciones como son la morfología de las palabras, la sintaxis de las frases y Por aquel entonces se esperaba que la traducción automática fuese la semántica, un texto por muy sencillo que parezca puede contar un problema resuelto en unos 4 o 5 años. Pero la realidad fue muy con palabras o frases ambiguas. diferente, y conforme se observaba que los frutos obtenidos no Sin embargo, hoy en día existen métodos estadísticos que eran los esperados, la financiación dedicada a esta área se fue traducen textos sin tener en cuenta la gramática, pero la tendencia reduciendo notablemente. actual es aplicar todas las metodologías a lo que llamamos corpus Por aquel entonces, la traducción automática se realizaba casi por lingüísticos. completo mediante sistemas basados en reglas. Como su nombre indica, estos sistemas de traducción requerían de expertos en 2. HISTORIA: lingüística que formasen los diccionarios de ambos lenguajes La idea de la traducción automática se remonta al siglo XVII. En teniendo en cuenta tanto reglas gramaticales como sintácticas. Por 1629, René Descartes ya propuso un lenguaje universal, con ideas ejemplo, que en español los adjetivos siguen al nombre y en inglés equivalentes en otras lenguas que compartiesen un mismo es al revés. No obstante, la gran complejidad de los idiomas, con símbolo. todas sus variantes, hacía que los sistemas resultantes se encontrasen muy lejos de una traducción de calidad. En el siglo XIX, Jean-François Champollion consiguió, tras muchos intentos fallidos, descifrar los jeroglíficos egipcios a Con los avances tecnológicos propios de la década de los 80, se través del primer texto bilingüe conocido, la Piedra Rosetta. Esta consiguió abaratar y aumentar la potencia de los ordenadores, y piedra es un fragmento de una estela egipcia que contiene un esto permitió a los expertos centrar su investigación en otros mismo texto escrito en tres lenguas distintas: Egipcio demótico, modelos de traducción, los llamados modelos estadísticos. Desde antiguos jeroglíficos egipcios, y griego antiguo. entonces, los investigadores han ajustado sus algoritmos basándose en esta metodología.

Otro momento de gran importancia en el campo sucedió con el boom de Internet. Desde entonces han salido a la luz ingentes cantidades de textos iguales en diversos idiomas. Este hecho ha permitido los sistemas comparar muchos más textos y conseguir traducciones mejores. Sin embargo, prácticamente desde que se comenzó a trabajar en este aprendizaje máquina, ha habido diversidad de opiniones acerca de si una máquina podrá ser capaz algún día de producir traducciones de texto con una gran calidad. Si bien grandes expertos en el área consideran este objetivo como imposible, y relegan el papel de la traducción automática a una herramienta para el traductor humano, otros creen que en un futuro sí será posible automatizar las traducciones con una calidad óptima

3. TRADUCCIÓN AUTOMÁTICA Este subcampo de la lingüística computacional investiga el uso de programas para traducir texto o voz entre dos idiomas. [1] Existen diferentes aproximaciones para traducir lenguajes. La aproximación más sencilla consiste en cambiar directamente palabras provenientes de un lenguaje en palabras de otro. Sin Imagen 1. Piedra Rosetta embargo, este método puede inducir a una mala traducción, puesto que en muchas ocasiones, la información que prima se Para poder descifrarla, Champollion tuvo que buscar patrones basa en el contexto y la frase en las que se encuentra la palabra a entre los textos, símbolos repetidos y posteriormente encontrar su traducir. significado.

- 54 - Una manera de solventar el problema anterior consiste en situar el destino. Sin embargo, esta representación se puede dividir en contenido a traducir en el contexto del que proviene. Así, se diversos niveles según su profundidad: Se pueden traducir todas pueden acotar los posibles significados del texto y sus las palabras independientemente de las demás, o bien, se puede traducciones. Por ello, muchos programas hoy en día permiten crear una interlingua, donde existe una representación intermedia focalizar la búsqueda en función de las profesiones o de los completa. En la Imagen 2 se puede observarlas aproximaciones campos a los que va dirigido el texto. basadas en diccionario (color rojo), en transferencia (color verde) e interlingua (color azul). No obstante, la ayuda de las personas sigue siendo muy útil (y necesaria en muchos casos) para obtener mejores resultados en la traducción. Por ejemplo, si se le indica al sistema que palabras del texto son nombres propios, acrónimos, o palabras en general que no se deben traducir, el traductor puede ofrecer resultados más precisos.

4. COMPONENTES DE UN SISTEMA DE TRADUCCIÓN AUTOMÁTICA La traducción automática puede dividirse en tres fases principales. Primero el sistema tiene que analizar la entrada en el lenguaje original para crear una representación interna. Entonces, normalmente se manipula esta representación interna para transferirla a una forma adecuada del lenguaje destino. Finalmente, genera la salida en el lenguaje de destino. Normalmente, un sistema de traducción automática contiene componentes de análisis, transferencia y generación. Estos componentes incorporan un gran conocimiento de las palabras (conocimiento léxico) y del lenguaje (conocimiento lingüístico). Este conocimiento es almacenado en uno o más lexicones y posiblemente en otras fuentes de conocimiento lingüístico, como gramáticas. La interfaz de usuario es invariablemente una parte crucial de la mayoría de los sistemas de traducción automática. La interface permite a los usuarios verificar, desambiguar y si es necesario, corregir la salida del sistema. Otra característica común Imagen 2. Modelos de traducción automática basados en dentro del procesamiento de lenguaje natural es el uso de grandes reglas “corpora” (plural de “corpus”). Un corpus es una gran colección de texto que ha sido correctamente etiquetada, y se emplea para adquirir el conocimiento léxico y lingüístico requerido. 5.1.1 Basada en diccionario El lexicón es un componente importante de cualquier sistema de traducción automática Contiene toda la información relevante Se basa en el uso de entradas de diccionario. Esto quiere decir que acerca de palabras y frases que se requiere para los distintos se hará una traducción directa palabra por palabra, que por lo niveles de análisis y generación. Una entrada típica del lexicon general, carece de relación con las palabras colindantes. para una palabra contendría la siguiente información acerca de la palabra: La parte de discurso, las variantes morfológicas, las Si bien esta técnica es la más rudimentaria, es válida para la palabras típicas, frases o construcciones típicas que acompañan a traducción de listas de frases (ej. Frases incompletas o catálogos esta palabra, algún tipo de información semántica acerca de la sencillos de productos y servicios). palabra e información acerca del equivalente de la palabra en el También se puede utilizar para facilitar la traducción manual si la lenguaje de destino. Algunos sistemas prefieren dividir el lexicón persona a cargo de la traducción tiene un elevado nivel de en lexicones de fuente, destino y transferencia que enlaza los otros comprensión en ambos idiomas, y por lo tanto, es capaz de dos. El formato exacto de los lexicones depende del diseño corregir errores de sintaxis y gramática. ingenieril. En la Imagen 3, se puede apreciar un ejemplo de un mal uso de la traducción basada en diccionario. 5. TIPOS DE TRADUCCIÓN AUTOMÁTICA 5.1 Basada en reglas Este es el método inicial explicado anteriormente; consiste en dividir el texto original en fragmentos, y convertir estos fragmentos en partes del texto en el lenguaje de destino. El proceso a seguir en este tipo de traducciones es el siguiente: Primero, se crea una representación simbólica del texto y posteriormente se pasa de esa representación al lenguaje de

- 55 - Este proceso se va ampliando hasta que implica a una parte de texto suficientemente grande. Los resultados proporcionados por este método son muy buenos, aunque sin embargo, conlleva un elevado coste computacional por todas las iteraciones que son necesarias para traducir un texto. Sin embargo, como contrapartida, es muy sencillo ampliar la traducción a nuevos idiomas, ya que al no precisar de un lenguaje intermedio, la traducción se realiza únicamente con diccionarios y un corpus apropiado.

5.3 Basada en corpus La traducción automática realizada en base a un corpus lingüístico consiste en el análisis de textos lingüísticos con sus respectivas traducciones. Podemos diferenciar entre dos tipos de mecanismos que emplean los corpus como son los basados en métodos estadísticos y los basados en ejemplos. Para comprender el Imagen 3. Traducción basada en diccionario funcionamiento de ambos métodos que explicaremos a continuación hay que tener claros los conceptos siguientes: - Corpus bilingüe paralelo: Es la selección de un texto original y 5.1.2 Basada en transferencia: de su traducción en otra lengua, colocado todo de forma natural Este método tiene en cuenta que para poder realizar sin haber realizado ningún análisis ni separación. adecuadamente una traducción es necesario tener una representación intermedia que sea capaz de entender el significado - Corpus bilingüe alineado: Es la selección de un texto original y de la frase original y así, poder producir la traducción adecuada. de su traducción en otra lengua colocada siguiendo algún tipo de orden pudiendo éste ser realizado por palabras, frases o párrafos. Normalmente, se sigue el siguiente patrón a la hora de realizar una - Alineamiento: Este término se define como la acción de traducción basada en transferencia: Primero se analiza el texto de identificar en dos textos en idiomas diferentes, qué partes de uno entrada sintáctica y morfológicamente para crear la representación de ellos (párrafos, frases, palabras) se corresponden con las del interna. Posteriormente, se genera la traducción desde esta otro. representación interna empleando vocabulario y reglas gramaticales. Esta técnica produce resultados satisfactorios en 5.3.1 Traducción automática estadística aproximadamente un 90% de los casos. El empleo de técnicas estadísticas en la traducción automática cuenta con defectos y virtudes como suele ocurrir con muchos aspectos hoy en día. Un beneficio destacable es el poder conseguir 5.1.3 Basada en un lenguaje intermedio: que un sistema aprenda a traducir gracias a una inmensa cantidad de ejemplos de los que se realiza su traducción previamente. En este caso, también se considera necesario emplear un lenguaje Asimismo, este hecho hace a su vez que se vean los importantes intermedio para realizar la traducción. Sin embargo, ahora este defectos que van a arrastrar estos sistemas de traducción, como lenguaje tiene una importancia mucho mayor, es la interlingua. El son la necesidad de disponer de estos corpus y el hecho de que el lenguaje original, es convertido a esta interlingua que sistema obtenido es muy sensible al sistema de entrenamiento estructuralmente, es independiente de ambos lenguajes (origen y utilizado. destino). Finalmente, el texto traducido se obtiene desde esta Debido a este motivo se han obtenido resultados bastante interlingua. satisfactorios cuando se emplea traducción estadística en campos restringidos de traducción que están especializados en un lenguaje determinado, por el contrario cuando el traductor sale de este 5.2 Basada en contexto: campo y abarca un ámbito de lenguaje más coloquial, predominan Este método emplea técnicas que buscan la mejor traducción todavía los sistemas que se basan en conocimiento. posible para cada una de las palabras basándose en su contexto Los sistemas de traducción estadísticos parten de lo que se conoce (palabras colindantes). Así pues, el texto se divide en ventanas de como corpus bilingüe. Para que se entienda mejor el concepto, un unas pocas palabras, y se busca la traducción idónea para cada una ejemplo de corpus bilingüe sería por ejemplo los subtítulos de una de las palabras, desechando todas las acepciones que no tienen película. sentido dentro de la ventana utilizada. El proceso comienza con la obtención de un corpus bilingüe, y Posteriormente, se desplaza esta ventana una posición (palabra), y una vez que se dispone de éste, se pasa al proceso de alineación. se repite el proceso anterior. Como se puede observar, una sola La finalidad de la alineación del corpus es crear una palabra se traduce en varias ocasiones hasta obtener un resultado correspondencia entre las palabras de un idioma y otro, y es en óptimo. este punto donde la estadística empieza a ser importante. Finalmente, se amplían las ventanas para que las frases, o el texto Para hacernos una idea de cómo va a funcionar el sistema en general tengan también significado, y se hace otra búsqueda. imaginemos que tenemos dos textos iguales en dos idiomas diferentes. Si nos ponemos a compararles oración por oración nos

- 56 - damos cuenta de que ciertas palabras en uno de ellos siempre se corresponden con otras en el otro texto. Por ejemplo, si en todas las oraciones inglesas de un texto en las que aparece la palabra “boy” vemos que la versión en español tiene la palabra “niño” relacionaríamos una con la otra obteniendo su traducción. Del mismo modo en esta etapa el sistema observa muchos pares de oraciones escritos en dos idiomas diferentes, siendo unas traducciones de las otras y a partir de lo que observa construye asociaciones entre palabras. Para lograr buenas asociaciones es necesario observar muchas oraciones, ya que con una única oración sin saber nada del idioma es imposible determinar con certeza el significado de algunas palabras, así podemos decir que cuanto más grande sea el corpus con más certeza crearemos Imagen 4. Ejemplo de corpus basado en frases asociaciones.

Una vez completado el alineamiento de todos los pares de oraciones, buscamos entre nuestras asociaciones las que encajan Posteriormente, se continua alineando al nivel de palabras: Para en nuestra oración realizando así la traducción. cada par de oraciones del corpus paralelo, se enlazan las palabras de la oración fuente con las palabras de la oración destino. Sin embargo, utilizando únicamente estas asociaciones no siempre Finalmente se realiza la extracción de frases bilingües, es posible traducir de forma correcta una oración, ya que por entendiendo estas como la unión de dos frases tal que no exista un ejemplo podemos encontrarnos con palabras que muestran enlace entre alguna de las palabras de la frase bilingüe y una ambigüedades como por ejemplo la palabra “ganar” en una palabra que esté fuera de la misma: sentencia en inglés puede ponerse como “win”,”gain”,”get” y no sabemos cuál de todas es la correcta para nuestra oración. Por ello en la traducción automática estadística se emplean dos modelos: el de traducción y el de lenguaje. Con estos modelos podremos puntuar a las posibles traducciones eligiendo finalmente a la que tenga mayor puntuación. Con el modelo de traducción puntuamos lo bien que está traducida una palabra, mientras que con el modelo de lenguaje puntuamos lo bien que está escrita la traducción. Estos modelos no son los únicos que participan en el cálculo de la Imagen 5. Ejemplo de extracción de frases bilingües traducción, existen varios dependiendo del paradigma de traducción que se siga. El que nos vamos a centrar en explicar es En este ejemplo se puede ver que la frase bilingüe “This will”- el basado en frases, para ello nuestro corpus tiene que estar “Este será” no es válida, pues el enlace “be”-“será” asocia una alineado a nivel de oraciones de forma que tendremos dos palabra dentro de la frase con una fuera. De esta forma serán documentos con el mismo número de oraciones tal y como se válida frases como “This will be”-“será”, “will be”- “será”, muestra a continuación: “interesting”-“interesante”, “interesting example”-“ejemplo interesante”, "This will be an interesting example”-“Este será un ejemplo interesante”. Una vez extraídas todas las frases de todos los pares de oraciones del corpus podemos calcular el modelo de traducción. Ésta técnica de traducción parte de la definición de un modelo estadístico en el que se trata de estimar la probabilidad de que, dadas dos frases cada una en un idioma, una sea la traducción de la otra, y así poder decidir cómo de buena es una traducción para una frase determinada; todo esto a partir de funciones y cambios estadísticos. Este modelo de traducción junto con el de lenguaje (que también basándose en funciones estadísticas estimará la probabilidad de que una traducción ya realizada sea la más adecuada para ese texto en concreto y esté hecha de forma correcta) intentarán conseguir una traducción con la mejor calidad posible.

5.3.2 Traducción basada en ejemplos La idea en la que se fundamenta la traducción basada en ejemplos tal y como su nombre indica, es realizar las traducciones a partir de ejemplos similares a las oraciones que se pretenden traducir y de los cuáles ya conocemos su traducción. Se precisa contar con una gran cantidad de corpus bilingües alineados para obtener estos ejemplos de traducciones y almacenarlos en bases de datos para

- 57 - que resulte más fácil encontrarlos a partir de las palabras que 6. DESAMBIGUACIÓN EN LA contienen los ejemplos. TRADUCCIÓN Además, hay que tener en cuenta otro concepto dentro de la La desambiguación consiste en encontrar la traducción correcta traducción basada en ejemplos, las memorias de traducción. Al cuando hay varias traducciones posibles. Este problema fue igual que en el caso de los ejemplos, las memorias de traducción enunciado en la década de 1950 por Yehoshua Bar-Hillel. Él buscan en el corpus bilingüe frases similares a las que se quiere indicaba que sin una enciclopedia universal, una máquina nunca traducir en un momento determinado y se mira cómo se tradujo sería capaz de distinguir entre dos significados de una misma dicha frase tomándola como ejemplo. El traductor podrá emplear palabra. esta información como referencia una vez la haya encontrado. Hoy en día existen numerosas aproximaciones diseñadas para La forma de llevar a cabo la traducción de un sistema basado tanto paliar este problema. Pueden dividirse en someras y profundas. en ejemplos como en memorias se realiza de la siguiente forma: en primer lugar se introduce al sistema el texto del que queremos Las aproximaciones someras asumen que no hay un conocimiento obtener la traducción, seguidamente el sistema le divide en del texto. Simplemente aplican métodos estadísticos a las palabras unidades de texto buscando en la base de datos aquellos ejemplos que rodean a la palabra ambigua para obtener el resultado mejo. que se asemejan a nuestras unidades. Si la traducción se basa en Las aproximaciones profundas sin embargo, pre asumen un memorias, el sistema extrae todos los ejemplos que encuentra conocimiento comprensivo de la palabra. proporcionándoselos a un traductor humano que será el encargado Sin embargo, a día de hoy, las aproximaciones someras han de construir las frases adecuadas Sin embargo si la traducción demostrado dar mejores resultados en las traducciones. está basada en ejemplos, no hay intervención humana en el proceso realizándose todo el proceso por el sistema automatizado Grandes expertos en el mundo de la traducción (como Claude que se arriesga a tomar las decisiones que producirán el texto de Piron, que fue traductor para las Naciones Unidas y la salida. Organización Mundial de la Salud), indican que la traducción automática, como mucho, será capaz de automatizar la parte más A la hora de realizar la búsqueda de los ejemplos, hay que tener sencilla del trabajo de un traductor; sin embargo, la parte más cuidado con la longitud de las unidades de texto elegidas para costosa y que consume mayor cantidad de tiempo, tendrá que realizar dicha búsqueda dado que si establecemos segmentos con seguir siendo realizada por una persona cualificada, ya que una longitud muy pequeña podemos encontrarnos con demasiados normalmente implica hacer una investigación extensa para problemas de ambigüedad que en muchos casos provocarían que resolver ambigüedades en el texto de origen. el sistema se confundiese en sus decisiones al realizar la traducción. Para poder realizar esta investigación a un nivel tan profundo sería necesario que el software de traducción emplease también parte Actualmente muchos sistemas basados en ejemplos funcionan de sus recursos a buscar la desambiguación correcta. Sin embargo, utilizando la oración como unidad de texto, pero cabe destacar esto requiere un nivel de desarrollo en Inteligencia Artificial que que para explotar la capacidad con la que cuentan estos sistemas no se ha alcanzado aún. debemos emplear unidades más pequeñas que la oración y así a partir de ellas, realizando combinaciones, producir oraciones completas. 7. SERVICIOS DE TRADUCCIÓN AUTOMÁTICA 5.4 Traducción híbrida Si bien, como se ha indicado anteriormente, ningún sistema de Estas técnicas aprovechan los puntos fuertes de las metodologías traducción hoy en día es capaz de producir una traducción basadas en reglas y estadística. perfecta en campos que no se encuentren restringidos, hay una Actualmente varias empresas dedicadas a la traducción gran variedad de sistemas automáticos que producen resultados automática (Asia Online, LinguaSys, Systran, PangeaMT, UPV) muy notorios. afirman tener sistemas híbridos de este tipo. A continuación vamos a nombrar sólo dos de estas aplicaciones. Se pueden distinguir dos variantes principales dentro de esta No obstante, para mostrar el gran impacto que tiene este mercado, metodología: y la cantidad de empresas que hay, mostramos en la siguiente tabla, una comparación entre las empresas más importantes y el número de lenguajes en los que traducen. 5.4.1 Reglas de post-procesado por las estadísticas Las traducciones son realizadas utilizando un motor basado en Tabla 1. Número de idiomas disponibles por empresa reglas. Posteriormente se emplean reglas estadísticas en un intento de ajustar o corregir la salida del motor de reglas. Compañía Número de idiomas Asia Online 77 5.4.2 Estadísticas guiadas por reglas: Google Translate 65 Las reglas se utilizan para preprocesar los datos, en un intento de WorldLingo 43 orientar mejor el motor estadístico. Las reglas son empleadas PROMT 43 también en el post-proceso de la producción estadística para realizar funciones tales como la normalización. Este enfoque tiene Apertium 42 mucho más poder, flexibilidad y control cuando se traduce. Systran 36

Systran 36

- 58 - 7.1 Systran para obtener correlaciones en el corpus. Los corpora que se Systran es una de las empresas más antiguas en traducción emplean en estas investigaciones pueden ser para un único idioma automática. Fue fundada por el Dr. Peter Toma en 1968 y ha o bien pueden ser corpora bilingües alineados, que tal y como se trabajado durante muchos años para el departamento de defensa ha comentado con anterioridad se trata de textos traducidos en dos de los Estados Unidos de América y para la Comisión Europea. lenguas y ordenados haciendo corresponderse ciertas partes del texto origen con el texto destino. En un origen, basó sus métodos de traducción en reglas, aunque posteriormente ha ido migrando a memorias de traducción (corpus Las memorias de traducción son otra línea de investigación hoy en paralelos). día. Consisten en recordar automáticamente las traducciones completas de frases o expresiones comunes para evitar procesarlas Hoy en día es una de los sistemas más utilizados aunque muchas repetitivamente. veces el cliente lo desconoce. Este sistema se encuentra integrado en aplicaciones como en el traductor de textos de los ordenadores Actualmente, hay gran actividad en el mundo de la traducción que emplean el sistema operativo Mac OS X, en el traductor automática en Japón y la Unión Europea, y por extensión en online de Yahoo!, Yahoo! Babel Fish, y fue también utilizado por EEUU. el buscador Google hasta 2007. Todavía se continuará investigando hasta que se obtenga un sistema de traducción que, desde el punto de vista lingüístico y comercial, sea rentable. Como hemos comentado ya a lo largo del 7.2 Google translate trabajo los sistemas han sido útiles y rentables cuando nos Posiblemente es una de las aplicaciones más conocidas para centramos en campos y ciencias específicas de un grupo, por ello traducir textos hoy en día. Esta herramienta de uno de los gigantes se está tendiendo a realizar sistemas que se basan en lo que de Internet, Google, proporciona traducción automática entre 65 denominaríamos sublenguajes como entre otros podemos idiomas (Si bien, entre muchos de ellos se realiza una traducción encontrar, el jurídico, el científico, el médico, el filosófico, etc. intermedia al inglés). Para lograrlo, el sistema busca rápidamente Estos sublenguajes no requieren traducciones de calidad elevada y en Internet de entre la gran cantidad de textos ya traducidos que pueden resultar muy valiosos para las personas que desempeñen existen, aquella combinación de palabras que proporciona un actividades dentro de estos campos. La traducción resultará más resultado mejor. El sistema empleado para la traducción es sencilla haciendo estas subdivisiones dado que el vocabulario será estadístico, y por tanto, su misión no es fragmentar y reunir las más reducido y la sintaxis está más limitada, ya que son lenguajes frases para obtener el significado, sino que proporciona un con formas fijadas, más estáticos, abundan en ellos fórmulas y resultado obtenido tras analizar los textos equivalentes más suelen estar sometidos a controles permanentes. probables. Las fuentes de datos provienen en la mayoría de los Un ejemplo claro de lo que acabamos de exponer es el de Meteo, casos de traducciones humanas: Desde textos clásicos hasta un programa que desde el año siguiente a su instalación (1977) ha obras modernas. En el primer caso los resultados son muy estado produciendo partes meteorológicos para el servicio interesantes, pero cuando se enfrenta a nuevos textos, en muchos meteorológico de Canadá diariamente. En la actualidad, podemos casos, Google Translate se pierde en la intención, el contexto real hablar de unos resultados tan buenos como son que el programa y el estilo. traduzca alrededor de 37.000 palabras diarias con un 90%.de precisión. 8. PROBLEMAS EN LA TRADUCCIÓN Resultados como los obtenidos con un sistema como es Meteo hacen que se pueda demostrar lo rentable que resulta la traducción AUTOMÁTICA automática en algunos casos, a pesar de que para otros ámbitos La traducción automática en sí misma es un problema difícil por todavía no lo sea., como ocurre con el lenguaje espontáneo, dos motivos principalmente: El primero es que los lenguajes coloquial que se resiste a una formalización precisa y a ajustarse a naturales son muy ambiguos. Esta ambigüedad se da en todos los reglas gramaticales, hechos que resultan necesarios para la niveles (tanto léxico, sintáctico, semántico como pragmático). obtención de una buena traducción. De esta forma, tendremos que Una palabra of rase puede tener más de un significado. Decidir el esperar para ver buenos resultados en lo que al lenguaje común se significado adecuado en cada momento es crucial para hacer un refiere por lo que de momento sólo podemos hablar de traductor análisis correcto. El segundo motivo es que cuando los humanos como un complemento de ayuda al ser humano. emplean el lenguaje natural, emplean a la vez una enorme cantidad de sentido común, y conocimiento acerca del mundo, que les ayuda a resolver la ambigüedad. Conseguir que la traducción 10. CONCLUSIONES automática consiga el mismo conocimiento del mundo en un Podemos concluir que el desarrollo de los sistemas de traducción contexto sin restricciones requiere de un gran esfuerzo. ha sido posible gracias a dos hechos importantes que les han favorecido claramente: en primer lugar la explosión de información al alcance de todo el mundo y en idiomas diferentes 9. INVESTIGACIÓN ACTUAL Y de lo cual el gran culpable es Internet y en segundo lugar la RENTABILIDAD DE LA TRADUCCIÓN globalización. Esto significa que hay una enorme necesidad de AUTOMÁTICA comunicación y de hacerse con información la cuál debe estar Las investigaciones llevadas a cabo hoy en día en los sistemas de disponible en diversos idiomas para que pueda ser accesible a traducción automática están centradas en especial en la búsqueda todo el mundo y mejora de técnicas de aprendizaje máquina para adquirir el Sólo basta con fijarse en las cifras para hacerse una idea de la significado de las palabras y la gramática de forma automática. valía que tiene el mercado de la traducción automática hoy en día; Estas tareas necesitan emplear inmensas cantidades de corpora y se estima que a nivel mundial vale casi 10.000 millones de euros. aplicar técnicas estadísticas como por ejemplo redes neuronales

- 59 - Hemos comprobado que los sistemas encargados de traducir por [5] Rao, Durgesh D. (1998) ejemplo grandes obras literarias (como puede ser El Quijote) se Machine translation: A gentle introduction. encuentran aún muy alejados de obtener una traducción de buena calidad, pero por el contrario aquellos que traduzcan partes ISSN: 0971-8044 meteorológicos, textos técnicos, etc. tienen un peso importante [6] Jos Hallebeek hoy en día para la sociedad. “El corpus paralelo”. Universidad de Nijimegen. Nederlands El mayor problema con el que cuentan todavía los sistemas de [7] José A. Troyano traducción radica en la calidad que se obtiene tras la realización de la traducción. Aún tenemos que recortar distancias entre el “Alineación de textos y traducción automática”. ITALICA. producto obtenido y la verdadera traducción, porque aunque cada Universidad de Sevilla vez vayamos imitando mejor la labor que lleva a cabo un [8] Petra Prochäzková (2006) traductor humano, todavía nos queda un largo camino que recorrer para igualarlo. “Fundamentos de la lingüística del corpus. Concepción de los corpus y métodos de investigación con corpus”.

[9] Andreas Eisele (2007) 11. REFERENCIAS “Hybrid machine translations: Combining rule-based and [1] Wikipedia statistical MT systems”. Saarland University & DFKI. LT http://es.wikipedia.org/wiki/Traduccion_automatica Lab. [2] Cohen, J.M., "Translation", Encyclopedia Americana, 1986, [10] WIRED vol. 27, pp. 12–15. http://www.wired.com/wired/archive/14.12/translate.html [3] Wikipedia [11] European Association for Machine Translation http://es.wikipedia.org/wiki/Piedra_de_Rosetta

[4] Hutchins, W. John; and Harold L. Somers (1992). An Introduction to Machine Translation. London: Academic Press. ISBN 0-12-362830-X.

- 60 - Resolución de Puzzles Deslizantes

Lara Rojo Celemín Iván Suárez Morejudo Ingeniería de Telecomunicación Ingeniería de Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid [email protected] [email protected]

ABSTRACT filas se colocarán por columnas. Este método, como veremos más adelante, será el más eficiente. Finalmente, daremos una visión desde el punto de vista de la En 1878, Sam Loyd daba un premio de $1.000 a quien fuera psicología sobre las habilidades obtenidas resolviendo este tipo de capaz de resolver su famoso 14-15 Puzzle. Se trataba de un puzzle rompecabezas así como las partes de nuestro cerebro que se ven deslizante de 16 piezas que no tenía solución, lo que hizo que afectadas. Además explicaremos las diferencias de nuestra mente muchas personas se volvieran locas tratando de resolverlo. con respecto a las máquinas y las variables que influyen en la En este trabajo tratamos de presentar diferentes algoritmos para forma de resolver problemas, como es el caso de la ansiedad. resolver el 15-Puzzle desde el punto de vista de la Inteligencia Artificial. Para ello, utilizamos el algoritmo de búsqueda en árboles A*, del que daremos una visión general que luego 2. EL PUZZLE particularizaremos a nuestro caso del 15-Puzzle.

Aunque en este trabajo sólo nos hemos centrado en resolver el rompecabezas de 16 piezas, los algoritmos explicados pueden 2.1 Definición utilizarse para resolver cualquier puzzle deslizante n x n con solución. El (n2 - 1)puzzle consiste en un tablero de (n x n) con n casillas, numeradas del 1 al (n2 - 1) , ordenadas de manera aleatoria. La 2 Términos Generales casilla n se encuentra vacía para poder realizar los movimientos necesarios, de forma horizontal o vertical, para poder cambiar el Puzzles, Algoritmos, permutaciones pares, heurística, Inteligencia orden de las casillas. Recibe multitud de nombres según el Artificial, resolución humana. número de fichas 8-puzzle para la versión 3x3, 15-puzzle para la versión de 4x4, u otros nombres menos comunes como Puzzle Gem, Puzzle Boss o Cuadrado Místico. El objeto del rompecabezas es ordenar las fichas utilizando el espacio vacío Keywords para desplazarlas. Puzzles deslizantes, 15-puzzle, Sam Loyd, Algoritmo A*, herística, Turing.

1. INTRODUCTION

El objetivo de este trabajo es presentar diferentes algoritmos para la resolución de puzzles deslizantes. Aunque sólo nos hemos centrado en el 15-puzzle, los algoritmos aquí presentados pueden ser aplicados a puzzles de cualquier tamaño, siempre y cuando estos tengan solución. Sin embargo, no sólo nos centraremos en cómo resolverlos de forma manual sino también explicaremos como implementar dichos algoritmos en ordenadores. Para ello, utilizaremos búsquedas en árboles aplicando el algoritmo de búsqueda A*, el cual explicaremos y particularizaremos.

El primer algoritmo que presentaremos es el algoritmo propuesto por Richard Hayes [4] en el cual el n-puzzle se irá reduciendo a Figura 1: 15-Puzzle resuelto. (n – 1)puzzle resolviendo la primera fila y la primera columna. En el segundo, [5] propone colocar en orden las casillas de las primeras (n – 2) filas. Finalmente, las piezas de estas dos últimas

1

- 61 - Es un problema clásico de modelación de algoritmos usando Casi un siglo después, Ernö Rubik se interesó por el heurística, de modo que estos sean eficientes con buenos tiempos rompecabezas buscando una forma de que funcionara sin el de ejecución y usando óptimas soluciones. El uso de la heurística espacio vacío que permitía mover las piezas. Finalmente, su común en este problema conlleva el recuento del número de fichas trabajó desembocó en la creación del famoso Cubo de Rubik. que se encuentran fuera de lugar, y encontrar la suma de las distancias Manhattan desde su posición actual hasta su posición correcta. 3. ALGORITMOS

2.2 Historia Para resolver el 15-puzzle podemos aplicar distintos algoritmos que nos lleven a la solución. Como es lógico, unos algoritmos son

más eficientes que otros. A continuación se presentan dos No se sabe muy bien a quien atribuir la invención de este algoritmos pero en ambos, la condición necesaria para que tengan rompecabezas ya que la historia es confusa. Los libros, en un solución es que el número de permutaciones sea par. principio, la atribuyen a Sam Loyd debido a que en 1878 “llevara al mundo a la locura” por un premio de $1.000 a quien fuera capaz de resolver el famoso puzzle de 14-15, el cual no tenía 3.1 Permutaciones pares solución debido que se necesitaba un número impar de movimientos y, como veremos más adelante, sólo un número de movimientos par tiene solución. Como hemos dicho anteriormente, el 15-puzzle sólo tiene solución si el número de movimientos para resolverlo es par. El El puzzle se extendió rápidamente por todas las ciudades de número de posibles estados iniciales es n!, siendo n el número de Estados Unidos, Canadá incluso llegó a Europa. fichas. Por tanto, en nuestro caso, tendremos más de 130.000 En realidad, el puzzle no fue inventado por Sam Loyd, a pesar que millones de posibles estados iniciales. Sin embargo, sólo la mitad él lo defendiera durante años, sino que era una variación del de esas combinaciones tiene solución. rompecabezas creado por Palmer Noyes Chapman con los bloques Para poder saber la paridad del estado inicial se define el concepto 14-15 invertidos. de Inversión, es decir, la violación del orden de la posición de acuerdo a su valor. En otras palabras, la inversión de una ficha será la suma del número de fichas que se encuentran en una posición superior a dicha ficha y que deberían estar situadas en una posición inferior. La inversión total será la suma de las inversiones individuales. Si este número es par, el puzzle tendrá solución. En caso contrario, no habrá solución. Por ejemplo, en el puzzle propuesto por Loyd, la inversión total será uno y, como este número es impar, el número de permutaciones será impar y, por tanto, el puzzle no tiene solución. Una vez que se conoce la paridad del puzzle, podremos aplicar algún tipo de algoritmo para resolverlo. En nuestro caso, presentamos dos posibles soluciones.

Figura 2: Ilustración de Sam Loyd sobre su puzle. 3.2 Algoritmo I

Palmer Noyes Chapman, en Agosto de 1880, presentó ante la Este algoritmo fue propuesto por Parberry en 1997 para resolver oficina de patentes el registro del 15-puzzle. Sin embargo, su puzles deslizantes n x n. Su método se basa en reducir el n-puzzle solicitud le fue denegada ya que en Febrero de 1878 se había en un (n-1)-puzzle resolviendo la primera fila y la primera registrado otra patente de un puzzle similar llamado “Puzzle de columna de cada puzzle, quedando como resultado un (n-1)- bloques” por Ernest U. Kinsey. puzzle. Sin embargo, una vez que se llega a un 3x3-puzzle, este método deja de funcionar ya que no tenemos libertad de Previamente, su hijo lo distribuyó en 1879 por diferentes ciudades movimiento para no afectar a las piezas colindantes y se tiene que de Estados Unidos. Por suerte, uno de dichos rompecabezas fue a resolver usando “la fuerza bruta”. parar a la Escuela Americana de Sordos de Hartford, quienes lo comenzaron a fabricar en su taller de carpintería para venderlo en Más tarde, en 2001, Richard Hayes, utilizando el algoritmo de las calles de Hartford y Boston. Matthias Rice, propietario de un Parberry, consigue evitar el problema de resolver el puzzle usando negocio de carpintería de lujo en Boston, se interesó en la la fuerza bruta. fabricación del mismo y convenció a Yankee Notions (Distribuidor de bienes de lujo) para su comercialización con el nombre de Puzzle Gem.

2

- 62 - El algoritmo se desarrolla en tres pasos: posible combinación tal que se pueda resolver a través del algoritmo previamente descrito. 1. Colocar las piezas de la primera fila 2. Colocar las piezas de la primera columna. Las únicas combinaciones que no tienen solución ocurren cuando 3. Volver al primer paso con el (n-1)puzzle. la pieza (n- 1) de una fila se sitúa en la posición (n – 2) o cuando la pieza (n – 1) de una columna se encuentra en ((n – 2), 0). Por ello, lo único que debemos hacer es mover dicha pieza de esa posición.

Figura 3: Reducción del 15-puzzle a 3-puzzle. Figura 6: Caso especial.

Para colocar tanto las piezas de la primera fila como de la primera columna de manera eficiente, se toma como referencia las diagonales de la posición en la que debe ir la ficha en cuestión. En 3.3 Algoritmo II función de la posición original de la ficha, utilizaremos una diagonal u otra. A partir de la información obtenida en [4], podemos resolver el Si la ficha se encuentra a la izquierda de la columna en la que 15-Puzzle ordenando la primera y segunda fila de manera debería ir o en la misma columna, utilizaremos la diagonal de la consecutiva, para luego terminar de ordenar las dos últimas filas figura 4a. En cambio, si la ficha se sitúa a la derecha, utilizaremos por columnas. De esta manera se consigue llegar al estado final una de las diagonales descritas en las figuras 4b y 4c. del puzzle en un promedio de 80 movimientos, una cifra bastante eficiente teniendo en cuenta el número de movimientos posibles. La implementación de dicho método se basa en el Algoritmo de búsqueda A*.

3.3.1 Algoritmo de búsqueda A*

Figura 4: Descripción de las diagonales. El algoritmo de búsqueda A* es un algoritmo computacional clasificado dentro de la búsqueda por grafos, para encontrar el camino de menor coste entre el nodo origen y destino. Está No obstante, las dos últimas fichas de la fila serán colocadas de motivado debido a que en algoritmos de búsqueda en grafos manera especial. En este caso, se coloca en la posición 1 x (n-1) la informados, como el algoritmo voraz, estos siguen un camino ficha (n-2) y, en la posición 2 x (n-2) la ficha (n-2) siguiendo el basado únicamente en la función heurística. Dicha función no nos mismo procedimiento explicado con anterioridad. Por último, se indica el coste real de desplazarse de un nodo a otro, sino una desplaza la ficha(n – 2) a la posición 1 x (n – 2) y la (n – 1) a su aproximación que puede no ser óptima, llevando a realizar posición. movimientos extra que terminan derivando en un mayor coste para alcanzar la solución. Por ello un algoritmo óptimo de búsqueda informada deberá tener en cuenta el factor del valor heurístico de los nodos, y el coste real del recorrido. Por ello el algoritmo A* usa la siguiente función de evaluación f(n) = g(n) + h'(n), siendo el primer término g(n) el coste real del camino recorrido para llegar al nodo n, y h’(n) el valor heurístico del nodo a evaluar desde el actual n hasta el final. Figura 5: Colocación de las últimas piezas. Además A* necesita de dos estructuras de datos auxiliares, para mantener un conjunto de soluciones parciales almacenadas:

Para las columnas, se sigue un procedimiento similar: se colocan Abiertos: se trata de una cola de prioridad ordenada las primeras piezas y cuando queden sólo dos, se pondrá la según el valor f(n) de cada nodo. penúltima pieza en la última posición y la última pieza en la Cerrados: información de los nodos ya visitados. columna adyacente a la última posición. Sin embargo, hay algunas combinaciones que no pueden ser En cada iteración del algoritmo se realiza una consulta de la resueltas aplicando este algoritmo. Para ello, buscamos una estructura de Abiertos, se consulta el primer nodo de la lista ordenada, si no se trata de un nodo objetivo, se calcula la f(n) de

3

- 63 - todos sus hijos, se insertan en la cola de Abiertos, y finalmente el Si para todos los nodos n del grafo se verifica que h(n) nodo evaluado se traspasa a la estructura de Cerrados. = 0, se trata de una búsqueda de coste uniforme no Se trata de un algoritmo de búsquedas de tipo primero en anchura informada. para g(n) con primero en profundidad para h’(n). Esto quiere decir que: Pero en este algoritmo no todo son ventajas, existe un gran problema a la hora de ejecutar un algoritmo basado en A*, que es la gran cantidad necesaria de memoria. Esto es debido a que se Para g(n) se establece un nodo raíz, y se exploran y debe almacenar todos los posibles siguientes nodos de cada evalúan todos los vecinos de este nodo, y a estado, derivando por ello en una cantidad de memoria continuación para cada uno de los vecinos se exponencial respecto al tamaño y complejidad del problema. exploraran sus correspondientes vecinos adyacentes, y Como alternativas a este problema se presentan variaciones de se realiza esto hasta que hayamos explorado todo el este algoritmo como pueden ser RTA*, IDA* o SMA*. árbol. Para h’(n) el modo de exploración es diferente, en la búsqueda en profundidad partimos de un nodo que vamos expandiendo de manera recurrente para un camino determinado, en el momento que ese camino no se puede propagar más, volvemos atrás y comenzamos de nuevo a expandir el nodo vecino del cual partimos y que ya ha sido procesado. Es un algoritmo que nos permite recorrer todo el árbol de manera ordenada pero no uniforme.

La complejidad y carga computacional de este algoritmo está dispuesta por la calidad heurística usada en el problema. Por ello para una mala heurística la complejidad será exponencial, y para una heurística óptima tendremos una complejidad lineal y por ello un tiempo de ejecución del mismo modo, siendo necesario por ello, que con una heurística optima se verifique que: h’(x) <= g(y) - g(x) + h’(y) Figura 7: Ejemplo de aplicación del algoritmo A*. ,donde h’(y) es un estimador de h(x) que indica la distancia a la solución. A continuación explicamos el funcionamiento del algoritmo Las propiedades del algoritmo son las siguientes: mediante un ejemplo. En dicho ejemplo buscamos el camino a Es un algoritmo completo, en caso de existir solución la recorrer más corto para ir desde el punto verde al rojo, esquivando encontrará. el muro azul el cual no podemos atravesar. Como observamos el área de búsqueda se ha dividido en una simple rejilla, El algoritmo no desarrolla un camino por interacción, simplificando así el problema a una matriz bidimensional, formula varios y selecciona lo más competentes. representando así cada cuadrado de la rejilla como un elemento de Para garantizar que se trata de un algoritmo óptimo, la la rejilla, y pudiendo así almacenar sus propiedades y valores, función h(n) deberá ser válida, sin exagerar el valor real como si es posible atravesarlo. A partir de ahora a dichos de encontrar la solución. cuadrados los llamaremos nodos. SI h’(n) realiza una estimación exacta de h(n), el algoritmo converge rápidamente a la solución. Si h’(x) = 0, la búsqueda es controlada por la función g(x). Si h’(x) = g(x) = 0 se trata de una búsqueda aleatoria. Si h’(x) = 0 y g(x) = 1, se trata de una búsqueda que se desarrolla primero en anchura. Si h(x) no se sobrestima por h’(x), se encuentra un camino optimo pero se han buscado rutas alternativas que han conllevado un sobre cálculo desaprovechado. En caso contrario si h(x) se sobrestima por h’(x), no se asegura que se avance por el camino de menor coste.

Si para todos los nodos n del grafo se verifica que g(n) = 0 se trata de una búsqueda voraz. Figura 8: Área de búsqueda en rejilla. En verde, punto de inicio. En rojo, punto final.

4

- 64 - Comienza la búsqueda: b. En el caso del valor H este se puede estimar de muchas maneras diferentes. En este caso utilizaremos una aproximación mediante la 1. Comenzamos por el nodo de inicio (verde), añadimos este a distancia Manhattan, donde solo tendremos en una lista abierta, la cual está formada por los nodos que cuenta el número de cuadrados horizontales y pueden formar parte del camino a seguir, pero que aún verticales (solo existe movimiento ortogonal) que debemos comprobar. debemos desplazarnos de manera directa

(ignorando y no teniendo en cuenta los obstáculos 2. Revisamos todos los nodos alcanzables y colindantes al nodo que pudieran existir en el recorrido) para llegar de inicio, ignorando los cuadrados intransitables como puede desde el nodo inicio al nodo de destino. Como ser el muro. Los añadimos a la lista abierta, marcando en observamos se trata de una aproximación del cada uno de ellos una referencia al nodo de inicio como su recorrido a seguir, de ahí que se trate de un valor nodo padre. Bordeamos los nodos de la lista abierta en color heurístico. verde, y marcamos la referencia al nodo padre con una flecha gris.

En la Figura [9] podemos observar los valores obtenidos, donde el valor G está representado en la esquina inferior izquierda, H se encuentra en la esquina inferior derecha, y el valor F de resultante de la suma de G y H se encuentra en la esquina superior izquierda. También vemos que hemos elegido el nodo que colinda a la derecha con el nodo inicio (marcado con el borde azul), ya que se trata del nodo con menor valor de F, en este caso 40.

Figura 9: Nodo de inicio y sus nodos alcanzables.

3. Traspasamos el nodo inicio a la lista cerrada, ya que no es necesario para nada de momento. El borde de su color en la Figura 9: Valores de las funciones. imagen será azul, debido a que se encuentra en la lista

cerrada. 5. Traspasamos el nodo seleccionado de la lista abierta a la

cerrada, ya que no vamos a operar más con él, y cambiamos 4. Ahora deberemos seleccionar el nodo con el valor de F (F = por ello el color de su borde de verde a azul. G+H) más bajo. Donde G es el valor de movimiento del

nodo inicio a otro nodo de la rejilla siguiendo el camino 6. Verificamos que los nodos contiguos que sean accesibles y necesario, y siendo F el valor del movimiento estimado para no se encuentren en la lista cerrada, y añadimos a la lista ir desde ese nodo hasta el nodo final, donde este último valor abierta a aquellos que no pertenecen aún a ella, marcando no es más que una hipótesis ya que no conocemos aún la como nodo padre al seleccionado anteriormente. distancia exacta.

7. Comprobamos para los nodos contiguos que ya se a. En este ejemplo al valor de G le daremos un valor encontraban en la lista abierta, si su valor G es inferior al de 10 a los movimientos ortogonales, y de 14 a los nuevo valor de G que recalcularíamos con el nodo movimientos diagonales. Para el cálculo del valor actualmente seleccionado. Si el valor G del nuevo camino es G del nodo, sumaremos al valor G de su padre el menor, seleccionamos este nuevo nodo, y cambiamos el valor del tipo de movimiento que realicemos. padre de los nodos contiguos por este otro, recalculando de

estos nodos su nuevo valor de G y F.

5

- 65 - En nuestro caso como observamos, el valor obtenido de G 11. El camino buscado que une el nodo inicial con el final, es para el nodo inferior derecho moviéndonos en diagonal aquel el cual apuntan las flechas partiendo desde el nodo desde el nodo inicio tiene un valor de 14, frente al valor G final, recorriéndolas hasta el nodo inicial. En la Figura [12], observamos el camino obtenido para esta interacción. igual a 20 que tendría si el camino recorrido por dicho nodo, proviniera del nodo superior, que previamente provenía por su izquierda del nodo inicial. Por ello seleccionamos este nuevo nodo (marcándolo como azul), desechamos el anterior. En el caso de existir un caso con dos posibilidades seleccionamos aquella con valor F menor.

8. Marcamos y apuntamos el nuevo nodo seleccionado como padre para los nodos contiguos. Comprobamos los nodos contiguos y calculamos sus valores de G, H y F. Podemos observar el proceso en la Figura [10].

Figura 12: Camino obtenido para llegar del nodo origen al destino aplicando este algoritmo de búsqueda.

Aplicando este algoritmo para el caso del 15 Puzzle, nuestros nodos serán las posibles combinaciones que conseguimos desplazando las fichas a través de la casilla vacía. A través del siguiente ejemplo explicaremos su funcionamiento. Partimos del siguiente estado inicial, Figura [13]. Primero comprobaremos el número de permutaciones, que en este caso es Figura 10: Marcamos y calculamos las funciones de las casillas par (4). A continuación, creamos las dos listas o estructuras de colindantes al nuevo nodo. datos: Abierta y Cerrada. En la abierta, insertamos nuestro estado inicial. 9. Comprobamos si el nodo situado a la izquierda del ahora seleccionado tiene un coste G menor a través del nodo actual, frente a llegar desde el nodo inicial. Como no es así lo desechamos.

10. Repetimos de manera recursiva este proceso, hasta que finalmente añadimos el nodo destino a la lista abierta. Una vez llegado a ese estado obtendremos algo similar a lo que podemos apreciar en la Figura [11]. Figura 13: Estado Inicial de nuestro Puzzle.

Ahora tenemos que analizar los nodos alcanzables a nuestro nodo origen, es decir, definimos los posibles movimientos que podemos realizar. En este caso, sólo tenemos dos posibilidades (Figura [14])

Figura 14: Posibles movimientos.

Figura 11: Resultados tras aplicar el algoritmo.

6

- 66 - Hay que calcular el valor de la función f(n). Dado que estamos realizando un ejemplo sencillo y sólo hacemos movimientos ortogonales (horizontal o vertical), tomaremos como función g(n) el número de movimientos realizados hasta llegar a ese estado. En cuanto a la función heurística h(n), utilizaremos la suma del número de casillas que se encuentran en una posición superior con respecto a la casilla analizada, sin tener en cuenta la casilla vacía. Para ello, la forma más sencilla es colocar nuestro tablero en forma de vector: Estado inicialA: 1 2 3 4 5 6 7 8 9 10 12 15 13 14 – 11 Estado final: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 –

gA(n)= 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 3 + 1+1= 6 Estado inicialB: 1 2 3 4 5 6 7 8 9 10 12 15 13 14 – 11 Estado final: 1 2 3 4 5 6 7 8 9 10 11 – 13 14 11 15

gB(n)= 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1+1= 3 Por tanto, obtendremos los siguientes valores para la función f(n):

fA(n) = gA(n) + hA(n) = 1 + 6 = 7

fB(n) = gB(n) + hB(n) = 1 + 3 = 4 A continuación pasamos nuestro estado origen a la lista Cerrada y añadimos en la lista Abierta nuestros nuevos estados ordenados en orden creciente de acuerdo al valor obtenido de la función. Figura [17]: Árbol resultante. Nuestro nodo origen será ahora el estado de la figura [14]b. Ahora sólo obtendremos un nuevo estado: Figura [15]

4. ENFOQUE PSICOLÓGICO PARA EL PLANTEAMIENTO DE ALGORITMOS

En las últimas décadas, debido al desarrollo tecnológico, ha Figura 15: Nuevo estado inicial. tenido una especial importancia el debate sobre si la mente humana puede compararse con el ordenador. Para ello, se han La función f(n) será ahora 5, así que será nuestro siguiente nodo realizado estudios que abordaban la resolución de problemas tanto origen. en humanos como en ordenadores. En Psicología han destacado Aplicando dos veces más este algoritmo, llegamos a la solución dos autores que han tratado este tema: Turing afirmó que la mente del puzzle en tan sólo 4 movimientos. humana se puede comparar con el ordenador debido a que ambos pueden razonar lógicamente, mientras que Searle se opuso a esta afirmación defendiendo que, si bien es cierto que ambos pueden manejar símbolos, sólo la mente humana es capaz de atribuir significado a los símbolos que maneja, por ello, según este autor la mente no es un programa informático. No obstante, para resolver determinadas tareas no es necesaria la intervención del significado, por ejemplo, en la solución de este puzle basta con Figura [16]: Últimos estados iniciales. manejar los símbolos adecuadamente.

Turing es considerado uno de los padres de la ciencia de la Finalmente, en la Figura [17] se muestra el árbol resultante tras computación ya que formalizó los conceptos de algoritmo y aplicar el algoritmo: computación mediante su famosa máquina de Turing. Además, es uno de los precursores de la Inteligencia Artificial ya que consideraba que las máquinas podrían llegar a pensar. Lo cual

enunció a través de la prueba que lleva su nombre, en la que pretendía comprobar de manera estándar si una máquina puede apuntar a ser sensible o sintiente. Con respecto a la anatomía cerebral, cabe destacar que el cerebro se divide en dos hemisferios y para resolver este puzle se requieren ambos. Por un lado, el hemisferio izquierdo se relaciona con el razonamiento y la habilidad numérica, puesto que es analítico, racional, secuencial, organizado, matemático, simbólico, etc. Mientras que, por otro lado, el hemisferio derecho se corresponde con la habilidad visoespacial. Las habilidades

7

- 67 - mencionadas son necesarias para resolver el puzle y estos datos se abandona durante un tiempo en el que la mente de forma pueden apoyar mediante técnicas cerebrales como el EEG que inconsciente sigue pensando en el problema hasta dar con la muestran las áreas cerebrales que se activan ante esta tarea. solución. Este fenómeno recibe el nombre de insight y es uno de Además, las alteraciones en determinadas zonas del cerebro los aspectos que diferencia a los seres humanos de los suelen ir acompañadas de una dificultad a la hora de resolver este ordenadores. Sumado a ello, los seres humanos presentan otras tipo de problemas. variables que influyen en la forma de resolver problemas, por Esta especialización cerebral se produce por la necesidad que ejemplo, la ansiedad, que facilita hasta cierto punto la resolución tiene el cerebro de ahorrar energía, lo que nos da una similitud de la tarea y, pasado ese punto, la dificulta. Por ello, la relación con la programación que nos conlleva siempre a diseñar entre rendimiento y activación se representa siguiendo la Ley de programas especializados para hacer un uso eficiente de los Yerkes-Dodson: recursos disponibles y/o limitados de la máquina para su ejecución. En cuanto a la solución de problemas, los seres humanos aplican una serie de estrategias según el tipo de problema. Para resolver este puzle la estrategia óptima es la división del problema en subproblemas o submetas. Esta estrategia se basa en la idea de “divide y vencerás”, por lo que se trata de reducir un problema amplio en varios más pequeños que acerquen a la persona a la meta. Para la Gestalt, la solución de problemas es algo más que aplicar de forma mecánica la experiencia, es realizar una reestructuración perceptiva. Este enfoque diferencia entre pensamiento productivo y reproductivo: el pensamiento productivo es la producción de una solución nueva a partir de una organización creativa del problema (se usa cuando se ha comprendido la estructura del problema), por ello, para la Gestalt éste es el verdadero pensamiento; por otro lado, el pensamiento reproductivo consiste en aplicar en situaciones similares la misma solución. Para la Figura 18: Ley de Yerkes-Dodson. resolución del puzle se requiere el pensamiento productivo.

Por otro lado, según Greeno, los problemas se pueden dividir en tres clases principales: Problemas de deducción de la estructura, Otro punto a destacar es el papel que tiene el aprendizaje en la Problemas de organización y Problemas de transformación. Este resolución de este tipo de puzle. Por un lado, existen teorías sobre puzle es un problema de transformación, puesto que tiene todos la solución de problemas basadas en habilidades generales, como los elementos del estado inicial y, a medida que se va avanzando y la Gestalt y el Procesamiento de la Información, mientras que se van aplicando operadores, se va transformando el problema otras teorías defienden que la solución de problemas se basa en hasta llegar a la meta. habilidades específicas, como la teoría de Expertos y novatos. Para el primer enfoque se puede aprender a resolver este tipo de Sumado a ello, cabe mencionar los cuatro pasos necesarios para problemas de forma que el aprendizaje afecte a las habilidades resolver un problema propuestos por Polya (1945). En primer generales. No obstante, según el enfoque de Expertos y novatos el lugar, es necesaria la comprensión del problema, esto supone no aprendizaje solo se produce en una habilidad específica, puesto sólo descodificar el lenguaje del enunciado, sino también adoptar que, por ejemplo, aprender a resolver un puzle no mejora la una actitud de solución de la tarea e identificar el problema. capacidad para resolver problemas de índole social. La eficacia en Algunos ejemplos de preguntas que se pueden proponer en esta la solución de un problema no depende de la disposición de fase son: ¿cuál es la meta?, ¿cuáles son los datos?, ¿qué estrategias o habilidades generales y transferibles, válidas para condiciones? y ¿es suficiente la información?. En segundo lugar cualquier problema, sino de los conocimientos específicos, útiles se elabora un plan. Las preguntas características de este paso son: para solucionar ese problema. El rendimiento experto sería el ¿conozco algún problema relacionado con éste?, ¿es necesario modelo para la solución eficiente de un problema. Hay dos tipos dividir el problema? y ¿es necesario resolver alguna parte antes de expertos: los técnicos y los estratégicos. Los técnicos resuelven que otra?. En tercer lugar, se ejecuta el plan, se comprueba cada un problema de su dominio de forma automática y rutinaria. Los paso y se resuelve el problema. Algunas de las preguntas de esta estratégicos resuelven un problema nuevo o poco familiar dentro paso son: ¿es necesario este paso?, ¿es correcto?. Por último, el de su dominio sin contar con procedimientos automáticos, por cuarto paso contempla la visión retrospectiva o revisión de la ello, requieren un control metacognitivo. tarea, esto es, verificar el resultado y el razonamiento. Algunos ejemplos de preguntas son: ¿se puede obtener el mismo resultado Los expertos son mejores que los novatos resolviendo problemas por algún otro método?. Estos cuatro pasos son descriptivos y incluso cuando se enfrentan con problemas fuera de su área de normativos y, como puede observarse, mantienen relación con el pericia porque manejan más recursos cognitivos. proceso que lleva a cabo un ordenador a la hora de resolver este tipo de problemas. • La eficacia en la solución de problemas no se debe a No obstante, en determinadas ocasiones la mente humana no diferencias en la capacidad cognitiva general, sino a las sigue estos pasos ininterrumpidamente, sino que llega a un punto diferencias en conocimientos específicos. en el que la persona no se ve capaz de resolver el problema y lo

8

- 68 - • El conocimiento procedural: Por un lado, los expertos y Referencias los novatos utilizan distintos heurísticos en la solución de los mismos problemas. Además, los expertos [1] Fifteen Puzzle controlan mejor la ejecución del problema. Por último, http://en.wikipedia.org/wiki/15-puzzle los expertos utilizan un amplio número de algoritmos de [2] Slocum, J. Sonneveld D. 2006. The 15 Puzzle: How it drove forma automática y, además los generalizan a diversos the World crazy. The Slocum puzzle Foundation. problemas. Los expertos aplican técnicas y no [3] Juego del Puzzle estrategias (uso deliberado e intencional). http://es.scribd.com/doc/41776980/Juego-Del-Puzzle-1

[4] Hayes, R. 2001. The Sam Loyds 15 Puzzle. Sumado a ello, la teoría de Expertos y novatos destaca el papel del [5] Parberry, I. 1997. A Real-Time Algorithm for the (n2-1)- conocimiento previo, lo que nos lleva a una de las teorías más Puzzle. University of North Texas. Department of Computer relevantes de la Psicología de la Educación: el Constructivismo. Science. Pese a que la idea de que una persona no es experta en todo sino que sólo en unos dominios, como propone la teoría de Expertos y [6] Búsqueda en árboles novatos, es opuesta a la teoría de Piaget, también es cierto que http://es.scribd.com/doc/19950923/Busqueda-Heuristica ambas teorías recogen la importancia de la experiencia o [7] Algoritmo A* conocimiento previo debido a la influencia que tiene a la hora de http://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqued resolver un problema de este tipo. Por ejemplo, si una persona a a_A* aplicado anteriormente una estrategia inadecuada para resolver el puzle, en el futuro será menos probable que vuelva a aplicar la [8] A* search algorithm misma estrategia, por lo que dará antes con la estrategia óptima y http://en.wikipedia.org/wiki/A*_search_algorithm solucionará la tarea con mayor rapidez. [9] Zorahn. 2010. Applying Search Algorithms to Turn-Based Por su parte, esta relación entre la conducta y sus consecuencias Games. http://forum.codecall.net/blogs/zoranh/1323- ya la propuso el Conductismo cuyo fundador fue Watson, applying-search-algorithms-turn-based-games.html destacando el condicionamiento instrumental u operante [10] Carreteto, M. 2008. Psicología del Pensamiento: Teoría y desarrollado por Skinner, cuya premisa principal es que aquella prácticas. Madrid: Alianza conducta que vaya seguida de una consecuencia negativa (castigo) [11] Carretero, M. 2009. Constructivismo y educación. Buenos tendrá menor probabilidad de repetirse, mientras que la conducta Aires: Paidós. seguida de una consecuencia positiva (refuerzo) probablemente se repita en un futuro. [12] Haines, D. E. 2003. Principios de Neurociencia. Madrid: Elsevier.

[13] Hergenhahn, B. R. 2001. Introducción a la Historia de la Psicología. Madrid Paraninfo. [14] Alan Turing http://es.wikipedia.org/wiki/Alan_Turing [15] Weiten, W. 2004. Themes and Variations. Thomson- Wadsworth

9

- 69 - Desarrollo de un agente autónomo jugador de Super Mario Adrián Amor Martín Cristina García Muñoz 100072611 100072663 Ingeniería de Telecomunicación Ingeniería de Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid

[email protected] [email protected]

RESUMEN espectacular crecimiento es la capacidad de generar jugadores En este documento se va a detallar cómo realizar un agente, automáticos mejores que el propio humano, de manera que el basado en árboles de decisión, que sea capaz de jugar de forma jugador se debe esforzar en superar a la máquina. Esto se autónoma al juego Super Mario en el marco del concurso Mario convierte en un fenómeno social (se habla incluso de la llamada AI 2011. generación gamer) y provoca también un incremento en la investigación en inteligencia artificial, ya que muchos juegos compiten en demostrar que su jugador no humano es mejor que Descripción de categorías y temas. cualquier otro (como puede observarse con la guerra anual entre [Agente]: Un agente es un sistema informático que demuestra juegos de fútbol). De esta manera, se producen cada vez jugadores que percibe su entorno a través de sensores y es capaz de actuar más inteligentes, llegando a imponer niveles de dificultad que sobre dicho entorno mediante efectores. sólo son resolubles después de mucha experiencia en el juego. [Super Mario]: Videojuego de plataformas muy popular desde la De esta manera, se vio de manera casi inmediata que la fuerza década de los 80, diseñado por Shigeru Miyamoto. bruta para implementar un jugador automático (es decir, explorar todas las posibilidades hasta el final para ver si con cierto Palabras clave. movimiento podemos llegar a la derrota o a la solución) es, Agente, árboles de decisión, inteligencia artificial, Super Mario. además de poco eficiente, irrealizable en la práctica debido a la limitación de los sistemas de computación del momento. Se impone así investigar sobre técnicas de búsqueda que permitan 1. INTRODUCCIÓN. resolver problemas, ya sean relacionados con derrotar a un Una de las principales inquietudes del ser humano es conseguir jugador humano o llegar a la solución de, por ejemplo, las torres hacer entes que se muevan “artificialmente”, es decir, que simulen de Hanoi. (e incluso mejoren) el comportamiento humano. Así, a lo largo de la Edad Media se desarrollaron autómatas como el hombre de Todas estas técnicas para llegar a una solución deben maximizar palo de Juanelo Turriano, en Toledo, y artificios como El Turco, la eficiencia de cálculo, para lo que las opciones que se deben que era capaz de jugar al ajedrez de manera autónoma (aunque se evaluar deben ser las más inteligentes posibles, e intentar llegar a descubriera poco después que era un engaño). Con el auge de la la solución óptima. De esta manera, una primera aproximación computación se empieza a tener una capacidad de procesamiento son los árboles de decisión en los que se contemplan todas las similar a la del ser humano, de manera que se desarrollan posibilidades de actuación y se elige la más ventajosa (ya sea con programas que intentan simular un jugador automático. La línea una función de evaluación o heurística, es decir, basada en la de investigación que más se desarrolló en el siglo XX fue la de práctica); otra aproximación son las redes neuronales, que desarrollar un autómata capaz de vencer a un ser humano al construyen asociaciones entre las entradas del problema y las ajedrez, de manera que se empiezan a diseñar estrategias en la salidas, de manera que buscan la solución más eficiente; y otra década de los 50 por, entre otros, Shannon y Turing, y el aproximación son máquinas de estados, que es otra manera de refinamiento de estas estrategias consiguen que, en 1998, se hacer jugadores razonablemente inteligentes. Se evalúan todas las produzca la derrota del campeón mundial del momento, Gary entradas en cada máquina y se llega a un estado de actuación; el Kasparov, a manos de una objetivo es llegar al estado final que es la solución. A estos máquina llamada Deep efectos se implementan los llamados autómatas de Moore y de Blue. Mealy, que no contemplaremos en este trabajo por considerar que un agente no puede ser perfectamente definido por estas máquinas Debemos destacar también de estados. el auge de la industria del videojuego que, si bien Una vez que situados en el contexto histórico actual, y haber nace con la creación del planteado las opciones que tenemos a la hora de hacer un jugador Pong (juego muy simple automático, uno de los entretenimientos que sirve para ahondar en entre dos personas), el concepto de inteligencia artificial es generar un agente, que sea experimenta un gran capaz de hacer cosas que un ser humano, si no es experto, normalmente no consigue. En esta línea surge el concurso Mario incremento desde la década AI Championship, o Mario AI Competition, consistente en Figura 1. Pong original. de los 80. Una de las proporcionar una interfaz “fácil de usar” para el usuario de razones de este manera que éste se encargue, únicamente, de generar un agente

- 70 - que se pase todas las pantallas posibles. Posteriormente o -90 para tuberías. ahondaremos en las posibilidades que se nos dan a la hora de elegir el nivel que queremos que juegue nuestro agente, pero la libertad es casi infinita. Así, se convoca un concurso intentando escoger al agente que demuestre un mejor comportamiento en la interfaz que se proporciona al usuario. En este documento detallaremos cómo es la interfaz y qué podemos utilizar para que nuestro jugador juegue de manera autónoma de manera similar a como lo haría un humano; las estrategias que podemos seguir a la hora de conseguir el objetivo (que es que se pase la pantalla con la mayor Figura 5 . Tubería. puntuación posible), evaluando su dificultad y la estrategia que Es importante saber que la interfaz nos da varias seguiremos finalmente; y las reglas que hemos usado, finalmente, posibilidades de zoom, es decir, que podemos para conseguir un agente lo más complejo posible. especificar si queremos, por ejemplo, que se nos informe de qué tipo de ladrillos tenemos, o simplemente 2. INTERFAZ CON EL ENTORNO. se nos diga que hay un ladrillo, o un obstáculo. Esto es Antes de nada, lo que tenemos que analizar es qué necesitamos útil cuando se empieza a codificar un agente, pero si se del escenario para que nuestro agente sobreviva. Así, a primera quiere añadir un poco de complejidad es necesario usar vista necesitamos: el zoom más detallado que hay. Podemos ver un esquema del comportamiento de la matriz en la figura 2.  Conocer cómo es el escenario, dónde están las caídas (que en el código se llamarán gaps), dónde podemos saltar, romper ladrillos, conseguir monedas, bonus… Todo esto se nos da en la matriz levelScene; es una matriz de tipo byte que incluye todos los elementos relativos al escenario, es decir, dónde está el suelo, los ladrillos… y que tiene como dimensiones [19x19], de manera que Mario sólo es capaz de ver 10 posiciones delante suya (ya que Mario está en el centro de esta matriz). Los valores relevantes que debemos tener en cuenta en una primera aproximación son: Figura 6. Matriz de observaciones (levelScene). o 0 si no hay nada.  Conocer dónde están los enemigos, y qué tipo de o -60 para el suelo. Debemos destacar que este enemigos podemos tener, es decir, si podemos valor no es constante desde que empieza el eliminarlos saltando sobre ellos o disparándoles, o no suelo hasta el final, sino que tenemos un -60 les podemos eliminar. Esto se da mediante la matriz de en la primera línea de suelo y más hacia abajo, byte enemies, que tiene la misma dimensión que 0. Esto es importante a la hora de detectar levelScene, es decir, [19x19]. Así, los valores más gaps para nuestro código. relevantes que tenemos son: o 80 para un goomba. Se puede eliminar saltando o disparando sobre él. Figura 2. Casilla con suelo. o -62 para suelo que se puede acceder saltando desde abajo (es decir, el agente no se cae si está encima pero puede sobrepasarlo saltando). o -20 para ladrillos que se pueden romper.

Figura 7. Goomba. Figura 3. Ladrillo rompible. o 84 para una bala, que solo sale si tenemos los cañones activados. Se puede eliminar de la o -22 para ladrillos que no se pueden romper misma manera que el goomba, saltando sobre (cuadrados con interrogación en los que se él o disparando. consigue un bonus).

Figura 4. Ladrillo irrompible.

Figura 8. Bala.

- 71 - o 81 y 82 para un koopa. Un koopa se puede completo, y en la coordenada Y, la altura de Mario eliminar disparándole, y si se salta sobre él sobre el fondo de la pantalla. dejará un caparazón sobre el que, si salta, se desplazará a lo largo de la pantalla  Posición absoluta sobre el escenario en la que se destruyendo todo lo que encuentre en su encuentran los enemigos. Esto se da con camino. enemiesFloatPos, que es un array en el que se da el identificador del enemigo y su posición según las características que hemos descrito anteriormente. Una vez que conocemos todas las variables que podemos usar para determinar el comportamiento de nuestro agente, lo que debemos evaluar es qué debemos cambiar en el código para que haga lo que nosotros queremos. De esta manera, se nos dan unos agentes ya hechos (pero casi sin inteligencia asociada) y podemos observar que lo que debemos modificar es el método getAction(), que devuelve un array de boolean

cuyo significado es el comportamiento que va a hacer Mario Figura 9. Koopa. en cada momento, es decir, si va a ir a la izquierda, derecha, correr y disparar (es la misma tecla), agacharse y saltar. Para o 91 para las flores que saltan de las tuberías. Se definir eso habrá que poner a true las acciones que queremos puede eliminar saltando por debajo de ellas o que haga en las posiciones correspondientes del array, y a disparando. false las acciones que queremos que no haga. Con esto podemos controlar el comportamiento de nuestro agente cada vez que se llama a getAction(), que es en un intervalo de tiempo lo suficientemente pequeño para ser capaz de pasarse la pantalla. Así, una vez familiarizados con el entorno de trabajo, ya

conocemos todo lo que podemos usar para crear nuestro Figura 10. Flor. agente, es decir, toda la información relevante que influirá en su comportamiento con el escenario y con los enemigos. A De nuevo se puede hacer una distinción entre el zoom continuación, debemos determinar cuál será nuestra que queremos, de manera que se distingue entre estrategia de comportamiento para nuestro agente. enemigos que son destructibles saltando sobre ellos, o aquellos que no se pueden destruir, como Spiky: 3. POSIBLES ESTRATEGIAS DE COMPORTAMIENTO. A continuación vamos a detallar posibles estrategias de comportamiento que fueron evaluadas para hacer nuestro agente, y justificaremos, finalmente, la estrategia elegida. 3.1 Redes neuronales. Una red neuronal es capaz de modelar la relación existente entre las entradas a la red y sus salidas. De esta manera, lo que tenemos que escoger es qué queremos como entrada, y qué queremos como salida, ya que la relación entre ellos se encargará de definirlo el Figura 11. Spiky. modelo de red neuronal que utilicemos, como, por ejemplo, el Debemos destacar, también, que la matriz enemies y perceptrón. Un modelo general de red neuronal es el que se ve levelScene se pueden usar en la misma matriz, llamada aquí: mergedObservation, que contiene los mismos valores pero concatenando ambas matrices.

 Posición en la que se encuentra Mario. Sus coordenadas dentro de la matriz levelScene y enemies se nos da con marioCenter, array de dos posiciones en la que la primera posición corresponde a la coordenada Y de Mario, y la segunda, a la coordenada X.

 Posición absoluta sobre el escenario total en la que se encuentra Mario. Esto se da con marioFloatPos, array de dos posiciones en la que, en una posición se nos da la coordenada X absoluta de Mario sobre el escenario

Figura 12. Modelo general de red neuronal.

- 72 - Como entrada querríamos saber, por ejemplo, si Mario puede quedarnos parados, descartando esa opción, y saltar, si Mario puede disparar, si Mario está en peligro de caer, o posteriormente decidiremos en qué dirección debemos si tiene un gap cercano, si Mario ve enemigos… en fin, las ir. entradas deberíamos definirlas con cuidado, mientras que las Ése es un simple ejemplo de función heurística, sin salidas están claras: serán las acciones que debe tomar Mario, es embargo, si lo pensamos un poco, la complejidad no decir, si salta, si se mueve a la izquierda, si se agacha, si se para… hace más que incrementarse, ya que debemos tener en básicamente, definir el array action que debemos devolver en el cuenta el enemigo que tenemos delante: si salta, lo más método getAction(). conveniente es quedarse parado, o retroceder un poco y saltar sobre él; si no salta, lo más inteligente es saltar para intentar eliminarlo; si somos capaces de disparar, deberíamos dispararle para destruirlo… y además de todas las reglas que en una primera exploración se nos ocurren, debemos tener en cuenta el movimiento que van a seguir nuestros enemigos, es decir, si van a saltar, si van a moverse hacia nosotros, o hacia el otro lado, si Este modelo no fue el que utilizamos porque lo vimos complejo son más rápidos o más lentos; es decir, debemos (debemos programar dos fases, la de entrenamiento para generar conocer el sentido de su marcha pues es inútil saltar el modelo, y la de juego en sí, aunque aprendería con el tiempo) y sobre un goomba que no viene hacia nosotros, por computacionalmente costoso al tratarse de una red neuronal. Por ejemplo. Así, deberíamos hacer un seguimiento de cada ello, esta estrategia fue descartada. enemigo para tener una función heurística buena. El algoritmo, por tanto, debería calcular el camino menos costoso, 3.2 Búsqueda A* para lo que cada casilla de la matriz mergedObservation (si La siguiente solución que nos planteamos seriamente fue hacer consideramos escenario y enemigos a la vez) es un nodo, una búsqueda heurística, pues está claro que en nuestro problema, evaluando la función para cada casilla y considerando cuál es el que no es un problema cerrado, debemos tener en cuenta el factor camino que nos puede llevar hacia la meta. Para ello, necesitamos heurístico. Así, podemos usar una función de evaluación best-first una estimación futura de lo que va a pasar hasta que lleguemos como la búsqueda A*. La búsqueda avariciosa (greedy search) la hacia la meta para que la función heurística esté bien definida. descartamos por poder atascarse en bucles infinitos si las No vamos a hablar sobre temas de implementación porque ésta no estimaciones no son del todo correctas, así que nos decantamos fue la solución que escogimos, aunque fue la solución ganadora por la investigación sobre A*. en el concurso de 2009. No fue escogida porque para que Como ya hemos dicho, A* hace una búsqueda best-first que evita funcionara adecuadamente debíamos implementar un simulador expandir caminos que ya son muy costosos de por sí, para no de cada elemento en pantalla, es decir, todos los enemigos, las desperdiciar recursos de computación. En cada nodo tiene que bolas de fuego que lanzamos para ser precisos… y eso es algo evaluar una cierta función f(n) que es: cuya complejidad excede el espíritu de este trabajo; además, la f(n) = g(n) + h(n) implementación de un algoritmo A* tampoco es trivial (debemos evaluar la función en cada nodo) ni algorítmica ni donde f(n) es el coste estimado total hasta la meta pasando por el computacionalmente. Por ello, la solución que escogemos, nodo n (que es el que estamos evaluando), g(n) el coste sufrido finalmente, es la de los árboles de decisión. hasta alcanzar el nodo n, y h(n) el coste estimado total hasta la meta pasando por n. 3.3 Árboles de decisión. A* es capaz de alcanzar la solución óptima (el camino más corto En primer lugar, debemos referirnos a esta estrategia como un hacia la meta) si conseguimos que la función heurística no punto medio entre hacer un algoritmo muy elaborado, como el sobreestime el coste real. algoritmo A*, y hacer una estrategia completamente heurística, es decir, ir “parcheando” el agente para que se pase una sola Una vez planteado el modelo que se debería usar, debemos pantalla. plantearnos las siguientes dudas: Un árbol de decisión constituye un mecanismo de aprendizaje  ¿Cuál es la meta? Obviamente, no es la meta final, ya mediante inducción supervisada, como las redes neuronales que Mario no es capaz de acceder a ella desde el (aunque con menos complejidad a priori). principio, por lo que lo más razonable es escoger el punto de suelo que se encuentre más a la derecha de nuestra matriz levelScene, y evaluar el camino hacia allí tomando el camino más corto posible.  ¿Qué función heurística debemos emplear? Aquí es donde está la calidad del algoritmo A*; en realidad, deberíamos evaluar si hay un enemigo, si hay un gap… poniendo por delante de todo la supervivencia. Pongamos un ejemplo: está claro que si avanzamos hacia la derecha y hay un enemigo, no deberíamos avanzar y, en vez de eso, deberíamos quedarnos parados o saltar. De esta manera, al camino que sea “avanzar” le

ponemos un coste sensiblemente superior al de saltar o Figura 13. Modelo general de árbol de decisión.

- 73 - De esta manera, buscamos encontrar las reglas que mejor modelan analizaremos en orden creciente de prioridad las herramientas con la relación entre las entradas, que en nuestro caso es el entorno las que cuenta Mario para salir airoso de las trampas que aparecen (tanto escenario como enemigos) y las salidas, que es el en su camino. comportamiento de Mario, es decir, si decidimos que salte, que La base de la que partimos permite al agente correr mientras vaya a la izquierda, a la derecha... dispara bolas de fuego de manera intermitente. Los métodos a continuación descritos modifican los valores base de manera apropiada para hacer que el agente se adapte a las situaciones detectadas. Para obtener el máximo rendimiento de este planteamiento se hace necesario un estudio previo de los peligros que van a acechar al jugador automático a lo largo de los recorridos que atraviesa. Así, la manera de trabajar será ir aumentando la inteligencia del Una vez estudiados se puede establecer un orden de actuación agente en función de la dificultad de la pantalla, introduciendo para dar más prioridad a la resolución de los problemas más reglas y, por tanto, expandiendo el árbol que debemos evaluar. graves. La mejor manera de identificar de forma real el mayor Otra ventaja con la que contamos es que la implementación no es número de situaciones posibles es jugar manualmente muy costosa computacionalmente, ya que básicamente se trata de experimentando los problemas y viendo cómo pueden solventarse. evaluación de condiciones if-else; además, su implementación es Fruto de este estudio previo del entorno pudimos descubrir que sencilla algorítmicamente, ya que al tratarse de este tipo de las fuentes de fallo más habituales sin tener en cuenta las criaturas condiciones, es fácilmente entendible. que puedan aparecer son: El gran problema de usar estos tipos de algoritmos es que no son  Hoyos: en principio bastaría con saltar al detectar una tan generales como pueda ser el algoritmo A*, ya que se aproximación a uno de ellos, sin embargo pudimos programan en base a pantallas, es decir, de forma heurística. De comprobar que en ocasiones es necesario ajustar el esta manera, puede llegar a ocurrir que sea óptimo para una impulso ya que la superficie disponible para aterrizar el pantalla pero que sea incapaz de pasarse otra pantalla salto no es infinita. completamente distinta; por ello, nuestro objetivo a la hora de  Combinaciones de obstáculos y escalones con hoyos: implementar este árbol es la generalización, es decir, que no haya los hoyos presentan una dificultad mayor si van detrás sobreentrenamiento en nuestro modelo de aprendizaje. Esto lo de un escalón de bajada, ya que por el impulso de mostraremos con varias pantallas con escenarios muy diversos. avanzar ya caes al vacío. Además si el hoyo está detrás Una vez que hemos decidido usar esta estructura por su sencillez de un obstáculo corremos el peligro de saltar más de la y los resultados aceptables que se obtienen, debemos pensar en cuenta y precipitarnos por el gap. ciertos aspectos:  Bloqueo entre ladrillos: cuando hay ladrillos en  Prioridades, es decir, qué entrada es más importante ocasiones el espacio que hay entre ellos y el suelo no para garantizar la supervivencia del agente. Esto, permite avanzar por lo que el agente se queda atascado traducido a árboles de decisión, es qué condición vamos como si se tratase de un callejón. En particular ocurre a evaluar primero, si la condición de que haya un cuando los ladrillos no pueden romperse. En la figura enemigo delante o la condición de que haya un gap por vemos que el hueco que queda es de una unidad y al ser el que nos podamos caer. el agente grande no entra, por lo que tiene que dar la  Acciones a tomar, esto es, que si vemos, por ejemplo, vuelta y saltar por encima. un enemigo que no salte, nuestra decisión sea saltar sobre él o esquivarlo. Para ello deberíamos prever el movimiento del enemigo, como ya discutimos en la sección 3.2; el problema es que este simulador físico no es fácil (se requieren muchas horas para calibrarlo) así que estas reglas se determinarán de forma heurística para el caso en el que haya enemigos.  Objetivos, es decir, si preferimos, por ejemplo, caminar por encima de una fila de ladrillos porque haya una fila de monedas o por el suelo porque haya más enemigos a los que podemos matar, o simplemente garantizar Figura 14. Bloqueo. nuestra supervivencia que es a lo que este concurso se  Bloqueo con cañones: la situación de los cañones limita. cuando también hay ladrillos impide el paso y el salto Con todo esto en nuestra cabeza, pasamos sin más dilación a la del agente de la misma manera. explicación del código realizado.  Obstáculo final demasiado alto: el final del escenario 4. REGLAS DEL ÁRBOL DE por defecto presenta una colina alta que obliga al agente a subir ayudándose de otras colinas intermedias. DECISIÓN. El código desarrollado dota al agente de una serie de habilidades  Escaleras: las escaleras presentan un problema ya que para superar los obstáculos que pueda encontrarse a lo largo de suelen tener un hoyo detrás y deben estar muy ajustadas distintas pantallas de nivel medio-alto. En este apartado

- 74 - para no sobrepasarlas como también apuntábamos con la situación lo que nos da tiempo para conseguir frenar los obstáculos anteriormente. y caer de manera casi vertical. Sin embargo para el jugador automático decidimos detectar la situación con un par de casillas de antelación y ajustar la cantidad de frenada en función de la altura que tenga el escalón. De esta forma cambiamos de dirección durante un número de intervalos proporcional a la cantidad de frenada calculada y con ello conseguimos que caiga en tierra firme.

Figura 15. Escaleras con gap. Considerando todos estos retos sumados a la posibilidad de aparición de criaturas y balas, se establece un método por solución requerida. Las reglas que se encuentran implementas en nuestro agente son, por prioridad:  Evitar flor de las tuberías: esta amenaza se resuelve de forma pasiva, parándose hasta que la planta está escondida. En este caso detecto las flores con una Figura 16. Escalón con gap. antelación de tres cuadros para tener un margen de  Gap: el método que detecta los hoyos y asigna una frenada ya que no es posible pararse en seco. intensidad de salto que es por defecto la máxima ya que  Evitar enemigo saltando contamos con el método de parar salto para ajustar mejor la potencia del salto.  Bloqueo: como respuesta al peligro de quedar atascado manifestado anteriormente, ya sea por la existencia de  Obstáculo delante: contamos con dos métodos que ladrillos o por la colocación de un cañón, se implementa detectan que hay obstáculos delante y uno adicional que este método. En cada consulta del método getAction() identifica el tipo de obstáculo de manera que si es uno se intenta detectar si nos encontramos en situación de con un hoyo detrás, la intensidad que se le pone al salto bloqueo. Detectamos bloqueo cuando tenemos un es la mínima para que lo supere sin pasarse. objeto sobre nosotros que nos impide saltar y además el  Gap salvable: para que el agente recorriese las pantallas hueco que hay por delante es nulo o insuficiente. Si de forma más fluida introdujimos este método que descubrimos que estamos en ese punto nos servimos de detecta cuando podemos saltar para acortar el camino unos contadores para dar varios pasos en sentido aunque no haya un hoyo entre medias del origen y el contrario, volver a girar y saltar sobre el objeto que nos destino del salto. De forma empírica establecimos unos impedía el salto. límites de lo que Mario es capaz de saltar y con ello  Enemigo no saltarín, destructible saltando sobre él: si el cada vez que detecta que saltando puede llegar enemigo no salta, y lo detectamos justo delante (o una acortando el recorrido. Viene bien cuando hay tuberías casilla más adelante) de Mario, saltamos para intentar ya que en muchas ocasiones están emparejadas y acorta eliminarlo. bastante.  Parar salto: es un método crucial ya que nos permite  Subir ladrillo: este método detecta cuando hay ladrillos hacer un ajuste menos fino de la potencia de los saltos. por delante a una altura a la que pueda llegar con un Cuando el agente está en pleno salto se hace un barrido salto el agente de forma que éste se mueva por las zonas por el suelo y si se detecta que el hueco se termina en más altas para coger monedas, evitar criaturas y posibles los dos próximos cuadros, el salto se frena y con la bloqueos por debajo de las filas de ladrillos. inercia que lleva es suficiente para caer sobre la  Bala: si detectamos una bala encima de Mario, o encima superficie detectada. Esto soluciona los problemas que y a la derecha de Mario, esperamos a que pase antes de aparecían cuando había que aterrizar sobre una proseguir nuestro camino. superficie pequeña.  Colina alta final: en esta competición de Mario se ha  Frenar: este es otro de los métodos que más a menudo habilitado la opción de que el final sea en alto, es decir, salvan a nuestro agente. Cuando tenemos un escalón de sobre una colina muy alta que no es alcanzable saltando bajada seguido de un hoyo no basta con pararse ya que con Mario, sino que tiene que volver atrás y saltar desde como no se consigue frenar en seco la inercia que llevas más arriba. Estamos hablando, por ejemplo, de esta sólo de avanzar hace que te precipites. Cuando se juega situación: manualmente este problema se resuelve anticipándose a

- 75 -  -ltb [on/off]: define si queremos que haya tuberías en nuestro nivel (tuberías en las que pueden salir flores como las que se detallaron en el apartado 2).  -lc [on/off]: con esto podemos hacer que en la pantalla haya cañones (de los que salen balas) o no.  -ld : define la dificultad del nivel.  -lt : define el tipo de escenario en el que queremos jugar: si es el estándar, en el castillo… no tiene mucha más repercusión en el nivel salvo el fondo de escenario.  -ll : con esto puedes especificar la longitud deseada del nivel.  -ls : define la “semilla” del nivel. El nivel se Figura 17. Colina alta final. genera aleatoriamente, pero los números aleatorios En ese caso lo que hacemos es volver atrás hasta que dependen de una semilla; pues bien, con esto podemos encontramos una estructura de ese tipo y llegamos a una cambiar la semilla generando tantos niveles distintos altura suficiente desde la que podamos saltar y alcanzar (con dificultad similar) como queramos. la meta. Con la adecuada manipulación de esas opciones, observamos que nuestro agente es lo suficientemente inteligente para superar: 5. RESULTADOS OBTENIDOS. Como ya explicamos en la introducción, la posibilidad de  El escenario por defecto. personalización del nivel al que juega Mario es muy grande.  El escenario por defecto, con nivel de dificultad 2, sólo Listaremos aquí algunas de las que hemos usado para mostrar el goombas, con una semilla de 256 y una longitud de 200. comportamiento de nuestro agente:  El escenario por defecto, con nivel de dificultad 3, sólo  -le: define los enemigos que queremos que aparezcan en goombas, con una semilla de 985, con cañones y con la pantalla. Al contrario de lo que pone en la página una longitud de 150. oficial, [1], ya no se hace una máscara a nivel de bit sino que requiere un String. De esta manera, si ponemos  El escenario por defecto, sin enemigos salvo flores y –le g, los únicos enemigos que aparecerán serán balas, dificultad 4, con cañones y tuberías. goombas. Debemos destacar que esta opción está  El escenario por defecto, con goombas voladores y no definida de forma distina a la que viene en la página voladores, semilla de 3 y longitud de escenario de 150. oficial del campeonato, que propone hacer máscaras de  El escenario por defecto con koopas verdes y rojos, bits cuando aquí funcionan Strings concatenados. De semilla de 1780, nivel de dificultad de 1 y longitud de esta manera las opciones que tenemos aquí (y son escenario 250. importantes a la hora de caracterizar si Mario reconoce bien a cada enemigo) son:  El escenario por defecto, con koopas verdes y rojos, semilla de 2, nivel de dificultad 4 y longitud de  g: para los goombas. escenario de 145.  gw: para los goombas voladores. No hemos probado muchos escenarios más por falta de tiempo,  rk: para los koopa rojos. aunque creemos que con el tiempo invertido los resultados de nuestro agente son razonablemente buenos y generales, puesto  gk: para los koopa verdes. que sobrevive de manera admirable a ciertas pantallas que un  s: para spiky. humano no se pasaría fácilmente, como hemos podido comprobar.  De igual manera que se hace para los goombas, si se le De esta manera, el techo de nuestro agente está en un nivel de añade una w al final de cada cadena, se convierten en dificultad 4 tanto con enemigos (con koopas, aunque es lo mismo voladores. con goombas y con una combinación de los dos) como sin ellos. De esta manera, si tenemos por ejemplo grkwgk en la pantalla lo que tendremos es enemigos que son, 6. REFERENCIAS. únicamente, goombas, koopas rojos voladores y [1] Página oficial de Mario AI Championship 2011: koopas voladores. Parece trivial insistir en esto, pero http://www.marioai.com/. no está bien documentado (hay que mirar el código [2] Historia del Pong: http://es.wikipedia.org/wiki/Pong. que da la competición) y puede ahorrar más de un quebradero de cabeza. [3] Historia sobre Inteligencia Artificial: http://es.wikipedia.org/wiki/Inteligencia_artificial.  -lg [on/off]: define si se quiere que haya gaps en nuestro nivel o no, es decir, si Mario puede morir por [4] Historia sobre jugadores automáticos de ajedrez: caer en un hoyo que no haya contemplado. http://es.wikipedia.org/wiki/Ajedrez_por_computadora. [5] Reflexiones sobre la generación gamer: http://www.cookingideas.es/como-motivar-a-la-generacion-

- 76 - gamer-cambiando-las-notas-de-clase-por-puntos-de- [8] Resumen de la primera competición de Mario AI: experiencia-20110111.html http://en.wikipedia.org/wiki/A*_search_algorithm. [6] Apuntes de la asignatura Inteligencia en Redes de [9] Agente basado en algoritmo A* (ganador de Mario AI 2009): Comunicaciones, 5º IT. http://www.youtube.com/watch?v=DlkMs4ZHHr8. [7] Información sobre el algoritmo A*: http://en.wikipedia.org/wiki/A*_search_algorithm.

- 77 - IMPLEMENTACIÓN DE UN AGENTE PARA UN JUGADOR DE MARIO A.I.

Alejandro Pérez Cruz David de la Horra Iglesias Ingeniería de Telecomunicación Ingeniería de Telecomunicación Universidad Carlos III de Madrid Universidad Carlos III de Madrid NIA: 100072647 NIA: 100066695 [email protected] [email protected]

RESUMEN 2. ESTRATEGIAS DE BÚSQUEDA En este documento presentamos una posible implementación de un agente que pueda jugar al juego SuperMario Bross. con una Los algoritmos de búsqueda tratan de encontrar, en general, la cierta inteligencia autónoma. solución más apropiada al problema en cuestión. Para ello se parte Categorías y descriptores de temas. de un estado inicial y se trata de alcanzar un estado final deseado (meta, objetivo) por medio del uso de árboles de decisión en los [Inteligencia Artificial]: Agente reactivo que permite interactuar cuales se van expandiendo nodos y desechando caminos de con el medio y realizar acciones para superar los distintos niveles búsqueda según se avanza en el árbol. del juego SuperMario Bros. Para ello existen diferentes estrategias de búsqueda que definen el Términos generales orden para la expansión de nodos y que deben ser evaluadas Algoritmos de búsqueda, lenguaje de programación Java, diseño e según: implementación de un agente.  Completitud de la solución: hay que evaluar si la Palabras Clave solución se encuentra siempre que esta exista. Búsqueda, inteligencia artificial, agentes.  Complejidad temporal: en este caso, lo que se debe 1. INTRODUCCIÓN evaluar es el número de nodos que han sido generados.  Complejidad espacial: hay que evaluar además el A lo largo del siguiente documento expondremos las diferentes número de nodos que como máximo se han guardado en estrategias de búsqueda existentes y las posibles memoria. implementaciones que se deben tener en cuenta para desarrollar  Optimalidad de la solución: hay que evaluar si se un agente que permita jugar de manera autónoma y con cierta encuentra la solución con menor coste. inteligencia al SuperMario, consiguiendo superar el mayor número de niveles posibles y con la mayor puntuación posible. Para evaluar cada estrategia se utilizan unos parámetros, que son: Además se explicará la solución llevada a cabo y nuestra 1) Factor de ramificación (b). implementación del agente en Java para lograr un resultado 2) Profundidad de la solución (d). satisfactorio en la competición para nuestro jugador. Se presentará pues el algoritmo utilizado (árboles de decisión) y el entorno en el 3) Máxima profundidad (m). que se desarrolla nuestra aplicación. Una vez tenemos toda la información necesaria para evaluar nuestra solución, trataremos de implementar aquella estrategia que se adecúe más al fin que persigamos y que sea posible con los recursos de tiempo y memoria de los que se dispone. En nuestro caso se dispone de información del dominio por medio de una matriz de 19x19 que nos proporciona información de la escena en la que se encuentra nuestro Mario y en la que dicho Mario se encuentra centrado en la posición (9,9) en todo momento. Así pues, debido a que tenemos información del dominio puede ser lógico utilizar algún tipo de estrategia heurística que ayude a encontrar la solución a nuestro problema, es decir, en nuestro caso a permitir avanzar a nuestro jugador a lo largo de un nivel sin que sufra daño alguno.

- 78 - 3. ALGORITMOS 3.3 Algoritmo de pathfinding A*

3.1 Árboles de decisión Presentamos este algoritmo porque también se recomienda desde la competición de MarioAI ya que ha dado buenos frutos a anteriores participantes que lo desarrollaron. Es la estrategia que hemos seguido para desarrollar nuestro agente. Consiste en un modelo de predicción usado en el ámbito Este algoritmo se clasifica dentro de los algoritmos de búsqueda de la inteligencia artificial. Permiten construir un diagrama de en grafos. Además, se demuestra que la búsqueda realizada por decisiones y/o de predicción basados en reglas que sirven para medio de este algoritmo alcanza la solución óptima (el camino de representar una serie de condiciones que ocurren de forma menor coste entre un nodo origen y uno objetivo) siempre que se sucesiva. utilice un heurístico admisible, es decir, que no sobreestime el coste real. Un árbol tiene una serie de entradas, las cuales pueden ser un objeto o una situación descrita a partir de un conjunto de atributos. Este algoritmo utiliza una función de evaluación que tiene en Como resultado del procesamiento de las entradas y a través de la cuenta tanto el coste real del recorrido como el valor heurístico de estructura del árbol, basada en ciertas reglas, se consigue alcanzar los nodos. La función es la siguiente: las hojas del árbol en el que se encuentran las decisiones a tomar en función de las entradas que se tenían. () = () + ℎ() Así pues, lo importante en este tipo de algoritmos es definir bien Donde: las reglas de modo que se adapten correctamente a la situación  g(n): coste sufrido hasta alcanzar n (nodo actual). que se plantea para que la solución que se alcanza sea la más apropiada dada la situación y el conocimiento del entorno que se  h(n): coste estimado desde n hasta la meta. tiene.  f(n): coste estimado total hasta la meta pasando por n. Dicho algoritmo mantiene dos estructuras de datos auxiliares: 3.2 Algoritmos genéticos nodos abiertos (implementados como una cola con prioridad ordenada por el valor f(n) de cada nodo) y los nodos cerrados

donde se guarda la información de los nodos que ya han sido Este tipo de algoritmos se desarrolla en múltiples ámbitos de la visitados. inteligencia artificial y era uno de los que se nos proponía desarrollar desde la página web de la competición de Mario AI y por eso aparece en esta memoria. Un algoritmo genético es una técnica de búsqueda basada en la teoría de la evolución de Darwin, que ha cobrado tremenda popularidad en los últimos años. Esta técnica se basa en los mecanismo de selección que utiliza la naturaleza, de acuerdo a los cuales, los individuos más aptos de una población son los que sobreviven al adaptarse más fácilmente a los cambios que se producen en su entorno.

Así pues, los algoritmos genéticos son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización y que están basados en el proceso genético de los En cada paso, se expande el nodo que esté primero en abiertos, y organismos vivos. en caso de que no sea un nodo objetivo, calcula el f(n) de todos sus hijos, los inserta en abiertos, y pasa el nodo evaluado a Durante la fase reproductiva se seleccionan los individuos de la cerrados. población para cruzarse y producir descendientes que constituirán, una vez mutados, la siguiente generación de individuos. La Así pues, este algoritmo es una combinación entre búsquedas de selección de padres se efectúa al azar usando un procedimiento tipo en anchura con búsquedas en profundidad. que favorezca a los individuos mejor adaptados, ya que a cada individuo se le asigna una probabilidad de ser seleccionado que es proporcional a su función de adaptación. De este modo, los individuos bien adaptados se escogerán probablemente varias veces por generación, mientras que los pobremente adaptados no se escogerán más que de vez en cuando. Por lo tanto, un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo una condición muy débil (que el algoritmo guarde siempre al mejor elemento de la población sin hacerle ningún cambio) se puede demostrar que el algoritmo converge en probabilidad al óptimo. Es decir, al aumentar el número de iteraciones, la probabilidad de tener el óptimo en la población tiende a uno.

- 79 - 4. AGENTES  Delegación: capacidad para realizar tareas delegadas por el usuario u otros agentes. Una vez hemos comentado un poco las diferentes estrategias de búsqueda para ayudarnos a solucionar nuestro problema, vamos a  Movilidad: capacidad de suspender la ejecución a mitad comentar un poco la teoría que hay por debajo del agente que de una tarea y reanudarla en otro nodo. debemos desarrollar.  Personalidad: capacidad para tener un estado mental que incluya creencias, deseos, intenciones, motivaciones... 4.1 Definición y principios básicos que determinen su comportamiento.

Un agente es una entidad capaz de percibir su entorno, procesar  Continuidad temporal: se considera un agente como un tales percepciones y responder o actuar en su entorno de manera proceso sin fin, ejecutándose continuamente y racional, es decir, de manera correcta y tendiendo a maximizar un desarrollando su función. resultado esperado basándose en la evidencia proporcionada por sus sensores y en el conocimiento del que disponga.  Veracidad: asunción de que un agente no comunica Así pues, un agente es autónomo en tanto en cuanto sus acciones información falsa a propósito. y elecciones dependen más de su propia experiencia que del conocimiento introducido sobre el entorno por el programador.  Benevolencia: asunción de que un agente está dispuesto Según Michael Wooldridge un agente inteligente es el que es a ayudar a otros agentes si esto no entra en conflicto con capaz de actuar con autonomía de forma flexible, destacando la reactividad, la proactividad y la habilidad social sobre otras sus propios objetivos. propiedades. En general, los agentes poseen las siguientes propiedades: Además, presentamos las arquitecturas generales de los agentes:

 Autonomía: es la independencia del usuario. El agente debe ser capaz de tomar decisiones por su cuenta.

 Reactividad: el agente debe observar e interactuar con el entorno.

 Proactividad: debe haber una intención de cumplir con

los objetivos fijados mediante planificación y razonamiento práctico.

 Persistencia: es la capacidad para mantener un estado (estado mental) que no se modifica caprichosamente.

 Razonamiento: el agente debe ser capaz de interpretar la información del entorno, realizar inferencias y tomar las decisiones oportunas. En nuestro caso, implementamos un agente reactivo debido a su  Aprendizaje: es la capacidad para cambiar su simplicidad básicamente. conocimiento a partir de la experiencia. Además, cabe decir que la conducta de una agente rara vez es la  Planificación: se define como la capacidad de construir óptima. Esto es debido a que calcular el óptimo de un criterio de planes propios para lograr objetivos a partir de las tareas un modo suficientemente bueno para ser considerado razonable es que se sabe realizar o podemos pedir a otros. muy difícil cuando en el problema planteado concurren múltiples restricciones.  Comunicación: es la capacidad para entenderse con otros agentes en un lenguaje expresivo con actos comunicativos.

 Cooperación: es la capacidad para solicitar o dar servicios a otros agentes y trabajar en cooperación para conseguir un objetivo común.

- 80 - 4.2 Familias de agentes

Por último, en este apartado más teórico sobre agentes describiremos algunas familias:

 Agentes colaborativos: son aquellos que principalmente cooperan con otros agentes.

 Agentes personales: actúan par un usuario o un grupo de usuarios compartiendo tareas, datos, etc.  Mario Pequeño: Este estado es el más pequeño de todos en tamaño, y esto repercute en que tenga que saltar más  Agentes de información: investigan y analizan la que Súper Mario o Mario Fuego para superar el mismo información en la red y permiten fusionar la obstáculo, además de no disponer del botón correr y información de múltiples fuentes. echar fuego.

 Agentes móviles: son aquellos que se desplazan para ejecutarse. Suelen ser agentes de información.

4.3 Estados de Mario

Aunque en nuestra implementación no tenemos en cuenta el estado en el que se encuentra Mario, consideramos cultura del juego el que el lector sepa los diferentes estados en los que se puede encontrar Mario y las características de las que puede disponer. 4.4 Estados de movimientos  Mario Fuego: Este es el mejor estado en el que puede encontrarse Mario, en el podrá efectuar todos los Mario podrá estar en diversos estados a lo largo de la partida, movimientos posible incluyendo correr y echar fuego. estos son vitales para posteriormente poder establecer las Si Mario es herido por alguna de las criaturas pasará al reglas de decisión. estado Súper Mario tras parpadear un tiempo en la Estos estados vienen ya codificados en el paquete que nos pantalla. Este es por defecto el estado en el que empieza descargamos de [8] la partida. Estos estados son:

 Andando: Este movimiento se produce cuando se pulsan cualquiera de las teclas de dirección izquierda (KEY_ LEFT) o derecha (KEY_RIGTH). Esta acción es independiente del estado de Mario y también podemos pasar a cualquier otra acción.

 Corriendo: Mario avanza a una velocidad superior a la normal, esto solo se puede conseguir si se encuentra en los estados Mario Fuego o Súper Mario. Para poder llegar a este estado es necesario mantener pulsadas las teclas de dirección ya sea izquierda o  Súper Mario: Mario llega a este estado tras comer una derecha y la de correr (KEY_SPEED). seta desde Mario o ser herido desde Mario Fuego, podrá realizar todos los movimientos excepto correr y echar  Saltando: Esta acción se puede realizar en cualquier fuego. estado de Mario, pero debido al tamaño reducido de Mario pequeño como es obvio necesitara saltar más para poder sobrepasar el mismo obstáculo. Este movimiento contempla desde que presionamos la tecla de salto hasta que llegamos al punto más alto, el nivel del salto depende de cuánto tiempo esté pulsada la tecla de salto (hasta alcanzar un máximo).

- 81 - Es importante tener en cuenta que para poder iniciar un En nuestra implementación distinguimos ente: salto no puede estar pulsada con anterioridad la tecla de salto, en ese caso no saltará.  Avanzar: Esta acción consiste en correr hacia la  Cayendo: Después de haber efectuado un salto, la derecha, dicha acción tiene una prioridad muy baja, ya gravedad nos hace caer, en este momento no podremos que como es lógico será interrumpida cuando encuentre impulsarnos más e iremos hacia el suelo. un enemigo o tenga que saltar. Esta acción es independiente del estado en que se Esta es la acción básica de nuestro Agente. encuentre Mario y no requiere pulsar ninguna tecla. Eso si podremos mantener una de las teclas de dirección  Saltar paredes: Como su propio nombre indica esta pulsadas para controlar la caída. acción se aplicara cuando Mario encuentre un obstáculo en su campo de visión. Las reglas que aplicamos para  Agachado: Este movimiento hará que Mario reduzca su este método son muy amplias debido a que deberá tamaño lo cual puede ser útil para esquivar una bala por distinguir entre una amplia gama de superficies y ejemplo. Mario pequeño no se podrá agachar. Para también dependiendo de la superficie elegir la mas alcanzar este estado se debe pulsar la tecla de dirección optima Hemos incorporado un contador de saltos cuyo que apunta hacia abajo (KEY_DOWN). objetivo es que cuando la tecla salto este mucho tiempo Cuando nos encontremos en este estado no se podrá pulsada pero siga teniendo que saltar suelta la tecla (se saltar. ponga a KEY_JUMP=false en el código). Esto es muy necesario debido a que Mario no puede saltar si ya esta  Disparando: Este movimiento solo se podrá hacer presionada la tecla de salto y si esto ocurriera antes de cuando se encuentre en el estado Mario Fuego. Para que Mario pudiera saltar, si por ejemplo esta en el aire, realizarlo habrá que hacer una pulsación de la tecla de esto produciría que nuestro agente se quedase correr (KEY_SPEED). bloqueado.

 Herido: Este estado se alcanzará tras colisionar con  Saltar escaleras: Este movimiento es uno de los más algún enemigo, acto seguido dispondrá de un tiempo de complicados debido a la complejidad que supone saltar aproximadamente medio segundo de inmunidad y luego de un escalón en un escalón. Primero deberá detectar la cambiara de estado. escalera, lo cual lo hacemos cuando se la encuentra o cae de un salto en un escalón. A continuación saltará de Si el estado inicial era Mario Fire pasará a Supe Mario, uno peldaño si ese es el último escalón, es decir, si si por el contrario Mario se encontraba en el estado de después ya solo tiene vacio saltara al otro lado, en caso Supe Mario iremos a Mario Pequeño y por último si contrario deberá saltar al siguiente escalón. Esto lo estábamos en Mario Pequeño moriremos y se acabará la realizará todas las veces que sea necesario. partida.  Saltar enemigo: Para esta acción hemos puesto reglas genéricas aplicables a todos los enemigos, ya que 4.5 Movimientos de nuestro agente después de analizar el código que nos proporcionan hemos visto que la mayoría tienen un valor mayor o Nuestro agente como ya mencionamos en el apartado de igual a 80. Estas reglas son del estilo: saltar cuando algoritmos será reactivo y se basara en distintas reglas de más o detecte un enemigo delante suya, saltar cuando detecte menos prioridad para decidir qué acción deberá realizar. un enemigo cayendo hacia él, etc. Para hacer bien este movimiento deberemos tener en cuenta muchas Para ilustrar gráficamente los movimientos hemos construido un variantes ya que los enemigos pueden perseguir a árbol para que se pueda ver el nivel de decisión el primer estado Mario, caer del cielo, o incluso caer a sus “pies”. que es Final especial es el estado que tiene más prioridad y el estado Avanzar es el que tiene menos prioridad.  Agacharse: Esto es un caso especial de esquivar un enemigo y lo hacemos cuando un misil va hacia Mario, en este caso se agacha hasta que pase. Para ello mantenemos pulsada la tecla con dirección hacia abajo (KEY_DOWN=true) e irá comprobando si en la posición de encima de su cabeza no tiene nada, sólo entonces podrá levantarse.

 Retroceder: Si hay enemigos en una posición en la cual

INICIO: no va a poder esquivarlos saltando, retrocedemos. Esto se antoja de vital importancia en niveles muy altos Saltar Final Esquivar Esquivar Saltar Evitar tubería/cañ Saltar pared Avanzar especial flor bala escalera hoyos donde pueden aparecer 10 enemigos de golpe, esto hará ón que retrocedamos y podamos analizar mejor la situación ya que si hubiéramos seguido avanzando podríamos haber sido heridos al no poder tener en cuenta todos a la vez.

- 82 -  Andar sobre tubo: Cuando estamos sobre un tubo no Algunos de los más usuales son: corremos, esto evitará que nos caigamos en un hoyo o justo al lado de un enemigo al caer. Para esto último deberemos hacer varías consideraciones ya que habrá que explorar diferentes opciones y añadir muchas reglas debido a la posible diversidad del escenario.

 Escalón antes de hoyo: Cuando detectamos un escalón antes de un hoyo calculamos si podemos realizar el salto, si es afirmativo saltamos y si no vamos más despacio. El ir más despacio tiene como objetivo poder caer en el siguiente escalón y una vez allí poder afrontar el salto con seguridad.

 Final En Alto Para poder terminar una partida cuando el final es un alto que no es accesible a priori hemos hecho una serie de métodos que son: SaltoFinal, Doble, EstoyDebajo y buscarCamino por los que ira pasando para poder llegar a la meta.

4.6 Interfaz Gráfico

Para empezar cabe el interfaz gráfico se facilita en [8]. Este interfaz es bastante completo y a parte de unos gráficos aceptables, nos da multitud de opciones para poder cambiar de nivel, apariencia, obstáculos…

Vamos a mostrar una captura de la pantalla para que se pueda tener una idea más gráfica.

Nuestro agente dispondrá de dos matrices de 19x19 las cuales le aportarán información de su entorno. Mario estará en la posición (9,9) en todo momento. En cualquiera de las dos matrices si no hay nada, esa posición tendrá el valor 0.

La primera matriz será LevelScene, esta matriz le indicara los elementos fijos de la pantalla, tales como: paredes, tuberías, cañones…

- 83 -

Como podemos apreciar en esta primera matriz salen todos los valores del entorno incluyendo las monedas cuyo valor es el único positivo (el 1).

La segunda matriz es enemies también de 19x19 y en su interior tendrá los valores de los enemigos.

Algunos de los enemigos más usuales son:

Una vez tenemos identificados los números que tendrá la matriz Como podemos ver en la imagen aunque el fuego que arroja enemies, vamos a ver sobre la pantalla como quedaría. Mario no es un enemigo como tal, también viene indicada en la También es llamativo resaltar que la mayoría de enemigos tiene matriz enemies con un 25. un valor superior a 80, eso nos facilitara a la hora de implementar el código para que esquive a cualquier enemigo desconocido y sin Como hemos podido comprobar estas matrices nos van a ser de que necesidad de tratarlo como un caso especial. vital importancia para poner las reglas ya que nos irán

proporcionando información detallada de la posición y el numero Para eso utilizamos la pantalla anterior aunque solo tengamos un de enemigos en cada instante. par de enemigos del mismo tipo.

- 84 -

5. SOLUCIÓN ÓPTIMA 6. BIBLIOGRAFÍA [1] http://es.wikipedia.org/wiki/%C3%81rbol_de_decisi%C3%B 3n Obviamente el algoritmo que hemos implementado en dos semanas dista de ser el óptimo y deseado, la mayoría de los [2] http://julian.togelius.com/mariocompetition2009/GIC2009Co participantes mejor clasificados disponen de algoritmos genéticos mpetition.pdf Y en particular los tres mejores clasificados del 2010 usaron el [3] http://es.wikipedia.org/wiki/Algoritmos_gen%C3%A9ticos pathfinding A* [4] http://eddyalfaro.galeon.com/geneticos.html [5] http://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqued a_A*. [6] http://es.wikipedia.org/wiki/Agente_inteligente_(inteligencia _artificial) [7] http://www.ati.es/novatica/2000/145/vjulia-145.pdf [8] http://www.marioai.com/

- 85 - Inteligencia en Redes de Comunicaciones Robot de Robocode

Felipe Llinares López Juan José Torres 100072665 García 10072753

ABSTRACTO En esta memoria describimos una implementación que hemos realizado de un robot de competición para el programa Robocode. General Terms Algoritmos, Rendimiento, Diseño. 1. INTRODUCTION Robocode es, en parte un juego, y en parte un language de programación.

Los tanques, llamados robots, están puramente controlados por un algoritmo interno para cada uno de ellos. Es decir, es un juego de Inteligencia Artificial. Dichos algoritmos se escriben en el lenguaje de programación Java.

Es un juego en el que unos tanques controlados por el El propio programa da muchas facilidades para hacer ordenador luchan entre sí por su propia robots, y es muy sencillo escribir el algoritmo de un supervivencia, dentro de un tablero de juego. robot básico que se mueva, detecte a los enemigos y les dispare. Sin embargo, los algoritmos pueden llegar a complicarse mucho. Hay quien dedica mucho tiempo a hacer robots muy difíciles de combatir. De hecho, incluso hay una liga profesional de Robocode.

Nuestro trabajo ha consistido en hacer un robot bastante competitivo. Quizá no tan efectivo como los mejores de la liga profesional, pero sí es capaz de vencer con facilidad a los robots sencillos, e incluso

es capaz de ganar algunas veces a los más complicados. En esta memoria, explicamos de forma breve en qué consisten los algoritmos que hemos utilizado. Está dividida en dos partes:

- 86 -  Sistema de Disparo Debido a la limitación máxima de diez páginas que pesa sobre el contenido de este trabajo,  Sistema de Esquiva renunciaremos a la posibilidad de exponer el estado El sistema de disparo intenta predecir el movimiento del arte sobre los sistemas de Inteligencia Artificial de los robots enemigos, para así disparar a donde van para disparo en Robocode y nos centramos en a estar cuando la bala llegue a su posición, mientras describir de forma detallada cuál es la forma en la que que el sistema de esquiva mueve al robot intentando nosotros hemos atajado el problema. esquivar de la forma más efectiva las balas de los En nuestra opinión, el problema de diseñar un sistema robots enemigos. de disparo es claramente un problema que se presta a ser tratado desde la rama del Aprendizaje Máquina. Es fácil plantearlo como un problema de aprendizaje 2. Sistema de Disparo supervisado, concretamente, como un problema de estimación, o si consideramos un comportamiento 2.1 Introducción puramente determinista, de regresión. El lema de Robocode es “Build the best, destroy the rest”. Por tanto, no debe resultar una sorpresa que diseñar un sistema efectivo de disparo es esencial 2.2 Preprocesador de Datos para obtener un bot competitivo. Cada vez que escaneamos a un robot enemigo (lo Hay multitud de aproximaciones a dicho problema. cual, con un algoritmo de escaneo adecuado, ocurre La más sencilla de todas es conocida como “Head- cada turno), el kernel que controla la ejecución de la On-Targeting” batalla invoca el método onScannedRobot, el cuál recibe como parámetro un objeto de la clase ScannedRobotEvent. Dicho objeto contiene información muy interesante sobre el estado del robot enemigo, como la distancia al enemigo, su dirección, velocidad, energía restante o el ángulo relativo entre nuestra dirección y su centro. Además, dedicando suficiente esfuerzo, es posible programar un módulo de pre procesado de datos que obtenga muchas otras medidas de segundo, tercer o incluso cuarto orden a partir de los datos que se obtienen directamente del objeto ScannedRobotEvent y de invocaciones anteriores de dicho método. Por ejemplo, a partir de la velocidad y la dirección se puede obtener la velocidad radial y angular, así como Consiste simplemente en disparar hacia donde vemos el sentido de giro del robot enemigo respecto a al enemigo. Si bien a primera vista puede parecer algo nuestro centro. Igualmente, a partir de nuestra totalmente razonable, la reducida velocidad de las posición (la cual es conocida en todo momento), la balas, entre 11 pixeles por turno para las balas más distancia al robot enemigo y el ángulo relativo entre poderosas hasta 20 pixeles por turno para las más nuestra dirección y el centro del robot enemigo débiles, hace que si utilizamos “Head-On-Targeting”, podemos calcular la posición absoluta del robot lo más probable es que para cuando la bala llegue a la enemigo. Otro dato interesante es la distancia del posición del bot enemigo, éste ya no se encuentre allí. robot enemigo a los muros, que puede ser medida tanto en pixeles como en el número de turnos que Por tanto, diseñar un buen sistema de disparo es tardaría el robot enemigo en chocar con los muros si mucho más complejo de lo que puede parecer en un siguiese la misma trayectoria. principio y ha sido objeto de estudio por muchos aficionados a la Inteligencia Artificial dentro del Si además usamos los datos obtenidos en el evento mundo de Robocode. anterior, podemos obtener medidas con dimensión temporal como la aceleración del robot enemigo, el número de turnos que lleva sin cambiar sentido de

- 87 - giro, sin acelerar o sin decelerar o simplemente En el momento de generar la onda, almacenamos parado. información sobre la posición en la que se encontraba el enemigo. A cada turno, comprobamos si la onda ha llegado al enemigo. Cuando es así, podemos saber cuál ha sido su desplazamiento desde que disparamos la bala “virtual” hasta que dicha bala habría impactado. Una vez realizada dicha medida, tenemos una nueva muestra para nuestro conjunto de datos de entrenamiento, formada por todos los datos de entrada comentados anteriormente (velocidad, dirección, aceleración, etc.) y el ángulo de desviación que debimos usar.

La forma de obtener dicho dato es bastante original. Cada vez que vemos al enemigo, consideramos que se genera una onda esférica en el centro de nuestro robot En la figura se muestran las ondas originadas para el y que se propaga a la misma velocidad que lo haría la cálculo de los valores exactos de la variable de salida. bala que dispararíamos en ese momento si Las ondas negras tienen una bala real .mientras que pudiéramos hacerlo (hay que recordar que en las blancas son balas “virtuales”. Robocode, no es posible disparar repetidamente de Así, nuestro sistema tratará de utilizar una serie de forma ilimitada porque hay calentamiento en el datos que obtenemos de las invocaciones del método cañón). onScannedRobotEvent para tratar de estimar mediante ciertos algoritmos cómo se moverá nuestro rival durante el tiempo que tardará la bala en llegar a él y así calcular el ángulo correcto con el que debemos compensar nuestro cañón a la hora de disparar. Realmente, la limitación en los datos que tomaremos cada vez que escaneamos al robot enemigo está simplemente en nuestra imaginación y habilidad como diseñadores. Un buen pre procesado de datos, en el que adquiramos datos verdaderamente relevantes para el problema, es la primera clave para diseñar un sistema de disparo efectivo. En ese sentido, vemos que el problema no se diferencia en absoluto de cualquier otro sistema que hemos

- 88 - estudiado durante la asignatura en el tema de durante breves periodos de tiempo por un Aprendizaje Máquina. movimiento circular. En esa situación, es posible diseñar un algoritmo que, asumiendo dicho movimiento circular, prediga de forma exacta donde se encontrará en enemigo y dispare ahí. Dado que la similitud al movimiento circular es grande pero no exacta, la probabilidad de fallar existe. Sin embargo, este algoritmo funciona bien a distancias cortas.

 Least Mean Squares: La utilización del 2.3 Algoritmos archiconocido algoritmo LMS en Robocode Una vez hemos adquirido y procesado los datos que es, creemos, una contribución original nuestra conformaran nuestro conjunto de entrenamiento, ya que no hemos encontrado referencia debemos diseñar algoritmos para estimar el ángulo de alguna en la wiki. Tras volcar conjuntos de desviación óptimo al disparar a partir de dichos datos. datos obtenidos tras varias batallas en La primera cosa que debemos mencionar es que, ficheros y procesarlos con MATLAB, gracias al concepto introducido anteriormente de llegamos a la conclusión que una regresión balas “virtuales”, podemos utilizar simultáneamente varios algoritmos distintos. Así, a cada momento, lineal era sorprendentemente precisa. Debido elegimos cuál es el algoritmo que está obteniendo a la elevada complejidad computación de las mejores resultados en términos de porcentaje de regresiones lineales exactas (inversión de acierto y la bala real es disparada según la predicción matrices principalmente) y a que en este de dicho algoritmo. El resto simplemente generan una contexto es mucho más interesante emplear bala “virtual” de la cual nos ocuparemos para ver si un algoritmo adaptativo, llegamos a la hace impacto “virtual” o no. conclusión de que LMS podía obtener buenos Utilizando dicha idea, nuestro sistema de disparo se resultados, como así hemos comprobado en la compone de cuatro algoritmos: práctica.  Sistema de disparo de corto alcance: En situaciones en las que nuestro enemigo está  Dynamic Clustering: El algoritmo de moda cerca, esto es, a menos de 100 píxeles, se puede para disparar en Robocode a fecha de aproximar el movimiento del bot enemigo Diciembre de 2012. El método es una

- 89 - combinación de KNN con estimación de densidades de probabilidad. A cada instante que debemos disparar, buscamos en nuestro conjunto de datos las K situaciones más similares a la actual que hemos vivido en el pasado, donde cada situación se caracteriza por los datos de entrada que hayamos decidido usar. Con dichas K situaciones más similares, trataremos de estimar la PDF de la variable de salida para nuestro estado actual y elegiremos como ángulo de desviación aquel que tenga la máxima densidad de probabilidad. En otras palabras, usamos el criterio de máxima verosimilitud. Es importante reseñar que tanto el método de estimación de la PDF, como el parámetro K, como los datos de entradas para identificar  LMS Weighted Dynamic Clustering: Nuestra situaciones son algo que debe elegir el segunda aportación original a los algoritmos diseñador. Sobre los datos de entrada ya de disparo en el mundo de Robocode. Uno de hemos hablado. Respecto a los otros dos los problemas, a nuestro juicio, del algoritmo parámetros, nosotros utilizamos el método de Dynamic Clustering es que es tremendamente las ventanas de Parzen con kernel gaussiano heurístico. Viendo el código de varios bots para la estimación de la PDF y K = 25 como open source que implementan dicho parámetro del KNN ya que es la algoritmo, comprobamos que cada bot configuración que mejor tasa de acierto nos tomaba sus propios datos de entrada y les ha proporcionado en nuestros benchmark. asignaba pesos de una forma bastante oscura a priori. Por tanto, nos planteamos si había una forma de que nuestro robot aprendiese también, a la hora de buscar las situaciones más similares en el paso KNN del algoritmo de Dynamic Clustering, que datos de entrada son realmente más importantes. Nuestra idea fue emplear los pesos del filtro LMS, en valor absoluto y normalizados, como indicador de qué datos son más importantes. Así, sustituimos la distancia Euclídea por una distancia con pesos y el resto del algoritmo se mantiene igual.

Este algoritmo es utilizado por los robots más competentes de todo Robocode.

- 90 - De nuevo, hay multitud de formas de afrontar el problema, y el espacio que podemos dedicarlas en esta memoria es escaso. Por tanto, nos centraremos en nuestra forma de resolver el problema. Hemos utilizado un algoritmo bastante común entre los robots más poderosos actuales, conocido como Wave Surfing, o surfeo de ondas, que exponemos a continuación.

Predicciones para la futura posición del enemigo según los distintos algoritmos Como dijimos, los cuatros algoritmos anteriormente descritos son constantemente simulados de forma concurrente. Sus tasas de acierto virtual son monitorizadas y, aquel con mayor tasa de acierto virtual, es el que guiara la dirección de nuestra siguiente bala real. En la práctica, hemos comprobado que el algoritmo LMS Weighted Dynamic Clustering es aquel que suele ofrecer mejores resultados. Sin 3.2 Preprocesador de Datos embargo, mantener los cuatro a la vez es, sin duda, la Como ya hemos comentado, con un algoritmo mejor elección: no sólo hace nuestros disparos más adecuado, nuestro robot escaneará al robot enemigo impredecibles sino que hace nuestro bot mucho más cada turno. La idea básica de Wave Surfing consiste adaptable a enemigos de distintas características. en que cada vez que esto ocurre, generamos una onda imaginaria esférica, como la que se generaba para el algoritmo de disparo, pero esta vez centrada en el 3. Sistema de Esquiva robot enemigo. Dicha onda se irá propagando a lo largo del tiempo, y 3.1 Introducción llegará un momento en el que su frente rompa contra Al igual que nuestro bot intenta estimar la posición nuestro robot. Como generamos una onda cada turno, del bot enemigo para impactarle incluso aunque se cada vez que el robot enemigo dispare una bala, habrá mueva, de igual forma el bot enemigo intentará una onda asociada a ella. estimar nuestra posición.

Nuestro deber es ponerle al bot enemigo lo más difícil posible dicha estimación. Es decir, debemos decidir hacia qué dirección y sentido queremos mover nuestro bot y cuánto, en términos de velocidad, para que las bolas enemigas no nos den. Dicho de otra forma, tenemos que elegir dónde vamos a estar cierto tiempo después al momento de disparo del enemigo, tal que el movimiento de la bola enemiga no interseccione con el de nuestro robot.

- 91 -

3.3 Algoritmo Nuestro algoritmo en concreto, análogamente a lo que hacíamos para disparar, consiste en estimar con cuánto ángulo de desviación respecto a donde está nuestro robot está disparando el robot enemigo. Para ello, nos basamos en las balas que nos impactaron anteriormente. Cada vez que nos impacta una bala, buscamos entre las ondas que tenemos apuntadas a cuál estaba asociada. En dicha onda, tenemos apuntado el punto de donde salió, que es dónde estaba el enemigo cuando disparó la bala que nos ha dado, y también tenemos dónde estaba nuestro robot en el momento de disparo. Sabiendo el punto en el que nos ha impactado la bala, que es justamente nuestra posición en el momento del impacto, podemos estimar con cuánto ángulo de desviación Lo interesante del algoritmo estriba en que la bala disparó el robot enemigo. enemiga viaja en uno de los puntos del frente de su onda asociada. Por tanto, haciendo una estimación de La idea es guardarnos con que ángulos de desviación cuál es ese punto, podemos predecir dónde estará la nos está impactando más veces el robot enemigo. De bala enemiga cuando el frente de la onda rompa con esta forma, a la hora de movernos, nos moveremos nuestro robot. hacia un punto cuyo ángulo de desviación tenga poca probabilidad de impactarnos. Si además, nuestro robot se mueve a lo largo del frente de dicha onda, podemos moverlo a un punto en Más en detalle, lo que hace el algoritmo de el que creamos que la bala no estará, de forma que la movimiento es buscar la onda que está más cerca de esquivaremos. Y ese tipo de movimiento es conocido nuestro robot, ya que está asociada a la bala más como surfear la onda. cercana y por tanto más peligrosa. A continuación, estima donde estaría nuestro robot cuando la onda nos Cada vez que escaneamos al robot enemigo, que es impacte, si nos moviésemos a lo largo del frente de cuando queremos generar la onda, se llama al método dicha onda (surfeándola) hacia la derecha y hacia la onScannedRobot, que como ya hemos comentado, izquierda, y a diferentes velocidades. A continuación, tiene datos de sobra como para apuntar todo lo que para cada uno de esos puntos, calcula cuánto sería el necesitamos saber de la onda. Concretamente, el ángulo de desviación con el que tendría que haber momento en el que la generamos, su velocidad (en disparado el robot enemigo para impactarnos, y busca función de la potencia con la que dispara nuestro entre los impactos anteriores cuál de dichos ángulos enemigo), su dirección (que sería hacia donde está de desviación nos ha impactado menos veces apuntando el enemigo), la posición en la que se anteriormente. Y pone al robot en movimiento hacia genera (que es la posición del enemigo), y la posición dicho punto y con dicha velocidad. de nuestro propio robot en el momento que se genera. De esta forma, cuando la onda nos impacte, estaremos Cada turno, tenemos que actualizar la posición de en el punto de su frente de onda cuyo ángulo de todas las ondas que teníamos apuntadas (en función desviación con el que tendría que haber disparado el del tiempo que ha transcurrido desde que se robot enemigo para darnos tiene menos probabilidad generaron y de su velocidad individual), y borrar las de darnos, basándonos en los disparos que nos ondas que ya han traspasado nuestro robot. impactaron anteriormente. Además, en cada turno, tenemos que elegir cómo Hay que tener en cuenta, que todo esto se recalcula movernos a lo largo del frente de la/las ondas que cada turno, de forma que nos iremos acercando de tenemos apuntadas, para esquivar las balas enemigas. una forma suave al punto más seguro. La forma en la que lo hagamos es lo que diferencia a los distintos algoritmos de Wave Surfing.

- 92 - Empíricamente, hemos descubierto que el algoritmo [3] Para el algoritmo de esquiva, hemos utlizado más efectivo es moverse surfeando la onda hacia el información de las siguientes páginas: lado con menor probabilidad de impacto, a una http://robowiki.net/wiki/Wave_surfing velocidad constante, y ese es el algoritmo que hemos utilizado finalmente. [4] Hemos utilizado también los apuntes de la asignatura. Hemos utilizado también código open-source de bots del repositorio de robocode.

La gran ventaja de este algoritmo es que, aunque el robot enemigo tenga un método para aprender y estimar nuestros movimientos, si consigue impactarnos alguna bala, nuestro algoritmo reaccionará y empezará a mover el robot de forma diferente para contrarrestar la forma de disparo del robot enemigo.

4. Referencias

[1] La mayor parte de la información la hemos adquirido de Robowiki http://robowiki.net/wiki/Main_Page [2] Para el algoritmo de disparo, hemos utilizado información de las siguientes páginas: http://en.wikipedia.org/wiki/Kernel_density_esti mation http://es.wikipedia.org/wiki/Knn http://robowiki.net/wiki/Dynamic_Clustering_Tut orial http://en.wikipedia.org/wiki/Kd-tree http://robowiki.net/wiki/GuessFactor_Targeting http://homepages.inf.ed.ac.uk/rbf/CVonline/LOC AL_COPIES/AV0405/MISHRA/kde.html http://robowiki.net/wiki/Maximum_Escape_Angl e

- 93 - Minería de Datos

Óscar Palomo Miñambres Universidad Carlos III de Madrid Avda. De la Universidad, 30 28911, Leganés (Madrid-España) [email protected]

Abstract • Existencia de herramientas automáticas que no hacen necesario el ser un experto En este artículo analizaremos las ideas básicas en estadística que sustentan el Data Mining y, más • Potencia de computo concretamente, la utilización de árboles de decisión como herramienta estadística avanzada. Presento también un ejemplo ficticio de la 2. MINERIA DE DATOS – DATA MINING aplicación de estas técnicas: predecir clientes que tienen un alto porcentaje de impagos. La técnica usada para realizar estas hazañas en Data Mining se llama Modelado. Modelado es 1. INTRODUCCIÓN simplemente el acto de construir un modelo en una situación donde usted conoce la respuesta y La minería de datos (DM, Data Mining) consiste luego la aplica en otra situación de la cual en la extracción no trivial de información que desconoce la respuesta. Por ejemplo, si busca un reside de manera implícita en los datos. Es una galeón español hundido en los mares lo primero tecnología con gran potencial para ayudar a las que podría hacer es investigar otros tesoros compañías a concentrarse en la información más españoles que ya fueron encontrados en el importante de sus Bases de Información. Las pasado. Notaría que esos barcos frecuentemente herramientas de Data Mining predicen futuras fueron encontrados fuera de las costas de tendencias y comportamientos, permitiendo en Bermuda y que hay ciertas características los negocios tomar decisiones proactivas y respecto de las corrientes oceánicas y ciertas conducidas por un conocimiento acabado de la rutas que probablemente tomara el capitán del información. barco en esa época. Usted nota esas similitudes y Lo que en verdad hace el data mining es reunir arma un modelo que incluye las características las ventajas de varias áreas como la Estadística, la comunes a todos los sitios de estos tesoros Inteligencia Artificial, la Computación Gráfica, las hundidos. Con estos modelos en mano sale a Bases de Datos y el Procesamiento Masivo, buscar el tesoro donde el modelo indica que en el principalmente usando como materia prima las pasado hubo más probabilidad de darse una bases de datos. situación similar. Con un poco de esperanza, si tiene un buen modelo, probablemente Existen cuatro razones fundamentales por las encontrará el tesoro. cuales el Data Mining es una realidad en nuestros días: 2.1 CICLO DATA MINING • Avances tecnológicos en almacenamiento masivo de datos y CPU. El data mining se ha ido incorporando a la vida de • Existencia de nuevos algoritmos para empresas, gobiernos, universidades, hospitales y extraer información en forma eficiente diversas organizaciones que están interesadas en explorar sus bases de datos. Podemos decir que

- 94 - "en data mining cada caso es un caso". Sin mediante el uso de distintas técnicas, se embargo, en términos generales, el proceso se deben comparar los modelos en busca de compone de cuatro etapas principales: aquel que se ajuste mejor al problema. Si • Selección del conjunto de datos, tanto en ninguno de los modelos alcanza los lo que se refiere a las variables objetivo resultados esperados, debe alterarse (aquellas que se quiere predecir, calcular alguno de los pasos anteriores para o inferir), como a las variables generar nuevos modelos. independientes (las que sirven para hacer Por ejemplo, tenemos un conjunto de el cálculo o proceso) datos y sabemos que algunos algoritmos • Pre procesamiento de los datos. de generación de clasificadores funcionara Determinación, obtención y limpieza de mejor sobre esos datos que otros ¿Cual los datos necesarios. Esta etapa consume usar?, ej.: J48 o SVM? generalmente alrededor del setenta por Podemos hacer validación cruzada y ciento del tiempo total de un proyecto de quedarnos con el mas alto (en la practica data mining. esto es suficiente), pero en ocasiones la Determinación del modelo. Después de diferencia puede ser debida al azar y no haber sido pre procesados y realizar la ser significativa estadísticamente limpieza de datos, se sigue teniendo una Ejemplo: buscamos un algoritmo preciso cantidad enorme de variables o atributos. pero también rápido (lo vamos a utilizar La selección de características reduce el en una situación dinámica que exige un tamaño de los datos, eligiendo las entrenamiento rápido). Tenemos un variables más influyentes del problema, algoritmo A (J48) que obtiene un 90% de sin apenas sacrificar la calidad del modelo aciertos, y otro B (NN) que obtiene un de conocimiento obtenido del proceso de 92%, pero B es 100 veces más lento que A. minería. ¿Merece la pena usar B? Los métodos para la selección de los atributos que más influencia tienen en el • Integración, si procede, de los resultados problema son básicamente dos: en un sistema transaccional o similar. - Aquellos basados en la elección de los mejores atributos del problema.

- Aquellos que buscan variables independientes mediante test de sensibilidad, algoritmos de distancia o heurísticos.

Realizado esto se comienza realizando unos análisis estadísticos de los datos, y después se lleva a cabo una visualización gráfica de los mismos para tener una primera aproximación. Según los objetivos planteados y la tarea que debe llevarse a cabo, pueden utilizarse algoritmos desarrollados en diferentes áreas de la Inteligencia Artificial. Figura 1. Proceso Data Mining • Análisis de los resultados. una vez

obtenido el modelo, se debe proceder a su validación comprobando que las conclusiones que arroja son válidas y suficientemente satisfactorias. En el caso de haber obtenido varios modelos

- 95 - 2.2 EL ALCANCE DE DATA MINING • Redes Neuronales. Son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el Dadas bases de datos de suficiente tamaño y sistema nervioso de los animales, es decir, calidad, la tecnología de Data Mining puede un sistema de interconexión de neuronas generar nuevas oportunidades de negocios al en una red que colabora para producir un proveer estas capacidades: estímulo de salida. Esta tecnología puede ser desarrollada Las herramientas de Data Mining pueden analizar tanto en software como en hardware y bases de datos masivas en minutos. con ella se pueden construir sistemas Procesamiento más rápido significa que los capaces de aprender, de adaptarse a usuarios pueden automáticamente experimentar condiciones variantes, o inclusive si se con más modelos para entender datos complejos. dispone de una colección suficiente Alta velocidad hace que sea práctico para los grande de datos, predecir el estado futuro usuarios analizar inmensas cantidades de datos. de algunos modelos. Estas técnicas son Grandes bases de datos, a su vez, producen adecuadas para enfrentar problemas que mejores predicciones. hasta ahora eran resueltos sólo por el cerebro humano y resultaban difíciles o Las bases de datos pueden ser grandes tanto en imposibles para las máquinas lógicas profundidad como en ancho: secuenciales.

• Más columnas. Los analistas muchas • Regresión lineal.- Es la más utilizada para veces deben limitar el número de formar relaciones entre datos. Rápida y variables a examinar cuando realizan eficaz pero insuficiente en espacios análisis manuales debido a limitaciones de multidimensionales donde puedan tiempo. Sin embargo, variables que son relacionarse más de 2 variables. descartadas porque parecen sin importancia pueden proveer información • Árboles de decisión.- Un árbol de decisión acerca de modelos desconocidos. Un Data se describe como un modelo de Mining de alto rendimiento permite a los predicción utilizado en el ámbito de la usuarios explorar toda la base de datos, inteligencia artificial, ya que dada una sin preseleccionar un subconjunto de base de datos se construyen diagramas de variables. construcciones lógicas, muy similares a los • Más filas. Muestras mayores producen sistemas de predicción basados en reglas, menos errores de estimación y desvíos, y que sirven para representar y categorizar permite a los usuarios hacer inferencias una serie de condiciones que suceden de acerca de pequeños pero importantes forma sucesiva, para la resolución de un segmentos de población. problema.

En este tipo de árbol, los nodos 2.3 TÉCNICAS DE DATA MINING intermedios son los atributos de entrada de los ejemplos presentados, las ramas mo ya se ha comentado, las técnicas de la Co representan valores de dichos atributos y minería de datos provienen de la Inteligencia los nodos finales son los valores de la artificial y de la estadística, dichas técnicas, no clase. son más que algoritmos, más o menos Para elegir qué atributos y en qué orden sofisticados que se aplican sobre un conjunto de aparecen en el árbol, se utiliza una datos para obtener unos resultados. función de evaluación: ganancia de información. Las técnicas más representativas son:

• Modelos estadísticos.- Es una expresión simbólica en forma de igualdad o ecuación

- 96 - que se emplea en todos los diseños La concesión de créditos bancarios en el experimentales y en la regresión para momento que vivimos es un tema bastante indicar los diferentes factores que complicado. La crisis económica que se esta modifican la variable de respuesta. viviendo en estos momentos obliga a los bancos a ser muchos más estrictos a la hora de conceder • Clustering . Métodos de agrupación de un préstamo/crédito a sus clientes. Se ha datos que nos permiten clasificar los datos intentado, a partir de ciertos estudios y usando por su similitud entre ellos. Son utilizadas distintas metodologías, identificar las con frecuencia para entender los grupos probabilidades que tiene un cliente de devolver naturales de clientes en empresas o un crédito de acuerdo con los datos de los que se bancos. dispone de él. Es importante destacar que los modelos cambian • Algoritmos genéticos. Son modelos y dependen en ocasiones del momento en que se inspirados incluir fácilmente ligaduras realizan, es decir, no es lo mismo dar un crédito complicadas que limitan la solución a un hoy en día que hace unos años en los que se problema en la evolución de las especies y otorgaban créditos más fácilmente. Con ello que se aplican generalmente en quiero decir, que aunque los datos de los que problemas de optimización. disponemos son los mismos y unos casos conviene realizar el estudio con un subconjunto Según el objetivo del análisis de los datos, los determinado y en otras con otro. En este caso, la algoritmos utilizados se clasifican en supervisados minería de datos, junto con el uso de un modelo y no supervisados: basado en árboles de decisión, nos ayudará a investigar las correlaciones existentes en los • Algoritmos supervisados (o predictivos): casos de morosidad. predicen un dato (o un conjunto de ellos) desconocido a priori, a partir de otros conocidos. • Algoritmos no supervisados (o del 3.1 Objetivos del análisis descubrimiento del conocimiento): se descubren patrones y tendencias en los Antes de comenzar con la aplicación de las datos. técnicas de WEKA a los datos de este dominio, es muy conveniente hacer una consideración acerca A continuación se describen un ejemplo de de los objetivos perseguidos en el análisis. Como aplicación en el sector financiero y banca donde se mencionó en la introducción, un paso previo a se ha visto involucrado el data mining. la búsqueda de relaciones y modelos subyacentes en los datos ha de ser la comprensión del 3 APLICACIONES DE USO: CONCESIÓN DE dominio de aplicación y establecer una idea clara CREDITOS BANCARIOS acerca de los objetivos del usuario final. De esta manera, el proceso de análisis de datos (proceso Para el desarrollo de este ejemplo he utilizado KDD), permitirá dirigir la búsqueda y hacer WEKA (herramienta de aprendizaje automático y refinamientos, con una interpretación adecuada data mining, escrita en lenguaje Java, gratuita). Es de los resultados generados. Los objetivos, un entorno para experimentación de análisis de utilidad, aplicaciones, etc., del análisis efectuado datos que permite aplicar, analizar y evaluar las no "emergen" de los datos, sino que deben ser técnicas más relevantes de análisis de datos, considerados con detenimiento como primer principalmente las provenientes del aprendizaje paso del estudio. automático, sobre cualquier conjunto de datos del usuario. Para ello únicamente se requiere que En nuestro caso, un banco desea obtener reglas los datos a analizar se almacenen con un cierto para predecir qué personas de las que piden un formato, conocido como ARFF (Attribute-Relation crédito no van a devolverlo. File Format).

- 97 - Por otra parte, este análisis tiene un enfoque introductorio e ilustrativo para acercarse a las técnicas disponibles y su manipulación desde la Si seleccionamos uno de ellos podemos apreciar herramienta. la relación existente. Por ejemplo:

3.2 Pre procesado de los datos

La entidad bancaria cuenta con una gran base de datos correspondiente a los créditos concedidos a otros clientes con anterioridad. Para este caso los datos disponibles son:

@attribute estado {soltero, casado, divorciado} @attribute DNI @attribute nomina real @attribute sexo {HOMBRE, MUJER} @attribute PAGO {si, no}

El campo ¿Pagó? es binario (solo puede tomar Figura 3. Relación Nomina-Pago como valores sí o no) y es el atributo clave que tiene el banco para estudiar la concesión del Podemos apreciar que todos aquellos clientes crédito. No siempre existe un atributo clave. A con nóminas superiores a 2000 euros van a devolver el préstamo. Por otra parte cuando la partir de los datos, las técnicas de DM podrían nómina es menor de esa cantidad la devolución generar un modelo de los datos, consistente en no esta solo relacionado con este atributo sino un conjunto de reglas, que permitiesen predecir que depende de otros factores. Podemos deducir en el futuro, el posible comportamiento de un por lo tanto que el modo visual nos ayuda a tener cliente que solicitase un préstamo. una idea de los datos pero no a conocerlos por completo. Para generar gráficos con los datos del ejemplo, se seleccionará la pestaña Visualize. Por defecto, 3.3 Arboles de decisión se muestran gráficos para todas las combinaciones de atributos tomadas dos a dos, Utilizar un conjunto de datos disponibles, en de modo que se pueda estudiar la relación entre forma de tabla de atributos, para aprender a dos atributos cualesquiera. El aspecto de la predecir la clase de datos NO VISTOS TODAVÍA. pantalla es el mostrado en la figura siguiente El predictor puede tomar diversas formas, según el algoritmo (árbol de decisión, reglas, función, red de neuronas, probabilidades, centroides, ..). Pero en último termino, un predictor es una estructura que toma una entrada (los distintos valores de los atributos que representan al dato) y devuelve una salida (la clase o cantidad predicha para ese dato)

En este ejemplo he utilizado la técnica de generación de reglas en forma de árboles de decisión ya que es un modelo de datos sencillo y comprensible para todo el mundo. Obtenemos el siguiente esquema:

Figura 2. Relación entre datos dos a dos - 98 - Ejemplo: si en el conjunto original un 65% de los datos pertenecen a la clase positiva, la estratificación intentara que esa proporción se mantenga en entrenamiento y test

Se suele utilizar como método de validación, conseguir el mayor porcentaje de aciertos, aunque en ocasiones es importante evaluar el conocimiento obtenido con otras medidas:

• Comprensibilidad: si el conocimiento es

Figura 4. Árbol de decisión fácilmente comprensible para un ser humano. Útil para evaluar si el Cabe destacar que para la realización del conocimiento es correcto o para tomar clasificador se ha utilizado validación cruzada decisiones en base al conocimiento (dividir varias veces el mismo conjunto de datos obtenido. en entrenamiento y test y calcular la media. Así, • Muy relacionado con el tamaño (numero las particiones de test no solaparan). El método de reglas o nodos en el árbol de decisión) de validación cruzada utiliza muy bien los datos al • calcular el porcentaje de aciertos esperado, A veces merece la pena perder en porque todos ellos se utilizan para test (en alguna porcentaje de aciertos (= subadaptacion) partición). De hecho, todos los datos figuran para ganar en comprensibilidad como entrenamiento o test en alguno de los (construyendo arboles de decisión mas ciclos de validación cruzada. Pero es costoso en pequeños, discretizando atributos, etc.) tiempo (hay que lanzar el algoritmo de aprendizaje n veces) Algunos atributos pueden ser redundantes y hacen más lento el proceso de aprendizaje. Otros son irrelevantes (como el DNI para predecir si una

persona va a devolver un crédito). En ocasiones el

3.4 Análisis de los resultados exceso de atributos puede llevar a sobreaprendizaje, pues incrementa la Una vez obtenido el conocimiento es necesario complejidad del modelo (sobre todo si hay pocos validarlo para observar su comportamiento con datos). En este ejemplo sencillo podemos deducir datos no vistos. fácilmente algunas reglas que servirán para

determinar si se concede el préstamo a un Es una práctica conveniente el realizar el determinado cliente o no. experimento, el cálculo, dividiendo los datos en dos subconjuntos de distinta magnitud. Un Si la nomina es > 2000 siempre pagan el subconjunto para entrenamiento (66%) y otro préstamo. subconjunto para test (33%). Un hombre soltero, con nomina < 800 euros tiene

grandes probabilidades de no devolver un Esto puedo ocasionar problemas, es posible que préstamo. por azar, los datos de entrenamiento y test estén sesgados. Por lo tanto, la proporción entre las clases que existe en el conjunto de datos original, 4 Extensiones del data mining se intenta mantener en los conjuntos de entrenamiento y test. • Web mining: consiste en aplicar las

técnicas de minería de datos a documentos y servicios del Web. Todos - 99 - los que visitan un sitio en Internet dejan clasificación, categorización, etc. huellas digitales (direcciones de IP, Generalmente se utilizan palabras clave navegador, etc.) que los servidores para encontrar una página relevante. En automáticamente almacenan en una cambio, el text mining se refiere a bitácora de accesos (Log). Las examinar una colección de documentos y herramientas de Web mining analizan y descubrir información no contenida en procesan estos logs para producir ningún documento individual de la información significativa. Debido a que los colección; en otras palabras, trata de contenidos de Internet consisten en varios obtener información sin haber partido de tipos de datos, como texto, imagen, vídeo, algo. metadatos o hiperligas, investigaciones recientes usan el término multimedia data 5 CONCLUSIONES mining (minería de datos multimedia) Nuestra capacidad para almacenar datos ha como una instancia del Web mining para crecido en los últimos años a velocidades exponenciales. En contrapartida, nuestra tratar ese tipo de datos. Los accesos capacidad para procesarlos y utilizarlos no ha ido totales por dominio, horarios de accesos a la par. Por este motivo, el data mining se más frecuentes y visitas por día, entre presenta como una tecnología de apoyo para explorar, analizar, comprender y aplicar el otros datos, son registrados por conocimiento obtenido usando grandes herramientas estadísticas que volúmenes de datos. Descubrir nuevos caminos complementan todo el proceso de análisis que nos ayuden en la identificación de interesantes estructuras en los datos es una de del Web mining. las tareas fundamentales en el data mining. • Text mining: dado que el ochenta por ciento de la información de una compañía Las herramientas comerciales de data mining que existen actualmente en el mercado son variadas y está almacenada en forma de excelentes. Las hay orientadas al estudio del web documentos, las técnicas como la o al análisis de documentos o de clientes de categorización de texto, el procesamiento supermercado, mientras que otras son de uso de lenguaje natural, la extracción y más general. Su correcta elección depende de la necesidad de la empresa y de los objetivos a recuperación de la información o el corto y largo plazo que pretenda alcanzar. aprendizaje automático, entre otras, En resumen, el data mining se presenta como apoyan al text mining (minería de texto). una tecnología emergente, con varias ventajas: En ocasiones se confunde el text mining por un lado, resulta un buen punto de encuentro con la recuperación de la información. entre los investigadores y las personas de negocios; por otro, ahorra grandes cantidades de Esta última consiste en la recuperación dinero a una empresa y abre nuevas automática de documentos relevantes oportunidades de negocios. Además, no hay duda mediante indexaciones de textos, de que trabajar con esta tecnología implica cuidar

- 100 - un sinnúmero de detalles debido a que el producto final involucra "toma de decisiones".

6 REFERENCIAS

[1] “Introducción a la Minería de Datos” José Hernández Orallo, M.José Ramírez Quintana, Cèsar Ferri Ramírez Editorial Pearson, 2004. ISBN: 84 205 4091 9 [2] “Tendencias de la Minería de Datos en España” Raúl Giráldez, José C. Riquelme, Jesús S. Aguilar-Ruiz Red Española de Minería de Datos TIC2002- 11124-E . [3] Baker, R.S.J.d. Data Mining for Education. Encontrado en McGaw, B., Peterson, P., Baker, E. (Eds.) International Encyclopedia of Education (3rd edition). Oxford, UK: Elsevier [4] Artículo: “Data mining: torturando a los datos hasta que confiesen”. Luis Carlos Molina Felix. Universitat Politécnica de Catalunya.

- 101 -