INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir...

108
INTELIGENCIA EN REDES DE COMUNICACIONES Trabajos de la asignatura Curso 12-13 Departamento de Ingeniería Telemática Universidad Carlos III de Madrid

Transcript of INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir...

Page 1: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

INTELIGENCIA EN REDES DE COMUNICACIONES

Trabajos de la asignatura

Curso 12-13

Departamento de Ingeniería Telemática

Universidad Carlos III de Madrid

Page 2: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado
Page 3: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

INTELIGENCIA EN REDES DE COMUNICACIONES

Trabajos de la asignatura

Curso 12-13

Julio Villena Román Departamento de Ingeniería Telemática

Universidad Carlos III de Madrid [email protected]

ÍNDICE

1. Sudoku ...................................................................................... 1Daniel de la Casa Riballo, M .ª del Rocío Casco Muga

El juego del Sudoku se presenta como un problema de optimización que tiene una única solución. Se estudiarán sus orígenes y sus características, además de la aplicación de diversas técnicas de resolución de problemas y optimización.

Palabras clave: Sudoku, Optimización, Resolución de Problemas, Java.

2. Sistema Experto en Actividades de Ocio .................................. 10Sherezade Fraile Paniagua

Se ha diseñado un sistema basado en el conocimiento (SBC) en lenguaje CLIPS, que sugiera posibles planes de ocio según gustos. Básicamente se trata de un programa, que previo almacenamiento de un conjunto de actividades (en el programa como tal puede ya estar cargado), interactúa con el usuario para adquirir las características básicas de las actividades que le gustan. Tras ello, el programa realizará una búsqueda dentro del conjunto de actividades, para seleccionar aquellas que se ajustan a la información obtenida del usuario y mostrarla por pantalla..

Palabras clave: Sistemas expertos (SE), reglas, actividades de ocio, búsqueda.

- i -

Page 4: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

3. Project Glass: Realidad aumentada, reconocimiento deimágenes y reconocimiento de voz. .......................................... 18 Lucas García, Paloma Jimeno, Leticia Manso

Después de la presentación del Project Glass de Google sobre sus gafas derealidad aumentada nos planteamos las tecnologías necesarias para eldesarrollo de este dispositivo. Este es el objetivo del siguiente escrito,profundizar en las tecnologías de reconocimiento de voz y de imágenes yde su integración y utilización para un dispositivo de RealidadAumentada. Tras una breve introducción a cerca de las gafas de Google,se explicarán conceptos sobre realidad aumentada relacionándolas con elproyecto, sobre reconocimiento de imágenes y voz. Por último se haráuna mención sobre redes neuronales, base de las dos tecnologías dereconocimiento explicadas..

Palabras clave: Realidad aumentada, imagen virtual, GPS,marcadores, pantalla transparente, HDM, patrón, sensor, clasificador,OSR, biometría, RGB, entrenamiento, modelo oculto de Markov,aprendizaje inductivo, Redes Neuronales, Perceptrón Multicapa (MLP),Backpropagation.

4. Diseño e implementación de jugador virtual de Mentiroso ...... 33David Sandoval, Juan Antonio Fernández de Alba

En este documento se detalla el diseño y la implementación de un jugador virtual del conocido juego de cartas “Mentiroso”. Se analizará en detalle las técnicas y algoritmos utilizados en dicho diseño para dotar de capacidad de aprendizaje y decisión al jugador virtual.

Palabras clave: Partida, ronda, jugador virtual, jugador humano, levantar cartas, echar cartas, credibilidad, mentir, cartas verdaderas y cartas falsas.

5. Juego Mancala con algoritmo Minimax realizado con interfazgráfica en java .........................................................................42 Lucia Ruiz Ruiz, Artem Motsarenko, José Ángel León Calvo

En este documento vamos a realizar un juego basado en Mancala usandocomo algoritmo Minimax con poda alfa-beta y dos niveles de búsqueda.Estará realizado con lenguaje de programación Java y una interfazgráfica para que el usuario pueda jugar contra un usuario programado.

Palabras clave: Mancala, Minimax, Java, GUI, poda alfa-beta, Juegosde mesa.

6. Domótica ................................................................................ 50Javier García Martín, Eva Mansilla López

La Inteligencia artificial también comprende lo que se conoce como la Domótica la cual estudia la inteligencia de las casas. Sistemas que

- ii -

Page 5: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

realicen que las luces del pasillo se activen al pasar sin pulsar ningún interruptor, encender la calefacción mediante una simple llamada de teléfono, generar alarmas por la entrada de intrusos cuando no estamos en casa, persianas a través de la televisión con un mando a distancia, desde cualquier teléfono y esto sin requerir mayor esfuerzo sino simplemente por una maquina quien es capaz de recibir órdenes y actuar sin protestar, ni quejas.

Palabras clave: Domótica, sostenibilidad, vivienda inteligente, energética, confort, seguridad, ahorro, aprendizaje.

7. Técnicas para exploración de bases de datos ........................... 59Daniel Aceituno Gómez, Miguel Alcolea Sánchez

El objetivo del trabajo es conseguir las imágenes más parecidas a una dada dentro de una base de datos de 6600. Para ello se utilizarán dos técnicas de búsqueda, una de ellas basada en agrupamiento (k-medias) y otra según el criterio de mínima distancia (distancia Euclídea). La base de datos proporcionada está formada por siluetas de animales marinos. El código Matlab desarrollado debe ser capaz de encontrar los contornos más parecidos al de muestra, independientemente de la rotación, posicionamiento y escalado de éste.

Palabras clave: Clustering, Matlab, algoritmos de búsqueda, exploración de bases de datos.

8. Sistemas expertos: MAGERIT .................................................. 67Adrián García Diéguez, Jesús García Jiménez

En este documento vamos a explicar el significado de lo que es un Sistema Experto mediante el análisis de sus principales componentes y características. En concreto analizaremos el sistema experto MAGERIT basado en el análisis y gestión de riesgos de los sistemas de información de las administraciones públicas.

Palabras clave: Sistemas expertos (SE), gestión del riesgo, seguridad, activos, dominio.

9. Aplicaciones de la Minería de datos en las empresas ............... 77Silvia Briones Herranz

En este trabajo veremos la importancia de apoyarse en la minería de datos a la hora de la toma de decisiones en una empresa, basándose en el descubrimiento de información útil en las bases de datos para fundamentar mejor sus decisiones. Además analizaremos mediante dicha técnica un ejemplo ficticio de las ventas de consolas con el fin de encontrar las preferencias de los clientes y así conseguir hacer a las empresas más competitivas.

- iii -

Page 6: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Palabras clave: Minería de datos, base de datos, algoritmia, datos extraños.

10. Implementación de un agente autónomo en Super Mario ........85Pablo González Fernández, Alberto Chicharro Sobrino

En este documento se explica cómo se podría utilizar la teoría de resolución de problemas en un entorno controlado como es el mundo de Super Mario. La solución propuesta consta de un árbol de decisión, que en función de las variables de entrada que se le pasen por parámetro decidirá cuál es la mejor acción a llevar a cabo. Para la implementación de este agente inteligente se utilizan las librerías proporcionadas en [1].

Palabras clave: Mario Bros, agente inteligente, enemigos, escenario, algoritmo.

11. Inteligencia artificial aplicada a personas con discapacidad ... 94Alejandro E. Reyes Bascuñana, Javier Santofimia Ruiz

En este documento se intentara dar un vistazo general a las distintasformas en las que la Inteligencia Artificial puede ayudar a la integración,facilidad de acceso a la información y en general a la mejora de lacalidad de vida de personas que sufren una discapacidad física opsíquica..

Palabras clave: Deficiencia, discapacidad, minusvalía, ASIBOT, RAH,OCR, acceso, alternativo, aumentativo, movilidad, ambiental, virtual,BCI, P300.

- iv -

Page 7: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

SUDOKU

Daniel de la Casa Riballo Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid

Avda. De la Universidad, 30 28911, Leganés (Madrid-España)

[email protected]

M .ª del Rocío Casco Muga Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid

Avda. De la Universidad, 30 28911, Leganés (Madrid-España)

[email protected]

RESUMEN

El juego del Sudoku se presenta como un problema de optimización que tiene una única solución. Se estudiarán sus orígenes y sus características, además de la aplicación de diversas técnicas de resolución de problemas y optimización.

Categorías y Descriptores de Temas

[Java] Lenguaje de programación.

Términos Generales

Backtracking, Método Humano, Búsqueda Aleatoria, Exact Cover, Búsqueda Tabú, Algoritmos Genéticos.

Palabras Clave

Sudoku, Optimización, Resolución de Problemas, Java.

1. INTRODUCCIÓN

El Sudoku es un juego que consiste en un tablero de R x C casillas, donde R nota el número de filas y C el número de columnas. El tablero está dividido en un número k de bloques de tamaño r x c (con r = √𝑅 y c = √C ) en los que colocaremos r x c elementos diferentes.

Figura 1 : Sudoku 9x9 en blanco, remarcando las 9 casillas que forman un bloque.

El objetivo del Sudoku en su versión clásica, y más popular, es rellenar una cuadrícula de 81 casillas, en 9 filas y 9 columnas, divididas en cajas de 3x3, con los números del 1 al 9. Al rellenar el Sudoku debemos conseguir que no se repita ningún número en las filas, columnas y tampoco en las cajas de 3x3. Un Sudoku estará bien planteado si su solución es única.

Sin embargo, también podemos encontrar otras versiones de Sudokus con diferentes restricciones, variantes respecto a la colocación de los bloques, e incluso utilizando conjuntos de elementos que no sean exclusivamente numéricos.

Figura 2 : Sudoku 9x9 en blanco, con bloques de 9 casillas asimétricos.

Hay que tener en cuenta que los Sudokus vienen con un conjunto de valores numéricos ya incluidos, denominados pistas. Las pistas no son colocadas en orden aleatorio. El número de pistas incluidas inicialmente en el Sudoku nos determinará su nivel de dificultad. Aunque la dificultad también está relacionada con el tiempo que toma encontrar la solución.

-1-

Page 8: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

1.1 Historia El juego del Sudoku tiene sus orígenes en civilizaciones antiguas como la china o la árabe. En estas civilizaciones existían unos juegos denominados “cuadrados mágicos” a los que se les atribuía propiedades especiales, siendo utilizados en los campos de la Astrología y el Esoterismo.

El origen más antiguo de los cuadrados mágicos se encuentra en una leyenda china, datada del año 2200 a.C., la cual se denominaba “Lo Shu”. Dicho nombre significa “hoja de río”, y la leyenda cuenta que el emperador chino vio salir una gran tortuga del río Amarillo. La historia tenía que ver con un sacrificio al dios del río, ya que el rio se desbordaba e inundaba los campos sembrados, perjudicando la economía del país.

Figura 3: Representación del caparazón de la tortuga y la equivalencia de cada uno de los números que forman el cuadrado mágico.

La tortuga en su caparazón tenía pintados en forma de cuadrado los números del 1 al 9. Lo sorprendente era que el resultado de la suma tanto en horizontal como en vertical era siempre el mismo. En ese momento el emperador le dio una interpretación mística y sagrada a la tortuga, la consideraba como un presagio para su país, ya que simbolizaba la longevidad y la protección.

Debido a este presagio el emperador empezó a levantar palacios con una distribución en cuadrícula semejante a la encontrada en el caparazón de la tortuga sagrada. La suma de los números coincidía con el número de días que tiene cada uno de los 24 ciclos lunares del año chino.

La idea del cuadrado mágico fue transmitida a los árabes por los chinos. En la Enciclopedia del año 990 realizada por un grupo de eruditos árabes muestra una lista de cuadrados de todos los órdenes desde 3 a 9. En 1225 Ahmed al-Buni mostró como construir cuadrados mágicos mediante una técnica de bordeado.

La primera aparición del cuadrado mágico en la literatura islámica se da en el Jabirean Corpus. Este libro recomendaba los cuadrados mágicos como hechizos para facilitar el nacimiento de los niños. Dichos cuadrados consistían en 9 celdas con los números del 1 al 9 ordenados con 5 en el centro de forma que el contenido de cada fila, columna y las dos diagonales sumaran 15. Los cuadrados mágicos pudieron ser introducidos en Europa a través de España durante el siglo XII.

El concepto de cuadrados latinos se conoce desde los tiempos medievales, aparecieron con manuscritos árabes del siglo XIII. Dicho cuadrado contiene celdas en el cual cada fila y cada columna tiene el mismo conjunto de símbolos, a diferencia del cuadrado mágico, en el cual no hay repetición.

En 1776 Euler mostraba como construir cuadrados mágicos con un cierto número de celdas, en particular 9, 16, 25 y 36. Euler puso en una rejilla letras en latín y lo llamó cuadrado latino. Más tarde añadió letras griegas y de ahí que surgiera el cuadrado greco-latino.

En sus últimos años Euler encontró el problema de combinar dos conjuntos de n símbolos de manera que en ninguna fila o columna se repitieran una pareja de símbolos.

Otro ejemplo en el cual se muestra un cuadrado mágico de orden 4 es en la fachada de la Pasión del Templo Expiatorio de la Sagrada Familia en Barcelona, diseñada por el escultor Josep María Subirachs.

La constante mágica del cuadrado es 33, la edad de Jesucristo en la Pasión. Estructuralmente dos de los números del cuadrado (el 12 y el 16) están disminuidos en dos unidades (10 y 14) con lo que aparecen repeticiones. Esto permite rebajar la constante mágica en 1.

Figura 4: Cuadrado mágico en la fachada de la Sagrada Familia en Barcelona.

El Sudoku es en realidad un caso especial de los cuadrados latinos. El Sudoku impone la restricción adicional de que los subgrupos de 3*3 deben contener también los dígitos del 1 al 9. Este tipo de rompecabezas se publicó por primera vez a finales de las décadas de los 70 en la revista “Math Puzzles and Logic Problems” de Dell Magazines. El nombre que dio Dell a este rompecabezas fue “Number Place”. Dell tomó el concepto de Euler de cuadrado latino y lo aplicó a una rejilla de 9*9 con la adición de 9 cajas, cada una de ellas contiene los números del 1 al 9.

-2-

Page 9: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

En 1984, Nikoli, la compañía líder en creación de puzles de Japón descubrió el “Number place” y decidió mostrarlo a los fans japoneses de los rompecabezas. En 1986, después de añadir varias mejoras, sobretodo creando patrones simétricos y reduciendo el número de pistas dadas, el Sudoku se convirtió en uno de los rompecabezas más vendidos en Japón.

Cuando se dieron cuenta de que uno de los principales problemas era el nombre tan largo que tenía inicialmente Suuji Wa Dokushin Ni Kagiru (los números deben existir sólo una vez), el presidente de Nikoli, lo abrevió a Sudoku (Su = número; Doku = único, soltero).

Dos años después, los japoneses introducen dos innovaciones que lleva el juego a una mayor popularidad en el país del Sol Naciente, el número de las cifras no puede pasar de 30 y las cuadrículas se hacen simétricas, es decir, que las cifras están distribuidas de forma rotatoria y simétrica en las casillas, lo que concede al conjunto un aspecto más estético.

En 1997 Wayne Gould, juez neozelandés, durante una visita a Hong Kong lo descubrió y preparó algunos Sudokus para el diario británico “The Times”.

Figura 5: Muestra de la fiebre del Sudoku que se vivió a partir del año 2005.

Gould que creó un programa de ordenador que generaba Sudokus de diferentes niveles de dificultad, no pedía dinero por los rompecabezas. El Times decidió darle una oportunidad y publicó en 2004 su primer Sudoku. La publicación de un Sudoku en el “London Times” fue solo el principio de un enorme fenómeno que rápidamente se extendió por toda Gran Bretaña y países como Australia y Nueva Zelanda. Tres días después, el “Daily Mail” empezó a publicar Sudokus. El Daily Telegraph de Sydney los siguió en 2005.

A finales de 2005 el rompecabezas se publicaba de forma regular en varios periódicos. Además el Sudoku fue incluido diariamente

en el teletexto del Canal 4. La BBC Radio comenzó a leer los números en voz alta en la primera versión radiofónica del Sudoku.

La revista “Teachers”, financiada por el gobierno, recomienda el Sudoku como un ejercicio mental en las clases y se ha insinuado que la resolución de Sudokus puede ayudar a frenar la progresión de enfermedades como el Alzheimer.

El sudoku completó el círculo volviendo a Manhattan como un elemento habitual del New York Post. La moda del Sudoku a otras partes de EEUU cuando tanto el “The Daily News” como el “USA today” lanzaron Sudokus el mismo día.

Hoy en día hay clubes de Sudoku, chats, libros de estrategia, vídeos, juegos para móviles, juegos de cartas, competiciones e incluso un programa de televisión. El Sudoku ha aparecido en los periódicos de todo el mundo y se le describe en los medios de todo el mundo como “el cubo Rubik” del siglo XXI y como el “rompecabezas” que más rápido ha crecido del mundo.

2. RESOLUCIÓN DEL SUDOKU MEDIANTE ALGORITMOS

El Sudoku tiene asociado dos problemas básicos: la generación de tableros válidos y la búsqueda de una solución que lo solucione. Respecto a la generación de un tablero válido, se dice que existen dos alternativas, una de las cuales es mantener almacenados en una base de datos un conjunto de tableros que se conocen de antemano como válidos y realizar una carga aleatoria de los mismos. La segunda forma es desarrollar un algoritmo capaz de generar los tableros por sí mismos.

Pero en esta sección nos vamos a centrar a la búsqueda de una solución, dicha solución está demostrado que se trata de un problema NP-completo, con lo cual no se ha descubierto hasta hoy un algoritmo que le de solución en un tiempo polinomial. Sin embargo, el Sudoku se ha convertido en uno de los problemas principales de estudio de los programadores, los cuales siguen desarrollando formas de resolución cada vez más eficientes. A continuación explicaremos los más conocidos.

2.1 Técnica Backtracking El algoritmo implementado con esta técnica se denomina en realidad “Branch -&- Bound” o ramificación y poda, es uno de los más elogiados por los programadores debido a la velocidad con la que encuentra la respuesta. Sin embargo, para los investigadores se trata del menos útil a causa de su ineficiencia.

Dicha técnica se basa en un algoritmo de búsqueda en el cual se explora un árbol de soluciones en anchura o profundidad. Una de las alternativas de esta técnica es la de emplearlo en su forma más primitiva, que es la de un algoritmo de fuerza bruta.

En este caso el algoritmo se encargará de probar en cada casilla, y a partir de una casilla inicial, cada uno de los valores disponibles, analizando inmediatamente la validez de la decisión tomada. Si la

-3-

Page 10: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

solución parcial no satisface las condiciones de la Regla Única, el algoritmo retrocederá (backtrack) al nivel de búsqueda anterior y generará otro tablero, con el siguiente valor disponible ubicado en la posición última de análisis. Este proceso se repetirá hasta concretar el análisis de la última casilla, con lo cual el costo computacional será de 𝑛(𝑅×𝐶)−𝑝, con “n” igual al número de valores posibles, “R” el número de filas, “C” el número de columnas y “p” el número de casillas con pista. A este costo se debe agregar, también, el de cada consulta de validez con lo cual el número es extremamente grande.

Para determinados tableros, entonces, el algoritmo tardará mucho tiempo, aún con el hardware actual. La ventaja, sin embargo, radica en que el algoritmo devolverá, tarde o temprano, la solución esperada. En la siguiente figura mostramos el espacio de soluciones para un pequeño Sudoku de ejemplo de 22 × 22 casillas, con 𝑁 = {1,2,3,4} .

Figura 6: Espacio de soluciones (acotado) para un tablero sudoku de 4 x 4 de ejemplo. Obsérvese que el algoritmo de backtracking no expande los nodos que no son válidos, y corta la búsqueda al encontrar la solución.

Otro de los algoritmos basados en backtracking consiste en relacionar la búsqueda de una solución a un tablero Sudoku con el cásico problema de coloreo de grafos. Un grafo G = ⟨V, E⟩ es una estructura formada por un conjunto de vértices “V” y un conjunto de aristas o arcos “E” que los unen. El problema de coloreo de grafos es un problema NP, y consiste en hallar la cantidad mínima de colores necesarios para colorear cada vértice del grafo, teniendo en cuenta que dos vértices adyacentes (unidos entre sí por un arco) no pueden ser coloreados de la misma forma.

Si tenemos en cuenta que el conjunto de colores será el de los valores que se utilizan para completar el Sudoku, el quid de esta relación radica en hallar una forma para representar el tablero Sudoku con un grafo tal que cumpla las condiciones del problema de coloreo. Sea “V” el conjunto de vértices de nuestro grafo. Si consideramos 𝑉 = {(𝑖, 𝑗), 0 ≤ 𝑗, 𝑖 ≤ 9} (es decir, tomamos cada casilla del tablero como un vértice del grafo), podemos construir “E” (el conjunto de aristas o arcos) de acuerdo al siguiente criterio: “dos vértices u y v están unidos por un arco no dirigido (u,v) sí y solo sí u y v comparten la misma fila, columna o bloque”. En la siguiente figura se observa, para el Sudoku del ejemplo anterior, cómo queda conformado el subgrafo de vértices adyacentes para la casilla siguiendo el criterio enunciado.

Figura 7: Subgrafo creado a partir de las casillas relacionadas con la (1,1). Se omitieron los vínculos entre todos los demás vértices por cuestiones de prolijidad.

Luego, dicho algoritmo debe solo recorrer el grafo obtenido coloreando de forma válida cada uno de los vértices, a partir del conjunto “N” de colores o de cifras del sudoku. En nuestro caso no tendremos que encontrar el conjunto mínimo de colores, sino buscar un coloreo válido para el grafo. Como todo tablero Sudoku debe admitir una y sólo una posible solución, queda asegurado que si el tablero es válido, el algoritmo devolverá un resultado satisfactorio en un tiempo exponencial, cuya expresión es una función de la cantidad de vértices que restan por colorear (cantidad de casillas vacías) y de la cantidad de colores disponibles (cantidad de valores con los que puede completarse una casilla).

2.2 Método Humano Este método de resolución es muy interesante para utilizarse algorítmicamente, ya que permite deducir cómo el usuario podría resolver un Sudoku por su cuenta.

En la revista “NAW” se publicaron siete reglas básicas para el desarrollo del análisis humano. Entre ellas, una de las más simples y utilizadas “baby steps” que dice que cuando se conocen ocho cifras de una misma fila, columna o bloque, el dígito restante es el que ocupa la última casilla libre. Otra de las reglas es “singles” la

-4-

Page 11: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

cual expresa que cuando hay un solo lugar por elementos dado en una columna, fila o bloque, o cuando hay solo un dígito que puede ir en un bloque dado, escribirlo allí. Por último otra de las reglas es “pair markup” que dice que si en una casilla pueden ir dos o más valores posibles, escribirlos como subíndices de tal forma que puedan realizarse los análisis correspondientes en el resto del Sudoku, si se produce una contradicción al considerar uno de los dígitos, entonces se detendrá el análisis de ese y probar con alguno de los restantes.

Esta demostrado que siguiendo estos tres pasos más los otros cuatro de una complejidad mayor puede encontrarse la solución a cualquier Sudoku. La dificultad que presenta este algoritmo es que su complejidad temporal es muy difícil de calcular con exactitud, puesto que los pasos deben ejecutarse en un orden lineal y, cuando se utiliza el método de nivel inferior, deben repetirse todos los anteriores.

Por este motivo la solución de algunos tableros se alcanza en tiempos mínimos, mientras que para otros el análisis puede ser mucho más largo. Por último podemos afirmar que la eficiencia del algoritmo dependerá de la estrategia utilizada para la codificación de los pasos. Este método se utiliza para calcular la dificultad de los Sudokus que se publican en libros y revistas para su resolución a mano.

2.3 Búsqueda Aleatoria La búsqueda aleatoria es otro de los métodos que pueden seguirse para encontrar el resultado de un Sudoku. La estrategia consiste en primero, comenzar aleatoriamente colocando números en las casillas vacías del tablero, y calcular luego el número de errores cometidos. Después de esto se intercambian los números insertados a lo largo del tablero hasta que la cantidad de errores se reduzca a cero. Cuando se llegue a esto, se habrá llegado a la solución.

La ventaja de este método, es que el tablero no tiene que ser “soluble lógicamente” para que el algoritmo pueda resolverse. Es decir, que los tableros con los que se prueba el algoritmo no deben ser especialmente construidos de tal forma que se provean suficientes pistas al usuario como para completarlo usando lógica encadenada solamente. Dicho método es el menos usado, debido a que trata de una búsqueda nada sistemática y con bastante azar.

2.4 Exact Cover El Sudoku puede describirse en términos de un caso particular del problema de “Exact Cover”, o recubrimiento exacto. Este método es un problema NP completo que consiste en, dado un universo de elementos y una colección de subconjunto, hallar una subcolección tal que cada elemento esté exactamente en un conjunto.

Por tratarse de un problema que no se resuelve en un tiempo polinomial, pueden plantearse soluciones por aproximación o definirse un algoritmo de backtracking que le de respuesta. Como alternativa a estas dos opciones el Dr. Donald Knuth publicó un algoritmo que recibe el nombre de “Dancing Links” que resuelve el problema de “Exact Cover”, obviamente en un tiempo exponencial.

La relación entre la resolución de Sudokus y el problema de “Exact Cover” se basa en definiciones de conjuntos y en términos matemáticos.

2.5 Búsqueda Tabú La Búsqueda Tabú es una técnica de optimización combinatoria que utiliza conceptos de memoria adaptativa y exploración sensible. La exploración sensible de Búsqueda Tabú se basa en la idea de que una mala decisión tomada por una estrategia produce más información que una buena selección realizada de forma aleatoria. Implementa una estrategia de búsqueda local para explorar de forma eficiente el espacio entorno una configuración. Cada solución tiene asociado un conjunto de vecinos. Con esta estructura se permite pasar a la mejor opción vecina, o si ya estamos en la mejor vamos a la menos peor, donde se aplica de nuevo búsqueda local sobre la nueva vecindad en busca del óptimo. En cada paso deben analizarse todos los vecinos (al menos un conjunto grande de ellos), por lo que es un método de alto coste computacional.

La configuración inicial se genera rellenando cada columna con los números faltantes, de forma que no se repitan los números en ninguna columna. Esta configuración inicial no cumplirá normalmente con la condición de las filas y de los subcuadros.

El vecindario para una configuración se define según las siguientes estrategias:

1) Cambiar un número repetido en una columna por un número que no esté en esa columna.

2) Cambiar un número repetido en una fila por un número que no se encuentre en esa fila.

3) Cambiar un número repetido en un subcuadrado por otro que no aparezca en ese subcuadro.

4) Intercambiar en una misma columna los números de dos celdas.

5) Intercambiar en una misma fila los números de dos celdas.

En lugar de evaluar la función objetivo recorriendo el cuadro completamente para analizar el número de repeticiones por filas, columnas o subcuadros, se realiza una estimación de la variación de la función objetivo para un vecino partiendo de la función objetivo de la configuración actual, ahorrando en tiempo computacional. La estimación de la función objetivo se realiza de acuerdo al tipo de variación hecha para llegar a la configuración vecina.

2.6 Algoritmos Genéticos Los algoritmos genéticos son una técnica de búsqueda a través del espacio de soluciones del problema (configuraciones). Inicialmente fue idealizado usando los mecanismos de la evolución de la genética natural. Este algoritmo inicia con la selección de una población inicial. Después, realiza un proceso de selección entre las configuraciones para permitirles participar en la generación de nuevos

-5-

Page 12: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

descendientes, para después formar parejas para ser sometidas a un proceso de recombinación. Finalmente se realiza un proceso de mutación que altera los elementos de algunas configuraciones. Este proceso tiene como finalidad generar diversidad en la población y está controlado por un parámetro llamado tasa de mutación que determina cuantos cambios se realizarán sobre la población. Tras finalizar este proceso obtenemos los elementos de la nueva generación.

El buen desempeño del algoritmo depende de la selección adecuada de los parámetros de control (tamaño de la población inicial, tasa de recombinación y de mutación) y la forma en la que se realiza la selección, recombinación y mutación. El algoritmo aplicado a l Sudoku consta de las siguientes etapas:

1) Codificación del problema: Cada configuración del problema es una matriz con números entre el 1 y 9. En nuestra representación, cada individuo o cromosoma se representa con un array de 9 genes de 9 elementos cada uno. Cada gen es una fila del tablero.

Figura 8: Codificación del problema

2) Población inicial: Las posiciones fijas del tablero se

mantienen como están, pero las posiciones vacías se representan como 0. Se genera de forma aleatoria para cada celda en blanco del problema un número entre 1 y 9 sin generar elementos repetidos dentro de una fila (gen). El proceso se repetirá para cada configuración de la población.

3) Cálculo de la función objetivo: Debe reflejar la cantidad de

números que se repiten por fila, columna y subcuadro. Esto se realiza de forma más eficiente determinando qué números faltan en cada fila columna o subcuadro.

Figura 9: Números que faltan en cada fila, cada columna y cada subcuadro.

4) Proceso de selección: Es proporcional y realizado mediante el

método de la ruleta. Para ello se utiliza una función de adaptación que garantiza selectividad y transforma el valor de función objetivo original de minimización a maximización.

𝐹𝑎𝑖 = max(𝐹0���) ∙ 𝑘 − 𝐹0𝑖 Donde: 𝐹𝑎𝑖: Función de adaptación del individuo i-ésimo. 𝐹0���: Vector función objetivo de los individuos. 𝑘: Tasa de adaptación (k>1).

5) Proceso de recombinación: Se realiza de tal manera que se conservan las mejores características de las soluciones anteriores. Como el proceso de la población se mantiene constante, cada pareja de padres tendrá dos hijos: el primero tendrá los mejores subcuadros de los dos progenitores (aquellos que tienen menos repeticiones) y el segundo tendrá las mejores filas o columnas de los dos, seleccionando aleatoriamente con la misma probabilidad de ocurrencia.

6) Proceso de mutación: Se realiza para generar diversidad. La solución es única y debe explorarse adecuadamente el espacio de soluciones. Se pueden realizar cuatro tipos de mutaciones: intercambio de dos elementos en una fila, intercambio de dos elementos en una columna, intercambio de dos elementos en un subcuadro y reemplazo de un número de individuo por otro número generado de forma aleatoria entre 1 y 9.

Figura 10: Ejemplo de mutaciones

Además, para no perder el rastro de búsqueda, si en la población nueva no hay un individuo mejor o igual a la incumbente, se reemplaza el peor individuo de la población por la mejor solución encontrada. En caso de no encontrar solución, el proceso para cuando un número predefinido de iteraciones se alcanza.

3. ALGORITMO DE BACKTRACKING PARA EL SUDOKU EN JAVA

Con el algoritmo backtracking implementamos una técnica de resolución de problemas mediante una búsqueda sistemática de soluciones.

-6-

Page 13: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Para optimizar el backtracking se descompone cada tarea en tareas parciales y se prueba de manera sistemática cada una de estas subtareas.

Cuando al elegir una tarea comprobamos que no lleva a una solución, volvemos hacia atrás y probamos con una nueva.

El siguiente fragmento de código Java comprueba utilizando backtracking si a través de una serie de pistas podemos obtener una solución de un Sudoku, o si no existe solución para esas pistas.

public class Sudoku { public static final int DIMENSION =9; public static void main(String[] args){ int[][] tablero= new int[][] { {0,7,0, 0,0,0, 0,8,0}, {0,5,0, 6,0,0, 0,0,1}, {0,0,3, 1,4,0, 0,0,0}, {9,0,6, 0,5,0, 3,0,0}, {0,0,0, 0,0,0, 0,0,0}, {0,0,5, 0,2,0, 1,0,7}, {0,0,0, 0,6,5, 7,0,0}, {3,0,0, 0,0,1, 9,2,0}, {0,4,0, 0,0,0, 0,1,0}, }; imprimir(tablero); if(!resolver(tablero)){ System.out.println("El Sudoku no tiene solución"); } } public static void imprimir(int[][] tablero){ for(int i=0;i<DIMENSION;i++){ if(i%3==0){ System.out.println(); } for(int j=0; j<DIMENSION;j++){ if(j%3==0){ System.out.print(" "); } System.out.print(tablero[i][j]); } System.out.println(); } } public static boolean resolver(int[][] tablero){ for(int i=0; i<DIMENSION; i++){ for(int j=0; j<DIMENSION; j++){ if(tablero[i][j]!=0){ continue; } for(int k=1;k<=9;k++){

if(esPosibleInsertar(tablero,i,j,k)){ tablero[i][j]=k; boolean b=resolver(tablero); if(b){ return true; } tablero[i][j]=0; } } return false; } } System.out.println("Encontrada solución:"); imprimir(tablero); return true; } public static boolean esPosibleInsertar(int [][] tablero, int i, int j, int valor){ //Comprueba columna for(int a=0; a<DIMENSION; a++){ if(a!=i &&tablero[a][j]==valor){ return false; } } //Comprueba fila for(int a=0; a<DIMENSION; a++){ if(a!=j &&tablero[i][a]==valor){ return false; } } //Comprueba cuadardo int y= (i/3)*3; int x= (j/3)*3; for(int a=0; a<DIMENSION/3;a++){ for(int b=0;b<DIMENSION/3;b++){ if(a!=i &&b!=j&&tablero[y+a][x+b]==valor){ return false; } } } return true; } }

-7-

Page 14: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Utilizando este ejemplo, obtenemos como resultado la solución del Sudoku:

Figura 10: Solución del Sudoku en Java mediante backtracking.

Podemos comprobar un ejemplo en el cual no obtengamos solución para el Sudoku. Para ello, modificamos en el código el tablero, obteniendo la siguiente solución:

Figura 11: Sudoku sin solución implementado en Java mediante backtracking.

4. CONCLUSIONES

Se planteo el Sudoku, como un problema de optimización que presenta características de alta complejidad matemática, como la presencia de una solución única y se propone un modelo matemático.

La estrategia de búsqueda local que implementa “Búsqueda Tabú” permite salir de configuraciones que tienen pocas repeticiones pero en las que pequeños cambios muestran un empeoramiento en la solución (óptimo locales). Al prohibir movimientos en celdas modificadas recientemente se consigue escapar de esos óptimos locales.

El proceso de cruzamiento empleado por el algoritmo genético, da prioridad a las mejores configuraciones y extrae sus mejores atributos para generar la nueva población. Este comportamiento hace que el método no se desvíe y siempre trate de mejorar la solución durante el proceso de búsqueda.

El sudoku tiene solución única, lo que significa que no se consideran soluciones válidas los tableros con situaciones cercanas a la solución. En este sentido, el Sudoku no parece un problema adecuado para resolver utilizando un algoritmo genético; pero si es un problema muy útil para experimentar con diferentes operadores genéticos sobre permutaciones, dado su alto grado de dificultad.

Los algoritmos de backtracking se caracterizan por permitirnos obtener la solución a todo problema de satisfacción de restricciones o de optimización. El costo computacional, sin embargo, está acotado en O (𝑛𝑘), con n representando la cantidad de hijos de cada nodo y k la cantidad de niveles del espacio de soluciones.

Como se ha dicho antes, nuestros tableros sudokus están formados por 81 casillas, y hasta hoy se han descubierto sudokus que pueden ser resueltos por el ser humano si tienen un mínimo de 17 pistas. Si consideramos que n es la cantidad de casillas modificables de un tablero y que k representa la cantidad de valores posibles que pueden ocupar una celda, el costo final de un algoritmo de backtracking sin poda es O (981−17) = O (964).

Ahora bien, las podas implementadas en nuestro algoritmo de backtracking nos permiten reducir la complejidad temporal significativamente, de acuerdo a un criterio que depende de forma exclusiva de las características de los tableros. Esto es, cuanto mayor sea la densidad de pistas en las primeras celdas del sudoku, el número de iteraciones se disminuirá. De la misma forma, si los primeros valores de la solución son altos y no están dados como pistas, el número de iteraciones necesarias se incrementará.

-8-

Page 15: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

5. REFERENCIAS

[1] Historia de los Cuadrados Mágicos http://www.portalplanetasedna.com.ar/cuadrados_magicos3.htm

[2] Los Cuadrados Mágicos http://eloviparo.wordpress.com/2010/04/19/los-cuadrados-magicos/

[3] Historia del Sudoku http://www.playsudoku.biz/historia-sudoku.aspx

[4] Historia del Sudoku http://www.articles3k.com/es/405/28951/La-historia-de-Sudoku/

[5] Historia del Cuadrado Mágico de la Sagrada Familia http://es.wikipedia.org/wiki/Cuadrado_m%C3%A1gico#El_cuadrado_m.C3.A1gico_de_la_Sagrada_Familia

[6] Hal 9000 contra los Sudokus Mutantes http://www.linux-magazine.es/issue/13/Sudokus.pdf

[7] Algoritmos de Backtracking http://ocw.uc3m.es/ingenieria-informatica/programacion/transparencias/tema7.pdf

[8] Algoritmo Genético http://www.cesfelipesegundo.com/revista/articulos2007b/Articulosudoku.pdf

[9] Wikipedia. Sudoku. http://en.wikipedia.org/wiki/Sudoku. [10] Enumerating possible Sudoku grids www.afjarvis.staff.shef.ac.uk/sudoku/sudoku.pdf

[11] Conceptos matemáticos del Sudoku http://en.wikipedia.org/wiki/Mathematics_of_Sudoku [12] Algoritmos para resolver Sudokus http://en.wikipedia.org/wiki/Algorithmics_of_Sudoku

-9-

Page 16: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Sistema Experto en Actividades de Ocio

Sherezade Fraile PaniaguaIngenierıade Telecomunicacion

Universidad Carlos III

Avda. de la Universidad, 30

28911, Leganes

[email protected]

7 de diciembre de 2012

Resumen

Se ha disenado un sistema basado en el conocimiento(SBC) en lenguaje CLIPS, que sugiera posibles planes deocio segun gustos.

Basicamente se trata de un programa, que previo alma-cenamiento de un conjunto de actividades (en el programacomo tal puede ya estar cargado), interactua con el usua-rio para adquirir las caracterısticas basicas de las activi-dades que le gustan. Tras ello, el programa realizara unabusqueda dentro del conjunto de actividades, para selec-cionar aquellas que se ajustan a la informacion obtenidadel usuario y mostrarla por pantalla.

Categorıa

Sistema Experto y Aplicaciones

Palabras clave

Sistema Experto, CLIPS, reglas, actividades de ocio,busqueda.

1. Introduccion

Creado en 1985, CLIPS (C Language Integrated Sys-tem) provee una herramienta para manejar una amplia va-

riedad de conocimientos. Esta basado en las reglas, y esde tipo procesal.

La programacion basada en reglas, permite que el cono-cimiento sea representado como heurıstica, es decir, espe-cifican un sistema de acciones que se realizaran para unasituacion dada.

Se trata de un lenguaje caracterizado por:

Portabilidad: Capaz de ser instalado en muchos ydiversos sistemasoperativos sin cambios en el codi-go.

Integracion/extensibilidad: Se puede integrar conlenguajes tales como C,Java, FORTRAN y ADA.Ademas se puede ampliar facilmente por un usuariocon el uso de varios protocolos bien definidos.

Bajo costo:Se trata de un software de dominio pu-blico

Probablemente CLIPS se tratedel sistema experto masampliamente usado sobre todo debido a que es rapido,eficiente y gratuito. Aunque ahora es de dominio publi-co, aun es actualizado y mantenido por su autor original,Gary Riley.

-10-

Page 17: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

2. Descripcion del proyecto

2.1. Identificacion

El primer paso es saber en que consiste el problema,pensar en si es apropiado para resolverlo con un SBC, yencontrar fuentes de conocimiento que ayuden a solucio-narlo.

Cuando como en este caso, no existe una solucion al-gorıtmica adecuada facil, es necesario usar un sistema ex-perto. Por tanto, el problema es apropiado para ser resuel-to por un SBC.

2.2. Fuentes de informacion

Como el tema es bastante sencillo para casi cualquierpersona, los ”expertos” hemos sido nosotros mismos, yaque conocemos bastantes actividades de ocio.

Para la parte tecnica, hemos consultado programas pa-recidos, como el sistema experto de ”reparacion de averıasde coche”

2.3. Descripcion del problema

Al final, nuestro problema queda en:

1. Preguntar datos sobre el usuario.Estos incluyen, co-mo mınimo:

si quiere gastar mucho o poco

si va o no en grupo

que actividades le gustan y cuales no le gustan

2. Buscar entre las actividades existentes, aquellas quese ajustan.

3. Escribir en pantalla el resultado.

2.4. Conceptualizacion

Es importante describir que elementos tiene el proble-ma, y que relacion hay entre ellos.

2.5. Conceptos

Una actividad necesita tener:

Nombre:Dato mostrado en la pantalla final.

Tipo: Se indica en que categorıa de las quese pre-gunta se encuentra: cultural, entretenimiento, gas-tronomica, aventura, deportiva o parque tematica.

Costo: Se indica si la actividad requiere un precioalto o no.

Grupal: Si es apropiada para ir en grupo o no.

Recomendada:Nos indicara si laactividad se ajustaa los gustos, y que esta actividad ya ha sido recomen-dad una vez, por lo que no la volvera a recomendarotra vez durante la ejecucion.

Una persona tiene:

Presupuesto

Si va en grupo o no

Gustos sobre actividades

2.6. Preguntas

Tras pensar en diversas soluciones, la mejor opcionconsiste en agrupar mucha informacion bajo una sola pre-gunta, de ahı que se trabaje con preguntas genericas.

Ademas, se hacen preguntas fijas: si va en grupo, si leimporta el precio, . . .

2.6.1. Cantidad de informacion

En algunas preguntas, la respuesta nos sirve para orien-tar las proximas preguntas: la pregunta ”¿Prefieres un ac-tividad tranquila?” nos indica si tenemos que consultarlesobre actividades de caracter sosegado o vivaz. Esta re-lacion de hechos esta basada en el conocimiento que seposee, y naturalmente no cumple los gustos de todos losusuarios, pero sı de la mayorıa. En esta parte es cuandoel conocimiento del problema nos ayuda a simplificar lainformacion.

-11-

Page 18: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Esquema de las preguntas:

¿Contamos con un presupuesto alto (si/no)?

¿Se trata de una actividad individual (si/no)?

¿Quieres una actividad tranquila (si/no)?

• Sı

◦ ¿Te gustan lasactividades culturales(si/no)?

◦ ¿Te gustan las actividades de entreteni-miento (si/no)?

◦ ¿Te gustan las actividades gastronomicas(si/no)?

• No

◦ ¿Te gustan las actividades de aventura(si/no)?

◦ ¿Te gustan las actividades deportivas(si/no)?

◦ ¿Te gustan los parques tematicos (si/no)?

Todas las preguntas nos aportan informacion concretapara la funcionalidad de nuestro programa, ya sea para eldescarte o la seleccion de actividades.

2.7. Condiciones que se comprueban

Para decir si una actividad es buena, se comprueban enese orden, las distintas condiciones:

1. La actividad es apta para tu bolsillo.

2. La actividad es apropiada para tu tamano de grupo.

3. La actividad es del tipo que le gusta.

Si finalmente no se ha encontrado ninguna actividadque se ajuste, se mostrara un mensaje en pantalla para in-dicarlo.

2.8. Incertidumbre

Toda la informacion que se obtiene es fiable, consisten-te, fija (excepto un atributo que indica si una actividad esapta o no, el resto no cambia con el tiempo), y precisa.

En ningun momento tenemos que corregir las decisio-nes tomadas, porque se trabaja siempre con hechos segu-ros.

Sin embargo, hay que tener en cuentra que a la horade introducir una actividad en el sistema, las premisas pa-ra senalar si una actividad es grupal o individual, cara obarata,. . . son una abstraccion de un criterio personal.

3. Implementacion

Como se indico anteriormente, se ha creado un progra-ma en lenguaje CLIPS, caracterizado por estar basado enreglas para la representacion del conocimiento, ademas depor su portabilidad e integridad.

En el programa encontramos distintas partes, para unamejor comprension:

En la partedeffunction, se han definido las funcio-nes correspondientes a la impresion de las preguntas y suanalisis (sera admisible solo un ”s” como respuesta afir-mativa o una ”n” como respuesta negativa).

En defftemplates, se definen 3 ”clases”.

Actividad: En un objeto inicialmente vacio de estaclase sera donde seintroducira la informacion obte-nida mediante las diferentes preguntas (cada pregun-ta modificara el valor por defecto de cada uno de losslots).

(deftemplate actividad(slot presupuesto (type SYMBOL)

(allowed-values si no nose)(default nose))

(slot individual (type SYMBOL)(allowed-values si no nose)(default nose))

(slot tranquila (type SYMBOL)(allowed-values si no nose)(default nose))

(slot cultural (type SYMBOL)

-12-

Page 19: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

(allowed-values si no nose)(default nose))

(slot entrenamiento (type SYMBOL)(allowed-values si no nose)(default nose))

(slot gastronomica (type SYMBOL)(allowed-values si no nose)(default nose))

(slot aventura (type SYMBOL)(allowed-values si no nose)(default nose))

(slot deporte (type SYMBOL)(allowed-values si no nose)(default nose))

(slot tematica (type SYMBOL)(allowed-values si no nose)(default nose))

)

Actividades-programadas:Encontraremos distintosobjetos de estas clase,que corresponderan a lasactividades almacenas, que una vez seleccionada,sera mostrada por pantalla.

(deftemplate actividades-programadas(slot nombre (type SYMBOL))(slot tipo (type SYMBOL)

(allowed-values culturalentrenamiento gastronomicaaventura deporte tematica) )

(slot costo (type SYMBOL)(allowed-values si no nose)(default nose))

(slot grupal (type SYMBOL)(allowed-values si no nose)(default nose))

(slot recomendada (type SYMBOL)(allowed-values si no nose)(default nose))

)

Actividad-no-encontrada:Encontraremos ununicoobjeto de esta clase,que sera empleada para deter-minar si no existe ninguna actividad a recomendar,ya que solo cuando se encuentre una actividad quese ajusta a las necesidades, su valor sera modificado.

(deftemplate actividad-no-encontrada(slot encontrada (type SYMBOL)

(allowed-values si no)(default no))

)

A continuacion se encuentradeffacts. En esta partesera donde se crearan los distintos objetos, anteriormentemencionados. Un ejemplo de cada tipo serıa:

(deffacts actividad-no-encontrada(actividad-no-encontrada (encontrada no))

)

(deffacts actividades-programadas(actividades-programadas (nombre Exposiciones

)(tipo cultural)(costo no)(grupal no)(recomendada nose)

)

(deffacts inicia(actividad))

Realmente de launica clase que habra mas de un obje-to, sera de actividades-programadas.

Seguidamente encontraremosreglas. En ella se definenlas reglas fundamentales del programa. Basicamente en-contraremos un conjunto de reglas parecidas, para la in-troduccion de los datos enActividad dependiendo de lapregunta realizada; y dos reglas finales, una para la selec-cion e impresion de las Actividades-programadas elegidasfinalmente (segun expusimos en la descripcion del pro-yecto), y otra para el caso en el que no se haya encontradoninguna actividad recomendada.

A continuacion se muestra un ejemplo de regla para laintroduccion de datos enActividad.

(defrule determina-presupuesto ""?A <- (actividad (presupuesto nose))=>(if (si-o-no-p "Contamos con un presupuesto

alto (si/no)? ")then (modify ?A (presupuesto si))else (modify ?A (presupuesto no))))

-13-

Page 20: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Se trata de una regla en la que se realizara una pregun-ta porpantalla y a partir de su respuesta, se introducira elvalor correspondiente a lo deseado por el usuario. Concre-tamente se determinara con que presupuesto contamos.

Tambien se puede ver el codigo de la regla fundamentaldel programa:

(defrule actividades ""?p <- (actividades-programadas (nombre ?x)(tipo ?t)(costo ?c)(grupal ?g)(recomendada ?r))?A <- (actividad (presupuesto ?pre) (

individual ?ind) (cultural ?cul) (entrenamiento ?en) (gastronomica ?gas) (aventura ?av) (deporte ?de) (tematica ?tem))

?e <- (actividad-no-encontrada (encontrada ?find))

(test (eq ?c ?pre))(test (neq ?g ?ind))(or(test (and (eq ?cul si) (eq ?t cultural)))(test (and (eq ?en si) (eq ?t entrenamiento)))(test (and (eq ?gas si) (eq ?t gastronomica)))(test (and (eq ?av si) (eq ?t aventura)))(test (and (eq ?de si) (eq ?t deporte)))(test (and (eq ?tem si) (eq ?t tematica))))(test (eq ?r nose))=>

(modify ?e (encontrada si))(modify ?p (recomendada si))(printout t "Se recomienda la actividad:" ?x "

." crlf)

)

Regla encargada de una vez adquiridos todos los datoscomprobar de una enuna las distintas actividades y ver sise ajustan a lo deseado, en cuyo caso la mostraremos porpantalla.

Aunque ya se menciono anteriormente, remarcaremosla importancia de la modificacion de los valores, encon-trada y recomendada. Al cambiar el valor de encontradoa si, laultima regla no se activara, puesto que hemos en-contrado una actividad que se ajusta como mınimo. Y al

cambiar el valor de recomendada, no aseguramos que laactividad, no entrara en un bucle y sera recomendada in-finitamente.

Finalmente encontramosInicia, que incluye la reglaque inicia el programa, donde se mostrara como mensajede bienvenida: Sistema Experto de Actividades de Ocio.

(defrule inicia(declare (salience 1))=>(printout t crlf crlf)(printout t "Sistema Experto de Actividades

de Ocio")(printout t crlf crlf))

El archivo concluye con las acciones de carga y ejecu-cion del programa.

El sistemaha sido implementado de modo que pode-mos anadir una nueva actividad-programada en cualquiermomento, y el sistema seguira funcionando correctamen-te, teniendo en cuenta esta nueva posibilidad introducida.

4. Ejemplos

En esta parte, mostraremos distintos comportamientosdel programa.

Para ello, se muestran distintas tablas, correspondientesa las actividades programadas introducidas en el sistemapara las diferentes pruebas.

Figura 1: Actividades Gastronomicas

-14-

Page 21: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Figura 2: Actividades Culturales

Figura 3: Actividades Entrenamiento

Figura 4: Actividades Deportivas

Cada tabla correspondera aun tipo diferente de activi-dad.

Estas se encuentra dividida en dos: en parte superior,las actividades de bajo coste y en la parte inferior, las ac-tividades de coste elevado (Excepto actividades Gastro-nomicas que solo contendra parte inferior). Ademas, seha anadido un codigo de colores para diferenciar a sim-ple vista, las actividades de caracter individual, frente alas de caracter colectivo, mas concretamente, empleare-mos naranjas para actividades individuales y verde paralas actividades grupales.

Aunque existe mas actividades introducidas por defec-to, solo expondremos aquellas que seran empleadas paralas pruebas.

NOTA: Para realizar las distintas tenemos que tener en cuenta comofunciona el programa.

Para cargar el programa emplearemos:

$ CLIPS> (batch actividades.clp)

El programa quedara, como se muestra a continuacion.

$ CLIPS> (run)

Pulsaremos un intro el programa arrancara.

Una vez laejecucion termine, si queremos volver a ejecutarlo, prime-ro deberemos dar unreset, para limpiar los hechos introducidos dentrode los objetos, seguido de unrun para que se ejecute.

Si queremos introducir nuevas actividades en mitad de la ejecucion,primero deberemos hacer elreset, luego introducir la informacion me-dianteassert, y por ultimorun.

4.1. Ejemplos1

En este primer ejemplo (ver figura 5), realizaremos unaejecucion en la que la persona consta de un alto presu-puesto, y desea una actividad individual y tranquila (entranquila no se va a descartar ninguna de las subclases).

Por tanto, la recomendacion que esperamos de nuestrosistema, siguiendo las tablas anteriormente comentadas,es la compuesta por todas las actividades individuales ycaras, dentro del tipo cultural, gastronomico y de entrete-nimiento:

Culturales:Teatro y Concierto deMusica Clasica

Entretenimiento:Spa y Curso

Gastronomica:Cata y Degustacion.

Como se ve en la realizacion, el programa funciona co-rrectamente ya que obtenemos la salida esperada.

4.2. Ejemplos2

En este segundo ejemplo (ver figura 6), realizaremosuna ejecucion en la que la persona dispone tambien de unalto presupuesto, y desea una actividad individual y tran-quila, pero dentro de estas, solo les gustan las actividadesgastronomicas.

-15-

Page 22: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Figura 5: Ejemplo1

Figura 6: Ejemplo2

Podemos observar quelas actividades recomendadas,son una pequena parte de la anterior (las correspondien-tes a las actividades gastronomicas), cumpliendose asi, elcomportamiento deseado.

4.3. Ejemplos3

En este ejemplo, mostraremos dos ejecuciones, en lascuales el comportamiento es el mismo. En la primera eje-cucion se mostrara una persona en la que tras elegir unaactividad tranquila, no le gusta ninguna de las subcate-gorıas (ver figura 7) y por lo tanto, no se le puede reco-mendar ninguna actividad. Y una segunda, en la que aun-que se selecciona un tipo de estas, en el momento de laejecucion, no existe actividad que satisfaga los requisitos

de costo y numero de componentes a realizarla (ver figura8), por lo que del mismo modo, no se le puede recomendarninguna actividad.

Figura 7: Ejemplo3a

Figura 8: Ejemplo3b

En ambos casos podemoscomprobar que el resultadoes el mismo. En ambos casos no existen actividades a re-comendar.

4.4. Ejemplos4

En esteultimo ejemplo, mostraremos tambien dos eje-cuciones. En ambas se hara la misma busqueda, pero trasla primera, introduciremos una nueva actividad (ver figu-ra 9 y 10 respectivamente).Esta se ajustara a la busqueda

-16-

Page 23: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

y que por tanto, debera ser mostrada en lasegunda ejecu-cion.

Figura 9: Ejemplo4a

Figura 10: Ejemplo4b

Como era de esperar, mientras en la primera ejecucionno aparece, ya que aun no existe. En la segunda tras inser-tarla, la acepta y pasa a ser procesada, recomendandola.

5. Mejoras

Quizas una mejora serıa la inclusion de nuevos criteriosque aportaran mas informacion acerca de la actividad parauna mejor seleccion de esta, tales como edad, duracion, yhorario.

Otra buena opcion puede ser, incluir preguntar para elanalisis de las subcategorias. Por ejemplo, una vez quesabemos que a un cierto usuario le gustan las actividadesculturales, podriamos preguntar¿Quiere opinar sobre ac-tividades culturales (si/no)?, ya que dentro de esta, podrıahaber actividades que no son de su interes.

Referencias

[1] http://ccc.inaoep.mx/ emorales/Cursos/Representa/-node65.html

[2] http://ocw.uc3m.es/ingenieria-telematica/inteligencia-en-redes-de-comunicaciones/material-de-clase-1/04b-clips/view

[3] es.wikipedia.org/wiki/CLIPS

-17-

Page 24: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Project Glass: Realidad aumentada, reconocimiento de imágenes y reconocimiento de voz.

Lucas García Ing. Superior De Telecomunicación

Universidad Carlos III de Madrid [email protected]

Paloma Jimeno Ing. Superior De Telecomunicación

Universidad Carlos III de Madrid [email protected]

Leticia C. Manso Ing. Superior De Telecomunicación

Universidad Carlos III de Madrid [email protected]

Abstract

Después de la presentación del Project Glass de Google sobre sus

gafas de realidad aumentada nos planteamos las tecnologías

necesarias para el desarrollo de este dispositivo. Este es el

objetivo del siguiente escrito, profundizar en las tecnologías de

reconocimiento de voz y de imágenes y de su integración y

utilización para un dispositivo de Realidad Aumentada.

Tras una breve introducción a cerca de las gafas de Google, se

explicarán conceptos sobre realidad aumentada relacionándolas

con el proyecto, sobre reconocimiento de imágenes y voz. Por

último se hará una mención sobre redes neuronales, base de las

dos tecnologías de reconocimiento explicadas.

PALABRAS CLAVE

Realidad aumentada, imagen virtual, GPS,marcadores, pantalla

transparente, HDM, patrón, sensor, clasificador, OSR, biometría,

RGB, entrenamiento, modelo oculto de Markov, aprendizaje

inductivo, Redes Neuronales, Perceptrón Multicapa (MLP),

Backpropagation.

1. INTRODUCTIÓN

El 27 de Junio de 2012 Sergey Brin, cofundador de Google junto

con otros integrantes corporativos del proyecto Project Glass,

presentaron sus gafas de realidad aumentad.

Este proyecto entra dentro de Google X Lab, departamento cuya

función es desarrollar tecnologías avanzadas e innovadoras.

El propósito principal de este dispositivo se identifica con la de un

Smartphone pero evitando el uso de las manos para las acciones

interactivas. ¿Cómo? Haciéndolas innecesarias y sustituyéndolas

mediante comandos de voz (parecido a Siri de Mac), lectura de

imágenes o incluso parpadeos. Es necesario decir que aun así, se

sigue disponiendo de un controlador táctil integrado en una de las

patas de las gafas.

Una de las aplicaciones integradas más destacadas tanto en el

vídeo promocional como en la presentación es la de poder realizar

una navegación interactiva incluyendo elementos virtuales en el

campo visual del usuario para ayudarle y marcarle el camino. Con

este ejemplo, queda clara los puntos clave del aparato: la

integración de una pantalla de mezcla de imágenes que no llegue a

molestar al cliente y la necesidad de precisión para un correcto

posicionamiento.

Figura 1

Para la primera parte, fue BabakParviz, ingeniero eléctrico. Para

la segunda, Google contó con Steve Lee, especialista en

geolocalización y jefe del proyecto.

Aparte de una pantalla sobre el ojo que se encargará de

sobreponer las figuras virtuales, las gafas integran una cámara de

fotos y de vídeo, micrófonos para capturar voz y una superficie

táctil en uno de los laterales para los controles.

En su comercialización se deberá estudiar las prioridades en

cuanto a que las gafas realizan notificaciones que dependiendo de

la situación pueden ser innecesarias, molestas o incluso

peligrosas.

En la presentación, se usaron vídeos promocionales que

potenciaban el hecho de disponer de una cámara integrada en

situaciones tales como salto en paracaídas. Aunque algo

sensacionalista, se entiende que no se publicita el hecho de tener

un dispositivo de captura de imágenes adaptado a la situación

(problema que ya ha sido solucionado con cámaras integradas en

-18-

Page 25: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

diademas), sino de disponer de una cámara en todo momento en

un formato ligero sin necesidad de un aparato específico.

Al estar desarrolladas en Android y dado a que se plantea como

un sustituto de los Smartphone basados en dicho software, las

gafas se podrán manipular a través de los móviles. En nuestra

opinión, esta posibilidad se podría haber añadido como puente

para los clientes menos atrevidos y más asentados en la actual

modalidad de dispositivos celulares.

Para poder desarrollar la tecnología de Realidad aumentada, y

aunque no se especificó en la presentación, se supone que también

tendrá sensores como giroscopios, GPS, Etc...para saber la

posición y su movimiento.

Figura 2

En resumen, en cuánto a tecnología, las gafas dispondrán de:

Control táctil

Reconocimiento de voz (micrófono)

Controlador a través de Smartphone Android

Acelerómetros y giroscopios

GPS

Batería integrada en la patilla

Almacenamiento interno

Aunque en el 2013 las gafas estarán disponibles por 1500 $ para

los desarrolladores, su comercialización no se prevé hasta el 2014.

La patente de estas gafas ya fue fijada para Google.

2. REALIDAD AUMENTADA

La realidad aumentada puede definirse de varias formas. En este

trabajo asumiremos que es un sistema capaz de aumentar la

percepción de la realidad a través de la implementación de

elementos virtuales en la misma. Estos elementos virtuales pueden

ser nuevas imágenes, sonidos o vídeos que se colocan junto a la

imagen tomada de la realidad o en sustitución de ella.

Se podría clasificar una tecnología de realidad aumentada aquella

que:

− Combina mundo real y mundo virtual.

− Es interactivo en tiempo real.

− Se registra en 3 dimensiones.

Figura 3

Con la figura 1 ejemplificamos las tres características relacionadas

con la tecnología de realidad aumentada: se diferencian los

elementos virtuales añadidos a la imagen real de la carretera, se

intuye que la imagen se modificará con el movimiento del

usuario, y tiene carácter tridimensional por la naturaleza de su

funcionamiento.

Para poder desarrollarla deberemos recoger información sobre el

mundo real (una imagen, posicionamiento, fotografía o vídeo ),

conseguir procesarla a través de software (reconocimiento de

patrones o de imágenes en el caso de que la información sea una

imagen), mezclar de forma sintética la información que tenemos

con la imagen real y proyectar la síntesis de ambas. La imagen

que se toma no tiene por qué tener una relación coherente con la

información que vayamos a mezclar con ella. Podremos utilizar

marcadores (hojas de papel con símbolos, ejemplificado en la

figura 2) y relacionarlos con información determinada sobre algo

que aparentemente no tiene conexión. El uso de marcadores o no

marcará una clasificación de la tecnología RA y se detallará más

adelante (2.5).

Figura 4

2.1 Realidad aumentada VS realidad virtual

Aunque parezca que este apartado pierda relación con el hilo del

trabajo, responde a una necesidad, ya que es muy común que se

confundan estas dos tecnologías. Para entender la diferencia entre

ambas, vamos a proceder a definir el término de realidad virtual

(RV). “Realidad virtual” es definido como el campo interactivo

generado por un computador en dónde un elemento real, por lo

general el usuario, es introducido, participando en él en tiempo

real.

La clave es la participación que tiene lo real dentro del producto

final de la tecnología de la que hablemos. En la realidad

aumentada (RA) se mantiene en el sistema la presencia de la

imagen real siendo la información virtual añadida y combinada la

que amplia el valor de la misma. Por el contrario, en la realidad

-19-

Page 26: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

virtual, el usuario es el que se encuentra en un mundo totalmente

no real controlado por el ordenador.

Del mismo modo, en RA se nos permitirá interactuar con

elementos reales, mientras que en un sistema RV toda

modificación que hagamos del entorno no afectará a ningún

elemento real sino imaginario.

Otra forma de explicarlo es que la RV remplaza la realidad con

ficción, mientras que la RA le añade elementos virtuales

aumentando la visión que el usuario tiene de ella.

Con la siguiente figura 3, nos haremos una idea de hasta qué

punto se parecen y a la vez se diferencian la tecnología RA y RV.

Figura 5

2.2 Historia

Para contar los principios de la realidad aumentada, deberemos

contar con la fuerte relación que tiene con la realidad virtual.

Explicaremos desde los hitos más importantes de su desarrollo:

50´s-60´s nace la idea de crear un mundo diferente al

real, una realidad virtual.

1962, Morton Heilig, director de fotografía, tras escribir

sobre ‘Cine de experiencia’, crea ‘Sensorama’ con cinco

filmes a las que se le añade efectos de vibración, olfato

y sonidos. La figura 4 nos da una idea de cómo era el

dispositivo.

Figura 6

1966 Ivan Sutherland con su ayudante Bob Sproul

construyeron lo que será el primer visor virtual montado

en la cabeza (Head Mounted Display, HMD, modelo

estudiado en el apartado 2.6). El interfaz era pésimo y

los gráficos eran modelos de alambre. Además el

instrumento era pesado y debía de colgarse del techo

como en la siguiente figura 5:

Figura 7

En 1975, Myron Krueger, un laboratorio de VR

llamado ‘Videoplace’, donde se crea un sistema en el

cual los usuarios permiten interactuar con objetos

virtuales.

A finales de los 80 se popularizo el término Realidad

Virtual por Jaron Lanier, cuya compañía fundada por él

(VPL Research) creo los primeros guantes y anteojos de

Realidad Virtual (figura 6).

Figura 8

El termino Realidad Aumentada fue introducido por el

investigador Tom Caudell en Boeing, en 1992. Caudell

tuvo que configurar los tableros de los trabajadores, y

encontró como solución crear unos tableros virtuales

sobre los reales genéricos. El término Realidad

Aumentada fue dado al público en un paper en 1992.

En 1992 Steven Feiner, Blair MacIntyre y Doree

Seligmann crean un prototipo de sistema realidad

aumentada llamada KARMA.

En 1999 Hirokazu Kato desarrolla ARToolKit en

HitLab.también realidad aumentada.

En los años 2000’s los avances en los sistemas

informáticos hacen que se desarrolle al máximo la

realidad aumentada.

En el año 2000, Bruce H. Thomas da a conocer el

primer juego al aire libre con dispositivos móviles de

realidad aumentada ARQuake.

A finales del 2008 Android saca a la ventaWIkitude

Guía (figura 7), una aplicación para viajes y turismo

basada en sistemas deGPS, brújula digital, sensores de

-20-

Page 27: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

orientación y acelerómetro, mapas,video y contenidos

informativos de la Wikipedia, desarrollada para la

plataformaAndroid.

Figura 9

Finalmente, en el año 2009 se estandariza la

tecnología RA y se identifica con el siguiente

logo:

Figura 10

En el 2012 Google diseñan las google glasses

bautizando su proyecto como Project Glass. 2014 será el

año de su comercialización.

2.3 Funcionamiento

El siguiente esquema explica a través de un tipo de aplicación de

RA (figura 9, toma y salida de vídeo, no de imagen) las partes que

componen el proceso general.

Figura 11

1. Se toma a través de un dispositivo una imagen fija o un

vídeo del mundo real. Dependiendo de la aplicación de

la que estemos hablando podríamos necesitar

información sobre posición (GPS) sumada a la imagen,

o en exclusividad. Se explicará en el apartado de

aplicaciones de RA.

2. A través de la toma del apartado uno se produce un

reconocimiento de imagen (Graphics System) que da

lugar a un objeto virtual.

3. Se combina o se modifica, según la aplicación

desarrollada lo virtual como lo real creando un objeto

aumentado.

4. Se muestra a través de un dispositivo monitor el vídeo o

la imagen de realidad aumentada. El modo en la que se

muestre dará lugar a las tres arquitecturas de

dispositivos RA que se comentarán más adelante, tanto

en el apartado de arquitecturas (2.6) como en el de

pantallas transparentes (2.4).

Tal y como se ha hecho mención al comienzo de esta parte del

escrito, el uso de marcadores en esta tecnología es lo más común,

aunque como se explicará en el apartado de aplicaciones (2.7)

existen desarrolladas muchas de ellas como las de

posicionamiento que basan su funcionamiento más en la

información de GPS que en la imagen propia de la realidad que

pueda obtener el dispositivo de entrada.

Otro tipo de tecnología que no necesita de toma de imagen es la

HOE (Holographic optical element), que explicaremos en el

siguiente apartado dentro de pantallas transparentes, cuyas

aplicaciones se conocen como SAR.

2.4 Pantallas transparentes en AR

Las pantallas transparentes son una de las formas de presentar la

imagen aumentada combinación del mundo real con objetos

visuales al usuario.

Existen dos tipos: pantalla de mezcla de imágenes y pantalla

óptica transparente.

El primer tipo de pantalla es la que típicamente se utiliza en los

dispositivos HMD o los dispositivos de mano (Smartphone, iPod,

cascos monitores (2.6)). Con ella los gráficos virtuales se integran

con las muestras visuales reales obtenidas por la

-21-

Page 28: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

cámaraactualizando las imágenes finales a través de un sistema de

rastreo continuo.

El segundo tipo de display se basa en la tecnología HOE

(holographic optical element) basado en los hologramas. En este

sistema no existe rastreo ni grabación, sino que el usuario verá

diferentes imágenes dependiendo de la posición que tenga con

respecto la pantalla.

Este sistema se basa en la muestra simultánea de imágenes desde

diferentes ángulos sobre la pantalla HOE. Así son visibles solo

dentro de pequeños ángulos de visión y así el usuario puede ver

mirando hacia el mismo punto diferentes imágenes según la

posición relativa con respecto a él. Si las imágenes seleccionadas

pertenecen a la misma imagen y siguen un orden coherente, se

conseguirá un holograma, tal y como indica la tecnología HOE

holographic optical element. Estas aplicaciones se denominan

también SAR (space augmented reality).

2.5 Tipos de aplicaciones RA

De forma general podríamos dividir las aplicaciones que usan RA

en dos: las que usan marcadores y las que no. Las tecnologías que

no usan marcadores o trackers se valen de GPS o acelerómetros,

brújulas y se denominan track-less.

En la siguiente imagen se podrá ver un ejemplo de un marcador:

Figura 12

Las aplicaciones con marcadores basan su funcionamiento en el

reconocimiento de patrones buscándolos en los distintos

fotogramas que toman de la realidad. Cuando reconoce uno de los

patrones toma su objeto virtual relacionado y hace que se muestre

sobre el marcador.

La aplicación que se desarrolla en Project Glasses de Google es

trackless. Aunque la información que se encuentra de su

desarrollo es limitada, intuimos y asumimos en este trabajo que

hace uso de la información obtenida por el GPS integrado en ella

y de un sistema de reconocimiento de caracteres y de imágenes.

Con esta última se interpretará escritos u objetos que se muestren

a la aplicación y a partir de su interpretación se nos ofrecerá

posibilidades relacionadas.

Del mismo modo que las aplicaciones que hacen uso de

marcadores, a partir de la información obtenida por los periféricos

asociados (lectura de caracteres o GPS por ejemplo) el sistema

mezcla virtual con real. Es de apreciar que al no tener que

procesar imágenes se gasta menos esfuerzo en el microprocesador

pero se antoja más compleja la unión de los elementos añadidos.

Podemos asociar de forma genérica que las aplicaciones trackless

están desarrolladas en dispositivos móviles, mientras que los que

usan marcadores están relacionados aelementos tales como PC´s o

más fijos como lectura delibros (figura 11).

Figura 13

2.6 Arquitecturas RA

La parte que hará diferenciar las tres arquitecturas que puede tener

un dispositivo AR será la forma de mostrar al usuario la imagen

final:

Lentes reflectantes (sistema óptico)

Cascos con monitores (sistema de vídeo)

Monitores (sistema de vídeo)

2.6.1 Lentes reflectantes

En esta arquitectura, los objetos virtuales se sobreponen en la

visión real del mundo a través de una lente. Esta lente transparente

deja pasar del 50% al 30% de la luz real (dependiendo de la

longitud de onda con que la luz incida en ella) y refleja la imagen

del monitor.

Como se puede observar en la imagen, la información añadida a la

imagen real aumentada no se toma de una visualización del

mundo, sino del Head Tracker (rastreador), que aporta

información sobre la posición del usuario. Este rastreador es

importante para generar la imagen 3D y que esta se mueva dando

la sensación de ser fija para el observador.

Figura 14

-22-

Page 29: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

2.6.2 Cascos con monitores

A diferencia del anterior la imagen se compone antes de mostrarse

al usuario a través de un monitor.

Figura 15

Aunque en la imagen las flechas hacen pensar que el generador de

objetos añadidos no necesita de imágenes del exterior, se da el

caso en el que a parte del rastreador en el HMD o un sistema GPS,

el generador de imagen necesite de una toma de la realidad, por

ejemplo, para interpretarla y traducirla (marcadores, por ejemplo).

Aunque el uso más común de esta arquitectura usa el

posicionamiento del usuario en el mundo real.

Esta arquitectura es la que se desarrolla en las Google Glasses.

2.6.3 Monitores externos

Figura 16

La última arquitectura de RA que presentamos en este trabajo es

parecida a la anterior, pero sin tener integrado el monitor ni la

cámara de toma de realidad en un casco.

La posición de estos elementos en esta arquitectura es remota.

Su funcionamiento es igual que la anterior: a través de una cámara

se toman imágenes reales que se interpretarán y combinaran para

generar una visión aumentada. Podrá usar o no un elemento de

posicionamiento, tal y como se ha dicho anteriormente, pero en

esta arquitectura es más común que no la necesite. La tecnología

de los marcadores es más típica en esta arquitectura.

2.7 Aplicaciones RA

2.7.1 Sistemas de navegación:

Los famosos sistemas de navegación por GPS han dejado el uso

de los mapas atrás. Estos sistemas han sufrido un gran avance en

los últimos y hoy en día se consideran casi necesarios.

En este campo, la RA podría ser un paso más pudiendo proyectar

directamente los gráficos en nuestro parabrisas añadiendo

información relevante a la misma sobre sitios de interés cercanos

a nuestro camino. La empresa General Motors ya está trabajando

en una aplicación así.

Si pasamos esta idea a un dispositivo móvil y autónomo como un

Smartphone o las gafas Google, podremos ver que el uso en

ambientes no automovilísticos se encuentra más desarrolladas este

tipo de aplicaciones, haciendo de un paseo un posible camino

turístico o un callejero virtual. .

2.7.2 Televisión

Las grandes y costosas escenografías y utilerías podrían ser

remplazadas algún día por esta tecnología de vanguardia,

sustituyendo costosos atrezos en fondos “macros” en los que se

podrá proyectar imágenes 3D con las distintas escenas que se

necesiten.

Obviamente cualquier uso de RA como entretenimiento o valor

añadido de todo tipo, también estará incluido en este ámbito.

2.7.3 Medicina

Figura 17

En este ámbito por ejemplo sería de utilidad que durante una

operación, el doctor pudiera disponer de información útil sobre

anteriores pruebas médicas tales como resonancias, pudiendo

-23-

Page 30: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

sobreponerla en el paciente teniendo una mejor idea del problema

médicoque va a tratar. O saber las constantes vitales o parámetros

vitales de los órganos de los pacientes durante la operación sin

tener que apartar su mirada del paciente y sin ayudantes médicos.

2.7.4 Educación

Para explicar la utilidad que la RA puede ofrecer a la educación

usaremos el famoso dicho: una imagen vale más que mil palabras.

Y si es en 3D, mejor.

Tanto en museos como en aulas y libros imágenes aumentadas

en 3d pueden ayudar sobremanera al aprendizaje de los niños.

Figura 18

Además, existen libros llamados “IMagic Books” con marcas de

RA que permiten visualizar una escena completa virtual como si

fuera una obra de teatro en miniatura.

2.7.5 Entretenimiento

En este campo el uso de la realidad aumentada ya esta

ampliamente desarrollada. Empresas como Sony con Eyetoy para

la PS2 a través de una cámara permiten interactuar con el juego.

Nintendo con su 3DS también ha desarrollado juegos en los que a

través de marcadores que el usuario disponía se le añadía un extra

a la realización de misiones que protagonista debía de superar.

Figura 19

Los dispositivos móviles tales como PDAs o Smartphone

también poseen aplicaciones de entretenimiento desarrolladas en

parte por la tecnología RA.

Figura 20

2.7.6 Otras aplicaciones

Entre otras aplicaciones actuales podemos citar:

• Servicios militares y de emergencia (instrucciones, mapas,

localización de enemigos, células de fuego, etc.).

· Publicidad en 3D.

• Visualización de arquitectura (visión virtual de edificios

destruidos o simulación de planes de proyectos de construcción).

-24-

Page 31: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Figura 21

• Visión aumentada: etiquetas o cualquier texto relacionado a

objetos o lugares, reconstruir ruinas, edificios o inclusive paisajes

como eran en el pasado.

• Simulación: simuladores de vuelo y de automóviles (coches,

autobuses, camiones).

• Conferencias con participantes reales y virtuales, trabajo en

conjunto con modelos simulados 3D.

2.7.7 Aplicaciones en dispositivos móviles

Hoy en día las aplicaciones más populares y utilizadas son las que

se ven integradas mediante software como los de google

(Android) o los de Apple.

Se tratará de aplicaciones sin marcadores, con pantalla

transparente de mezcla de imágenes y según su arquitectura, con

monitor externo, el propio dispositivo móvil.

En este apartado elegiremos las cinco mejores según

(REFERENCIA):

Layar: Se creo como navegador especial para RA. La

aplicación permite ir añadiendo capas con información

de la imagen tomada. Existen 312 capas diferentes,

desde una que te permite ver los Tweets más cercanos,

hasta consultas a Wikipedia, o restaurantes cercanos.

Está disponible en Android y es gratuita.

TwittARound: Al igual que una de las capas de Layar,

puedes observar los tweets publicados cerca de tu

posición. Fue desarrollada por Michael Zoellner,alemán.

Está para iPhone y no es gratuita pero tampoco cara,

0.99 $.

Wikitude World Brownser : Aplicación preferida por

Augmented planet para móviles. Persigue al igual que

Wikipedia, llegar a ser la enciclopedia del nuevo siglo.

TAT augmented ID : Ya no es la posición quien es

estudiada, sino la persona a la que haces una fotografía.

A través de ella, la aplicación es capaz de dar datos de

la persona. Criticada porque limita con la privacidad del

individuo.

Yelp Monocle: Sirve para buscar información sobre

locales, comercios restaurantes,…Tiene rasgos de red

social , donde los usuarios puntúan y opinan acerca de

los lugares cercanos a tu posición.

3. RECONOCIMIENTO DE IMÁGENES

3.1 Historia

En la década de los 60, en el MIT se comienza a estudiar la visión

artificial, lo que implicaba no solo captar imágenes a través de una

cámara, sino también la comprensión de lo que estas imágenes

representa.

Desde ese momento se ha ido desarrollando la tecnología, y en los

últimos años este ámbito ha evolucionado mucho, surgiendo

multitud de aplicaciones que utilizan software de reconocimiento

de imágenes.

3.2 Reconocimiento de patrones

Para explicar el reconocimiento de imágenes primeramente se

hace imprescindible a nuestro entender realizar una breve

descripción del reconocimiento de patrones, que es la base en la

que se sustenta el reconocimiento de imágenes.

El objetivo del procesamiento e interpretación de datos sensoriales

es lograr una descripción concisa y representativa del universo

observado. La información de interés incluye nombres,

características detalladas, relacionamientos, modos de

comportamiento, etc. que involucran a los elementos del universo

(objetos, fenómenos, conceptos).

Estos elementos se perciben como patrones y los procesos que

llevan a su comprensión son llamados procesos perceptuales. El

etiquetado (clasificación, asignación de nombres) de esos

elementos es lo que se conoce como reconocimiento de patrones.

Por lo tanto, el reconocimiento de patrones es una herramienta

esencial para la interpretación automática de datos sensoriales.

El sistema nervioso humano recibe aproximadamente 109 bits de

datos sensoriales por segundo y la mayoría de esta información es

adquirida y procesada por el sistema visual. Análogamente, la

mayoría de los datos a ser procesados automáticamente aparecen

en forma de imágenes.

El procesamiento de imágenes de escenas complejas es un

proceso en múltiples niveles, en el que hay dos tipos de

metodologías necesarias:

Reconocimiento de patrones basado en atributos

Reconocimiento de patrones basado en la estructura

3.2.1 Modelo de reconocimiento de patrones

Los procesos perceptuales del ser humano pueden ser modelados

como un sistema de tres estados:

-25-

Page 32: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Adquisición de datos sensoriales

Extracción de características

Toma de decisiones

Por lo tanto es conveniente dividir el problema del

reconocimiento automático de una manera similar:

La figura 22 anterior presenta el esquema básico de un

reconocimiento de patrones

Sensor Su propósito es proporcionar una representación factible

de los elementos del universo a ser clasificados. Es un sub-sistema

crucial ya que determina los límites en el rendimiento de todo el

sistema.

Idealmente uno debería entender completamente las propiedades

físicas que distinguen a los elementos en las diferentes clases y

usar ese conocimiento para diseñar el sensor, de manera que esas

propiedades pudieran ser medidas directamente. En la práctica

frecuentemente esto es imposible porque:

no se dispone de ese conocimiento

muchas propiedades útiles no se pueden medir

directamente (medición no intrusiva)

no es económicamente viable

Extracción de Características Esta etapa se encarga, a partir del

patrón de representación, de extraer la información

discriminatoria eliminando la información redundante e

irrelevante. Su principal propósito es reducir la dimensió del

problema de reconocimiento de patrones.

Clasificador La clasificación trata de asignar las diferentes partes

del vector de características a grupos o clases, basándose en las

características extraídas. En esta etapa se usa lo que se conoce

como aprendizaje automático, cuyo objetivo es desarrollar

técnicas que permitan a las computadoras aprender.Utiliza

habitualmente uno de los siguientes procedimientos:

▪ Geométrico (clustering): Los patrones deben ser

mostradas en gráficas. En éste enfoque se emplea el

cálculo de distancias, geometría de formas, vectores

numéricos, puntos de atracción, etc.

▪ Estadístico: Se basa en la teoría de la probabilidad y la

estadística, utiliza análisis de varianzas, covarianzas,

dispersión, distribución, etc.

Supone que se tiene un conjunto de medidas numéricas con

distribuciones de probabilidad conocidas y a partir de ellas se hace

el reconocimiento.

▪ Sintáctico estructural: se basa en encontrar las

relaciones estructurales que guardan los objetos de

estudio, utilizando la teoría de lenguajes formales, teoría

de autómatas, etc. El objetivo es construir una gramática

que describa la estructura del universo de objetos.

▪ Neuro reticular: se utilizan redes neuronales que se

‘entrenan’ para dar una cierta respuesta ante

determinados valores.

▪ Lógico combinatorio: se basa en la idea de que el

modelado del problema debe ser lo más cercano posible

a la realidad del mismo, sin hacer suposiciones que no

estén fundamentadas. Se utiliza para conjuntos difusos y

utiliza lógica simbólica, circuitos combinacionales y

secuenciales, etc.

Según tengamos constancia o no de un conjunto previo que

permita al sistema aprender, la clasificación puede ser

supervisada, parcialmente supervisada o no supervisada.

a) Clasificación supervisada: muy conocida también como

clasificación con aprendizaje. Está basada en la capacidad de las

áreas de entrenamiento. Éstas son áreas de las que se conoce a

priori la clase a la que pertenecen, y que se utilizarán para generar

una signatura espectral para cada una de las clases. Se denominan

clases informacionales, en contraposición a las clases espectrales

que genera la clasificación no supervisada.

La figura 23 presenta un esquema de esta clasificación:

Algunos métodos de la clasificación supervisada:

Funciones discriminantes: si son dos clases, se busca obtener

una función g tal que para un nuevo objeto O, si g(O) ≥ 0 se

asigna a la clase 1 y en otro caso a la 2. Si son múltiples

clases se busca un conjunto de funciones gi y el nuevo objeto

se ubica en la clase donde la función tome el mayor valor.

Vecino más cercano: un nuevo objeto se ubica en la clase

donde esté el objeto de la muestra original que más se le

parece.

Redes neuronales artificiales: denominadas habitualmente

RNA o en sus siglas en inglés ANN. Se supone que imitan a

las redes neuronales reales en el desarrollo de tareas de

aprendizaje.

b) Clasificación no supervisada: este tipo de clasificación no

utiliza información externa, y realiza un ajuste automático de los

parámetros. Además, se produce una autoorganización de la

información.

La figura 24 presenta un esquema de esta clasificación:

Figura 23

Figura 22

Figura 23

-26-

Page 33: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

3.3 Campos de reconocimiento

El reconocimiento de imágenes ha evolucionado a medida que

mejora la tecnología. Puede encontrarse en numerosos campos.

3.3.1 Reconocimiento de caracteres

En los últimos años la digitalización de la información (textos,

imágenes, sonido, etc.) ha devenido un punto de interés para la

sociedad. En el caso concreto de los textos, existen y se generan

continuamente grandes cantidades de información escrita,

tipográfica o manuscrita en todo tipo de soportes. En este

contexto, poder automatizar la introducción de caracteres evitando

la entrada por teclado, implica un importante ahorro de recursos

humanos y un aumento de la productividad, al mismo tiempo que

se mantiene, o hasta se mejora, la calidad de muchos servicios.

El reconocimiento de caracteres engloba un conjunto de métodos

y algoritmos que permiten realizar una fase de entrenamiento que

al final permitirá reconocer de forma automática caracteres. Cabe

recalcar que el reconocimiento de caracteres no solo se utiliza

para reconocimiento de textos escritos, sino que además tiene

muchas otras aplicaciones:

Reconocimiento de texto manuscrito

Reconocimiento de matrículas

Indexación en bases de datos

Reconocimiento de datos estructurados con ROC Zonal

3.3.2 Identificación de personas para investigaciones

policiacas

Aunque las técnicas aun están en desarrollo en este campo, y aun

no existe una aplicación totalmente confiable, es evidente la

importancia del reconocimiento de imágenes para la identificación

de personas en investigaciones policíacas. Muchas veces en

investigaciones de crímenes un testigo puede describir con mucho

detalle el rostro de un criminal. Un dibujante profesional convierte

la descripción verbal del testigo en un dibujo sobre papel. El

trabajo de la computadora consiste en buscar el rostro del criminal

en una base de datos de imágenes. En las investigaciones

policíacas también se utiliza la búsqueda de huellas dactilares en

una base de datos.

3.3.3 Biometría

La biometría es el reconocimiento del cuerpo humano a través de

ciertas características físicas, como el tamaño de los dedos de la

mano, las huellas dactilares o los patrones en las retinas de los

ojos.

Los sistemas de computadoras actuales permiten tener mejores

niveles de seguridad utilizando la biometría. Por ejemplo, una

persona puede tener acceso a un área restringida, por medio del

reconocimiento de las características físicas de su mano en un

dispositivo especial. Si en el proceso de validación se verifica que

la persona tiene permiso para entrar al área, entonces le permitirá

el acceso. Este tipo de sistemas se está volviendo cada vez más

utilizado, desplazando los sistemas antiguos de identificación.

3.4 Reconocimiento de imágenes

3.4.1 Representación de colores en imágenes

digitales

Normalmente, los colores primarios son el rojo, el amarillo y el

azul, y a partir de la mezcla de estos se crean los otros colores. Sin

embargo, en las imágenes digitales los colores primarios son el

rojo (Red), el verde (Green) y el azul (Blue) y se utilizan las

intensidades de luz para obtener nuevos colores. Esto dio lugar al

sistema RGB.

Una imagen digital está compuesta por una matriz bidimensional

de elementos RGB. En imágenes digitales de color verdadero, se

utilizan 8 bits (1 byte) para representar la intensidad de cada

componente o canal de color, y por ser 3 componentes por color,

se necesitan 24 bits (3 bytes) para formar un solo color, lo que es

equivalente a un píxel. Entonces, una imagen de 10 x 10 píxeles

utiliza 2400 bits, o sea, 300 bytes.

Siguiendo el esquema de 1 byte por cada componente o canal, y

sabiendo que el valor máximo que puede ser representado por 1

byte es 255, la intensidad de una canal está en un rango de 0 a

255, por lo que un píxel estará compuesto por tres diferentes

intensidades de R, G y B en un rango de 0 a 255.

En el sistema RGB el blanco es RGB (255, 255, 255) y el negro es

RGB (0, 0, 0), donde cada dato entre paréntesis representa las

intensidades de cada uno de los canales RGB. RGB(255,0,0),

RGB(0,255,0) y RGB(0,0,255) representan el rojo, el verde y el

azul respectivamente. Al mezclar el color rojo con el azul se

obtiene el obtiene el color morado, RGB(255, 0, 255). Se pueden

crear todos los colores disponibles variando las intensidades de las

componentes RGB.

3.4.2 Funcionamiento

La función diferenciaes la base del reconocimiento de imágenes;

indica la distancia entre dos imágenes.

Esta función indica que tan diferentes son dos imágenes. Si el

valor de la función diferencia es cero significa que las imágenes

son idénticas. Entre más grande es el valor de la función,

lasimágenes son más distintas entre si. La mejor imagen será

aquella que dé el menor valor al ser comparada con el cuadro de

la imagen original utilizando la función diferencia. Esta es la parte

más importante del proceso, por lo que en la implementación esta

función debe ser especialmente eficiente.

Existen diversas estrategias para reconocimiento de imágenes

digitales de acuerdo al tipo de aplicación y de los recursos del

sistema.

La manera más directa de comparar la imagen original con una

colección de imágenes, es comparar cada píxel del cuadro de la

imagen original con su correspondiente píxel en la imagen de la

colección imágenes, y acumularlas distancias entre cada pareja de

-27-

Page 34: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

píxeles para determinar la distancia general entre las dos

imágenes. Aunque esta es una estrategia relativamente buena para

comparar imágenes, la cantidad de comparaciones necesarias es

muy grande. Por cada comparación debe calcularse la distancia

entre los píxeles de las dos imágenes y por cada pareja de píxeles

debe compararse cada uno de los tres canales RGB.

3.4.2.1 Método lineal

La distancia D entre dos píxeles está dada por:

( ) ( ) ( ) Esta distancia es calculada por cada píxel y por cada canal de

color en lasimágenes comparadas. En la figura 25 se presenta un

pequeño algoritmo de este método:

3.4.2.2 Método cuadrático

Se puede acentuar el efecto de la diferencia de cada píxel

utilizando una diferencia cuadrática o distancia euclidiana.

√( ) ( ) ( )

Este requiere más procesamiento que el método lineal pero es el

más utilizado por la calidad de sus resultados. Puede acentuarse

aun mas la diferencia utilizando diferentes potencias en la

fórmula, pero usualmente no es necesario. En la figura 26 se

presenta un pequeño algoritmo de este método:

Como aclaración, en estos dos métodos presentados asumimos

que las dos imágenes tienen las mismas dimensiones y que cada

píxel esta compuesto por tres canales de color RGB.

3.4.3 Programas

3.4.3.1 Google goggles

Google Goggles es un servicio de Google disponible para Android

e iPhone que permite reconocer cualquier objeto mediante fotos

realizadas con un móvil y devolver resultados de búsqueda e

información relacionada.

Actualmente este sistema reconoce:

Lugares

Obras de arte

Logotipos

Monumentos

Texto

Vinos

Revistas

Libros

Funcionamiento

Busca haciendo una foto: apunta con la cámara de tu móvil a un

cuadro, un lugar famoso, un código de barras o QR, un producto,

un logotipo o una imagen popular. Si Google lo encuentra en su

base de datos, te ofrecerá información útil. Goggles puede

reconocer texto en francés, inglés, italiano, español, portugués,

turco y ruso, y puede traducirlo a otros idiomas. Goggles también

sirve como escáner de códigos de barras y QR.

Incluso, si localiza en un lugar destacado mediante el GPS puede

devolver información sobre el lugar. También dispone de

traducción automática de texto en diversos idiomas a partir de una

foto tomada en tiempo real, reconoce textos en inglés, francés,

italiano, alemán y español, aunque la traducción está habilitada

para todos los idiomas que soporta Google Translate.

Al igual que la tecnología de reconocimiento de voz y la

traducción automática, el reconocimiento de imágenes funciona

mediante el aprendizaje automatizado basado en ejemplos. La

web tiene una infinidad de imágenes de distintas cosas, y la

mayoría cuenta con información acerca de lo que se puede ver en

la imagen. Por otro lado, mientras más popular sea algo, más

imágenes habrá en la web y existirá una mayor probabilidad de

que el algoritmo las reconozca.

Debido a la privacidad tan extrema del funcionamiento de esta

aplicación por parte de Google, para explicarla remitimos

Figura 24

Figura 25

Figura 27

-28-

Page 35: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

directamente a una conferencia realizada por su director de

investigación:

Les explicaré brevemente cómo funciona el reconocimiento de

imágenes: todo comienza identificando puntos de interés en una

imagen – los puntos, líneas y patrones que contrastan o hacen

sobresalir a algo del fondo de la imagen. Funciona de forma

similar al modo en que el ojo humano identifica los contornos

mediante el contraste que generan con el fondo.

Lo siguiente es identificar cómo estos puntos se relacionan entre

sí – la geometría de los puntos en conjunto. Lo podemos imaginar

como una constelación de estrellas, solo que en este caso el

modelo matemático que analiza estos puntos y su relación es

mucho más compleja.

Por último, el sistema compara ese modelo con otros modelos

dentro de una enorme base de datos. Esos otros modelos

provienen de imágenes en la web que ya fueron analizadas.

Entonces, busca y coteja la base de datos en busca de un modelo

con el que corresponda, sin que sea necesario que

empalmeperfectamente. De hecho, es importante que el sistema

sea flexible, para que no importe tanto si la imagen está volteada,

reducida o ligeramente torcida – tomando en cuenta que

diferentes fotos de un mismo objeto serán distintas. Por ejemplo,

el Taj Mahal seguirá teniendo la misma geometría básica, sin

importar que lo hayan fotografiado desde ángulos ligeramente

distintos. Cuando Google detecta al modelo que mejor

corresponde con la imagen, puede adivinar que probablemente se

trate del Taj Mahal.

El asunto de hacer “una pregunta” que en realidad es solo una

imagen resulta algo profundo. Hemos ido más allá de las

búsquedas basadas en sólo una cadena de texto. Ahora, pueden

presentarle una imagen a Google y esperar obtener información

relevante al respecto, pero, ¿cuál es la mejor respuesta a una

pregunta que es solo una imagen? Por ahora, podemos relacionar

imágenes con texto, sin embargo existe mucho que hacer para

entender el verdadero significado que una imagen puede tener. Es

ahí donde nuestra investigación en temas de inteligencia artificial

pudiera ayudarnos.

(Peter Norvig, Director de Investigación en Google)

3.4.3.2 Blinkster

Blinkster es una aplicación móvil gratuita y fácil de usar para

explorar y descubrir contenido cultural. Blinkster utiliza imágenes

tomadas desde un dispositivo móvil para buscar en bases de datos

con información de instituciones, aficionados y expertos sobre la

obras de arte.

Blinkster utiliza una pequeña aplicación en el teléfono para llamar

a sus servidores y mostrar el contenido en formatos de fácil

navegar por las listas.Los resultados muestran información sobre

pinturas, esculturas, monumentos y proponen nuevos lugares para

ir a ver, obras de arte e itinerarios por descubrir.

4. RECONOCIMIENTO DE VOZ

4.1 Introducción

Dentro de los procesos tecnológicos que se buscan para el

mejoramiento de las rutinas y tareas del hombre se encuentra el

reconocimiento de la voz, una de las principales herramientas para

la comunicación con la civilización, que comprende nuestro

lenguaje y lo procesa para así determinar el mensaje. En los

avances científicos está el hecho de que los sistemas actuales

puedan, por medio de métodos matemáticos, identificar ese

mensaje para desarrollar sus tareas programadas. Es el caso del

proceso de reconocimiento de la voz por patrones utilizando una

RED NEURONAL ARTIFICIAL que nos permita identificar el

lenguaje. Una vez identificado el lenguaje, extraeremos

información de dicho conjunto de datos y lo transformaremos en

una estructura comprensible, para su uso posterior.

Dado que como hemos mencionado en el párrafo anterior, nuestro

objetivo no es sólo el reconocimiento de la voz, sino que una vez

descifrado el lenguaje querremos utilizar esos datos de entrada

para su posterior uso, haremos acopio de dos herramientas de la

Inteligencia Artificial:

- Aprendizaje inductivo supervisado mediante Redes

Neuronales.

- Minería de datos (para el caso de detección de

canciones).

4.2 ¿Qué es un sistema de reconocimiento de

voz?

El reconocimiento de voz generalmente es utilizado como una

interfaz entre humano y computadora para algún software.

Debe cumplir tres tareas:

Pre-procesamiento: convierte la entrada de voz a una forma

que el reconocedor pueda procesar.

Reconocimiento: identifica lo que se dijo (traducción de

señal a texto).

Comunicación: envía lo reconocido al sistema que lo

requiere.

La aplicación de reconocimiento de voz consta con los

siguientes componentes:

Existe una comunicación bilateral en aplicaciones, en las que la

interfaz de voz está íntimamente relacionada al resto de la

aplicación. Éstas pueden guiar al reconocedor especificando las

palabras o estructuras que el sistema puede utilizar.

Figura 28

-29-

Page 36: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

4.3 Funcionamiento Sistema de

Reconocimiento de Voz

El reconocimiento automático del habla es una tarea muy

compleja, sobre la que influyen varios factores:

- Dependencia/independencia del locutor

- Palabras aisladas/conectadas/habla continua

- Tamaño del vocabulario

- Grado de confusión del vocabulario

- Gramática

Además, deben hacer frente a los siguientes problemas:

- Variabilidad lingüística: fonética, sintaxis,

semántica…

- Variabilidad del usuario: ritmo, pronunciación,

inflexión, fatiga…

- Variabilidad del canal: ruido, cambios en el medio

de transmisión…

- Co-articulación: contexto de los fonemas

Para superar estos problemas, los sistemas de reconocimiento de

voz incluyen tres procesos:

1. Extracción de índices acústicos de la señal hablada.

2. Estimación de la probabilidad de que la cadena

índice fuese originada por un hipotético segmento

de pronunciación.

3. Determinación de la pronunciación reconocida a

través de una búsqueda entre hipotéticas

alternativas.

La estimación de la probabilidad de una cadena índice incluye un

modelo de producción de índices por cada determinado segmento

de pronunciación, por ejemplo una palabra. Los modelos ocultos

de Markov se utilizan para este propósito (figura 29). El sistema

de reconocimiento desea encontrar la pronunciación más probable

que podría originar el índice acústico observado. Esa probabilidad

es el producto de dos factores: la probabilidad de que la

pronunciación producirá la cadena y la probabilidad de que el

hablante querrá producir la pronunciación (la probabilidad del

modelo de lenguaje).

El entrenamiento de un sistema de reconocimiento de voz consiste

en la lectura de un texto que proporciona al sistema no sólo un

vocabulario más o menos extenso, sino un modelo de

pronunciación. Terminada esta primera fase de lectura, entra en

funcionamiento el entrenamiento de la red neuronal y la

construcción del mencionado modelo oculto de Markov. Por

último, el programa desarrollará un modelo gramatical para las

secuencias de fonemas registradas.

Es cierto que a mayor entrenamiento del sistema (tanto en la

opción inicial como durante el posterior uso del programa) se

comprueba una disminución clara en el índice de errores.

4.4 Funcionamiento para reconocimiento de

canciones

Nuestra aplicación, deberá detectar e identificar patrones en

sonidos basándonos en métodos de IA y algoritmos que ya se

utilizan pero modificados para adaptarlos a nuestras necesidades,

en nuestro caso, identificar un sonido concreto para actuar en

consecuencia.

Para poder realizar este tipo de aplicaciones llevaremos a cabo

una serie de técnicas y métodos sobre una representación del

sonido a procesar, el espectrograma:

En la figura 30 se puede observar el espectrograma generado por

la señal que aparece en la imagen de abajo. El espectrograma se

representa mediante la frecuencia (eje y), el tiempo (eje x) y la

intensidad de la señal (representado por el color, más claro más

intensidad).

Las técnicas de análisis mediante algoritmos habituales de IA son

la combinación de diferentes resultados de procesar el

espectrograma mediante Redes neuronales (percepción multicapa

entrenado con backpropagation).

Para la clasificación mediante redes neuronales hemos decidido

utilizar un MLP (perceptrón multicapa) el cual se entrena

mediante la regla Backpropagation. Los datos utilizados para el

entrenamiento son la representación vectorizada del

espectrograma centrado en la zona más relevante. La principal

ventaja de utilizar una red neuronal para nuestro clasificador

consiste en la rapidez de respuesta.

Por último, en el caso de utilizar el reconocimiento de voz para

buscar, por ejemplo, una canción, utilizaremos el siguiente

algoritmo. Obtendremos una tabla “hash” en la cual se relacionan

los picos de frecuencia con los intervalos de tiempo en los que se

producen, datos sacados del espectrograma. Con esta información

correlacionaremos una nueva entrada con una serie de plantillas

de otros espectros, obteniendo así un resultado.

Figura 29

Figura 30

-30-

Page 37: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Un problema podría ser que si se recibe un intervalo de la canción

que no coincide con el hash que tenemos en nuestras bases de

datos la canción no es detectada. Sin embargo nuestro sistema, al

utilizar técnicas predictivas, puede generalizar el patrón recibido

para así correlacionarlo con alguna de nuestras entradas de la base

de datos, es decir, nos devolverá el sonido “que más se parezca”.

5. Redes Neuronales: Perceptrón Multicapa

con entrenamiento en backpropagation.

Una red neuronal es un procesador que recibe una serie de

entradas con pesos diferentes, las procesa y proporciona una

salida única. Se trata de una forma de conocimiento inductivo, en

la que se busca que el sistema pueda, automáticamente, conseguir

los conocimientos necesarios a partir de ejemplos reales sobre la

tarea que se desea modelar.

La red neuronal más simple consta de una única capa o nivel,

pudiendo estar formada por tantas como se desee y en donde las

salidas de una capa están conectadas a las entradas de la siguiente.

Los pesos son propios de cada neurona, y no se está obligado a

tener todas las conexiones.

En un sentido amplio, una red neuronal, como la que observamos

en la figura 31, consta de tres elementos principales:

1. Topología: cómo está una red neuronal organizada en

capas y cómo se conectan estas capas.

2. Aprendizaje: cómo se almacena la información en la

red.

3. Recuperación: cómo esta información almacenada en la

red puede recuperarse.

El objeto de este trabajo es el proceso de aprendizaje, por lo que

nos centraremos en él.

En una red neuronal el proceso de aprendizaje es supervisado. Es

un caso de entrenamiento. Se presentan dos vectores (entrada y

salida deseada). La salida computada por la red se compara con la

salida deseada, y los pesos de la red se modifican en el sentido de

reducir el error cometido. Se repite iterativamente, hasta que la

diferencia entre salida computada y deseada se hace

aceptablemente pequeña.

Utilizaremos un aprendizaje basado en Corrección de Error.

Este tipo de aprendizaje ajusta los pesos de conexión entre

neuronas en proporción a la diferencia entre los valores deseados

y computados para cada neurona de la capa de salida.

Dependiendo del número de capas de la red podemos distinguir

dos casos:

a) Red de dos capas: puede capturar mapeos lineales entre

las entradas y las salidas.

b) Red multicapa: puede capturar mapeos no lineales

entre las entradas y las salidas. Este modelo se compone

de:

- Capa de entrada: sólo se encarga de recibir las

señales de entrada y propagarlas a la siguiente

capa.

- Capa de salida: proporciona al exterior la

respuesta de la red para cada patrón de entrada.

- Capas ocultas: realizan un procesamiento no lineal

de los datos de entrada.

La propagación de los patrones de entrada en el

perceptrón multicapa define una relación entre las

variables de entrada y variables de salida de la red. Esta

relación se obtiene propagando hacia delante los valores

de entrada. Cada neurona de la red procesa la

información recibida por sus entradas y produce una

respuesta o activación que se propaga, a través de las

conexiones correspondientes, a las neuronas de la

siguiente capa.

El entrenamiento en redes con capas ocultas se realiza a

través del método de “backpropagation”. Éste consiste

en:

- Empezar con unos pesos sinápticos cualquiera

(generalmente elegidos al azar).

- Introducir unos datos de entrada (en la capa de

entradas) elegidos al azar entre los datos de entrada

que se van a usar para el entrenamiento.

- Dejar que la red genere un vector de datos de salida

(propagación hacia delante).

- Comparar la salida generada por la red con la salida

deseada.

- La diferencia obtenida entre la salida generada y la

deseada (denominada error) se usa para ajustar los

pesos sinápticos de las neuronas de la capa de

salidas.

- El error se propaga hacia atrás (back-propagation),

hacia la capa de neuronas anterior, y se usa para

ajustar los pesos sinápticos en esta capa.

- Se continúa propagando el error hacia atrás y

ajustando los pesos hasta que se alcance la capa de

entradas.

Figura 31

Figura 32

-31-

Page 38: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Este proceso se repetirá con los diferentes datos de

entrenamiento.

6. REFERENCES

[1] http://www.fayerwayer.com/2012/06/google-entrega-mas-

detalles-sobre-google-glass-y-anuncia-su-salida-para-2013/

[2] http://156.35.151.9/~smi/5tm/10trabajos-

teoricos/5/RealidadAumentada_archivos/frame.html

[3] http://www.extremetech.com/extreme/131877-ive-seen-the-

future-hands-on-with-google-glass

[4] http://blogdigitalsignage.com/2012/07/27/realidad-

aumentada-con-pantallas-transparentes-kinect/

[5] http://www.xataka.com/otros/google-glass-explorer-edition

[6] Daniel Abril Redondo, Realidad Aumentada.Universidad

Carlos III de Madrid, Leganésm

[email protected]

[7] Rubén Fernández Santiago, David González, Gutiérrez, Saúl

Remis García, Realidad Aumentada. Escuela Politécnica de

Ingeniería de Gijón, Universidad de Oviedo,

[email protected]; [email protected];

[email protected];

[8] http://tecnologiayproductosgoogle.blogspot.com.es/2011/11/l

a-tecnologia-de-reconocimiento-de.html

[9] http://psicologiapercepcion.blogspot.com.es/p/percepcion-

facial.html

[10] Luis Feijoo, Aplicaciónparareconocimiento de caracteres a

través de redesneuronales. Loja –Av.Paltas y EstadosUnidos

[email protected]

[11] Cristina Díaz Moreno. Clasificación no supervisada:

clustering y mapas autoorganizativos. 50webs.com

[12] José Luis Alba, Jesús Cid. Reconocimiento de patrones.

Universidad de Vigo y Universidad Carlos III de Madrid

[13] Gustavo A. Lara Rodríguez. Técnicas de reconocimiento de

imágenes para la creación de fotomosaicos. Universidad de

Guatemala, 2003

[14] J. Kittler. Reconocimiento de patrones. Universidad de

Sirrey, 2002

[15] http://ict.udlap.mx/people/ingrid/Clases/IS412/index.html

[16] http://www.buenastareas.com/ensayos/Reconocimiento-De-

Voz/3973305.html

[17] http://www.conganat.org/3congreso/cvhap/conferencias/006/

texto.htm#funcionam

[18] http://perso.wanadoo.es/alimanya/backprop.htm

[19] Jesu Bernal Bermúdez, Jesús Bobadilla Sancho, Pedro

Gómez Vilda, Reconocimiento de voz y fonética acústica.

[20] Deller, Proakis y Hansen: Discrete Time Processing of

Speech Signals.

[21] J. C. Junqua: Robust Speech Recognition in Embedded

Systems and PC Applications.

-32-

Page 39: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Diseño e implementación de jugador virtual de Mentiroso

David Sandoval Ingeniería de Telecomunicación Universidad Calos III de Madrid [email protected]

Juan Antonio Fernández de Alba Ingeniería de Telecomunicación Universidad Carlos III de Madrid [email protected]

RESUMENEn este documento se detalla el diseño y la implementación de

un jugador virtual del conocido juego de cartas “Mentiroso”. Se

analizará en detalle las técnicas y algoritmos utilizados en dicho

diseño para dotar de capacidad de aprendizaje y decisión al

jugador virtual.

Categorías y descripcionesJava [Lenguaje de programación].

Términos generalesÁrboles de decisión, algoritmo de decisión, capacidad de

aprendizaje de la experiencia.

Palabras clavePartida, ronda, jugador virtual, jugador humano, levantar cartas,

echar cartas, credibilidad, mentir, cartas verdaderas y cartas

falsas.

1. INTRODUCCIÓNEl juego del “Mentiroso” se suele jugar con la baraja española y

nuestra implementación está basada en ese tipo de baraja.

Aunque también se podría jugar con la baraja francesa, en cuyo

caso el diseño sería muy parecido, sólo habría pequeñas

diferencias en la implementación.

El número de jugadores preferiblemente suele ser mayor de tres,

ya que con sólo dos jugadores conoces las cartas de tu

adversario. Se reparten todas las cartas de la baraja y el objetivo

del juego consiste en deshacerte de todas las cartas lo antes

posible. El jugador que lo consigue primero gana la partida.

El jugador que inicia la partida echa las cartas que quiere boca

abajo, diciendo el número de cartas que echa y del tipo que son.

Los diferentes tipos son: ases, doses, treses, cuatros, cincos,

seises, sietes, sotas, caballos y reyes. Por ejemplo: echo dos

caballos. El siguiente jugador debe decidir entre levantar las

cartas o echar más cartas del tipo al que se está jugando. El

turno va pasando de un jugador a otro cíclicamente hasta que

uno de ellos decide levantar las cartas.

En el momento que se levantan las cartas, se levantan

únicamente las del último jugador y se realiza la comprobación.

Si las cartas son las que dice haber echado, el jugador que ha

levantado se lleva todas las cartas del montón y comienza una

nueva ronda. En caso contrario, las cartas no son las que dice

haber echado, el jugador anterior se lleva las cartas del montón y

empieza la siguiente ronda. El jugador que empieza la ronda,

igual que al principio de la partida, es el que decide el tipo de

carta el que se va a jugar.

Como bien indica su nombre, el juego consiste en no decir

siempre la verdad. Es decir, decir que echas dos caballos

cuando en realidad estás echando un dos y una sota.

La dificultad del jugador virtual de “Mentiroso” radica en

atribuir a una máquina o computadora una característica propia

de los seres humanos como es mentir. Por ello podemos

definirlo como un problema de Inteligencia Artificial.

Otra capacidad que se le pide a nuestro jugador virtual o

inteligente es que sea capaz de aprender de la experiencia

pasada. Esto es, tratar de predecir el comportamiento del jugador

que está antes de él en base a los resultados de jugadas pasadas.

De este modo, levantará las cartas cuando piense que miente y

no lo hará cuando piense que dice la verdad.

Si un jugador tiene las cuatro cartas de un mismo tipo, por ej:

los cuatro reyes, se puede descartas de ellas. El descarte consiste

en desprenderte de las cartas. Éstas pasan a un montón a parte y

ya no forman parte del juego en lo que resta de partida.

2. ÁRBOLES DE DECISIÓNComo en la mayoría de los juegos, en el caso del Mentiroso los

movimientos o acciones del jugador virtual no aseguran por si

solos la victoria, hay que tener en cuenta los movimientos de los

rivales. Esto es, debemos ejecutar acciones que maximicen

nuestro beneficio (ganar) pero a la vez minimizando el del

contrario (que el contrario no gane).

Los árboles de decisión ayudan al jugador virtual a elegir las

acciones a ejecutar dentro de un conjunto predefinido. Estas

acciones son:

Elegir el tipo de carta a la que se juega cuando es él el

que comienza la ronda.

Decidir entre levantar las cartas o echar más cartas.

Si decide echar carta decidir si miente o no y cuántas

cartas echa.

En el caso de elegir entre levantar las cartas o echar más cartas y

en el de si mentir o no y cuántas cartas echar, las decisiones son

aleatorias. Basándonos en nuestra propia experiencia, hemos

diseñado estas decisiones para que unas sean más probables que

otras. Más adelante analizaremos en detalle cada uno de

algoritmos. Por el contrario, la decisión de qué tipo de carta

escoger al principio de la ronda es una decisión determinista.

-33-

Page 40: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

2.1 Árbol de decisión de jugador virtual El jugador virtual toma distintas decisiones dependiendo de si es

él quien comienza la ronda o si ya está empezada.

Algoritmo de selección de carta cuando

empiezas ronda Cuando el jugador virtual comienza la ronda y después de haber

elegido a qué se juega, decide si en su primer turno miente o no.

Algoritmo para echar carta falsa Una vez que el jugador virtual he decidido que va a mentir, ya

sea cuando comienza la ronda o cuando está empezada, debe

decidir si echa una o dos cartas.

Inicio

Clasifica

cartas

Descarte

Empieza

ronda?

Elige a qué

se juega

Algoritmo

selección

jugada

Algoritmo

selección carta

cuando empiezas

Si No

Echar 1 carta

verdad min=nº cartas

del tipo que

menos tengo

Mentimos?

Inicio

Si No

Algoritmo echar

carta falsa

Echa esa

carta

Suma

minimos=1

?

Credibili

dad?

min=1? Min=1?

Echa 1

carta suelta

Echa carta

(rompo

pareja) Echa 2

sueltas

distintas

Echa 2

cartas

iguales

Si No

Si, echa

2 cartas No, echa

1 carta

Inicio

-34-

Page 41: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Algoritmo selección de jugada cuando no

empiezas ronda En el caso de que el jugador virtual no empiece la ronda, debe

decidir si levanta las cartas del jugador anterior o echa más

cartas. Si opta por echar cartas, debe decidir si miente o no.

Además en ambos casos debe decidir cuántas echa.

2.2 Árbol de decisión de jugador humano A pesar de que no es el objetivo del presente documento, el

siguiente árbol de decisión muestra las acciones que realiza un

jugador humano. Éstas son: elegir a qué se juega si comienza la

ronda, elegir si levanta las cartas o echa más y decidir que cartas

echa (este caso no se diferencia entre si miente o no, es su

propia elección).

3. CAPACIDAD DE APRENDIZAJEComo mencionamos en la introducción, el jugador virtual debe

ser capaz de aprender de la experiencia. Para implementar esta

característica, debemos almacenar datos sobre la credibilidad de

los jugadores. Esta credibilidad estará inicializada a un valor por

defecto. Cuando se levantan las cartas y se ha mentido, la

credibilidad de ese jugador disminuye y si no ha mentido

aumenta. Además para tener información de cuándo cada

jugador suele mentir, guardamos un valor de credibilidad por

cada turno.

4. DISEÑO DEL JUGADOR VIRTUALPara decidir qué acción ejecutar en cada momento de la partida

debemos recorrer el árbol de decisión. Dentro del árbol hay

decisiones deterministas (por ej: ¿empiezas la ronda?) y otras

aleatorias (por ej: ¿levantas las cartas del jugador anterior?).

Algoritmo de selección mentir o no cuando

empiezas ronda Cuando un jugador empieza la ronda, debe elegir el tipo de carta

a la que se va a jugar en esa ronda. Para maximizar su beneficio

el jugador escogerá el tipo de carta del que tenga mayor número.

En caso de que tenga varios tipos con un número máximo de

Inicio

Hay cartas a

qué se juega?

Miento?

Levantas?

Verdad?

1 o varias

cartas

verdaderas?

Hay cartas a

qué se juega?

Contrario

lleva cartas

Algoritmo

echar carta

falsa

Echa resto

cartas verdad

Echa 1 carta

verdad

Te llevas

cartas

Si

Si No

No

No Si

Si

No

No Si

Inicio

Empieza

ronda?

Levantas? Elige a qué

se juega

Echa cartas

Echa cartas

Si

Si

Verdad?

Te llevas

cartas

Contrario

lleva

cartas

No

No

No

Si

-35-

Page 42: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

cartas, la elección de uno u otro es irrelevante. Esta es una

decisión determinista.

Una vez que ha elegido el tipo tiene que echar cartas y debe

decidir entre mentir en el primer turno o echar cartas verdaderas

del tipo. Esta decisión será aleatoria.

Si mentimos (echamos cartas que no son del tipo) y el siguiente

jugador levanta las cartas, nos las llevaremos y volveremos a

tener el turno. Por tanto, la lógica indica que es rentable mentir

en el primer turno porque el riesgo que corremos es nulo y

podemos desprendernos de cartas sueltas que no nos hacen

mucho juego.

Como el número de cartas que hay en juego es cero, el único

factor que influirá en la decisión será la credibilidad que

tengamos en la primera ronda. El siguiente método ilustra la

decisión. Podemos ver que ésta es aleatoria por que utilizamos

un número aleatorio.

public boolean miente_no_riesgo(int numero_jugada,double

random){

return random>1-credibilidad[numero_jugada];

}

Algoritmo de selección mentir o no cuando no

empiezas ronda Ahora nos encontramos en una situación distinta al caso anterior

porque no es el primer turno de la ronda. Hay cartas en juego,

por tanto si mentimos y nos levantan las cartas nos las vamos a

llevar. Por tanto, el número de cartas en juego va a condicionar

nuestra decisión de mentir. La lógica nos recomienda que si hay

muchas cartas, riesgo alto, no deberíamos mentir.

Para modelar la decisión de no mentir utilizamos la siguiente

función de probabilidad en función del número de cartas en

juego y de nuestra credibilidad. La gráfica muestra la función de

probabilidad sin tener en cuenta la credibilidad.

De esta manera, cuando hay pocas cartas siempre decidimos

mentir, cuando hay muchas nunca mentimos y en un punto

intermedio tomamos una decisión en función del número de

cartas en juego y de nuestra credibilidad. En este último caso la

decisión que tomamos es aleatoria, mientras que en los otros es

determinista.

Algoritmo para echar carta falsa Una vez que el jugador virtual toma la decisión de mentir debe

decidir las cartas que va a echar. La lógica nos dice que a la hora

de mentir tenemos que echar las cartas que tenemos sueltas, las

del tipo que sólo tenemos una. Entonces lo primero que vemos

es cuántos tipos de cartas tenemos con una sola carta. Si sólo

tenemos un tipo echamos esa carta.

Si éste no es el caso, comprobamos la credibilidad que tenemos

con el algoritmo de selección de mentir o no cuando empiezas

ronda. Si tenemos poca credibilidad es más lógico echar una

sola carta falsa para no levantar sospechas en el rival y si nuestra

credibilidad es alta echar dos cartas falsas. Descartamos echar

más de dos cartas falsas cuando mentimos porque esto sería muy

sospechoso.

Algoritmo de selección de levantar o no las

cartas. En cada turno distinto del primer turno de la ronda el jugador

debe decidir entre levantar las cartas del rival anterior o no. En

caso de que no levantemos las cartas del rival anterior estamos

obligados a echar cartas. La estrategia que hemos elegido es

comprobar si tenemos cartas del tipo al que se juega, y en

función de si las tenemos o no, tomar una decisión.

Si tenemos cartas del tipo al que se juega la decisión más lógica

que tomaría un jugador humano sería no levantar las cartas del

rival porque él tiene cartas del tipo que quiere quitarse sin

necesidad de mentir. Por el contrario, si no tenemos cartas del

tipo al que se juega sabemos que en todos los turnos de la ronda

estaremos obligados a mentir. De modo que la tendencia será

levantar las cartas lo antes posible para evitar que el riesgo

crezca y nos descubran la mentira cuando hay muchas cartas en

juego.

Para modelar la decisión de levantar o no las cartas del rival

tendremos en cuenta el número de cartas en juego y la

credibilidad del rival anterior. La siguiente gráfica nuestra la

probabilidad de levantar las cartas en función únicamente del

número de cartas en juego. La idea es que cuando hay pocas

cartas en juego aunque no tengamos cartas del tipo al que se

juega decidamos no levantar y mentir. Si hay muchas cartas

querremos destapar pero deberíamos tener en cuenta datos sobre

la credibilidad del rival en esa ronda. Para el caso intermedio, la

decisión está condicionada por el número de cartas en juego y

deberíamos introducir información sobre la credibilidad del

rival.

-36-

Page 43: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Los condicionantes que hemos mencionado antes, la

credibilidad del rival, están incluidos en la siguiente función de

probabilidad. Vemos que cuando hay pocas cartas la decisión es

determinista, mientras que cuando hay más de 3 es aleatoria.

Algoritmo de tirar cartas verdaderas En el caso de que tengamos cartas del tipo al que se está

jugando, bien porque nosotros hayamos elegido a qué se juega o

lo haya elegido otro jugador, y decidimos no mentir y echar

cartas verdaderas, la pregunta es ¿cuántas cartas echo?

Si tengo varias cartas del tipo al que se juega y las echo todas en

el primer turno, no me quedarán más cartas para los siguientes

turnos y estaré obligado a mentir. Tampoco es una buena

estrategia mentir o echar pocas cartas del tipo durante varios

turnos porque otro jugador puede levantar las cartas y cambiar el

tipo, quedándonos con las cartas sin habernos desprendido de

ellas.

La estrategia óptima y que normalmente adoptamos los humanos

a la hora de jugar es: en el primer turno echamos una carta y en

el siguiente turno echaremos el resto de cartas verdaderas.

También podría ser válido que tengamos cartas del tipo pero que

en el primer turno decidamos mentir.

La siguiente función de probabilidad modela la decisión de

cuántas cartas verdaderas echar. Si hay pocas cartas en juego

echamos sólo una carta verdadera. Si hay muchas echamos el

resto de cartas verdaderas y en una situación intermedia

tomamos una decisión aleatoria en función del número de cartas.

La gráfica muestra la probabilidad de echar una o todas las

cartas cuando hay más de 5 cartas y menos 15 cartas en juego.

Probabilidad igual a 1 significa que echamos todas las cartas

verdaderas y probabilidad igual a 0 que sólo echamos una.

5. IMPLEMENTACIÓN DEL JUGADOR

VIRTUAL La implementación del jugador virtual de “Mentiroso” ha sido

realizada en el lenguaje de programación Java utilizando tres

clases:

Clase Jugador: que principalmente implementa la

funcionalidad del jugador virtual, aunque también la

del jugador humano.

Clase Partida: que implementa el método principal

llamado Juego().

Clase Mentiroso: en esta clase está incluido el método

main().

5.1 Clase Jugador La clase Jugador implementa la funcionalidad tanto del jugador

virtual como de los jugadores humanos proveyendo distintos

métodos dependiendo del tipo de jugador.

5.1.1 Atributos Los atributos almacenan información relevante de cada jugador.

Las decisiones tomadas por nuestro jugador máquina se basará

en ellos.

5.1.1.1 identi El atributo identi es un entero que representa unívocamente el

número de jugador que tiene asignado cada jugador dentro de la

partida. Es imprescindible para saber en cada momento a quien

le corresponde el turno dentro de la partida.

5.1.1.2 cartas El atributo cartas es un vector o array de enteros con 10

posiciones. Representa las cartas que tiene cada jugador en cada

momento. La forma de representar las cartas es almacenando el

número de cartas de cada tipo en la posición que representa

dicho tipo. Por ej: si tenemos dos reyes, almacenamos un 2 en la

posición 10 del vector.

Cartas debe ser un reflejo fiel de la situación del jugador en todo

momento. Por tanto, debemos modificarle cuando el jugador

echa cartas, se lleva las cartas después de que el siguiente rival

las haya levantado o cuando se descarta de algún tipo.

5.1.1.3 cartas_en_mano cartas_en_mano es un entero que representa el número de cartas

de que cada jugador tiene. Gracias a él cada jugador sabe de

manera rápida y fácil cuántas cartas tiene sin necesidad de tener

que recorrer el vector de cartas. La principal aplicación es avisar

a un jugador, cuando su valor es 0, de que el rival anterior se ha

quedado sin cartas y debe levantarlas para evitar que gane.

5.1.1.4 credibilidad credibilidad es un vector de números reales con 10 posiciones

donde almacenamos la credibilidad o factor de confianza de

cada jugador en cada una de los turnos. Por defecto, estará

inicializado a 0.7 para todos los turnos. Su valor aumentará o

disminuirá en función de si nos descubren diciendo la verdad o

mintiendo respectivamente.

Este atributo es muy importante porque va a influir en muchas

de las decisiones que el jugador virtual debe tomar. Además es

la forma que éste tiene de adquirir conocimientos (aprendizaje).

-37-

Page 44: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

5.1.2 Métodos Los métodos de la clase Jugador implementan las principales

acciones y decisiones, aunque algunos de ellos sirven de soporte

a otros.

5.1.2.1 descarte descarte es el método que realiza los descartes, valga la

redundancia. Comprueba si en el vector cartas existe algún tipo

con 4 cartas. Si se da el caso, elimina todas las cartas del tipo y

actualiza el atributo cartas_en_mano.

5.1.2.2 cartaMax El método cartaMax sirve de soporte para métodos como el de

elegir el tipo de carta a la que se va a jugar. Devuelve el número

correspondiente al tipo de carta del que tenemos un mayor

número. Si tenemos varios tipos con un número máximo de

cartas escoge el primero que se encuentra porque es irrelevante

cual de ellos elegir.

5.1.2.3 miente_no_riesgo Implementa el algoritmo de selección de mentir o no cuando se

empieza la ronda. En el primer turno de la ronda no hay cartas

en juego, por tanto, el riesgo que corremos si mentimos y nos

levantan las cartas es nulo. De ahí que para tomar esta decisión

sólo se tenga en cuenta nuestra credibilidad para el primer turno.

Devuelve un boolean: true mentir, false no mentir.

5.1.2.4 miente_riesgo Implementa el algoritmo de selección de mentir o no cuando no

se empieza ronda. En este caso hay cartas en juego por lo que

para tomar la decisión debemos tener en cuenta tanto

credibilidad como el número de cartas en juego.

5.1.2.5 cartasMin cartasMin es un método que ofrece soporte al método

tirarCartaFalsa. Comprueba en el vector cartas qué tipos tienen

un valor mínimo de cartas (distinto de 0 claro está) y devuelve

un vector de 10 posiciones en el que pone el dicho número

mínimo en la posición correspondiente a los tipos que lo tienen.

Explicado de otra manera, nos dice cuales son los tipos que

tienen menor número de cartas.

5.1.2.6 tirarCartaFalsa Este método implementa el algoritmo para echar carta falsa. El

objetivo es que cuando eche cartas falsas, éstas sean las que peor

juego me hacen. Todo jugador quiere tener todas sus cartas

emparejadas, esto es, no quiere tener tipos con una sola carta.

De modo que si el jugador ha decidido mentir y tiene una única

carta sin emparejar, la va a echar. En cualquier otro caso,

decidirá si echar 1 o 2 cartas falsas en función de su

credibilidad. Como hemos dicho antes, el jugador tratará de

evitar en la medida de lo posible tener que desemparejar las

cartas a la hora de mentir.

Después de haber tomado la decisión de cuantas cartas va a

echar, este método devuelve un vector de 10 posiciones con las

cartas que echa.

5.1.2.7 numeroTipos numeroTipos es un método que nos proporciona información

sobre el número de tipos distintos con cartas que un jugador

tiene. Es muy útil en el caso de que el jugador virtual empiece la

ronda y sólo tenga cartas de un tipo. Cualquier jugador sabe que

si él empieza la ronda y sólo le quedan cartas de un tipo, ha

ganado la partida. Para evitar que el jugador virtual cometa el

error de no echar todas las cartas a la vez, con una llamada a este

método garantizamos que las echará todas a la vez y ganará la

partida.

5.1.2.8 tirarCarta El método tirarCartas realiza la acción de tirar una única carta

del tipo que le especificamos, devolviendo un vector de 10

posiciones con dicha carta. No toma ningún tipo de decisión,

únicamente ejecuta una acción predeterminada.

5.1.2.9 tirarCartasVerdaderas Una vez que hemos decidido no mentir, tirarCartasVerdaderas

se encarga de implementar el algoritmo de tirar cartas

verdaderas. Ejecuta la acción de echar cartas del tipo al que se

juega en esa ronda después de decidir cuántas echa. Esta

decisión estará condicionada por el número de cartas que hay en

juego.

Este método ayuda a tomar una decisión correcta para evitar dos

cosas: por un lado que aun teniendo cartas del tipo las echemos

todas en el primer turno y estemos obligados a mentir en el resto

y por otro lado, que seamos demasiado conservadores,

guardemos las cartas del tipo para el final y se acabe la ronda sin

habernos desprendido de ellas.

5.1.2.10 destapar destapar devuelve un boolean: true levantar, false no levantar.

Implementa el algoritmo de levantar o no las cartas. Toma la

decisión en función de las cartas en juego y de la credibilidad.

El jugador virtual se plantea levantar las cartas sólo en el caso

de que no tenga cartas del tipo al que se está jugando, decisión

bastante lógica. El método está implementado de forma que el

jugador virtual sea bastante conservador e intente evitar el

riesgo. Esto es, si no tiene cartas del tipo va a intentar levantar

las cartas de su rival lo antes posible para evitar que le pillen

mintiendo y se lleve un buen montón de cartas.

5.1.2.11 tirarCartaHumano Este método únicamente es invocado por los jugares reales o

humanos, no por el jugador virtual. En este caso es propio

jugador el que toma la decisión de mentir o no y de cuántas

cartas echar. Recibe un vector de 10 posiciones con las cartas

que el jugador quiere echar y actualiza el vector cartas después

de ejecutar la acción. Devuelve un vector con las cartas echadas.

5.1.2.12 Otros métodos auxiliares A parte de los métodos ya citados, existen otros que les sirven

de apoyo pero que no realizan acciones o toman decisiones

propias del juego. Éstos son:

getCartas

numeroCartas

getCredibilidad

setCredibilidad

printCartas

addCartas

-38-

Page 45: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

5.2 Clase Partida

5.2.1 Atributos Los atributos de la clase Partida almacenan información

necesaria relativa al desarrollo y evolución de la misma.

5.2.1.1 jugadores El atributo jugadores es un vector de objetos de la clase

Jugador. Se utiliza para almacenar información acerca de los

jugadores de la partida y a la que va a acceder nuestro jugador

virtual para consultar la credibilidad del jugador anterior a él.

También tendría acceso para ver las cartas que tienen el resto de

jugadores. Evidentemente esta acción no está implementada

porque sería el equivalente a mirar las cartas de los rivales en la

realidad, hacer trampas.

5.2.1.2 jugador_actual Es un índice que indica a qué jugador le toca jugar en cada

turno. El índice se incrementa cíclicamente para que después del

último jugador continúe al primero.

5.2.1.3 cartas_mesa Este atributo indica las cartas que hay en juego, es decir, en el

montón. Cada vez que los jugadores echan cartas se actualiza su

valor, lo mismo ocurre cuando se levantan las cartas y se

inicializa a 0 para empezar una nueva ronda.

Muchos métodos lo reciben como parámetro porque sus

decisiones dependen del número de cartas en el montón, de ahí

su importancia.

5.2.1.4 randomGenerator El atributo randomGenerator es un objeto da la clase Random y

genera números aleatorios. Como se dijo en la parte de diseño,

algunas de las decisiones tomadas son aleatorias. Pues bien, este

carácter aleatorio se debe a la generación de randomGenerator.

5.2.1.5 a_que_se_juega Es un entero que puede tomar valores entre 0 y 9. Almacena el

tipo de cartas a la que se juega en una ronda, por lo que su valor

no cambia dentro de ella. Su valor lo decide al jugador que

comienza cada ronda.

5.2.1.6 descartados Es un vector de enteros de 10 posiciones y se utiliza para

almacenar los tipos de cartas de los cuales los jugadores se han

descartado.

5.2.1.7 todas_cartas_mesa El atributo todas_cartas_mesa es un vector de enteros de 10

posiciones en el que se almacenan todas las cartas que se han

echado en la presente ronda. En la posición de cada tipo se

almacena el número de cartas de dicho tipo.

Este vector es actualizado cada vez que se echan cartas y se

inicializa cuando algún jugador se lleva las cartas del montón.

Su función básica es que cuando se levantan las cartas y un

jugador se las lleva debemos tener información de cuales son las

cartas que hay en el montón.

5.2.1.8 ultima_jugada Es un vector de enteros de 10 posiciones que se utiliza para

almacenar las cartas que se han echado en el turno anterior. Es

necesario almacenar información del último turno porque si el

jugador levanta las cartas del jugador anterior hay que

comprobar si las cartas que ha echado realmente son las mismas

que dice haber echado.

5.2.1.9 numero_jugadas Es un índice que indica el número de turnos que se han jugado

en la presente ronda. Nos da información a cerca del número de

vueltas que ha dado la ronda. Este atributo es necesario para

acceder a la posición correcta en credibilidad.

5.2.2 Métodos La clase Partida cuenta con un único método llamado Juego()

que es el que implementa toda la funcionalidad tanto del jugador

virtual como de los jugadores humanos.

5.2.2.1 Juego() Primeramente se crea un vector con la 40 cartas de la baraja

española, se barajean y se reparten, en este caso en concreto

como el número de jugadores es 4 todos reciben el mismo

número de cartas.

Una vez que todos los jugadores tienen sus cartas, comienza el

juego en sí. La funcionalidad de la partida está implementada

por dos bucles while. El primero de ellos representa la partida

misma y se sale de él cuando hay jugador ganador (el que logra

deshacerse el primero de todas sus cartas). El segundo

representa cada una de las rondas y se sale de él cada vez que un

jugador levanta las cartas. Dentro de una ronda se avanza

cíclicamente de un jugador a otro. Cuando se comienza una

nueva ronda, el jugador que comienza depende del resultado del

levantamiento de cartas previo: si era mentira continúa el

jugador que mintió y si era cierto continúa el jugador que

levantó las cartas.

Dentro de cada ronda dependiendo del jugador ejecuta una

funcionalidad distinta. En el caso del jugador virtual se ejecutan

las acciones descritas en el árbol de decisión del jugador virtual.

Por el contrario, en el caso de los jugadores humanos se ejecutan

las acciones descritas en el árbol de decisión de jugadores

humanos. En este último caso las acciones y decisiones de echar

cartas, elegir el tipo de carta al que se va a jugar y de elegir si

levantar o no las cartas las realiza el propio jugador humano a

través de la consola, es decir, interacciona con el programa.

6. POSIBLES MEJORASDentro de las posibles mejoras del jugador virtual podemos citar

varias. La primera de ellas es modelar los ases como comodines.

En el juego real los ases funcionan como comodines. Esto es

que los comodines pueden tomar el valor que más convenga al

jugador en cada situación, es decir, los comodines se consideran

como una carta más del tipo al que se juega. Además los

jugadores están obligados a descartarse cuando tienen las cuatro

cartas del mismo tipo, a excepción de los ases. De modo que hay

8 cartas de cada tipo en juego, los 4 comodines y las 4 cartas del

tipo.

Otra mejora que podríamos introducir es almacenar información

de las cartas de cada jugador. Cada jugador tiene sus cartas

ocultas y no podemos verlas excepto en el caso de que se

levanten las cartas. Cuando se levantan las cartas no vemos

todas las que había en el montón pero sí las de la última jugada

o turno, que serían las que almacenaríamos. Con la información

de las cartas de otros jugadores y considerando las del jugador

-39-

Page 46: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

virtual, éste podría tomar decisiones más precisas porque cuenta

con mayor información.

Nuestra implementación está pensada para jugar con cuatro

jugadores, uno virtual y tres humanos. Sería conveniente que se

pudiese seleccionar el número de jugadores, siempre que fuese

mayor de dos. Esta mejora no conlleva cambios en el diseño,

únicamente ligeras modificaciones en la implementación.

Para finalizar, en el juego real aunque un jugador se deshaga de

todas las cartas y gane, el juego continúa hasta que sólo queda

un jugador que sería el “absoluto perdedor”. Pues bien, nuestra

implementación para cuando el primer jugador se deshace de

todas las cartas, gana. Una posible mejorar sería cambiar para

que el juego continuase hasta que sólo quedara un único

jugador. Esta mejora no supondría cambios en el diseño, sino

ligeras modificaciones en la implementación.

7. CÓDIGO FUENTEEn esta sección se incluye parte del código generado en la

implementación no su totalidad. Únicamente se muestran los

métodos más importantes y representativos.

7.1 Clase jugador public class Jugador{

/*Atributos*/

private int identi;

private int[] cartas;

private double[] credibilidad;

private int cartas_en_mano;

public Jugador(int[] cartas_input,int id){

cartas = new int[10];

for(int i=0;i<cartas.length;i++){

cartas[cartas_input[i]]++;

}

this.credibilidad = new double[10]; //10 jugadas como

máximo

for(int j =0;j<credibilidad.length;j++){

credibilidad[j] =0.6; //En principio la credibilidad en todos

los turnos es alta

}

identi = id;

cartas_en_mano = 10; //empiezas con 10 cartas

}

public boolean miente_no_riesgo(int numero_jugada,double

random){

return random>1-credibilidad[numero_jugada];

}

public boolean miente_riesgo(int jugada, double random,int

cartas_mesa){

double threshold;

if(cartas_mesa <= 5)return true;

if(cartas_mesa >= 20)return false;

threshold = (1+(double)(cartas_mesa-20)/15)

*credibilidad[jugada];

return random>threshold;

}

public int[] tirarCartaFalsa(int numero_jugada,double

random,int a_que_se_juega){

//Necesitamos saber a qué se juega para no tirar una carta de

ese tipo.

int[] cartas_min;

int suma=0;

int index=0;

int min_value = 0;

int primer_index=0;

int[] result = new int[10];

boolean tiras_varias =false;

numero_jugada = (int)numero_jugada/4; //para saber 'la

ronda'

cartas_min = cartasMin();

cartas_min[a_que_se_juega] = 0; //ignoramos a lo que se

juega, porque eso no lo vamos a tirar.

//tienes que mirar si tienes más de una carta de valor min

for(int i=0;i<10;i++){

if(cartas_min[i] != 0){

min_value = cartas_min[i];

primer_index=i; //no es el primer_index en principio

}

suma = suma+cartas_min[i];

}

if(suma ==1){ //sólo tenemos una carta de valor min=1

cartas_en_mano--;

return cartas_min;

}

else{ //tienes varias cartas de valor min

//mirar credibilidad

tiras_varias = miente_no_riesgo(numero_jugada,random);

//no es mentir, es ver si tiras 1 o varias, pero es equivalente

if(!tiras_varias){//solo tiras una

//tiras la primera que te encuentras

cartas[primer_index]--;

result[primer_index] = 1;

cartas_en_mano--;

return result;

}

else{ //tiramos varias

int j=0;

int veces =0;

if(min_value == 1){ //tiramos 2 cartas cualesquiera

while(j<10 && veces < 2){

if(cartas_min[j] != 0){

cartas[j]--;

result[j] = 1;

veces++;

}

j++;

}

}

else{ //min_value != 1

while(j<10 && veces == 0){

if(cartas_min[j] != 0){

cartas[j] = cartas[j] -2;

result[j] = 2;

veces = 1;

-40-

Page 47: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

}

j++;

}

}

cartas_en_mano -= 2;

}

return result;

}

}

public int[] tirarCartasVerdaderas(int cartas_mesa, int

a_que_se_juega, double random){

int[] result = new int[10];

double threshold;

if(cartas_mesa <= 5){//tiramos 1

cartas[a_que_se_juega]--;

result[a_que_se_juega] = 1;

cartas_en_mano--;

return result;

}

if(cartas_mesa >= 15){//tiramos todas

result[a_que_se_juega] = cartas[a_que_se_juega];

cartas_en_mano -= cartas[a_que_se_juega];

cartas[a_que_se_juega] = 0;

return result;

}

threshold = (1-(double)(cartas_mesa-5)/10);

if (random>threshold){ //tiramos 1

cartas[a_que_se_juega]--;

cartas_en_mano--;

result[a_que_se_juega] = 1;

return result;

}

else{ //tiramos todas

cartas_en_mano -= cartas[a_que_se_juega];

result[a_que_se_juega] = cartas[a_que_se_juega];

cartas[a_que_se_juega] = 0;

return result;

}

}

public boolean destapar(double[] credibilidad, int

numero_jugada, int cartas_mesa, double random){

double threshold;

if(cartas_mesa <= 3){

return false;

}

if(cartas_mesa >= 6){

threshold = (1-credibilidad[(int)numero_jugada/4]);

return random<threshold;

}

threshold = (1-(double)(cartas_mesa-3)/3)*(1-

credibilidad[(int)numero_jugada/4]);

return random<threshold;

}

}

7.2 Clase Partida No se ha incluido la funcionalidad del método Juego() porque es

muy extensa. En ella se sigue el mismo flujo que en los árboles y

se llaman a métodos definidos en la clase Jugador.

public class Partida{

/*Atributos*/

Jugador[] jugadores;

int jugador_actual;

int cartas_mesa;

Random randomGenerator;

int a_que_se_juega; //esto es un índice en el vector de 10

posibles cartas

int[] descartados; //array de los números descartados

int[] todas_cartas_mesa;

int[] ultima_jugada;

int jugador_ganador=-1;

int numero_jugadas=0; //dentro de una ronda, cuantas vueltas

se han dado.

/*Constructor*/

public Partida(){

randomGenerator = new Random();

jugadores = new Jugador[4];

jugador_actual = randomGenerator.nextInt(4);//elijo el

jugador que comienza aleatoriamente

a_que_se_juega = -1;

cartas_mesa = 0;

descartados = new int[10];

todas_cartas_mesa = new int[10];

ultima_jugada = new int[10];

numero_jugadas = 0;

}

7.3 Clase Mentiroso public class Mentiroso{

public static void main(String args[]){

Partida p = new Partida();

p.Juego();

}

}

8. REFERENCIAS[1] Manual sobre reglas del Mentiroso

http://portaljuegos.wdfiles.com/local--

files/mentiroso/ManualMentiroso.pdf

[2] Apuntes de la asignatura Inteligencia en Redes de

Comunicaciones

[3] API de java

http://docs.oracle.com/javase/6/docs/api/

-41-

Page 48: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

JUEGO MANCALA CON ALGORITMO MINIMAX REALIZADO

CON INTERFAZ GRÁFICA EN JAVA

Lucia Ruiz Ruiz Universidad Carlos III de Madrid [email protected]

Inteligencia en Redes de Comunicaciones

Artem Motsarenko Universidad Carlos III de Madrid [email protected]

Ingeniería Sup. en Telecomunicación

Jose Angel Leon Calvo Universidad Carlos III de Madrid [email protected]

Quinto curso, 1º cuatrimestre

ABSTRACT

En este documento vamos a realizar un juego basado en Mancala

usando como algoritmo Minimax con poda alfa-beta y dos niveles

de búsqueda. Estará realizado con lenguaje de programación Java

y una interfaz gráfica para que el usuario pueda jugar contra un

usuario programado.

Descriptores de los métodos

[Java]: public Movimiento MiniMaxAB(int [][] tableroActual,int

turno, int prof)

Este es el método fundamental del algoritmo Minimax que

detallaremos más adelante.

[Java]: public class JugadorTotal{public static void main(String[]

args) {

Esta es la clase que tiene el metodo main, esto es la que usaremos

para ejecutar el Mancala.

Términos GeneralesAlgorithms, Design, Reliability, Human Factors, Languages,

Theory.

KeywordsMancala, Minimax, Java, GUI, poda alfa-beta, Juegos de mesa,

1. INTRODUCCIÓN

Se desea implementar un jugador para una variante de la familia

de juegos Mancala. En nuestro caso, tendremos dos jugadores que

realizarán movimientos en turnos alternados. En cada uno de ellos

el jugador redistribuye (siembra) las piezas (semillas) de un hoyo

con el objetivo de capturar las piezas de su oponente.

El tablero del juego está formado por 2 filas de 6 hoyos cada una

y un contenedor. Una fila pertenece a un jugador y la otra a su

oponente. Una característica de este juego es que el número total

de semillas en el tablero permanece constante, y que cada jugador

sólo siembra en su fila. Por tanto, si un jugador captura semillas

del otro jugador está obligado a sembrar de nuevo estas semillas

en sus hoyos.

Para el desarrollo del algoritmo, se utilizará el procedimiento

minimax y una mejora de éste conocida como poda alfa-beta, el

cual permite generar un árbol de búsqueda para representar el

juego y elegir la mejor jugada en un momento determinado, sin

tener que examinar todas las posibles jugadas.

La motivación para el estudio de este tipo de juegos viene de lo

explicado en clase de Inteligencia en redes de comunicación y

especialmente de la parte de juegos con algoritmo Minimax [1].

En nuestra implementación no hemos llevado a cabo todas las

reglas que existen para Mancala, sino que hemos hecho una

implementación con las reglas básicas.

2. HISTORIA DE MANCALA [2]

Mancala es el nombre de una familia de juegos de tablero muy

extendidos por toda África. Este juego se practicaba ya en el

antiguo Egipto, pues se han encontrado tableros en la pirámide de

Keops, y de allí debió extenderse a otros países de África y Asia.

Forma parte desde tiempos muy remotos de la tradición cultural

de muchos pueblos y tribus, principalmente de África, y su

práctica ha estado ligada a diferentes hechos, como a ritos

funerarios, con motivo de mantener entretenido al espíritu del

difunto; a ceremonias nupciales, para asegurar la fertilidad de la

unión; y además, en casi todos los pueblos ha sido objeto de

adivinación. Hoy, sin embargo, se juega sobre todo por placer y se

ha convertido en el juego nacional de muchos países africanos,

donde es conocido bajo diversas denominaciones, conociéndose

casi doscientas variantes del juego, aunque todas ellas poseen

características comunes.

Los tableros varían ligeramente en cuanto material de

construcción en función de la zona a la que pertenecen, pero todos

cuentan con las dos filas de seis huecos, llamados pits de juego,

cada una, y las dos cavidades mayores, que se denominan Kalahs,

que sirven de depósito de las fichas capturadas por los jugadores.

El número de fichas con los que se comienza a jugar varía mucho

en función de la variante jugada, aunque lo más normal es

comenzar con 3 ó 4 fichas por hoyo de juego. Las reglas del juego

también varían en función de la variante jugada, aunque todas

ellas tienen una base común [3].

Las versiones de Mancala más corrientes en Europa, son el Awale

(también llamado Wari), el Kakua, el Mweso o Hus (que se juega

con 64 fichas en un tablero de 32 huecos), el Oware, que es una de

las variantes más sencilla, y el Kalah, Kalaha o conocido

simplemente como Mancala, que es la variante egipcia, la más

extendida y conocida en Occidente, y es la implementada en este

proyecto.

La filosofía en que se basa el Mancala es la siguiente: [4]

-42-

Page 49: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Las tiradas se desarrollan en 2 fases: sembrar y cosechar.

Se juega sobre un tablero con doce de agujeros, 6 por cada

jugador. Los agujeros es donde se siembra y donde se cosecha.

Las fichas del Mancala (normalmente semillas) son

indiferenciadas, todas iguales. Y no pertenecen a ningún jugador.

Se aplica el dicho “Las semillas son de quien las necesita. Quién

mejor siembra, mejor cosechará”.

En el Mancala hay 2 normas sagradas:

“No se puede eliminar al adversario”. Se entiende que cuando se

destruye al adversario, también se destruye la tierra que él cultiva.

Quien lo hiciera por error, perdería la partida. Se aplica el dicho

“Quien destruye la tierra donde cosecha, no podrá cosechar nunca

más”.

“No se puede dejar pasar hambre al adversario”. Esto significa

que si nuestro rival se queda sin semillas, debemos ceder de las

nuestras para que pueda seguir jugando.

3. ASPECTOS MATEMÁTICOS EN

MANCALA [5]

Los juegos de la familia Mancala son visto como algo simple ya

que son del tipo determinista (no influye el azar en forma de dado

u otro elemento aleatorio), tenemos información perfecta (excepto

por la dificultad de recordar todos los elementos del juegos) y no

hay demasiadas elecciones en cada movimiento, normalmente no

tenemos más posibilidades que el número de hoyos en una fila.

Sin embargo, el hecho que un solo movimiento tiene efecto en el

contenido de todos los hoyos del tablero, hace complicado ver las

consecuencias a largo a plazo o simplemente unos cuantos

movimientos hacia adelante.

Una propiedad matemática que nos permite ver la complejidad de

juegos como el Mancala es el número de posibles posiciones. Una

posición en Mancala consiste en un cierta distribución de las

semillas en los hoyos del tablero, pero también incluimos un

contador para las semillas que se pueden capturar o las que

mantenemos en nuestro poder sino tenemos nada que capturar. El

número de posibles posiciones depende del número de hoyos en

nuestro tablero y del número de semillas que tengamos en cada

uno. Este número, p, puede ser obtenido usando la siguiente

fórmula de combinatoria:

p = k * ( )

En este formula k, es el número de jugadores, m es el número

total de semillas y n es tanto el número total de hoyos y semillas

juntas o el número total de hoyos incrementado con el número

total de jugadores, sino almacenamos nada. El número p se

incrementa muy rápido con el incremento de hoyos y semillas. En

la tabla siguiente podemos ver el número de posibles posiciones

en un tablero de Mancala con dos filas de seis hoyos y dos

semillas para dos jugadores:

Tabla 1: Número de posibles movimientos en Mancala

Podemos ver como el número de posibles posiciones decrece,

cuando solo nos fijamos en las semillas que hay en el tablero.

Como podemos intuir solo un cierto número de estas posibles

posiciones aparecen durante el juego, ya que, esto depende de la

posición inicial del juego y de las normas que estemos usando. En

una variación del Mancala, el Kalah, solo un 5% de estas posibles

posiciones aparecen en un juego real [6].

4. INTELIGENCIA ARTIFICIAL EN

MANCALA

Inteligencia Artificial (IA) es una rama de la informática que

pretende que un ordenador pueda realizar lo que normalmente se

considera como inteligente o simular el comportamiento humano.

Hay dos motivos principales por las que se realiza esta

investigación: el primero es evitar esfuerzos a humanos con la

ayuda del ordenador. La segunda motivación es tratar de entender

cómo la inteligencia humana u operaciones mentales trabajan a

través de la simulación por ordenador. Los juegos han jugado un

papel importante en la inteligencia artificial, porque para jugar a

estos se considera como una tarea típicamente inteligente, pero

también porque los juegos casi siempre forman un ambiente

cerrado con posibilidades limitadas y reglas claramente definidas.

Esto último hace que para los investigadores en IA sea mucho

más fácil tratar con juegos que tratar, por ejemplo, con el mercado

de valores, pues este último está sometido a múltiples variables y

no se comporta según un conjunto de reglas cerradas. El resultado

más famoso de la IA en los juegos es, por supuesto, el hecho de

que en los ordenadores hoy en día se puede jugar al ajedrez a

nivel de gran maestro e incluso derrotando el ex campeón del

mundo. En la carrera competitiva entre ordenadores capaces de

jugar al ajedrez mediante programas, las técnicas se han

desarrollado mucho y se están aplicando actualmente estas

técnicas otras áreas de la IA y la informática. Se podría decir que

los juegos (y en especial el ajedrez) son la Fórmula 1 de la

informática.

La familia de juegos Mancala se ha introducido en Inteligencia

Artificial relativamente pronto, aunque la mayor parte de

investigación se limita a sólo dos juegos: Kalah y Awari.

Las instancias más pequeñas de Kalah fueron resueltos al

considerar todas las posiciones que en realidad pueden surgir

durante una partida de Kalah. Las bases de datos se han creado en

que cada posición y su valor de teoría de juegos se almacenan.

Los casos más grandes de Kalah se resolvieron mediante la

búsqueda de juegos de árbol (mismo mecanismo que usaremos

-43-

Page 50: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

nosotros en nuestra implementación). Para estos casos, sólo se

conoces una estrategia ganadora partiendo de una posición inicial

en concreto. El programa es, sin embargo, capaz de encontrar una

estrategia óptima para cada posición que pueda ocurrir durante un

juego de Kalah.

Esto significa que Kalah no es de interés para los investigadores

ya que la IA desea que el equipo para jugar el juego de Kalah

como sustitutos o de forma superior a los humanos. Sin embargo,

para los investigadores de la IA del juego y psicólogos que estén

interesados en el aspecto humano del juego de los resultados que

se obtuvieron siguen haciendo de Kalah algo muy útil.

5. APLICACIONES EDUCATIVAS DE

MANCALA [7]

Los juegos basados en Mancala ofrecen la oportunidad de ver

fácilmente cómo se puede mejorar con la práctica, y por lo tanto

ayudan a aprender a trabajar en algo para obtener una meta. Estos

juegos de mesa también enseñan a los niños a seguir

instrucciones, a acatar las reglas, jugar limpio y hacer frente a las

derrotas. Ayudan con la interacción cara a cara, la cooperación y

la competencia, y a mejorar las habilidades sociales. Su herencia

multicultural va en contra de las actitudes racistas y enseña la

cooperación. También aumentan la conciencia y el respeto hacia

su propio patrimonio cultural, en particular entre los jugadores de

África y Asia.

El Mancala se ha considerado una herramienta pedagógica muy

útil en la educación de niños y adultos durante siglos.

El juego Mancala mejora la capacidad de observación, los

jugadores tienen que desarrollar habilidades cognitivas para

distinguir buenos movimientos de los malos y posiciones

favorables del tablero frente a las desfavorables. Son ejercicios

que fortalecen la memoria y la concentración.

Mancala enseña el pensamiento analítico, ya que los jugadores

deben aprender a planificar y desarrollar estrategias, para ser un

jugador ganador tienen que prever lo que va a pasar varios

movimientos por adelantado. El juego obliga a los jugadores a

anticipar los próximos movimientos de su oponente. Tienen que

ponerse en la posición de otra persona, ya que de lo contrario

pueden ser derrotados fácilmente.

También ayuda con el pensamiento matemático, ya que para

empezar, uno tiene que mantener un registro del número de

piedras en cada agujero. Ellos ayudan con las habilidades básicas

de cálculo, pero también ofrecen grandes retos para los

matemáticos y científicos informáticos. Una variación moderna

llamada Aritmética fue diseñada específicamente para enseñar

aritmética en las escuelas primarias. Mancala también han sido

utilizados por las escuelas en los EE.UU. para ayudar a los niños

con discalculia (dificultad en el aprendizaje de las matemáticas).

Los juegos de Mancala desarrollan la motricidad fina., estas

incluyen el seguimiento visual, la coordinación mano-ojo, y la

capacidad de manipular objetos pequeños mediante la

transferencia en un proceso conocido como "siembra" (poner las

semillas en el tablero).

6. INTRODUCCIÓN ALGORITMO

MINIMAX CON PODA ALFA-BETA

La idea principal del algoritmo es tomar como punto de partida

una posición y utilizar un generador de movimientos para generar

un conjunto de posiciones de posibles sucesores, por lo que se

aplica una función de evaluación estática y se selecciona el mejor

movimiento obteniendo el valor. Los pasos que usaremos son los

siguientes [1]:

Generar el árbol de juego, alternando movimientos de

MAX y MIN y asignándoles los valores apropiados

(MAX>0, MIN<0).

Calcular la función de utilidad de cada nodo final,

recorriendo recursivamente los nodos hasta el estado

inicial.

Elegir como jugada a realizar aquel primer movimiento

que conduce al nodo final con mayor función de

utilidad.

En el desarrollo de los juegos de dos jugadores, a uno se le

denominará MAX y al otro MIN, cada uno con su turno

correspondiente

Esta búsqueda realizada se puede definir en base a: un Estado

Inicial, Movimientos Posibles (Sucesores, luego de aplicar la

Función de evaluación), un Estado Final, Valor o Función de

Utilidad; los mismos que a su vez vienen a definir un árbol de

juego y donde se desarrollará primero una búsqueda en

profundidad, para nuestro caso profundidad limitada.

Usualmente se puede decir en una búsqueda cualquiera, que la

estrategia óptima se logra alcanzar cuando tras un conjunto de

movimientos posibles se llega a la meta u objetivo que viene a ser

el estado ganador; sin embargo, la estrategia óptima que aquí

vamos a implementar no va por ese camino, sino más bien

consideramos que tras la realización de una jugada MAX, viene

una jugada MIN y tras la misma viene otra MAX y puede ser vista

en el árbol de juego (generado dado una cierta profundidad),

evaluando la función de valor Mínimax en cada nodo.

Debido a que uno de los problemas que tiene implícito el

algoritmo es el gran uso que hace de la memoria, realizaremos una

poda alfa-beta que nos permitirá no expandir todo los caminos

posibles, sino solo aquellos que mejoran el camino por el que

vamos, donde alfa y beta representan, respectivamente, las cotas

inferior y superior de los valores que se van a ir buscando en la

parte del subárbol que queda por explorar. Si alfa llega a superar o

igualar a beta, entonces no será necesario seguir analizando las

ramas del subárbol.

En pseudocódigo el algoritmo Minimax para el juego de Mancala

sería [8]:

Entrada: nodoJuego (Mancala), Profundidad, turnoPC, Alfa

(inicialmente -inf), Beta (inicialmente +inf)

Salida: el nodo (Mancala) a Jugar

1. Si el estado del nodoJuego es un final (Juego Terminado) o la

profundidad de análisis restante es cero,

1.1. Devolver nodoJuego cuyo valor sea el valor calculado

mediante la función de Evaluación respectiva.

1.2. En caso contrario, hacer

-44-

Page 51: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

1.2.1 Calcular los SUCESORES del nodoJuego

1.2.2 Si la lista de SUCESORES es vacía

1.2.2.1 Devolver nodoJuego cuyo valor sea el valor

calculado mediante la función de Evaluación respectiva.

1.2.2.2 En caso contrario, si el jugador del

nodoJuego es MAX

1.2.2.2.1 Devolver el nodo de la lista de

SUCESORES obtenido con la función MAXIMIZADOR-A-B

1.2.2.2.2 Sino Devolver el nodo de la lista de

SUCESORES obtenido con la función MINIMIZADOR-A-B

7. REGLAS DEL JUEGO [9]

El juego consiste en recolocar o redistribuir las semillas de un

hoyo en otros hoyos de la misma fila con el objetivo de capturar el

mayor número posible de semillas al oponente. El juego termina

cuando uno de los dos jugadores consiga que su oponente posea

una o ninguna semilla en su fila, en tal caso es el ganador de la

partida.

7.1 Estado inicial Se selecciona un hoyo que contenga semillas, y que

preferiblemente permita hacer una captura. Se siembran las

semillas del hoyo seleccionado en los sucesivos hoyos, yendo de

izquierda a derecha (relativas al jugador situado frente a su fila), y

depositando una semilla en cada hoyo. En el caso de que se

llegara sembrando al final de la fila (hoyo 5) se continúa

sembrando desde el principio (hoyo 1) y en la misma fila del

jugador.

Figura 1. Estado inicial del tablero Mancala

7.2 Captura/cesión Se da sólo cuando tras la siembra, la última semilla se deposita en

un hoyo que ya tenía semillas (hoyo de última siembra) y en el

hoyo opuesto del otro jugador también tiene semillas. En este

caso, se pueden dar las siguientes alternativas:

Captura semillas: Si cae en un hoyo con un número

impar de semillas (antes de depositar la nueva) y el

contrario en el hoyo opuesto también tiene un número

impar de semillas, se capturan las semillas del hoyo

opuesto y se siembran en la fila del jugador,

comenzando a sembrar a partir del siguiente hoyo a la

derecha del de última siembra. Tras la nueva siembra,

volverá a analizarse el nuevo hoyo de última siembra

para comprobar si de nuevo hay captura (en cuyo caso

se repetiría todo el proceso hasta que finalicen las

capturas) o cesión.

Figura 2: Estado de captura por jugador humano (parte inferior)

Como vemos en la figura 2, el jugador 2 tiene la posibilidad de

realizar una captura de las 2 semillas que tiene el oponente en el

cubilete 2 de su lado del tablero, por lo que realizando este

conseguirá 3 semillas más para su marcador (1 bola suya + las 2

que captura)

Cede semillas y cambio de turno: Si cae en un hoyo con

3 o más semillas que no cualifica para captura, y si el

contario tiene una o dos pero menos de 3 semillas en su

hoyo opuesto (en ambos casos, antes de depositar la

nueva), se ceden al hoyo contrario todas las semillas del

hoyo de última semilla y se pasa el turno al oponente.

Cambio de turno: En cualquier otro caso, se termina la

jugada y se pasa el turno al oponente.

7.3 Fin de turno

Un jugador finaliza su turno cuando se da alguno de los siguientes

casos:

después de la siembra inicial o captura, la última semilla

cae en un hoyo de su fila sin semillas.

cuando después de una captura no se puede realizar otra

captura.

cuando tiene que ceder semillas al contrario.

Figura 4. Estado del tablero Mancala cuando ha terminado el

turno del jugador 2

-45-

Page 52: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Si un usuario mete su última semilla en su recogedor puede repetir

turno como en el caso siguiente:

Figura 5. Estado del tablero Mancala antes de jugar el Jugador 2

El jugador 2 pulsará en el cubilete con 4 semillas por lo que podrá

volver a pulsar en otro sin tener que ceder el turno al contrincante

Figura 6. Estado del tablero Mancala cuando ha terminado el

turno del jugador 2 y sigue en su turno

7.4 Fin del juego

Existen dos posibilidades de fin de juego: por victoria de uno de

los jugadores o por tablas. Un jugador gana la partida cuando

consigue que su oponente tenga en su fila una o ninguna semilla o

cuando el oponente abandona o si su función de evaluación

comete algún error, por ejemplo abortando.

Otro factor que hace que un jugador gane es que tenga mayor

número de semillas que el contrario, en nuestro caso si tiene más

de 24 semillas en su contenedor, el jugador ganará la partida.

Figura 7: Estado final del tablero de Mancala

8. ALGORITMO MINIMAX PARA

MANCALA

Para la representación del algoritmo de Mancala usaremos una

representación en forma de árbol, que es la más usada para este

tipo de algoritmos, ya que nos permite clasificar el algoritmo

según el número de niveles que tenemos que recorrer y dar un

valor a cada una de las ramas de un nodo:

8.1 Estado inicial

Figura 8: Representación estado inicial del tablero de Mancala

Representaremos como uno de los posibles estados del tablero de

juegos con un nodo del árbol y por medio de flechas evaluaremos

con la función de evaluación los distintos escenarios posibles.

El árbol estará formado por nodos ordenados en niveles de

profundidad en los cuales cada uno pertenecerá respectivamente a

nuestro turno y el siguiente al jugador adversario.

8.2 Representación de los dos niveles de

búsqueda

Figura 9: Representación árbol con profundidad 2

La figura que hemos dibujado representa la búsqueda en dos

niveles (aunque para simplificar el dibujo simplemente hemos

expandido el árbol en un nodo). Esta búsqueda como vemos tiene

el problema de ser muy costosa en términos de memoria, ya que la

búsqueda en términos computacionales sería del orden de:

Complejidad = 6!*6! = 518400 posibilidades lo que resulta ser un

número bastante elevado y simplemente estamos expandiendo en

dos niveles.

Si realizamos una búsqueda en más niveles obtenemos los

siguientes datos:

3 niveles 3733248000

4 niveles 268738560000

5 niveles 193491763200000

Tabla 2: Número de movimientos en el árbol Minimax

Estado

Inicial

-46-

Page 53: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Como podemos observar si aumentamos el número de niveles, los

valores se vuelven en términos computacionales y de memoria

imposibles de manejar, por lo que además de reducir el número de

niveles que vamos a manejar, también aplicaremos la poda alfa-

beta que nos ayudará a no tener que manejar todas las

posibilidades del árbol, sino quedarnos con únicamente las que

mejoran el camino.

Estamos realizando una búsqueda en profundidad (DFS) que

puede mejorar su eficiencia usando una técnica de ramificación y

acotación, con la cual una solución parcial se abandona cuando se

comprueba que es peor que otra solución conocida o umbral.

Por lo tanto, la estrategia de poda del algoritmo Minimax que

usaremos es la llamada poda alfa-beta, puesto que dado que

existen dos jugadores maximizador y minimizador, existen dos

valores umbral alfa y beta para acotar la búsqueda de cada uno

respectivamente.

El valor alfa representa la cota inferior del valor que

puede asignarse en último término a un nodo

maximizante.

El valor beta representa la cota superior del valor que

puede asignarse en último término a un nodo

minimizante.

En un nivel dado, el valor de umbral alfa o beta según

corresponda, debe actualizarse cuando se encuentra un umbral

mejor.

Aparte de este algoritmo que sería una implementación básica,

existe otros métodos para refinar el algoritmo y conseguir mejores

resultados La efectividad del procedimiento alfa-beta depende en

gran medida del orden en que se examinen los caminos. Si se

examinan primero los peores caminos no se realizará ningún

corte. Pero, naturalmente, si de antemano se conociera el mejor

camino no necesitaríamos buscarlo.

La efectividad de la técnica de poda en el caso perfecto ofrece una

cota superior del rendimiento en otras situaciones. Según Knuth y

Moore (1975), si los nodos están perfectamente ordenados, el

número de nodos terminales considerados en una búsqueda de

profundidad d con alfa-beta es el doble de los nodos terminales

considerados en una búsqueda de profundidad d/2 sin alfa-beta.

Esto significa que en el caso perfecto, una búsqueda alfa-beta nos

da una ganancia sustancial pudiendo explorar con igual costo la

mitad de los nodos finales de un árbol de juego del doble de

profundidad.

Describimos ahora otras modificaciones del procedimiento

MINIMAX que también mejoran su rendimiento.

La poda de inutilidades es la finalización de la

exploración de un subárbol que ofrece pocas

posibilidades de mejora sobre otros caminos que ya han

sido explorado

Espera del reposo: Cuando la condición de corte de la

recursión del algoritmo MINIMAX está basada sólo en

la profundidad fija del árbol explorado, puede darse el

llamado efecto horizonte. Esto ocurre cuando se evalúa

como buena o mala una posición, sin saber que en la

siguiente jugada la situación se revierte. La espera del

reposo ayuda a evitar el efecto horizonte. Una de las

condiciones de corte de recursión en el algoritmo

MINIMAX debería ser el alcanzar una situación estable.

Si se evalúa un nodo de un árbol de juego y este valor

cambia drásticamente al evaluar el nodo después de

realizar la exploración de un nivel más del árbol, la

búsqueda debería continuar hasta que esto dejara de

ocurrir. Esto se denomina esperar el reposo y nos

asegura que las medidas a corto plazo, por ejemplo un

intercambio de piezas, no influyen indebidamente en la

elección.

Búsqueda secundaria: Otra manera de mejorar el

procedimiento MINIMAX es realizar una doble

comprobación del movimiento elegido, para

asegurarnos que no hay una trampa algunos

movimientos más allá de los que exploró la búsqueda

inicial. Luego de haber elegido un movimiento en

concreto con un procedimiento MINIMAX que explora

n niveles, la técnica de búsqueda secundaria realiza una

búsqueda adicional de d niveles en la única rama

escogida para asegurar que la elección sea buena.

Uso de movimientos de libro: La solución ideal de un

juego sería seleccionar un movimiento consultando la

configuración actual en catálogo y extrayendo el

movimiento correcto. Naturalmente en juegos

complicados esto es imposible de realizar, pues la tabla

sería muy grande y además nadie sabría construirla. Sin

embargo, este enfoque resulta razonable para algunas

partes de ciertos juegos. Se puede usar movimientos de

libro en aperturas y finales, combinando con el uso de

búsqueda MINIMAX para la parte central de la partida,

mejorando el rendimiento del programa. Por ejemplo,

las secuencias de apertura y los finales del ajedrez están

altamente estudiados y pueden ser catalogados.

Búsqueda sesgada: Una forma de podar un árbol de

juegos es hacer que el factor de ramificación varíe a fin

de dirigir más esfuerzo hacia las jugadas más

prometedoras. Se puede realizar una búsqueda sesgada

clasificando cada nodo hijo, quizás mediante un

evaluador estático rápido y luego utilizando la siguiente

fórmula:

R(hijo) = R(padre) - r(hijo)

donde R es el número de ramas de un nodo y r es el

lugar que ocupa un nodo entre sus hermanos ordenados

según la evaluación estática rápida.

Una variante respecto a la que hemos estudiado es tener en cuenta

la inteligencia del adversario, esto es, que pueda obtener algún

movimiento que este en alguna capa más profunda que la que

estudia nuestro algoritmo. Aun suponiendo que el algoritmo

siempre explora a una mayor profundidad que el adversario, éste

último puede equivocarse y no elegir el camino óptimo. La

consecuencia es que el algoritmo elige el movimiento basándose

en una suposición errada.

Ante una situación de derrota, según sugiere Berliner (1977),

podría ser mejor asumir el riesgo de que el oponente puede

cometer un error.

Análogamente, cuando se debe elegir entre dos movimientos

buenos, uno ligeramente mejor que el otro, podría resultar mejor

elegir el menos mejor si al asumir el riesgo de que el oponente se

equivoque nos conduce a una situación muchos más ventajosa.

Para tomar esta clase de decisiones correctamente, el algoritmo

debería modelar el estilo de juego de cada oponente en particular.

Esto permitiría estimar la probabilidad de que cometa distintos

errores. Sin lugar a dudas, esto es muy difícil de lograr y se

-47-

Page 54: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

necesita contar con técnicas de aprendizaje para que el algoritmo

obtenga conocimiento sobre su oponente a lo largo del juego.

9. ALGORITMO MINIMAX

IMPLEMENTADO

Vamos a describir la implementación que hemos realizado para

nuestro juego de Mancala empezando por la función de

evaluación:

La función de evaluación que se ha implementado es muy

sencilla, el jugador automático elegirá como movimiento optimo

el que le permite depositar más semillas en su contenedor, sin

verificar ningún otro parámetro. Hemos elegido esta estrategia por

simplicidad en la ejecución y porque es la que más se parece a un

jugador novato o con poca experiencia en este tipo de juegos.

Una forma de mejorar esta función de evaluación sería que el

jugador también tuviese en cuenta el número de semillas que

puede capturar con su movimiento o que jugase de una forma

defensiva, esto es, en vez de intentar llenar su contenedor mover

de tal forma que el oponente estuviera bloqueado y no pudiese

rellenar su contenedor.

Una vez comentada la función de evaluación vamos a comentar

como hemos realizado en Java el Mancala.

Las dos filas de hoyos las hemos realizado como un array de siete

columnas y dos filas (en las que incluimos también los

recogedores de cada jugador) y en nuestro juego, hemos colocado

como estado inicial que cada hoyo tenga 4 semillas:

iniciales = 4;

bolas = new int[7][2];

bolas[6][0]= 0;

bolas[6][1]= 0;

for(int j =0;j<2;j++){

for (int i = 0;i<6;i++){

bolas[i][j]=iniciales;

}

}

El juego termina cuando un jugador obtiene más de la mitad de las

semillas que hay en el sistema completo, esto es, cuando obtiene

más de 24 semillas en su contenedor:

Dentro del método haGanado():

if( bolas[6][0]<24 ){

System.out.println("Ha ganado el jugador 2");

return 1;

}else if(bolas[6][0]>24){

System.out.println("Ha ganado el jugador 1");

return 0;

}

if(bolas[6][0]==24){

System.out.println("Empate");

return 3;

}

Vamos a explicar el algoritmo Minimax que hemos usado cuyo

código es el siguiente:

public Movimiento MiniMaxAB(int [][] tableroActual,int turno,

int prof){

cuantasVeces++;

System.out.println("MINIMAX:"+cuantasVeces);

int valores[][]= tableroActual;

imprimeTablero(valores);

List <Movimiento> lista= PosiblesMovimientos(valores, turno);

Movimiento mov= new Movimiento();

Movimiento movAux= new Movimiento();

Movimiento pulsar = new Movimiento();

System.out.println("PROFUNDIDAD = "+prof);

if(prof<=0 || lista == null || lista.isEmpty()){

System.out.println("Ultimo nivel : PROFUNDIDAD = "+prof);

if(lista == null || lista.isEmpty()){

System.out.println("No hay movimientos posibles");}

for(int i = 0 ;i<lista.size();i++){

if(i==0)movAux= lista.get(i);

mov = lista.get(i);

imprimeTablero(mov.getTablero());

if(mov.getPuntos()> movAux.getPuntos())

movAux= mov;

}

return movAux;

}

for(int i = 0 ;i<lista.size();i++){ //recorremos lista

if(turno==0)turno=1;else turno=0

Movimiento m=

MiniMaxAB((lista.get(i)).getTablero(),turno,prof-1);

if(i==0)pulsar=m;

(lista.get(i)).setPuntos(m.getPuntos());

if(lista.get(i).getY()==0){

if(lista.get(i).getPuntos()>pulsar.getPuntos())

pulsar= lista.get(i);

}

else{

if(lista.get(i).getPuntos()<pulsar.getPuntos())

pulsar= lista.get(i);

}}

return pulsar;

Esta función va hasta el nivel más profundidad dado por el valor

de la profundidad (a más profundidad mayor gasto en memoria) y

-48-

Page 55: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

una vez estemas en lo más profundo del árbol, evaluamos cada

una de las ramas de ese nodo. Una vez tengamos todos los nodos

almacenados en una lista de posibles movimientos elegimos aquel

que tenga un mayor valor (en nuestro caso aquel que permita

meter un mayor número de semillas en el recogedor en el

siguiente movimiento) y hacemos lo mismo con todos los nodos

de este último nivel.

Una vez se haya obtenido el mayor valor para este nivel,

recorremos de forma inversa el árbol, realizando la misma

operación con los nodos superiores, hasta llegar a la raíz de la

cima con todos los nodos, hasta el nivel de profundidad

correspondiente, evaluados. Nos quedamos con aquel que nos da

un mayor valor neto, este es el que nos permite meter mayor

número de semillas en nuestro recogedor en el siguiente

movimiento y posteriores.

10. REFERENCIAS

[1] Villena, Julio. Apuntes de la asignatura Inteligencia en redes

de comunicación. Universidad Carlos III de Madrid

[2] Recurso web:

http://www.dma.fi.upm.es/docencia/primerciclo/matrecreativ

a/juegos/mancala/historia.htm.

[3] Recurso web: http://brainking.com/es/GameRules?tp=103

[4] Recurso web:

http://aprendiendomatematicas.com/tag/mancala/

[5] Jeroen Donkers, Jos Uiterwijk and Alex de Voogt, Mancala

games - Topics in Mathemathics and Artificial Intelligence

[6] Irving, G., Donkers, H. H. L. M., & Uiterwijk, J. W. H. M.

(2000). Solving Kalah. ICGA Journal, 23(3), 139-146.

[7] Retschitzki, J. (1990). Stratégies des joueurs d’awélé. Paris:

L’Harmattan

[8] Recurso web: http://nineil-leissi-

cs.blogspot.com.es/2008/06/proyecto-1-unidad-juego-

mancala.html

[9] Recurso web: http://www.bgamers.com/mancrul.htm

-49-

Page 56: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Domótica

Javier García Martín 100071014

[email protected]

Eva Mansilla López 100066852

[email protected]

ABSTRACT La Inteligencia artificial también comprende lo que se conoce como la Domótica la cual estudia la inteligencia de las casas.

Sistemas que realicen que las luces del pasillo se activen al pasar sin pulsar ningún interruptor, encender la calefacción mediante una simple llamada de teléfono, generar alarmas por la entrada de intrusos cuando no estamos en casa, persianas a través de la televisión con un mando a distancia, desde cualquier teléfono y esto sin requerir mayor esfuerzo sino simplemente por una maquina quien es capaz de recibir órdenes y actuar sin protestar, ni quejas.

KeywordsDomótica, sostenibilidad, vivienda inteligente, energética, confort, seguridad, ahorro, aprendizaje

1. INTRODUCCIÓNEl Hogar Digital o la Vivienda Inteligente es una casa donde las necesidades de los habitantes referentes a la seguridad, confort, gestión y control, ocio y entretenimiento, telecomunicaciones, ahorro de energía, tiempo y recursos son atendidas mediante la integración de sistemas, productos, nuevas tecnologías y servicio.

Por ello la Domótica cobra un importante papel para la creación de dichos hogares ya que, su definición es la automatización y control de aparatos y sistemas electrotécnicos en la vivienda. Los objetivos principales de la domótica es aumentar el confort, ahorrar energía y mejorar la seguridad.

El hogar hoy en día dispone de un gran número de equipos y sistemas autónomos y redes digitales no conectados entre ellos como la telefonía, los sistemas de acceso, la televisión, etc.

El hogar digital o la vivienda inteligente es el resultado del proceso de integración de estos equipos y sistemas autónomos. La integración de sistemas de en una Viviendas Inteligentes en combinación con el servicio de Banda Ancha nos lleva al concepto. Además de los sectores de la domótica, electrodomésticos y seguridad, un gran número de fabricantes también ha llegado a utilizar el concepto Hogar Digital o Vivienda Inteligente para sus productos y sistemas. Esto nos lleva a la siguiente definición del concepto del Hogar Digital:

“El Hogar Digital es una vivienda que a través de equipos y

sistemas, y la integración tecnológica entre ellos, ofrece a sus

habitantes funciones y servicios que facilitan la gestión y el

mantenimiento del hogar, aumentan la seguridad; incrementan el

confort; mejoran las telecomunicaciones; ahorran energía, costes

y tiempo, y ofrecen nuevas formas de entretenimiento, ocio y

otros servicios dentro de la misma y su entorno.”

Centrándonos en el concepto de domótica tiene muchos años de existencia como tal, desde que a un universitario se le ocurrió

conectar dos cables eléctricos a las manecillas de un reloj despertador, para que poco tiempo después, y movidos por dichas manecillas, los cables cerraran un circuito formado por una pila y una lámpara. Ese pudo ser el momento en que nació la idea de temporizar una función eléctrica. La idea de la moderna automatización de hogares, lugares de trabajo, etc. Se dio para proporcionar a los usuarios mayor comodidad, ahorro de energía y por supuesto, dinero, tiene pocos años, y fue desarrollada y patentada por una empresa escocesa utilizando un novedoso sistema de transmisión de señales a través de la red eléctrica. Más tarde se fue perfeccionando dicha idea y se utilizaron una serie de emisores que se enchufaban en una parte de la red eléctrica y que eran capaces de emitir una señal que circulaba a través de ella.

El objetivo del uso de la domótica es el aumento del el confort, el ahorro energético y la mejora de la seguridad personal y patrimonial en la vivienda.

La configuración de un sistema domótico está íntimamente ligada a los procedimientos de transmisión de información que posibilitan el diálogo entre dichos periféricos y la unidad central. Los terminales (radiadores de calefacción, electrodomésticos, puntos de luz, etc.). Suelen ser equipos convencionales a los que se aporta una inteligencia o capacidad de comunicación a través de una interfaz. Los elementos de campo comprenden todo el conjunto de sensores que permiten convertir una magnitud física en señal eléctrica, y los actuadores u órganos de mando, capaces de transformar una señal eléctrica en una acción sobre el entorno físico. Todos los elementos de campo envían y reciben señales a través de una red de comunicaciones (bus domótico), para comunicarse entre ellos y con la unidad central encargada de gestionar los intercambios de información. Estas señales de control están codificadas de una determinada forma (protocolos de comunicación), por lo que se necesitan unos elementos que pasen las señales bus y, a su vez, de señales bus a señales de salida a los actuadores (relés, interruptores, etc.). Estos elementos se suelen denominar de diferentes formas: módulos de entrada/salida, acopladores, interfaces, etc.

Un sistema domótico puede trabajar de forma centralizada o descentralizada. El funcionamiento global del sistema depende de la programación introducida en la central domótica. En cambio, en los sistemas descentralizados cada elemento es inteligente y se programa de forma individual. Las posibilidades de aplicación de la domótica en el espacio domestico son muy amplias. No obstante, las áreas en las que se han dedicado mayores esfuerzos son las relativas a la seguridad, la automatización de tareas domésticas o el confort, la gestión de la energía y las comunicaciones. De hecho para calificar de domótica una vivienda debe contemplar estas cuatro familias de servicios.

-50-

Page 57: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

2. HISTORIAEn el año 1984, la empresa American Association of House Builders aculó el término de domótica, al iniciar el desarrollo del concepto, implementando componentes electrónicas en las casas. Éstas, que ya disponían de paneles solares, basaban su inteligencia en una interacción de la tecnología en su interior. Aunque en 1967 ya se empezó a implementar este sistema, su éxito no tuvo mucha acogida, ya que su coste era muy elevado, las condiciones de las viviendas no eran las adecuadas y el desarrollo tecnológico no era suficiente para encontrar recursos que verdaderamente fueran útiles para el usuario.

Figura 1

La base de esos sistemas es el llamado Protocolo X-10, base de las comunicaciones entre dispositivos, y que actualmente sigue utilizándose. A diferencia de otros éste hace uso de la red eléctrica (Power Line Communication) para la intercomunicación de los distintos equipos al módulo central, el cual está encargado de controlar los dispositivos de forma remota, y así no necesita cableado adicional. Este sistema fue desarrollado por ingenieros de PicoElectronics implementado en un microchip que pudiera ser acoplado a cualquier conjunto y así controlarlo de forma remota.

A lo largo del tiempo se han diferenciado dos tipos de sistemas domóticos.

El primero de ellos es el centralizado, el cual concentra la inteligencia en un módulo central que se encarga de obtener información del resto de equipos y en base a ello ejecuta las órdenes pertinentes.

El segundo se trata del sistema modular o distribuido en el que los equipos tienen la autonomía suficiente para procesar la información y en base a ella actuar de forma independiente. Este sistema obliga a la instalación de un cableado complementario que haga de bus para los dispositivos implicados.

La principal ventaja de éste último es la existencia de un único controlador y receptor que aseguran el control total sobre la casa, mientras que el caso centralizado no puede acceder a algunos dispositivos, por lo que el estándar X10 se vuelve indispensable en el sistema modular.

El término de Edificio Inteligente surgió en EE.UU. cuando se incrementó la construcción de edificios en los que la monitorización de calefacción, aire y ventilación era algo indispensable, debido en parte a la concienciación sobre el ahorro energético que comenzaba a estar presente en la sociedad. Esto

conllevó la integración de una red de datos que simplificara los largos cableados a desplegar.

El término domótica en sí empezó a usarse en la década de los 2000, cuando ya estos dispositivos estaban presentes de una forma u otra en los nuevos edificios, que con su simple presencia de una forma u otra automatiza el hogar.

Actualmente, se dan a conocer los beneficios de una casa automatizada y conjuntamente se han desarrollado regulaciones del mercado. Además, las modificaciones en las viviendas han ido acompañadas de las necesidades de las personas.

Los inconvenientes iniciales de las comunicaciones entre dispositivos por cable, se han atenuado con la utilización de redes de naturaleza inalámbrica, junto con la reducción de su precio. Sin embargo, tienen el inconveniente de ser más vulnerables, al mismo tiempo que aparecen limitaciones en cuanto a distancia y ancho de banda. Por ello es necesario buscar un compromiso entre ambas haciendo uso de cada en función de las condiciones de la instalación.

El sistema central del sistema domotizado es la llamada Pasarela Residencial, la cual contiene la conexión de redes, el control centralizado y las aplicaciones. Se pueden diferenciar las de banda ancha (routers, módems,…) que hacen de puente entre la red interna e Internet; y por otro lado está la pasarela multiservicios, encargadas de aplicaciones en tiempo real, y nexo entre las redes de control y datos.

En el futuro la domótica hará gran uso de la tecnología LED, donde el ahorro se convertirá en un elemento crucial. Además los proveedores podrán controlar la energía de forma remota (incluso la que produzca el propio hogar) y tendrán el control de la demanda. Aquí entrarán a jugar un papel importante los científicos sociales, cuyo papel será desarrollar el mercado al mismo tiempo que formar a los usuarios tanto en tecnología como en sostenibilidad.

Los empresarios por su parte, ven en este mercado una posibilidad de inversión por etapas. Esto quiere decir que el servicio va creciendo uniformemente implantándose de poco en poco en diferentes facetas, como por ejemplo la ayuda a ancianos y discapacitados, obligando a la continua innovación y desarrollo. En el caso de las personas discapacitadas se barajan opciones como el uso de iris como medio de comunicación. Como este hay multitud de mejoras que estarán acompañadas de economías de escala, con lo que su uso será inherente como puede ser la telefonía móvil o internet.

3. DOMÓTICA

3.1 Áreas

3.1.1 Energética El aspecto más valorado en el sector domótico es su uso para la eficiencia energética, ya que disminuye el consumo energético y reduce el impacto medioambiental.

Domótica y eficiencia energética en la actualidad van de la mano. Si hace treinta años la principal funcionalidad del hogar inteligente era la seguridad, hoy en día la mayor parte se profundiza sobre este sector, en gran medida por el importante ahorro económico que tiene el consumidor así como con la

-51-

Page 58: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

reducción del impacto medioambiental, que tan de moda está en nuestros días.

Un sistema domótico se puede instalar prácticamente en cualquier hogar. Su complejidad depederá en buena parte de las necesidades del usuario y las características del proyecto. En España existe la asociación CEDOM, que integra a todos los organismos domóticos a nivel nacional.

Domótica y eficiencia energética son conjuntamente en las siguientes partes de la casa: control de iluminación, gestión de climatización, puesta en marcha de electrodomésticos y monotorización de consumo eléctrico.

Figura 2. Electrodomésticos domóticos

En cuanto al control de iluminación, se implantan dispositivos de adaptación del nivel de la iluminación a determinadas situaciones, como puede ser un área de la casa específica, la iluminación natural o no de ésta, o la presencia de personas en ella. Estos se activan de forma automática de manera que se regulan toldos y persianas, así como dispositivos lumínicos artificiales.

En la parte de climatización, el hogar digital busca el máximo ahorro del consumo energético y la reducción, también máxima del impacto medioambiental. Se consigue mediante el control de la calefacción y el aire acondicionado, manejando variables entre las que se encuentran temperatura exterior e interior, presencia de personas, apertura de personas o aprovechamiento de la luz solar con toldos, persianas y cortinas. Por poner un ejemplo, una diferencia de 1ºC de temperatura, supone un incremento de un 10% del consumo.

Para el tema de los electrodomésticos, la aplicación domótica no es tanto en el ahorro energético (ya que éstos se diseñan cada vez más con un compromiso con el medio ambiente) sino más en los horarios de funcionamiento. Se buscan aquellos en los que el precio de la electricidad es menor así como los que mejor se amolden a las necesidades del usuario. Por ejemplo, una persona que no se encuentra todo el día en casa, puede dejar tranquilamente su ropa en la lavadora y ésta se encargará de programar su lavado y secado para que esté disponible para el día siguiente.

La función de la monitorización del consumo, consiste en la generación de una serie de informes y estadísticas de consumo de la vivienda, con los que se pueden analizar los fallos como exceso de consumo, y sus respectivas causas. Las conclusiones nos ayudarán a corregir algoritmos y reglas y poder aconsejar al

usuario incluso, mejorando así la sostenibilidad y el medio ambiente.

3.1.2 Confort El confort conlleva todas las actuaciones que se puedan llevar a cabo que mejoren el confort en una vivienda. Dichas actuaciones pueden ser de carácter tanto pasivo, como activo o mixtas. iluminación (apagado general de todas las luces de la vivienda, automatización del apagado/ encendido en cada punto de luz, regulación de la iluminación según el nivel de luminosidad ambiente), automatización de todos los distintos sistemas/ instalaciones / equipos dotándolos de control eficiente y de fácil manejo, integración del portero al teléfono, o del videoportero al televisor, control vía Internet, gestión Multimedia y del ocio electrónicos, generación de macros y programas de forma sencilla para el usuario.

Para el control de riego a través de un sensor de humedad o de lluvia, detecta la humedad del suelo y de forma automática riega sólo cuando es necesario.

Los sistemas de regulación de la calefacción, adaptan la temperatura de la vivienda en función de la variación de la temperatura exterior, lo hora de día o la presencia de personas de la casa.

El control automático inteligente de toldos, persianas y cortinas de la vivienda, gestiona la captación de energía solar, permitiendo aprovecharla al máximo en invierno, y evitándola en la medida de lo posible en verano.

Figura 3. Salón domótico

La detección de apertura y cierre de ventanas y puertas, avisan al usuario de si están abiertas cuando está activada la climatización, y si procede, reduce el consumo o incluso apaga los sistemas de climatización

3.1.3 Seguridad El área de seguridad se encarga del control de los riesgos de accidentes, inundaciones, incendios, escapes de gas, robos, etc. Lo más importante actualmente se centra en las alarmas y en la protección de estas casa delos robos y de la intrusión.

Los sistemas de seguridad y alarmas en el contexto del edificio y hogar se pueden clasificar en cuatro áreas:

Alarmas de Intrusión (movimiento, presencia, presión, etc.)

-52-

Page 59: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Alarmas Técnicas (incendio, humo, inundación/agua, gas, fallo de suministro eléctrico, fallo de línea telefónica, etc.)

Alarmas Personales (SOS y asistencia)

Video Vigilancia (IP y CCTV)

Los sistemas de Seguridad actúan según la programación horaria, la información recogida por los detectores del sistema, la información proporcionada por otros sistemas interconectados y la interacción directa por parte de los distintos usuarios (usuario final, gestor de sistema, CRA, etc.).

Muchos sistemas de seguridad permiten la conexión y comunicación con otros sistemas dentro del edificio y/o hogar. El sistema de seguridad puede por ejemplo emitir una señal si detecta movimiento en el exterior para que el sistema de domótica recoja esa señal y encienda la luz exterior y baje las persianas. Pero también puede integrar las funcionalidades de domótica, inmótica y telecomunicaciones directamente en el mismo sistema de seguridad, que pueden variar desde funcionalidades muy sencillas, como encender una luz, hasta la gestión total de la instalación domótica o inmótica del edificio y/o hogar. Cada vez es también más común, que los sistemas de domótica e inmótica permitan funcionalidades de seguridad, incluso implementando los protocolos de seguridad para su conexión a una CRA.

Generalmente los sistemas de seguridad pueden ser instalados, mantenidos y gestionados o bien por el propietario directamente, o bien por empresas profesionales y homologadas de seguridad.

También entra en el término de la seguridad la prevención de fuga de gases para lo que se implantan sistemas suya función es detectar y avisar en caso de fuga de gas, provocando un corte en el suministro que evite los peligros que pudieran ocasionarse y el consecuente gasto inútil de gas consumido

Los sistemas de fugas de agua detectan si se produce una inundación, dan señal de aviso, y provocan un corte de suministro, evitando los problemas que genera la acumulación de agua, así como el daño en suelos y muebles y el gasto producido por un grifo de agua abierto.

Estos sistemas están cada día avanzando más y teniendo mayor importancia.

3.1.4 Comunicaciones Las aplicaciones de telecomunicaciones contemplan el intercambio de información, tanto entre personas, entre éstas y equipos domésticos y entre equipos y equipos, ya sea dentro de la propia vivienda como desde ésta con el exterior. En este grupo se incluyen todas las infraestructuras necesarias para la comunicación de voz y de datos que nos permiten disfrutar de los servicios de telefonía o de las funciones de distribución de ficheros de texto o multimedia, compartir recursos entre dispositivos, acceder a Internet varios usuarios simultáneamente, etc.

Estas aplicaciones gestionan la información de las demás áreas domóticas ayudando al propietario a controlar si hogar sin necesidad de estar en casa, mediante su teléfono móvil por medio de correos electrónicos, llamadas o telecontrol.

3.2 Domótica con el medio ambiente Actualmente, la construcción de la vivienda, se implica en una minimización del impacto sobre el medio ambiente, de forma que contribuya al ahorro sostenible que mejore las condiciones del planeta. Esto se consigue con una contribución a la generación de recursos que pueden surtir a la vivienda y a la red, eliminando el uso de energías no renovables. Además las condiciones climáticas donde se construyan y las necesidades de los habitantes dan lugar a multitud de posibilidades en cuanto a su implementación y diseño.

Las casas ecológicas, deben de ayudarse en lo posible de los factores circundantes que contribuyan a facilitar su construcción o uso. Algunas estrategias a seguir en base a esto pueden ser la orientación, el control del sol/viento y la potenciación de las vistas, pero bien es cierto que existirá un predominio de unos sobre otros en función de cada situación.

Figura 4. Casa abovedada

Por ejemplo, en el caso de una región con gran predominio de viento en una dirección, sería conveniente diseñar la estructura abovedada del techo de forma que facilite su paso y no actúe de obstáculo, creando un flujo laminar como en la conformación del ala de un avión. Además se pueden orientar molinos eólicos para el suministro eléctrico y entradas de ventilación y refrigeración. Al mismo tiempo se puede aprovechar para construir patios interiores con al fin de regular la temperatura y complementariamente, un sistema de regulación de la humedad en base a esto.

En el caso de situación en zona volcánica, si el edificio hace uso de las piedras del propio volcán y de las cenizas, puede servir de aislamiento térmico. Así mismo la captación de energía fotovoltaica a través de placas solares convenientemente adaptadas, puede dotar a la vivienda de abastecimiento. La captación térmica simple puede funcionar como sistema de calentamiento del agua.

Si la casa se sitúa en una región con alta concentración de sol (área desértica/árida), debe situarse orientada hacia el levante y protegida del poniente. Los paneles fotovoltaicos gozarán de gran protagonismo en este caso, dotando de energía y agua caliente al hogar. Si es posible, es conveniente la construcción de los muros con la utilización de rocas basálticas (volcánicas), que creen un aislamiento del interior para los cambios de temperaturas externos al edificio.

-53-

Page 60: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Si la zona es subdesarrollada, una vivienda de bajo coste con materiales reciclados es la mejor elección. Se debe minimizar el impacto medioambiental, y las técnicas de construcción serán dinámicas y ligeras.

En cuanto al emplazamiento de la vivienda también es recomendable seguir unos principios básicos, en el que el más importante es que la vivienda esté alejada de zonas industriales con elevada contaminación atmosférica o que tenga gran novel de ruido como pueden ser aeropuertos y que no se sitúe en las proximidades de líneas de alta tensión o de transformadores sectoriales.

La abundancia de vegetación es un factor de relevancia (también en el interior de la vivienda) ya que contribuye a crear un equilibrio térmico y un grado de humedad correcto, además de reducir la contaminación atmosférica. A eso se le suma la importancia de poder disfrutar de vistas y paisajes relajantes, con grandes beneficios para la salud.

La orientación solar, como se ha comentado anteriormente, es un factor de relevancia, ya que ayuda a regular temperatura, presión y aire, mejorando así la eficiencia energética. Las barreras topográficas son también importantes en este aspecto.

En cuanto a la utilización de materiales, lo más recomendable es la tendencia al uso de componentes lo más naturales posible: Ejemplos de ello pueden ser los ladrillos, cerámicos, piedra, madera, fibras vegetales, adobe y el uso de morteros con cal. Es conveniente evitar aquellos que contengan radioactividad, gases o electricidad estática, véase plásticos, superficies lacadas y fibras sintéticas.

En cuanto a pinturas, las de silicato son las más sanas, ya que son totalmente minerales, resisten al fuego y a la contaminación, son lavables, no tóxicas y permiten la respiración de las paredes.

Las maderas interiores, tanto de mobiliario como de decoración, deben de estar compuestas por barnices y aceites ecológicos, evitando aglomerados y formaldehido.

Una ventilación correcta es esencial para evitar acumular tóxicos en la vivienda.

Es recomendable no disponer de una ubicación próxima a líneas eléctricas ni transformadores, así como evitar aparatos eléctricos en lugares de reposo.

En cuanto a las orientaciones de la cama, lo mejor es colocarla hacia el Norte Magnético para un descanso relajado, y hacia el este para recuperar fuerzas.

En resumen, el ahorro energético es necesario para la construcción de una casa en la que tanto moradores como entorno tengan una máxima satisfacción. Ahorrar no significa pasar necesidad, sino más bien hacer un uso racional de los recursos.

Sin duda la mayor provisión de la casa domótica ecológica es la energía solar. Ésta es una energía de gran calidad desde el punto de vista energético, cuyo impacto ecológico es minúsculo y demás tiene la ventaja de que se trata de una energía renovable inagotable. A pesar de esto tiene algún inconveniente como por ejemplo su aprovechamiento, debido a que llega a la Tierra dispersa, o la existencia de noche y día o de las estaciones del año. La energía solar se puede captar por dos vías diferentes: térmica y fotónica.

Figura 5. Hogar con células fotovoltaicas

La primera de ellas funciona interceptándola por una superficie absorbente produciéndose un efecto térmico. Esto se puede producir de forma pasiva o activa (ayudado por elementos mecánicos).

En cuanto a la captación fotónica, la radiación solar se recoge directamente convirtiendo la energía de los fotones de la luz en electrones. En resumen, convierte la luz en electricidad.

El estudio de la energía solar pasiva (también conocida como bioclimática) resulta muy interesante, ya que se basa en las características de los materiales de la construcción y en el aprovechamiento de la circulación del aire, como bien se ha mencionado anteriormente. Los sistemas pasivos se construyen sobre la estructura del edificio y por tanto, tienen igual tiempo de vida que la propia estructura del edificio. Aún así esta arquitectura está condicionada por los siguientes factores: ganancia solar, almacenamiento de energía, distribución de calor e iluminación natural. Para ello elementos como elementos como acristalamientos toman una gran importancia, ya que funcionan como elementos concentradores de calor por efecto invernadero al hacer uso conjunto de ventanas y muros colectores y así captar mejor la energía. Todos estos elementos deben tener una orientación sur (en una ubicación del hemisferio norte) y orientación de una pared de aislamiento dirección norte para evitar la orientación fría.

Muros y techos constituyen lo que se llama “masa térmica”, que es aquella parte de la casa, cuya finalidad es almacenar la energía solar captada, transfiriéndola al interior de la casa.

En cuanto a la refrigeración, la utilización de toldos y persianas es fundamental. La ventilación inducida y el enfriamiento por evaporación hacen un papel importante en cuanto a la extracción nocturna del calor.

La iluminación se consigue a base de reflejar luz indirecta con paneles reflectantes y con la correcta utilización de pinturas que reflejen más o menos los rayos. Esta manipulación de la luz no produce ningún impacto sobre el medio ambiente. No actúa obre atmósfera, suelo o ecosistemas, debido a que aprovecha los recursos del entorno.

Existe otro elemento estructural de gran importancia, que es el llamado muro Trombe, el cual actúa como acumulador de energía de la misma forma que el efecto invernadero. Junto a él el colector

-54-

Page 61: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

pasivo hace un máximo aprovechamiento de la radiación térmica. También cabe mencionar los acumuladores que se encargan de almacenar tanto agua como electricidad, luz, etc.

En el caso de España, como en casi todo el mundo, las construcciones ecológicas se encuentran bastante dispersas. La mayor parte de ellas sirven para la experimentación y el estudio. Aunque también hay que afirmar que no son raros los casos de viviendas tanto adosadas como aisladas que emplean energía solar pasiva.

Para la próxima década se calcula que se podrá duplicar el aprovechamiento de la energía solar pasiva y en consecuencia se podrá lograr por fin una reducción del 50% de las emisiones de CO2 y así se podrá llevar a cabo un importante ahorro económico.

Aunque todavía queda mucho por investigar, están en estudio nuevos materiales, características ópticas de las superficies, ventanas, tipologías constructivas, modelos de simulación, manuales de cálculo para constructores, etc.

3.3 Arquitectura La Arquitectura de los sistemas de domótica hace referencia a la estructura de su red. La clasificación se realiza en base de donde reside la “inteligencia” del sistema domótico. Las principales arquitecturas son:

3.3.1 Tipos de arquitectura

3.3.1.1 Arquitectura Centralizada En un sistema de domótica de arquitectura centralizada, un controlador centralizado, envía la información a los actuadores e interfaces según el programa, la configuración y la información que recibe de los sensores, sistemas interconectados y usuarios.

Figura 6. Esquema de Arquitectura de Sistema Domótica Centralizada

3.3.1.2 Arquitectura Descentralizada En un sistema de domótica de Arquitectura Descentralizada, hay varios controladores, interconectados por un bus, que envía información entre ellos y a los actuadores e interfaces conectados a los controladores, según el programa, la configuración y la información que recibe de los sensores, sistemas interconectados y usuarios.

Figura 7. Esquema de Arquitectura de Sistema Domótica Descentralizada

3.3.1.3 Arquitectura Distribuida En un sistema de domótica de arquitectura distribuida, cada sensor y actuador es también un controlador capaz de actuar y enviar información al sistema según el programa, la configuración, la información que capta por si mismo y la que recibe de los otros dispositivos del sistema.

Figura 8. Esquema de Arquitectura de Sistema Domótica Distribuida

3.3.1.4 Arquitectura Híbrida / Mixta En un sistema de domótica de arquitectura híbrida (también denominado arquitectura mixta) se combinan las arquitecturas de los sistemas centralizadas, descentralizadas y distribuidas. A la vez que puede disponer de un controlador central o varios controladores descentralizados, los dispositivos de interfaces, sensores y actuadores pueden también ser controladores (como en un sistema “distribuido”) y procesar la información según el programa, la configuración, la información que capta por si mismo, y tanto actuar como enviarla a otros dispositivos de la red, sin que necesariamente pasa por otro controlador.

-55-

Page 62: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Figura 9. Esquema de Arquitectura de Sistema Domótica Híbrida/Mixta

3.3.2 Medios de transmisión El medio de transmisión de la información, interconexión y control, entre los distintos dispositivos de los sistemas de domótica puede ser de distintos tipos, que se resumen básicamente en transmisión por cable (propio o compartido) y transmisión inalámbrica.

3.3.2.1 Cableado propio Es el medio más común de transmisión para los sistemas de domótica, principalmente son del tipo: par apantallado, par trenzado, coaxial o fibra óptica.

3.3.2.2 Cableado compartido Varios soluciones utilizan cables compartidos y/o redes existentes para la transmisión de su información, como por ejemplo la red eléctrica, la red telefónica o la red de datos.

3.3.2.3 Inalámbrico Muchos sistemas de domótica utilizan soluciones de transmisión inalámbrica entre los distintos dispositivos, principalmente tecnologías de radiofrecuencia o infrarrojo.

3.3.3 Protocolos Los protocolos de comunicación son los procedimientos utilizados por los sistemas de domótica para la comunicación entre todos los dispositivos con la capacidad de “controlador”.

Existen una gran variedad de protocolos, algunos específicamente desarrollados para la domótica y otros protocolos con su origen en otros sectores, pero adaptados para los sistemas de domótica. Los protocolos pueden ser del tipo estándar abierto (uso libre para todos), estándar bajo licencia (abierto para todos bajo licencia) o propietario (uso exclusivo del fabricante o los fabricantes propietarios).

Los dispositivos electrónicos de la casa deben comunicarse entre sí y generalmente lo hacen usando el protocolo X-10. Su desarrollo empezó en los años 70 y ha sido tal su éxito que durante los últimos 15 años se han vendido más de 150 millones de equipos X-10. Es la principal tecnología usada en la casa domótica para la red de control.

X-10 es un "lenguaje" de comunicación que aprovecha la instalación eléctrica existente de 220V de la vivienda

4. APRENDIZAJE DE LA CASAPara que se produzca una correcta interacción del sistema domótico con las necesidades del usuario, es necesario crear unos diálogos entre la casa y el medio u otros agentes. El sistema dispone de unos sensores mediante los cuales va acumulando información y va construyendo un aprendizaje a través de esta experiencia. Para que todo esto funcione correctamente deben de configurarse unos modelos de planificación y comportamiento. Estos funcionan de manera que, una vez recogida la información a través de los sensores, el sistema tendrá que tener una cierta capacidad de predecir los movimientos del usuario en función de sus hábitos o gustos. Este proceso tiene su base en la utilización de algoritmos de búsqueda que irán ramificando las acciones con cierta probabilidad en un árbol según las acciones del usuario (interacción pasiva) o por configuración directa según las preferencias (interacción activa). Al final, se consigue un modelo que representa los hábitos y preferencias del usuario, adaptado prácticamente en la totalidad a él.

Hay que tener en cuenta que todo esto está controlado por un sistema central, el cual irá configurando las características del sistema mediante la recogida de datos así como con la interacción con los elementos del sistema. Así el sistema puede predecir el estado de ánimo del inquilino y actuar en consecuencia, por ejemplo configurando una temperatura adecuada, sintonizando su música favorita o regulando la luz de la casa.

Aquí entra en escena el elemento planificador, el cual se encarga de juntar algoritmos y patrones de comportamiento del usuario para conseguir la configuración domótica óptima. Su funcionamiento consiste en la consecución de unas metas, pasando por distintos estados. El salto de un estado a otro es lo que llamamos acción y para conseguir llegar a la meta es necesaria la configuración de un plan. Para explicar esto, un buen ejemplo puede ser el momento en el que el sistema detecte, a través de reconocimiento facial por ejemplo, que el usuario sufre de dolor de cabeza en un determinado momento. El sistema se encuentra en un estado acorde con las características habituales y tiene que llegar a la meta de estado tranquilo y relajante. Para ello tiene que llevar a cabo un plan a través de unas acciones como regular la luz, poner música relajante, regular la temperatura, etc.

El sistema en sí también tiene que ser capaz de ser predictivo. Por ejemplo si, uno de los habitantes suele ir a trabajar en coche por un determinado trayecto y ese mismo día se ha producido un accidente, el sistema podría actuar de manera que le avisara despertándole un poco antes u ofreciéndole una ruta alternativa.

Dentro del sistema domótico también es imposible la implementación de macros. Una macro es la ejecución de una serie de acciones a partir de una ordeno o comando. Un ejemplo sería que al decir “home cinema” se configurara la habitación para la visualización de una película (regulando la luz con persianas y luces interiores, desplegando el proyector, reclinando los sofás, etc.) y dando lugar a otra macro como puede ser “Gladiator en versión original” y configura la película elegida.

Estas macros pueden estar programadas de serie, con un simple reconocimiento de voz, o el aprendizaje de la casa puede ir añadiéndolas en función de los gustos del usuario.

-56-

Page 63: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

5. PROYECTOS DE FUTURO Como hemos observado a lo largo de este trabajo la domótica está a la orden del día y va a seguir creciendo y evolucionando hasta estar completamente adaptada a nuestro modo de vida. El crecimiento de la domótica sigue distintas vías que vamos a desarrollar brevemente.

En primer lugar el ahora energético proporcionado por la domótica va a evolucionar creando casas, edificios y posteriormente ciudades más ecológicas y verdes, para volver a adaptarnos a vivir en consonancia con la naturaleza y beneficiarnos de sus recursos de forma más eficiente, en este rango la domótica se está estudiando para poder reciclar nuestros desechos y convertirlos en energía, ahorrando así provocar mayor gasto y evitar la contaminación.

Figura 10. Prototipo de papelera ecológica de marca Braun.

Por otro lado también se están estudiando el obtener energía a partir de otros medios de energía renovable que podemos tener en nuestros hogares como puede ser la energía de biomasa producida por los espacios verdes y mejorar las actuales obtenciones de energía solar.

Figura 11. Edificio bioclimático en la escuela de arte de Singapur

Otros de los avances más significativos de este sector, es el de hacernos la vida cada vez más cómoda, algunos ejemplos de este avance son por ejemplo los sistemas de detección biométricos estos sistemas de detección pueden ser usados para por ejemplo entrar en la casa sin necesidad de usar las llaves o por ejemplo dar órdenes a distintos sistemas a través del reconocimiento de voz.

Está tecnología nos llevará a estar en un futuro que muchas personas imaginaban, en el que las casas dejan pasar a sus dueños

sin necesidad de llaves, o que hacen la compra a medida de las necesidades de sus dueños, mejorando así su confort y dándoles la posibilidad utilizar mejor su tiempo en cosas más provechosas.

6. CONCLUSIONES El uso de la domótica ha ido tomando mayor relevancia a lo largo de la historia reciente. Los grandes avances que se han ido produciendo, han llevado a crear sistemas inteligentes capaces de crear un ambiente de confort regulado a las condiciones y preferencias de los habitantes de la casa.

Las distintas áreas en las que se ha ido implantando han dado ventajas sustanciales a los usuarios de estos sistemas así como ha manejado un compromiso con el medio ambiente que mejora su sostenibilidad. El hecho de que sea posible entrar en aspectos como la reducción del consumo, simplificación de tareas (confort), mejora de los sistemas de seguridad o la intercomunicación entre distintos apartados crea un nivel superior sobre el que construir la vivienda del futuro, haciendo la vida mucho más fácil.

Aún así la conjunción vivienda nueva y domótica es un hecho todavía sin una implantación clara, ya que los precios de los dispositivos utilizados tienen un precio alto. Por ello la relación calidad de vida-inversión no es buena.

Poco a poco las economías de escala y la difusión de la domótica harán que su penetración en el mercado vaya aumentando, hasta conseguir su asentamiento total.

La casa inteligente cada día está más cerca. Es cuestión de tiempo.

Figura 12. Casa domótica

7. REFERENCIAS [1] Mayo Bayón, Ricardo. 2005.Aplicación al diseño y

desarrollo de sistemas domóticos/inmóticos. Curso de

doctorado Universidad de Oviedo.

[2] García Plaza, David. 2010. Sistema de gestión domótica de una vivienda. Proyecto Final de Carrera Universidad

Politécnica de Cataluña.

[3] Morales Pallarés, Marcos. 2007. Estudios de los sitemas domóticos y diseño de una aplicación. Proyecto Final de

Carrera Universidad Politécnica de Cataluña.

-57-

Page 64: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

[4] Artículo sobre Inteligencia Artificial en Monografías.com. DOI= http://www.monografias.com/trabajos87/inteligencia-artificial-domotica/inteligencia-artificial-domotica.shtml

[5] Web de domótica domoticaviva. DOI= http://www.domoticaviva.com

[6] Web de domótica indomo. DOI= http://www.indomo.es/

[7] Web de competición de casas inteligentes. DOI= http://www.sdeurope.org/

[8] Dossier Inove sobre ahorro energético. DOI= www.inovedomotica.com

[9] Herrera, Rosa María. Artículo: Casas Inteligentes vs. Casas Ecológicas.

[10] CEDOM. Artículo: Como ahorrar energía instalando domótica en su vivienda. DOI= www.idae.es

-58-

Page 65: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Técnicas para exploración de bases de datos

Daniel Aceituno Gómez Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Avenida de la Universidad, 30

28911, Leganés (Madrid-España) [email protected]

Miguel Alcolea Sánchez Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Avenida de la Universidad, 30

28911, Leganés (Madrid-España) [email protected]

RESUMEN

El objetivo del trabajo es conseguir las imágenes más parecidas a una dada dentro de una base de datos de 6600. Para ello se utilizarán dos técnicas de búsqueda, una de ellas basada en agrupamiento (k-medias) y otra según el criterio de mínima distancia (distancia Euclídea). La base de datos proporcionada está formada por siluetas de animales marinos. El código Matlab desarrollado debe ser capaz de encontrar los contornos más parecidos al de muestra, independientemente de la rotación, posicionamiento y escalado de éste.

Categorías y Descriptores de Temas

[Exploración de bases de datos]: agrupamiento, técnicas y aplicaciones de búsqueda de imágenes, visión artificial.

Términos Generales

Clustering, Matlab, algoritmos de búsqueda, exploración de bases de datos.

Palabras clave K-medias, Euclídea, bases de datos.

1. INTRODUCCIÓN

Uno de los principales objetivos de la visión artificial [1] es poder diferenciar los objetos presentes en una imagen (en este caso, en una imagen digital), de tal manera, que esto logre que la identificación de los mismos sea una tarea más fácil de realizar.

En el problema de diferenciar los objetos en cualquier imagen, como es hecho por los seres humanos, una importante pregunta abierta aparece: ¿Qué información es, tanto suficiente como necesaria, para poder llevar a cabo esta tarea? Es muy difícil poder expresar este conocimiento o información de una manera algorítmica.

Dentro de la visión artificial se encuentra el procesamiento de imágenes, y dentro de éste, una parte muy importante se encarga del análisis de las mismas. Esto es, dada una imagen, lo que se desea obtener es una descripción de dicha imagen. Por otra parte, la segmentación se encarga de simplificar y/o cambiar la representación de una imagen en otra más significativa y más fácil de analizar. Se usa tanto para localizar objetos como para encontrar los límites de estos dentro de una imagen. Más

precisamente, la segmentación [2] de la imagen es el proceso de asignación de una etiqueta a cada píxel de la imagen de forma que los píxeles que compartan la misma etiqueta también tendrán ciertas características visuales similares.

El resultado de la segmentación de una imagen es un conjunto de segmentos que cubren en conjunto a toda la imagen, o un conjunto de las curvas de nivel extraídas de la imagen (detección de bordes). Cada uno de los píxeles de una región son similares en alguna característica, como el color, la intensidad o la textura. Regiones adyacentes son significativamente diferentes con respecto a la(s) misma(s) característica(s).

En la sección 2 del presente trabajo se analizarán las técnicas y métodos necesarios para llevar a cabo el desarrollo del algoritmo de exploración y clasificación. En la sección 3 se describirá detalladamente el funcionamiento del código Matlab realizado y en la sección 4 se presentarán los resultados de las pruebas. Por último, en la sección 5 se detallarán las conclusiones.

2. DESARROLLO TEÓRICO

A continuación, se describirán las técnicas usadas para el desarrollo del algoritmo de exploración.

2.1 Descriptores de imágenes

Un descriptor de una imagen es una forma de representar a una imagen por sus características, con fines de almacenamiento y recuperación, en donde el descriptor es una formulación matemática. La formulación del descriptor se realiza tanto para características locales como globales. Existen tres grandes grupos de descriptores: de frontera, de región y relacionales.

1) Descriptores de frontera: extraen información de laforma del contorno de los objetos.

2) Descriptores de región: caracterizan no al contorno de laforma, sino al interior de la misma.

3) Descriptores relacionales: describen la estructura de losobjetos y las relaciones (cercanía, inclusión…) entre suscomponentes.

Debida a la naturaleza de las imágenes de la base de datos proporcionada y para cumplir los requisitos de independencia de rotación, posición y escalado, se va a trabajar con los de frontera y en concreto con los descriptores de Fourier [3].

-59-

Page 66: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

2.1.1 Descriptores de Fourier

Representan la forma del objeto destacando que, los primeros descriptores indican la forma general del objeto y los últimos los más pequeños detalles. Para una clasificación correcta, un pequeño conjunto de descriptores puede ser suficiente. La gran ventaja de los descriptores de Fourier es que son invariantes frente a la traslación, la rotación, la escalabilidad y son tolerantes al ruido. Un requisito indispensable para aplicar estos descriptores es que los objetos o contornos deben ser cerrados.

Una curva cerrada puede ser representada mediante series de Fourier con una parametrización adecuada. Si se considera un contorno x(n) constituido por N puntos en el plano XY [4]:

x n( ) = xn,yn[ ],n =1...N (1)

donde cada punto se puede considerar como un número complejo:

x n( ) = xn + jyn (2)

Empezando en un punto arbitrario del contorno y siguiendo alguna dirección de avance (por ejemplo, a favor de las agujas del reloj), se tiene una secuencia de números complejos. La transformada discreta de Fourier X = F(x) de la secuencia se obtiene mediante la siguiente ecuación:

X k( ) = x n( )exp − j2πkn /N( ) 0 ≤ k ≤ N −1n= 0

N−1

∑ (3)

De esta forma, los descriptores de Fourier pueden representar un contorno cerrado arbitrario. Esta representación tiene la ventaja de que, generalmente, se logra una buena descripción en base a pocos términos.

Sea la base de datos de nbase siluetas:

SR i( ),1≤ i ≤ nr con 1≤ R ≤ nbaseCada silueta se regulariza a N puntos (N es potencia de 2):

SR i( )→ ZR n( ) 1≤ n ≤ N

Supóngase que se tiene una silueta escena

S__

obtenida de una imagen y regularizada a N puntos:

S__→ Z

__n( ) 1≤ n ≤ N

El problema consiste en identificar

Z__

con alguna silueta

Z__

Rbajo la hipótesis de que puede haber sufrido:

1) Desplazamiento en el origen de referencia del vector dela silueta: δ

2) Rotación respecto al centro de masas del objeto: θ

3) Escalado de la imagen: λ

4) Desplazamiento del centro de masas del objeto Cx , Cyen la coordenada x-y respectivamente.

A continuación, se analiza cuál es la transformación en la transformada de Fourier de una silueta bajo cada una de estas operaciones:

1) Desplazamiento δ

Sea la secuencia:

x n( )→ X k( ) = x n( )exp − j2πkn /N( ) 0 ≤ k ≤ N −1 (4)n= 0

N−1

∑Se define la nueva secuencia:

x__n( ) =

x__n( ) = x n + δ( ) , 0 ≤ n ≤ N −1−δ

x__n( ) = x n − N + δ( ) , N -δ ≤ n ≤ N −1

(5)

Sustituyendo en (4) se tiene:

X__k( ) = x

__n( )exp − j2πkn /N( ) =

n= 0

N−1

= x n + δ( )exp − j2πkn /N( ) + x n − N + δ( )exp − j2πkn /N( )n=N−δ

N−1

∑n= 0

N−1−δ

∑ (6)

Intercambiando coeficientes y reagrupando se obtiene que:

X__k( ) = X k( )exp j2πkn /N( ) (7)

2) Rotación θ

Sea la secuencia x(n), la nueva secuencia es:

x__n( ) = exp jθ( )x n( ) (8)

La relación entre transformadas de Fourier es:

X__k( ) = exp jθ( )X k( ) (9)

3) Escalado λ

Sea la secuencia x(n), la nueva secuencia es:

x__n( ) = λx n( ) (10)

La relación entre transformadas es:

X__k( ) = λX k( ) (11)

4) Desplazamiento c=cx+jcySea la secuencia x(n), la nueva secuencia es:

x__n( ) = x n( ) + c (12)

La relación entre transformadas es:

X__k( ) = X k( ) + cN (13)

-60-

Page 67: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

2.2 Método de agrupamiento

El objetivo del análisis de agrupamiento [5], visto como procedimiento de clasificación, es determinar grupos dentro de una muestra multivariada que tengan algún grado de asociación o similitud entre los miembros de cada grupo y, simultáneamente, los miembros de distintos grupos presenten bajo grado de asociatividad o similaridad. El resultado del análisis de agrupamiento es poner de relieve las similitudes entre los datos.

El problema del Agrupamiento: Dado un conjunto S de n puntos en un espacio Euclídeo de dimensión Rm, el problema es como particionar S en k grupos, clases o nidos. Si llamamos Pk a todas las particiones de S en k nidos, y definimos un criterio de agrupamiento W(Pk) donde cada P es una medida de la confiabilidad de la partición en k nidos. El problema es, entonces, encontrar la partición P' que maximiza (o minimiza) el criterio sobre todas las particiones en k nidos.

Existen muchos algoritmos para resolver este problema. Se puede hacer una clasificación primaria en: métodos jerárquicos y no jerárquicos.

1) Métodos jerárquicos:En estos métodos, los individuos no se particionan en clusters de una sola vez, sino que se van haciendo particiones sucesivas a distintos niveles de agregación o agrupamiento.

Fundamentalmente, los métodos jerárquicos suelen subdividirse en métodos aglomerativos (ascendentes), que van sucesivamente fusionando grupos en cada paso; y métodos divisivos (descendentes), que van desglosando en grupos cada vez más pequeños el conjunto total de datos.

Dentro de este grupo se encuentran los algoritmos de los “vecinos más cercanos” y “vecinos lejanos”. 1.1) Vecinos más cercanos:

El criterio de agrupamiento que se utiliza es:

dmin Di,Dj( ) =min x −x ′

donde x pertenece a Di y x´ a Dj. Cuando el algoritmo se termina con la verificación de un umbral sobre la función de criterio de agrupamiento, se conoce como “algoritmo de encadenamiento simple”. Este algoritmo siempre genera un árbol (los bordes entre clases siempre evolucionan a distintas clases) es decir que no se generan ciclos.

1.2) Vecinos lejanos:

El algoritmo es igual al anterior pero la función de criterio de agrupamiento es:

dmax Di,Dj( ) =max x −x ′

Además si se agrega un criterio de terminación sobre esta función, se conoce como “algoritmo de encadenamiento completo”.

Con el algoritmo de vecinos cercanos la distancia entre clases es la distancia entre las muestras más cercanas. En el de vecinos lejanos la distancia entre clases es la de muestras más lejanas.

2) Métodos no jerárquicos:Estos métodos generan grupos disjuntos, es decir, que la intersección de a pares es vacío. Son muy útiles cuando el conjunto de datos es plano. Hay tres ejemplos claros de este tipo de método: algoritmo k-medias, k-medias secuencial y Fuzzy k-medias. Éste último se basa en el concepto de lógica difusa que toma lo relativo de lo observado como posición diferencial. Las fronteras entre los conjuntos son difusas, es decir, los elementos presentan un “grado de pertenencia” a un conjunto en vez de formar parte de uno exclusivamente.

El candidato elegido para el trabajo ha sido el k-medias.

2.2.1 El algoritmo k-medias

El algoritmo K-medias [6] es una técnica iterativa que se utiliza para dividir una imagen en K clusters. Una primera aproximación a su funcionamiento es la siguiente:

1) Se escogen K centros de clusters, ya sea de formaaleatoria o basándose en alguno método heurístico.

2) Se asigna a cada píxel de la imagen el clúster queminimiza la varianza entre el píxel y el centro delclúster.

3) Se recalculan los centros de los clusters haciendo lamedia de todos los píxeles del clúster.

4) Se repiten los pasos 2 y 3 hasta que se consigue laconvergencia (por ejemplo, los píxeles no cambian declusters).

En este caso, la varianza es la diferencia absoluta entre un píxel y el centro del clúster. En general, la diferencia se basa típicamente en el color, la intensidad, la textura, y la localización del píxel, o una combinación ponderada de estos factores. El número K se puede seleccionar manualmente, aleatoriamente, o por una heurística. Este algoritmo garantiza la convergencia, pero puede devolver una solución que no sea óptima. La calidad de la solución depende de la serie inicial de clusters y del valor de K. En estadística y aprendizaje automático, el algoritmo de las k-medias es un algoritmo de agrupamiento para dividir objetos (N) en K grupos, donde K < N. Es similar al algoritmo de maximización de expectativas para las mezclas de gaussianas ya que ambos pretenden encontrar los centros de agrupaciones naturales de los datos. El modelo requiere que los atributos del objeto correspondan a los elementos de un espacio vectorial. El objetivo es intentar alcanzar al mínima varianza total entre clusters, o, la función de error al cuadrado.

El algoritmo de las k-medias usa una heurística de refinamiento conocida como el algoritmo de Lloyd [7]. Funciona de la siguiente manera:

1) Comienza dividiendo los puntos de entrada en Kconjuntos iniciales, ya sea al azar o usando algunosdatos heurísticos y a continuación, calcula el puntomedio o centro de gravedad de cada conjunto.

2) Se construye una nueva partición, asociando cada puntocon el centro de gravedad más cercano.

3) Se recalculan los baricentros para los nuevos clusters,

4) El algoritmo se repite alternando la aplicación de estosdos pasos (2 y 3) hasta que converja. Dichaconvergencia se obtiene cuando los puntos ya no

-61-

Page 68: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

cambian de clúster (o los centros de gravedad ya no se modifican).

Los algoritmos de Lloyd y de las K-medias a menudo se utilizan como sinónimos, pero en realidad el algoritmo de Lloyd es una heurística para resolver el problema de las K-medias, como ocurre con ciertas combinaciones de puntos de partida y baricentros. El algoritmo de Lloyd puede converger a una solución incorrecta. Existen otras variantes, pero el algoritmo de Lloyd es el más popular, porque converge muy rápidamente. En cuanto al rendimiento, el algoritmo no garantiza que se devuelva un óptimo global.

La calidad de la solución final depende en gran medida del conjunto inicial de clusters, y puede, en la práctica, ser mucho más pobre que el óptimo global. Dado que el algoritmo es extremadamente rápido, es un método común ejecutar el algoritmo varias veces y devolver las mejores agrupaciones obtenidas. Un inconveniente del algoritmo de las k-medias es que el número de clusters K es un parámetro de entrada. Una elección inadecuada de K puede dar malos resultados. El algoritmo también asume que la varianza es una medida adecuada de la dispersión del cluster.

A continuación, se presenta una explicación matemática del algoritmo: Suponga que se tienen n características en vectores x1, x2, ..., xn, donde cada x, está representado en un espacio m dimensional y se sabe que están agrupados en k cúmulos (k < n).

Se define mj como la media del j-ésimo cúmulo. Si los cúmulos están bien separados, se puede usar una mínima distancia de clasificación para separarlos. Se puede decir que xi está en el j-ésimo cúmulo si || xi – mj || es el mínimo con respecto a los k cúmulos.

Ésto sugiere el siguiente algoritmo para encontrar la k medias:

1) Se hace una estimación inicial para la k medias m1, m2, ..., mk. Mientras no cambie alguna media:

Se usa la media estimada para clasificar los datos en cúmulos. b(i,j) = 1 si el i-ésimo dato, es el más cercano a la j-ésima media.

2) Para cada uno de los cúmulos, se calcula la nueva media mj, utilizando la nueva clasificación.

En la siguiente imagen hay un ejemplo que muestra la ejecución del algoritmo k-medias.

Éste puede ser visto como un algoritmo voraz para particionar en k cúmulos. Pero este algoritmo tiene algunas debilidades:

1) La manera de inicializar no se especifica.

2) Los resultados dependerán del valor inicial de las medias y frecuentemente ocurre que particiones subóptimas son encontradas. La solución estándar es calculada utilizando diferentes puntos de arranque.

3) Puede pasar que un conjunto de ejemplos cercano a una media esté vacío, por lo que no puede ser modificada. Esto es un inconveniente del método y debe ser manejado en la implementación, pero puede ser ignorado.

4) Los resultados dependen de la métrica utilizada para medir || x - mj ||. Una solución popular es normalizar cada variable por la desviación estándar, aunque no siempre es deseable.

5) La solución depende del número de cúmulos seleccionado.

2.3 Distancia Euclídea La distancia Euclídea [8] es la disimilaridad más conocida y más sencilla de comprender, pues su definición coincide con el concepto más común de distancia. En un espacio bidimensional, la distancia euclidiana entre dos puntos P1 y P2 de coordenadas (x1, y1) y (x2, y2) respectivamente, es:

dE P1,P2( ) = x2 − x1( )2 + y2 − y1( )2

A continuación, se ilustra la formulación matemática:

-62-

Page 69: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

La distancia Euclídea, a pesar de su sencillez de cálculo y de que verifica algunas propiedades interesantes tiene dos graves inconvenientes:

1) El primero de ellos es que es una distancia sensible a las unidades de medida de las variables. Las diferencias entre los valores de variables medidas con valores altos contribuirán en mucha mayor medida que las diferencias entre los valores de las variables con valores bajos. Como consecuencia de ello, los cambios de escala determinarán, también, cambios en la distancia entre los individuos.

Una posible vía de solución de este problema es la tipificación previa de las variables, o la utilización de la distancia Euclídea normalizada.

2) El segundo inconveniente no se deriva directamente de la utilización de este tipo de distancia, sino de la naturaleza de las variables. Si las variables utilizadas están correlacionadas, estas variables darán una información, en gran medida redundante. Parte de las diferencias entre los valores individuales de algunas variables podrían explicarse por las diferencias en otras variables. Como consecuencia de ello la distancia euclídea inflará la disimilaridad o divergencia entre los individuos.

La solución a este problema pasa por analizar las componentes principales (que están incorrelacionadas) en vez de las variables originales. Otra posible solución es ponderar la contribución de cada par de variables con pesos inversamente proporcionales a las correlaciones, lo que conduce a la utilización de la distancia de Mahalanobis.

La distancia Euclídea será, en consecuencia, recomendable cuando las variables sean homogéneas y estén medidas en unidades similares y/o cuando se desconozca la matriz de varianzas.

3. FUNCIONAMIENTO DEL ALGORITMO

En esta sección se detallará minuciosamente el proceso que se sigue en el procesado de las imágenes, el cálculo de los descriptores, las dos técnicas empleadas para la exploración de la base de datos y la obtención de los resultados. El esquema básico es el siguiente:

Este esquema se ha plasmado en un programa creado en Matlab que se llama agrupamiento.

function []=agrupamiento(numeroImagen,tipoClasificador)

Dicha función recibe como parámetros de entrada el índice de la imagen de muestra de la que se quieren obtener imágenes similares de la base de datos y el tipo de clasificador a utilizar (k-medias o distancia mínima). El resultado de la ejecución es un conjunto de imágenes similares a la de entrada. El tamaño de dicho conjunto es de 20 imágenes como máximo. Es el criterio de parada que se ha utlizado para la subdivision en el algoritmo de k-medias.

3.1 Carga de imágenes

En primer lugar, hay que cargar en Matlab las imágenes contenidas en la base de datos. Éstas están almacenadas en archivos con extensión .con y suman un total de 6600. Tras leer y almacenar dichos ficheros, se obtienen los pares de puntos correspondientes a cada silueta o contorno. Posteriormente se realiza una conversion de las coordenadas al dominio complejo para calcular los descriptores de Fourier. Debido a que las imágenes son muy diversas, hay que encontrar una manera de normalizar los contornos. De esta manera, todos tendrán el mismo número de coeficientes. Se ha fijado este valor en 700 ya que es, aproximadamente, el valor medio del número de puntos que hay en cada imagen.

Carga de imágenes y conversión a complejo

Cálculo de los descriptores de Fourier

Procesado invarianza de escalado y rotación

K-medias Distancia Euclídea

BBDD: siluetas animales marinoos

Nº Imagen

1 2

Imágenes similares Imágenes similares

Algoritmo?

-63-

Page 70: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Imagen 1 Imagen 2 Imagen 3 - Imagen

6600

Coef 1

Coef 2

Coef 3

-

Coef 700

Esta tarea es muy costosa computacionalmente. Por lo tanto, solo se realizará una vez y el resultado se almacena en el archivo basededatos.mat que contiene las imágenes perfectamente normalizadas y listas para su uso en la aplicación.

3.2 Cálculo y procesado de los descriptores de Fourier

Para obtener los descriptores, se calcula la transformada de Fourier para cada imagen. En Matlab se utiliza la función fft que proporciona los coeficientes ak.

A partir de ellos se obtienen los descriptores. Para que sean invariantes frente a rotación, hay que eliminar la información de fase. Por ello se obtiene el módulo de cada coeficiente complejo.

Respecto al posicionamiento, no es necesario realizar ninguna operación ya que se ha de tener en cuenta que la transformada de Fourier para imagen tiene la propiedad de “desplazamiento circular”. Esto es, el módulo (que es lo que usa) para cada una de las siguientes imágenes es igual:

En cuanto al escalado, cada imagen se normaliza respecto al valor máximo de módulo. Para ello se divide cada coeficiente entre el máximo. De esta forma se asegura que el valor de los coeficientes de las imágenes son comparables entre sí independientemente del tamaño del contorno de cada una de ellas.

3.3 Agrupamiento por K-medias

Una vez que la base de datos está normalizada, se procede a seleccionar aquellas imágenes más parecidas a la de muestra. En caso de que el tipo de clasificador seleccionado sea el número 1, se ejecutará el algoritmo de k-medias.

El algoritmo se ejecuta como sigue:

1) Se ha diseñado el algoritmo para generar dos centroides.Se calcula la distancia de cada imagen a ellos. Cada unoestará asociado a las imágenes más cercanas, de estaforma se obtienen dos grupos. De esos dos grupos, seselecciona aquel en el que se encuentre la imagen demuestra para continuar con la búsqueda de las imágenesmás parecidas a la elegida.

2) En el nuevo grupo formado, se vuelven a calcular doscentroides y las distancias de las imágenes a ellos por loque se crean dos nuevos grupos. De nuevo, el grupoelegido para hacer otra subdivisión es aquel donde seencuentra la imagen de muestra.

3) Se repite el proceso hasta que quede un grupo formadopor la muestra y un máximo de diecinueve imágenes.

Hay que tener en cuenta que este algoritmo se inicializa de forma aleatoria y posteriormente ajusta los centroides en función de las muestras. Debido a esa inicialización aleatoria, el resultado puede variar de una a otra ejecución.

Durante el proceso de subdivisión en dos grupos, se muestra por pantalla el número de imágenes que contiene el grupo seleccionado. De esta forma se puede ver el progreso del algoritmo.

Por último, se representa la imagen de muestra así como una figura con los mejores resultados encontrados.

3.4 Mínima distancia

Es una técnica simple que tiene bajo coste computacional y por tanto se ejecuta de una manera muy rápida. Como se comprobará en la posterior evaluación, de una forma más simple, se consiguen unos resultados muy buenos.

El funcionamiento es el siguiente:

1) Se calcula la distancia Euclídea entre el vector dedescriptores de la imagen de referencia y el resto deimágenes. Cada uno de estos vectores tendrá dimensión700.

2) Tras el cálculo, se eligen los veinte contornos queproporcionen menor distancia Euclídea. Hay que teneren cuenta que como primer resultado, el sistemaobtendrá la imagen original que es la que tiene distanciacero.

La formulación matemática es la que sigue:

Cij: coeficiente i de la imagen j

Cir: coeficiente i de la imagen de referencia

Del vector distEucl_imgn_j, se obtienen las distancias mínimas y se mapea la distancia minima con la imagen de la base de datos que la produce.

-64-

Page 71: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

4. EVALUACIÓN

En esta sección se va a evaluar el programa desarrollado utilizando tres imágenes muy distintas.

El primer contorno (imagen de la izquierda) se puede corresponder con un tiburón, el segundo (centro) con una raya y el tercero con un animal marino prehistórico (derecha).

4.1 Imagen 739 4.1.1 Resultados por k-medias

Tras la ejecución, se han obtenido 17 contornos muy similares al de muestra. Además, se puede comprobar que la invarianza a rotación y escalado funciona perfectamente.

4.1.2 Resultados por distancia Euclídea

En este caso, mediante la distancia Euclídea se ha obtenido dos contornos más (19) que con el algoritmo k-medias.

4.2 Imagen 4482 4.2.1 Resultados por k-medias

De nuevo, para la raya se han conseguido devolver 17 contornos muy parecidos a ésta. Se observa que hay animales con la cabeza más redonda, otros la tienen más triangular, pero en general todos son similares.

4.2.2 Resultados por distancia Euclídea

Por el criterio de mínima distancia se devuelven 19 contornos pero se detectan errores. Ha clasificado 6 siluetas como rayas cuando realmente no lo son. Por lo tanto, en este caso los resultados por este segundo método, menos costoso computacionalmente, no son tan buenos como los que arroja el algoritmo k-medias.

-65-

Page 72: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

4.3 Imagen 4405 4.3.1 Resultados por k-medias

La clasificación para este tipo de animal es algo más difusa que en los casos anteriores. Se devuelven 17 contornos y todos ellos tienen relación con la imagen de muestra aunque hay algunos con menos similitud que otros.

4.3.2 Resultados por distancia Euclídea

En este ejemplo, se observa que la recuperación de imágenes es ligeramente mejor que con k-medias. La mayoría de contornos guardan una estrecha relación con la imagen de muestra. El criterio de mínima distancia es capaz de detectar los bordes puntiagudos del animal. Para este tipo de contorno, el k-medias recupera resultados con los bordes redondeados y suavizados alejándose un poco de la figura original. Da la sensación de que la mínima distancia tiene mayor poder expresivo.

5. CONCLUSIONES

Para determinar que técnica ofrece mejores resultados y cuál de ellas sería la óptima para ser incorporada en un sistema real, hay que tener en cuenta varios factores.

En primer lugar, es muy importante prestar atención a la naturaleza de las imágenes con las que se va a trabajar. El algoritmo de k-medias funciona bastante bien si los contornos o siluetas tienen bordes suavizados y redondeados. Por el contrario, si éstos tienen aristas más pronunciadas, hay que recurrir al poder expresivo de la mínima distancia. También hay que tener en cuenta el tiempo de ejecución de cada método. Se ha comprobado que el k-medias es mucho más pesado y más lento que la mínima distancia. Por otra parte, la formulación de ambos algoritmos dista mucho entre sí. El método que utiliza el k-medias es muy complejo comparado con la simple diferencia de descriptores que utiliza el método de mínima distancia.

Finalmente, en base a los distintos factores discutidos, no se puede concluir que uno de los métodos es bueno o malo. Se puede decir que ambos funcionan bien y hay que buscar un compromiso entre la fiabilidad de los resultados, el coste computacional y la naturaleza de las imágenes a recuperar.

6. AGRADECIMIENTOS

Queremos dar las gracias al profesor de la asignatura por darnos la oportunidad de investigar y trabajar en esta parte de la visión artificial.

7. REFERENCIAS

[1] Richard Szeliski. Computer Vision: Algorithm & Applications. 30 de Marzo 2008

[2] Segmentación http://dsp1.materia.unsl.edu.ar/Segmentacion.pdf

[3] Dengsheng Zhang and Guojun Lu. Gippsland School of Computing and Info Tech Monash University Churchill, Victoria 3842. Generic Fourier Descriptor for Shape-based Image Retrieval

[4] Elizabeth González García. Universidad de Matanzas, Cuba. Descriptores de Fourier para identificación y posicionamiento de objetos en entornor 2D. Septiembre 2004.

[5] Métodos de agrupamiento

http://davidcuria.blogspot.com.es/2009/07/analisis-de-atributos-metodos-de.html

[6] Wikipedia – K-means clustering http://en.wikipedia.org/wiki/K-means_clustering

[7] Prof. Leonard Schulman, Department of Computer Science, California Institute of Technology. A theoretical analysis of Lloyd’s algorithm for k-means clustering. 13 Noviembre 2009.

[8] Wikipedia – Distancia Euclídea http://en.wikipedia.org/wiki/Euclidean_distance

-66-

Page 73: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

SISTEMAS EXPERTOS. MAGERIT

Adrián García Diéguez Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Avda. De la Universidad, 30 28911, Leganés (Madrid - España) [email protected]

RESUMEN

En este documento vamos a explicar el significado de lo que es un Sistema Experto mediante el análisis de sus principales componentes y características.

En concreto analizaremos el sistema experto MAGERIT basado en el análisis y gestión de riesgos de los sistemas de información de las administraciones públicas.

Palabras clave

Sistemas expertos (SE), gestión del riesgo, seguridad, activos, dominio

1. INTRODUCCIÓN

Un sistema experto o un sistema basado en el conocimiento es un sistema informático capaz de emular las prestaciones de un experto humano en un área de conocimiento especializado.

Debido a la dependencia creciente de las administraciones públicas y de toda la sociedad de las tecnologías de la Información y las Comunicaciones, surgió el sistema experto MAGERIT.

MAGERIT es un método formal para investigar los riesgos que soportan los Sistemas de Información y para recomendar las medidas apropiadas que deberían adoptarse para

Jesús García Jiménez Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Avda. De la Universidad, 30 28911, Leganés (Madrid - España) [email protected]

controlar esos riesgos. Por ello, permite aportar racionalidad en el conocimiento del estado de seguridad de los Sistemas de Información y en la introducción de medidas de seguridad

2. LOS SISTEMAS EXPERTOS

Un sistema experto puede definirse como un sistema basado en los conocimientos que imita el pensamiento de un experto, para resolver problemas de un terreno particular de aplicación.

Una de las características principales de los sistemas expertos es que están basados en reglas, es decir, contienen unos conocimientos predefinidos que se utilizan para tomar todas las decisiones.

Por ello, el creador de un sistema experto tiene que comenzar por identificar y recoger del experto humano los conocimientos que este utiliza, pero sobre todo los conocimientos empíricos que se adquieren con la

práctica. Dado que los programas están basados en el conocimiento, un aspecto fundamental es la

-67-

Page 74: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

programación del conocimiento. En ella se hace uso de la representación explícita del conocimiento a usar por el sistema y de su interpretación y manipulación lógica por medio de métodos de inferencia que permiten deducir nuevo conocimiento a partir del que ya se dispone.

De este modo, un sistema experto no pretende reproducir el pensamiento humano, sino simplemente la pericia de un profesional competente. Por ello para que un sistema actúe como un verdadero experto, debe reunir una serie de características del experto humano:

- Habilidad para adquirir conocimiento

- Fiabilidad, para poder confiar en sus resultados o apreciaciones

- Solidez en el dominio de su conocimiento

- Capacidad para resolver problemas

Podemos dividir un sistema experto en 3 componentes principales:

- Base de conocimiento - Motor de inferencia - Base de hechos - Interfaz de usuario

Figura 1. Componentes de un SE

También destacan otros módulos que forman parte de un sistema experto:

- Módulo de comunicaciones - Módulo de explicaciones - Módulo de adquisición de

conocimiento

A continuación se analizan cada una de estas partes.

2.1 Base del conocimiento

La base del conocimiento es una estructura de datos que contiene una gran cantidad de información sobre un tema específico, generalmente introducida por un experto en dicho tema, sobre el cual se desarrolla la aplicación. Es decir se trata del conocimiento convenientemente formalizado y estructurado que posee un sistema experto, sobre un tema específico.

Este conocimiento los constituye la descripción de:

- Descripción de los objetos - Relación entre ellos - Casos particulares y excepciones - Diferentes estrategias de

resolución con sus condiciones de aplicación

2.1.1 Tipos de conocimiento

Los conocimientos que se suelen almacenar son de cuatro tipos:

Objetivo, describe la situaciónreal del sistema

De sucesos, relacionado con lossucesos que ocurren en eltiempo de ejecución

Del funcionamiento delsistema, cómo se hacen lascosas

Metaconocimiento, capacidadpara buscar en la base deconocimiento y abordar laresolución del problema de unamanera inteligente

-68-

Page 75: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

2.1.2 Representación del conocimiento La representación del conocimiento por lo general es sencilla y mediante reglas, aunque existen varias formas de representarlo.

Marcos. Estructuras de datos representados por una serie de campos y los valores asociados a los mismos.

Redes semánticas Representaciones gráficas del conocimiento

Reglas Declaraciones estructuradas en forma de oraciones condicionales

2.2 Motor de inferencia También llamado intérprete de reglas, es el corazón de todo sistema experto. El cometido principal de esta componente es el de sacar conclusiones aplicando el conocimiento a los datos, es decir, se encarga de las operaciones de búsqueda y selección de reglas a utilizar en el proceso de razonamiento. Las conclusiones obtenidas por el motor de inferencia pueden estar basadas en el conocimiento determinista o probabilístico. 2.3 Base de hechos

Se trata de una memoria auxiliar que almacena los datos del usuario, datos iniciales del problema y los resultados intermedios a lo largo del proceso de resolución, además de permitir saber el estado actual del sistema y como se ha llegado a él. 2.4 Interfaz de usuario Se trata del enlace entre el sistema experto y el usuario, que gobierna el diálogo entre ambos. Su objetivo es el de permitir un diálogo en un lenguaje cuasi-natural con la máquina. Para ello “traduce” el lenguaje español (o cualquier otra lengua) al lenguaje interno y viceversa. 2.5 Otros módulos Otros módulos que forman parte de este tipo de herramientas, son los siguientes:

Módulo de comunicaciones, permite la interactuación entre sistemas, además de con el experto, para recoger información o consultar la base de datos

Módulo de explicaciones, permite explicar al usuario tanto las reglas usadas como el conocimiento aplicado en la resolución de un problema

Módulo de adquisición de conocimiento, permite al experto la construcción de la base de conocimiento de una forma sencilla

Figura2. Estructura de un sistema

expero -69-

Page 76: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

2.6 Aplicaciones de los SE

De acuerdo con la función que ejercen los SE, se pueden clasificar en distintas categorías como muestra la tabla a continuación.

2.7 Ventajas y desventajas de los SE

2.7.1 Ventajas

Un sistema experto tiene numerosas ventajas, entre las que podemos destacar:

Total disponibilidad con máximodesempeño en entornos hostiles ypeligrosos

Se puede duplicar ilimitadamente Siempre se ajustan a las normas

establecidas y son consistentes en sudesempeño. No desarrollanapreciaciones subjetivas,tendenciosas, irracionales oemocionales

Siempre están dispuestos a darexplicaciones, asistir o enseñar a lagente y no padecen de olvido, fatiga oerrores de cálculo

Pueden tener una vida de servicioilimitada

2.7.2 Desventajas

Por otro lado se pueden destacar algunos inconvenientes:

Muy costosos de desarrollar ymantener

La aproximación de cada experto a lasituación evaluada puede ser diferente

La extracción del conocimiento a losexpertos humanos es difícil

Noción limitada acerca del contextodel problema. No puede percibir todaslas cosas que un experto humanopuede aprecias de una situación

No saben subsanar sus limitaciones.No son capaces de trabajar en equipoo investigar algo nuevo.

-70-

Page 77: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

3. MAGERIT La gestión global de seguridad de los sistemas de información es una acción recurrente (se ha de reemplazar periódicamente) que comprende dos grandes bloques. Uno bloque está compuesto por varias fases que se apoyan en técnicas generales adaptadas al campo de la seguridad. El otro bloque está constituido por la fase de Análisis y Gestión de Riesgos, núcleo de la medición y el cálculo de la seguridad. Para realizar esto, el Consejo Superior de Informática ha elaborado MAGERIT, una metodología de Análisis y Gestión de Riesgos de los sistemas de información de las Administraciones Públicas, como respuesta a la dependencia creciente de éstas (y de toda la sociedad) de las tecnologías de la información y Comunicaciones. El objetivo es investigar la seguridad de los sistemas de información en un dominio. Para ello MAGERIT recomienda las salvaguardas o las medidas apropiadas que deben adoptarse para promover y asegurar dicha seguridad 3.1 Análisis En la realización de un análisis y gestión de riesgos según MAGERIT, el analista de riesgos es el profesional especialista que maneja una serie de elementos básicos: . Activos . Amenazas . Vulnerabilidades . Impactos . Riesgos

Estos elementos guardan una relación según la figura 3.

Figura3. Análisis y gestión del riesgo

Para poder identificar estos elementos en

cada dominio, es importante que el

responsable del dominio protegible cumpla

una serie de características:

- Conozca, transmita y valore los

aspectos de la seguridad de los

Activos de su Dominio

- Comprenda su Vulnerabilidad, es

decir, la posibilidad de ataque de

cada amenaza

- Valore el Impacto consecuente al posible ataque

3.1.1 Activos

Los activos son los recursos del

sistema de información o relacionados con

éste, necesarios para que la organización

funcione correctamente y alcance los

objetivos propuestos.

Como no tiene sentido hablar del sistema de

información aislado desde el punto de vista

del riesgo, MAGERIT tiene en cuenta 5

grandes categorías de Activos:

El entorno o soporte del sistema de

información (personal, equipamiento

-71-

Page 78: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

de suministros auxiliar, activos

tangibles)

El sistema de información

propiamente dicho del dominio

(hardware, software básico,

aplicaciones etc.)

La propia información requerida,

soportada o producida por el sistema

de información que incluye los datos

informatizados, entrantes y

resultantes, así como su

estructuración (formatos, códigos,

claves de cifrado) y sus soportes.

Las funcionalidades del dominio que

justifican al sistema de información

Otros activos de naturaleza variada

(imagen de la organización, la

confianza que inspire, etc.)

Estas 5 categorías de Activos se conocen

como las 5 capas principales en el diseño de la

seguridad, activos relacionados entre sí.

El Activo puede tener dos formas clásicas de

valoración:

- Cualitativa, su valor de uso

- Cuantitativa, su valor de cambio

3.1.2 Amenazas

Las amenazas se definen como los eventos que pueden desencadenar un incidente en la organización, produciendo

daños materiales o pérdidas inmateriales en sus activos. MAGERIT considera distintos ‘productores’ de las amenazas para así tener en cuenta la diversidad de sus causas. Cada tipo de productores genera un tipo de causas de los cambios del estado de seguridad en los Activos. Las amenazas se clasifican así en:

Grupo A de Accidente

A1. Accidente físico de origen industrial A2. Avería A3. Accidente físico de origen natural A4. Interrupción de servicios o de suministros esenciales A5. Accidentes mecánicos o electromagnéticos

Grupo E de Errores

E1. Errores de utilización E2. Errores de diseño E3. Errores de ruta, secuencia o entrega E4. Inadecuación de monitorización, trazabilidad, registro del tráfico de información

Grupo P de Amenazas IntencionalesPresenciales

P1. Acceso físico no autorizado con inutilización por destrucción o sustracción P2. Acceso lógico no autorizado con intercepción pasiva simple de la información P3. Acceso lógico no autorizado con alteración o sustracción de la información en tránsito o de configuración P4. Acceso lógico con corrupción o destrucción de información en tránsito o de configuración

-72-

Page 79: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

P5. Indisponibilidad de recursos

Grupo T de Amenazas Intencionales Teleactuadas T1. Acceso lógico no autorizado con intercepción pasiva T2. Acceso lógico no autorizado con corrupción o destrucción de información en tránsito o de configuración T3. Acceso lógico no autorizado con modificación de información en tránsito T4. Suplantación de Origen o de Identidad T5. Repudio del Origen o de la Recepción de información en tránsito

3.1.3 Vulnerabilidades Se define como la potencialidad o posibilidad de ocurrencia de la materialización de una amenaza sobre un activo. Es una propiedad entre un activo y una amenaza.

MAGERIT evita los términos probable y probabilidad y emplea los conceptos potencial y potencialidad (frecuencia o posibilidad) para medir la Vulnerabilidad.

3.1.4 Impactos

El impacto en un activo es la consecuencia sobre éste de la materialización

de una amenaza. Véase en la Figura4.

Figura 4. Impacto MAGERIT considera tres grandes grupos de impactos:

- Cualitativos con pérdidas funcionales del Activo

- Cualitativos con pérdidas orgánicas - Cuantitativos

El impacto puede ser acumulado o repercutido.

Figura5. Impactos 3.1.5 Riesgo Es la posibilidad de que se produzca un impacto en un activo o en el dominio. Para MAGERIT el cálculo del riesgo ofrece un indicador que permite tomar decisiones por comparación con un umbral de riesgo. Se pueden clasificar en:

1. Crítico. Requiere atención urgente 2. Grave. Requiere atención 3. Apreciable. Puede ser objeto de

estudio

-73-

Page 80: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

4. Asumible. No se toman acciones paraatajarlo

3.2 Tratamiento

Para tratar la gestión del riesgo MAGERIT ofrece unas salvaguardas o unas medidas que deben adoptarse para promover y asegurar dicha seguridad.

En la figura 6 se muestra cómo se incorpora al análisis este nuevo tratamiento.

Figura 6. Tratamiento

Un mecanismo de salvaguarda es el procedimiento o dispositivo, físico o lógico, capaz de reducir el riesgo. Actúa de dos formas posibles:

Neutralizando o bloqueando lamaterialización de la amenaza antes deser agresión

Mejorando el estado de seguridad deactivo ya agredido, por reducción delimpacto

3.2.1 Características

Las salvaguardas deben ser efectivas. Para ello han de cumplir una serie de características:

- Tienen que ser adecuadas al peligro que conjura

- Deben estar instaladas, mantenidas, monitorizadas y actualizadas

- El personal debe estar instruido: usuarios, operadores y administradores

3.2.2 Tratamiento del riesgo

La forma de tratar el riesgo se basa en dos premisas muy claras:

- Si se puede, el riesgo se evita - En caso contrario, se deben de

plantear una estrategia

. Medidas preventivas . Plan de emergencia . Plan de recuperación

3.3 Resumen

Recopilando lo anteriormente descrito podemos describir el proceso de MAGERIT en cuatro etapas:

Figura 7. Proceso MAGERIT

Planificación del Análisis y Gestión deRiesgos, donde se establecen lasconsideraciones necesarias paraarrancar el proyecto, definiendo losobjetivos que ha de cumplir y el

-74-

Page 81: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

dominio que abarcará.

Análisis de riesgos, donde se identifican y valoran los diversos elementos componentes del riesgo, obteniendo una estimación de los umbrales del riesgo deseable

Gestión de riesgos, donde se identifican las posibles funciones y servicios de salvaguarda reductores del riesgo calculado, se seleccionan los aceptables en función de las existentes y otras restricciones y se especifican los elegidos finalmente

Selección de salvaguardas, donde se escogen los mecanismos de salvaguarda a implantar, se elabora una orientación de ese plan de implantación, se establecen los procedimientos de seguimiento para la implantación y se recopila la información necesaria para obtener los producto finales del proyecto y realizar las presentaciones de resultados

4. CONCLUSIONES

Como hemos podido observar la implantación de sistemas expertos en distintos ámbitos de la vida, es una realidad. Desde la predicción y diagnóstico de enfermedades hasta la gestión de la seguridad de los sistemas de información, los sistemas expertos están presentes y ayudan en distintas tareas de cualquier profesional experto en un ámbito concreto. Es cierto que el desarrollo o la adquisición de un sistema experto en general es caro, pero el mantenimiento y el coste marginal de su uso repetido es relativamente bajo. Además la ganancia en términos monetarios, tiempo y precisión son muy altas.

Por ello, hay numerosos motivos para la utilización de los sistemas expertos:

- Con los SE, personal con poca experiencia puede resolver problemas que requieren un conocimiento de experto

- El conocimiento de varios expertos puede combinarse, dando lugar a SE más fiables

- Pueden responder a preguntar y resolver problemas mucho más rápidamente que un experto humano

- Suministran respuestas rápidas y fiables en situaciones en las que los expertos humanos no pueden

- Pueden ser utilizados para realizar operaciones monótonas, aburridas e inconfortables para un humano

Esto no quiere decir que un experto humano deje de ser necesario, al contrario, debe existir una armonía y cooperación entre el experto humano que proporciona el conocimiento y la herramienta del sistema experto que lo gestiona. En nuestro caso MAGERIT intenta proporcionar una mayor seguridad en los sistemas de información. Frente al actual auge de las nuevas tecnologías hay que destacar la mayor vulnerabilidad que sufren todas ellas frente a cualquier tipo de amenaza. Sistemas expertos como MAGERIT facilitan y proporcionan medidas para aumentar la seguridad de cualquier sistema, ya que cualquier posible pérdida de información supone un gran peligro. No cabe duda que a lo largo de los años se irán perfeccionando estos sistemas expertos y que seguirán ayudando al experto humano a desarrollar de una manera más optima su labor.

-75-

Page 82: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

5. REFERENCIAS

[1] Sistemas Expertos, por Alberto Martín de Santos

[2] Sistemas Expertos, por Césari Matilde

[3] Sistemas Expertos, por Jorge Pineda

[3] Gestión de Riesgos y Análisis y Tratamiento MAGERIT, por José A.Mañas

[4] Metodología de Análisis y Gestión de Riesgos de los Sistemas de Información

-76-

Page 83: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Aplicaciones de la Minería de datos en las empresas

Silvia Briones Herranz Universidad Carlos III

NIA: 100079044

[email protected]

RESUMEN

En este trabajo veremos la importancia de apoyarse

en la minería de datos a la hora de la toma de

decisiones en una empresa, basándose en el

descubrimiento de información útil en las bases de

datos para fundamentar mejor sus decisiones. Además

analizaremos mediante dicha técnica un ejemplo

ficticio de las ventas de consolas con el fin de

encontrar las preferencias de los clientes y así

conseguir hacer a las empresas más competitivas.

Términos generales

Teoría, hardware, data warehouse

Palabras clave

Minería de datos, base de datos, algoritmia, datos

extraños

1. INTRODUCCIÓN

A lo largo de existencia de una empresa se acumulan

grandes cantidades de datos que son almacenados,

algunos de ellos se usarán y otros incluso se perderán

por falta de actualidad o por cambios en las políticas

de manejo de datos. Todos estos datos serían de

utilidad si fuera posible aprovecharlos mediante

procesos que nos otorgaran información útil.

La mayoría de las organizaciones no sufren por falta

de datos, sino más bien por exceso, por lo que cada

vez es más complicado buscar datos específicos y

significativos que permitan tener una visión más

completa y clara de la situación estratégica de la

empresa para mejorar la manera en que se toman las

decisiones.

La minería de datos es una herramienta que sirve para

la extracción de datos y su análisis mediante técnicas

estadísticas de grandes bases de datos. Sirve para

examinar a los clientes y a la competencia, para saber

quiénes son los mejores candidatos para un programa

o un producto en especial, es mejor lanzar un

producto haciendo una estrategia de mercado con una

base de datos explorada. Por ello la empresa debe

trabajar en la construcción de bases de datos,

mantenerlas enriquecidas, actualizadas.

2. CONCEPTO

La minería de datos tiene como fin descubrir, extraer

y almacenar información relevante de amplias bases

de datos, a través de programas de búsqueda e

identificación de patrones y relaciones globales,

tendencias, desviaciones y otros indicadores que en

un principio pueden parecer caóticos pero que tienen

una explicación que se puede descubrir mediante

distintas técnicas de esta herramienta.

Esta técnica es ampliamente usada en el entorno

empresarial para determinar el comportamiento de los

consumidores, el análisis de productos, ofertas,

demandas, volumen y valor de las exportaciones e

importaciones, además del análisis de la competencia,

análisis de las telecomunicaciones y de los medios de

comunicación, detección de fraude, mejora en la

gestión de riesgo, etc.

-77-

Page 84: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

El objetivo fundamental es aprovechar el valor de la

información localizada y usar los patrones

preestablecidos para que los directivos tengan un

mejor conocimiento de su negocio y puedan tomar

decisiones más fiables.

3. VENTAJAS DE ESTA TÉCNICA

Las características a destacar son las siguientes:

La minería de datos ayuda a los empresarios

en el procesamiento de reservas de datos para

descubrir relaciones de las que, en algunos

casos, anteriormente ni siquiera se daba

cuenta.

La información conseguida a través de la

minería de datos ayuda a los directivos a

elegir cursos de acción y a desarrollar nuevas

estrategias competitivas, porque conocen

información que solo ellos pueden emplear.

Puede trabajar siguiendo los mismos criterios

con grandes cantidades de información

histórica.

Las personas tenemos la capacidad de

percibir anomalías y excepciones

rápidamente pero, sin embargo, no somos

capaces de deducir relaciones entre grandes

volúmenes de datos, por lo que la minería de

datos, mediante modelos avanzados y reglas

de inducción, pueden examinar gran cantidad

de datos y encontrar patrones difíciles de

identificar a simple vista.

El curso de la búsqueda puede ser realizado

por herramientas que automáticamente

buscan ciertos patrones ya que así están

programadas y despliegan las trivialidades

más importantes.

4. ESTRUCTURA

4.1 Algoritmos o programas de búsqueda

mineros

La minería de datos hace uso de programas de

búsqueda para detectar desviaciones, tendencias y

patrones ocultos en los datos históricos.

Los mineros son programas pensados y diseñados por

el usuario, en los que se utilizan diversas técnicas

para la explotación de datos, tales como redes

neuronales,clustering,asociaciones,clasificación,visua

lizacion,detección de desviaciones, algoritmos

genéticos entre otros. Todos ellos necesitan bases de

datos de un tamaño considerable para ser eficientes.

La función de los programas mineros es relacionar los

criterios de selección y búsqueda con los datos

históricos, si descubren algo interesante lo presentan

al usuario como un logro.

Los programas mineros trabajan con procesos

automáticos principalmente sobre bases de datos

relacionales para buscar datos extraños, patrones,

tendencias o desviaciones; pueden ser ejecutados

fuera de las horas pico, usando tiempos de máquina

excedentes de noche o en horas de poco proceso, lo

que los convierte en ayudantes importantes.

Una ventaja de los mineros es que no requieren

hardware especial o dedicado. Trabajan en las redes

de oficinas nacionales o regionales, utilizando por las

noches el servidor de la base de datos relacional, y

las PC’s o estaciones de trabajo ya existentes. Es

decir, trabajan sobre datos ya recogidos, en máquinas

ya existentes, realizando labores útiles mientras los

usuarios no se encuentren trabajando.

4.2 Datos históricos

Son datos estables y coherentes que se van

acumulando a lo largo de la vida operativa de una

empresa.

4.3 Criterios de búsqueda

Son las normas, tendencias y patrones desde los

cuales los programas mineros realizarán el proceso de

selección y búsqueda en los datos históricos. La

prioridad de la búsqueda, los criterios de interés y las

explicaciones de situaciones extrañas son definidas

por el usuario. Una vez establecidos los criterios de

selección y búsqueda se analizarán los datos

históricos guardando los hallazgos encontrados

inmediatamente en un archivo para su posterior

revisión y decisión final.

4.4 Almacenamiento de hallazgos

Los hallazgos son los datos resultantes de relacionar

los criterios de selección y búsqueda con los datos

históricos. El ser humano desempeña un papel

-78-

Page 85: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

fundamental, ya que sólo él puede decidir si este

patrón, tendencia o criterio, tiene importancia,

coherencia y utilidad para la empresa.

5. CICLO DE LA MINERÍA DE DATOS

El proceso de la minería de datos es un ciclo, debido

a que los resultados obtenidos pueden ser usados de

nuevo en dicho proceso, principalmente son cuatro

pasos:

1. Los usuarios que controlan la información

deberán identificar los problemas que tiene el

negocio y las áreas en donde los datos pueden

dar valor añadido a la empresa, es decir, a

raíz de un problema surge la necesidad de

analizar al detalle los datos de la empresa

para poder encontrar posibles soluciones al

mismo, o bien, información que haga que las

decisiones tomadas sean las mas correctas

posibles. De la misma manera, es importante

identificar las áreas en donde la información

es muy cambiante, pero imprescindible para

la competitividad de la empresa. Para ello

pueden manejarse diferentes criterios, que

dependerán de las características de la

empresa, con el fin de determinar las ideas,

criterios, normas y preguntas que funcionaran

como entrada para el proceso de la minería de

datos.

2. El usuario mediante la selección del

algoritmo o algoritmos adecuados de minería

analizará la información histórica.

Posteriormente, estos algoritmos son

traducidos a programas mineros que

realizarán la búsqueda con los criterios

previamente definidos.

Existen varias dificultades que pueden entorpecer

el resultado que se obtenga del análisis, y esto es

debido a que los datos se pueden encontrar en

diversas formas, formatos y en múltiples

sistemas, unido a que pueden provenir de fuentes

internas o externas; para resolver dicho problema

actualmente se ha hecho uso del data warehouse,

que pretende reunir los datos más importantes de

la empresa en una especie de base de datos

corporativa, sin embargo, es posible hacer

minería de datos sin necesidad de tener el data

warehouse, pero es muy importante tener claro

que la información deberá estar lo más uniforme

y acorde posible, ya que depende de esto la

certeza de los resultados que obtengamos.

3. Incorporar la información obtenida a través

del proceso de minería de datos al proceso de

tomas de decisiones; así como mostrar los

descubrimientos encontrados a los

responsables de las operaciones de manera

que la información obtenida pueda formar

parte de los procesos de la empresa y pueda

aplicarse en la solución de los problemas.

4. Medir los resultados; Medir el valor de los

hallazgos encontrados, que se otorgan a la

persona que toma las decisiones con relación

a la solución de los problemas identificados y

a los criterios definidos anteriormente.

-79-

Page 86: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

6. APLICACIONES DE MINERÍA DE

DATOS EN DIVERSAS EMPRESAS

Las operaciones comerciales, de algunas de las

grandes empresas, se basan hoy en día en informes

periódicos producidos por consultas en base de datos

pregrabadas; ¿cuál es la cifra de ventas de una

tienda?, ¿qué tendencias se derivan de esas cifras de

ventas? Los informes con referencias cruzadas

forman la base de la mayoría de las decisiones de los

ejecutivos. Las consultas se elaboran de forma

interactiva con el usuario para garantizar que la

información presente una estructura eficiente. Estos

informes se han elaborado para responder a preguntas

recurrentes.

Los hallazgos encontrados por los programas mineros

ayudan a los directivos a analizar los hábitos de los

clientes a fin de satisfacer mejor su demanda, mejorar

la administración de inventarios y, en general,

aumentar sus márgenes de utilidad.

Hay empresas que utilizan soluciones de información

estratégica para maximizar sus beneficios y mantener

un alto nivel de satisfacción entre sus clientes. Para

ello administran los movimientos a través de la red de

distribución de acuerdo con la información acerca de

lo que se vende en las tiendas; estos datos permiten

conocer las variaciones de cada temporada. No

obstante, para mantenerse en el negocio no solo hay

que tener en cuenta estas soluciones. Para competir es

necesario información en tiempo real sobre lo que

sucede, como ejemplo tomaremos a los conductores

de camiones que llevan ordenadores conectados por

radio para informar cada vez que visitan a un

minorista. Con esta información inmediata, las

principales empresas pueden hacer ajustes sin tardar

demasiado y sacar el mejor provecho posible.

Además, la información procedente de las

aplicaciones de información estratégica sobre lo que

se vende y lo que no, permite a las empresas cambiar

su producción en la fábrica para adaptarse a la

demanda.

Otro caso es el de la moda, esta es estacional, por lo

tanto tiene un periodo de uso aproximado de tres

meses, es decir, está un periodo relativamente corto

de tiempo en el almacén, un alto índice de cambio de

existencias y otorga grandes beneficios.

Además es de vital importancia detectar rápidamente

las nuevas tendencias ya que así se podrá predecir

exactamente cuáles serán las prendas que se

compraran durante un periodo determinado en una

tienda, consiguiendo consigo reducir el inventario de

la tienda, el desembolso del capital y aumentando los

beneficios.

La minería de datos, que permite la gestión en tiempo

real de manera eficaz, es una herramienta aplicable a

cualquier tipo de empresa. Un amplio número de

compañías pueden tener aplicaciones exitosas con

ella.

Conocer al cliente es el primer paso para satisfacer

sus necesidades. Para ello, las empresas pueden hacer

un seguimiento de las compras de un cliente. La

comprensión de tales hábitos de compra permite

desarrollar promociones destinadas a un tipo concreto

de clientes pudiendo llegar a aumentar su fidelidad y

frecuencia de compra.

En general, estos ejemplos muestran las ventajas que

tiene el uso en minería de datos para comprender

mejor al cliente y que las empresas puedan desarrollar

campañas de ventas más eficaces, así como una

técnica de mercado mejor dirigida y estrategias

innovadoras de desarrollo de productos que den como

resultado mayores ingresos y rentabilidad.

-80-

Page 87: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

A continuación analizaremos mediante minería de

datos las ventas de consolas en distintos días y

supermercados con el fin de poder predecir las

preferencias de los clientes y así poder hacer a la

empresa más competitiva.

7. ANÁLISIS VENTAS DE CONSOLAS

Para dicho análisis nos valdremos de una herramienta

de software desarrollada en Java de dominio público

orientado a la extracción de conocimientos desde

bases de datos con grandes cantidades de

información, dicha herramienta recibe el nombre de

WEKA. Para ello únicamente se requiere que los

datos a analizar se almacenen con un cierto formato,

conocido como .arff (Attribute-Relation File Format).

Objetivo del análisis

Antes de utilizar dicha herramienta debemos hacer

una comprensión del dominio de aplicación y

establecer una idea clara acerca de los objetivos del

usuario final, cuando lo hagamos hecho nos

dedicaremos a la búsqueda de relaciones y modelos

subyacentes en los datos. Así, el proceso de análisis

de datos, permitirá dirigir la búsqueda y hacer

distinciones, con una interpretación adecuada de los

resultados generados. Los objetivos, aplicaciones,

etc., del análisis realizado deben ser considerados con

detenimiento como primer paso del estudio.

En nuestro caso hemos elegido las ventas de consolas

para analizar ya que está dedicado a un tipo concreto

de clientes. Podremos ver como varían las ventas en

función de las preferencias de los clientes y así

desarrollar, mediante los resultados obtenidos a través

de minería de datos, ajustes dedicados a conseguir

aumentar la fidelidad y frecuencia de compra.

Este análisis tiene un enfoque introductorio e

ilustrativo para acercarse a las técnicas disponibles y

su manipulación desde la herramienta.

Pre procesamiento de datos

Esta etapa es siempre la más costosa y por lo tanto la

que consume el mayor tiempo en el desarrollo de un

proyecto de minería de datos.

En nuestro ejemplo dispondremos de los siguientes

datos:

@attribute 'edad comprador' NUMERIC

@attribute consola {'Play Station 3', 'XBOX

360','Nintendo Wii'}

@attribute color {'negro mate', 'negro brillante',

blanco, negro}

@attribute 'capacidad almacenamiento' {512MB,

4GB, 160GB, 250GB}

@attribute 'lugar compra' {'MediaMarkt', 'Game',

'Worten', Carrefour,'PC city'}

@attribute 'dia semana compra' {lunes, martes,

miercoles, jueves, viernes, sabado, domingo}

@attribute oferta? {SI, NO}

@attribute 'medio pago' {'tarjeta debito','tarjeta

credito', efectivo}

El campo ¿oferta? es binario (sólo puede tomar como

valores sí o no). Además el último atributo medio de

pago, es la etiqueta de clase que se desea predecir. A

partir de los datos, las técnicas de minería de datos

podrían generar un modelo de los datos, consistente

en un conjunto de reglas, que permitiesen predecir en

el futuro, el posible comportamiento de un cliente que

quisiera comprar una consola.

En WEKA se generan los gráficos con los datos que

hemos puesto de ejemplo, seleccionando la pestaña

Visualize. Se muestran, por defecto, gráficos para

todas las combinaciones de atributos tomados dos a

dos, así, se puede estudiar la relación entre dos

atributos cualesquiera.

-81-

Page 88: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Figura4: Relación entre datos dos a dos

Ahora seleccionamos uno de los cuadros para mostrar

la relación existente. Por ejemplo entre la edad de los

clientes y los colores elegidos:

Figura5: Relación entre edades y colores consola

En esta última gráfica podemos ver como la mayoría

de los clientes con edades comprendidas entre los 13

y 30 años prefieren que el color de la consola sea

negro brillante seguido del color negro mate y de una

pequeña minoría que la quiere negra y blanca

respectivamente. Hay en otros casos como el de la

relación entre modo de pago y día de la semana que

dependen de otros factores como es el caso de la edad

del comprador.

Figura6: Relación entre modo de pago y día de la

semana

Por lo tanto, podemos deducir que el modo visual nos

ayuda a tener una idea de los datos pero no a

conocerlos en su totalidad.

Árboles de decisión

Los árboles son una manera práctica para visualizar la

clasificación de un conjunto de datos. El algoritmo

J48 (árbol de decisión C4.5) siempre destaca por su

precisión, con prácticamente cualquier tipo de datos.

Por ello, lo aplicamos a los datos de

ventaConsolas.arff usando un cross-validation con 10

folds.

-82-

Page 89: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Figura6: Ejecución del algoritmo de clasificación

J48

Como podemos observar en los resultados obtenidos

de la ejecución del algoritmo J48, el 70% de las

instancias fueron clasificadas correctamente y el 30

% incorrectamente. Al final de los resultados aparece

la matriz de confusión que muestra como s

clasificaron las instancias. Si la diagonal toma valores

y el resto son ceros en esa matiz, indicaría que todas

las instancias fueron clasificadas correctamente.

El gráfico del árbol generado es el siguiente:

Figura7: Árbol de decisión generado con el

algoritmo J48

A partir de la figura anterior, se puede observar una

fuerte relación entre los atributos medio de pago y

edad del comprador. Conociendo la edad de quien

compra una consola es posible deducir su medio de

pago con una exactitud del 70%. Si el individuo es

menor de 24 años con seguridad pagará en efectivo,

pero si tiene 25 años utilizará tarjeta de débito y si es

mayor de 25 años usará tarjeta de crédito.

Si ahora cambiamos la etiqueta de clase a los colores

preferentes de los clientes obtenemos el siguiente

árbol de decisión:

Figura7: Árbol de decisión generado con el

algoritmo J48

De la figura podemos decir que conociendo el tipo de

consola es posible deducir el color con una exactitud

del 85%. Si el cliente elige la Play Station 3 con

seguridad elegirá el color negro mate para la misma,

si en cambio, elige la consola XBOX 360 el color

será negro brillante y si por último elige la Nintendo

Wii el color seleccionado será en negro.

-83-

Page 90: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

8. CONCLUSIÓN

Hoy en día el valor de la información ha crecido

hasta el límite de convertirse en un activo estratégico

indispensable para la competitividad de una empresa.

De esta selección de información depende una buena

parte para que la toma de decisiones sea la mejor para

la empresa.

La minería de datos ayuda a los directivos a conseguir

una visión más completa y detallada de su negocio ya

que les permite buscar datos extraños, es decir

aquellos que se salen de los rangos que están

considerados como normales de lo que, en parte,

depende que podamos confiar en la información

obtenida para la toma de decisiones.

En la medida en la que una empresa recoja datos de

sus actividades diarias tendrá la oportunidad de

relacionarlos entre ellos y hacer descubrimientos que

les ayuden a identificar posibles clientes, lugares

estratégicos de venta, entre otros.

La minería de datos tiene futuro dentro de las

empresas, debido a que existen grandes bases de

datos que contienen valores desaprovechados; los

mercados están más saturados de empresas y se

requiere análisis intensos para captar la atención de

los clientes.

En todo el proceso de la minería de datos, el ser

humano es el factor más importante, ya que solamente

es él el que tiene la capacidad de analizar y decidir si

los patrones, normas o funciones encontradas tienen

importancia, lógica y utilidad para su empresa.

9. REFERENCIA

[1] Artículo: “Data mining: torturando a los datos

hasta que confiesen”.

Luis Carlos Molina Felix

Univertitat Politécnica de Catalunya

[2] Villena, J. Apuntes de la asignatura Inteligencia

en redes de Comunicaciones. 5º Ingeniería de

Telecomunicaciones

Universidad Carlos III de Madrid

[3] “INTRODUCCION A LA MINERIA DE

DATOS”

José Hernández Orallo, M.José Ramírez

Quintana, Cèsar Ferri Ramírez

Editorial Pearson, 2004. ISBN: 84 205 4091 9

[4] Mineria de datos para empresas

http://www.gerencie.com/mineria-de-datos-para-

empresas.html

[5] Trabajo de Adscripción Minería de Datos

Universidad Nacional del Nordeste

Adscripta: Sofia J. Vallejos - L.U.: 37.032

Materia: Diseño y Administración de Datos

-84-

Page 91: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Implementación de un agente autónomo en Super Mario Pablo González Fernández

Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid

Avda. De la Universidad, 30 28911, Leganés (Madrid-España)

[email protected]

Alberto Chicharro Sobrino

Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid

Avda. De la Universidad, 30 28911, Leganés (Madrid-España)

[email protected]

ABSTRACT

En este documento se explica cómo se podría utilizar la

teoría de resolución de problemas en un entorno controlado

como es el mundo de Super Mario. La solución propuesta

consta de un árbol de decisión, que en función de las

variables de entrada que se le pasen por parámetro decidirá

cuál es la mejor acción a llevar a cabo. Para la

implementación de este agente inteligente se utilizan las

librerías proporcionadas en [1].

Descripción de categorías y temas

[Agente]: Un Agente es un sistema autónomo capaz de

tomar decisiones en tiempo real. Estos agentes se apoyan en

la toma de datos del entorno para su toma de decisiones.

[Mario Bros]: Videojuego de plataformas que fue lanzado

para la videoconsola NES en 1985.

Terminos generales. Árbol de decisiones, agente autónomo, búsqueda heurística.

Palabras clave. Mario Bros, agente inteligente, enemigos, escenario,

algoritmo.

1. INTRODUCCION

En este documento se explicarán los pasos que se han

tomado a la hora de realizar un agente autónomo en el

videojuego de Mario Bross. Para la implementación de

éste, veremos las posibles alternativas dentro de los

algoritmos de búsqueda, donde en este caso la búsqueda

sería llegar al final del escenario, sin recibir golpes. Dentro

de estos algoritmos hay dos grandes tipos: los de búsqueda

a ciegas y los heurísticos. Dado nuestro problema, los que

encajaban mejor eran los algoritmos de búsqueda

heurística, ya que nuestro soporte de librerías nos ofrecía

información sobre el mapa en todo momento.

En primer lugar, se explicará el funcionamiento de la

plataforma utilizada para desarrollar el agente autónomo,

explicando las distintas soluciones clásicas que se han

empleado en él con relativo éxito. Finalmente,

presentaremos en detalle un agente desarrollado por

nosotros, que, por simplicidad, utiliza una decisión reactiva

codificada mediante un árbol de decisión en función de

distintos parámetros del entorno, en lugar de recurrir a

técnicas más complejas y efectivas como búsquedas sobre

los posibles nodos a los que desplazarse o aprendizaje

máquina.

2. INTELIGENCIA ARTIFICIAL EN

JUEGOS

Los juegos son una importante herramienta en el ámbito del

desarrollo y experimentación en inteligencia artificial (AI).

Esto es debido a que los juegos proporcionan entornos

desafiantes y sencillos de escalar en dificultad, sobre los

que es posible aplicar conceptos de procesado de

información y comportamiento inteligente. Además de estas

aplicaciones relacionadas con la investigación en

inteligencia artificial, los juegos en sí pueden beneficiarse

de la aplicación de algoritmos y desarrollos de AI con el

objetivo de crear oponentes autónomos interesantes y

creíbles o crear mundos más complejos y desafiantes para

los jugadores humanos.

Entre las características principales que convierten un juego

en útil para el entorno de la inteligencia artificial se incluye

la capacidad para tener en cuenta habilidades cognitivas

humanas interesantes, su vistosidad, cómo de entretenido

sea, para fomentar la motivación en el desarrollo y como de

general sea en su representación del entorno y de los

elementos de entrada y salida, de modo que un número

amplio de algoritmos distintos de AI puedan aplicarse sobre

él de forma sencilla y natural; además, debe ser sencillo de

aprender; es decir, tener un conjunto de reglas intuitivas y

simples que sean comprensibles de forma rápida por un

conjunto amplio de jugadores, pero al mismo tiempo debe

ser complicado de jugar de una forma experta; es decir, que

ese conjunto de reglas simples deben ser suficientes como

para dar lugar a oponentes y/o entornos complejos y a un

crecimiento en dificultad suave, que permita la generación

de niveles de dificultad adaptables, que varíen de una forma

lenta desde los más sencillos a aquellos que solo un número

muy reducido de jugadores sean capaces de completar.

-85-

Page 92: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

De esta forma, será posible diferenciar entre jugadores (o

algoritmos) con más o menos habilidad en función del

número de niveles que sean capaces de completar, y

también de obtener información rápida sobre si nuestro

sistema evoluciona favorablemente o se comporta peor a

medida que modificamos su comportamiento.[1]

Los juegos de plataforma son un tipo concreto de

videojuegos que se caracterizan porque el juego transcurre

sobre un entorno en el que hay que atravesar un mundo,

sobreponiéndose a un conjunto variado de enemigos,

mediante un conjunto de acciones (generalmente caminar,

saltar, correr, escalar, disparar) y se recogen una serie de

objetos a lo largo del recorrido.[2]

Se cree que los juegos de

plataforma tienen interés con respecto al aprendizaje

computacional y la inteligencia artificial en general debido

a que tienen espacios de entrada y salida de dimensión

elevada, un conjunto de estados amplio y requieren poner

en práctica distintas habilidades en secuencia para atravesar

las pantallas.

En nuestro caso hemos optado por desarrollar un agente

para el entorno de desarrollo “Infinite Mario Bros”, un clon

del clásico juego de plataforma “Super Mario Bros”

desarrollado por Sergey Karakovskiy y Julian Togelius.

Según los autores, se trata del primer sistema para

implementación de algoritmos de inteligencia artificial

llevado a cabo sobre un juego de plataforma en el que se

lleva a cabo una competición. Los autores presentan el

código desarrollado para la implementación de la

plataforma (como software libre), que además del propio

entorno incluye un conjunto de librerías destinadas a

facilitar la creación de todo tipo de agentes autónomos. De

este modo, se incluye un conjunto de métodos y variables

destinados a recabar información del entorno. Respetando

el carácter clásico del juego de Super Mario, solo es posible

obtener información de un pequeño entorno de Mario, que

siempre se sitúa en el centro de la pantalla (una matriz de

19x19 casillas, aunque es posible acceder a la información

a resolución de pixel en lugar de a resolución de casilla si el

agente desarrollado requiere de esta precisión para

funcionar correctamente).

3. PERSPECTIVA SOBRE TIPOS DE

AGENTES PROPUESTOS

Dadas las características del juego de Super Mario, si

consideramos como objetivo el de atravesar el nivel en el

menor tiempo posible y sin perder vidas (sin preocuparnos

ni de matar a todos los enemigos ni de recuperar todas las

monedas), categoría en la que funciona principalmente el

campeonato y para la que hemos desarrollado nosotros

también nuestro código, teniendo en cuenta que los

adversarios de Mario son completamente deterministas, el

problema de AI resultante puede ser considerado como uno

de resolución de problemas sobre el que podrían por tanto

emplearse cualquier tipo de algoritmo de búsqueda sobre el

espacio de movimientos de Mario, eligiendo como estado

de partida la situación actual de Mario y como conjunto de

estados de llegada los puntos de la parte derecha de la

pantalla. Sin embargo, dada la necesidad de que el

algoritmo funcione en tiempo real (en particular, debe dar

un resultado de ejecución cada 40ms, para que el juego

pueda ejecutarse a 25 frames por segundo), se impone un

fuerte requisito de tiempo de ejecución que excluye los

algoritmos de búsqueda completa, por lo que es mejor

utilizar algún tipo de búsqueda heurística.

Desde la creación de la plataforma, ha habido

competiciones anuales en las que se han propuesto distintos

tipos de agentes autónomos que han obtenido resultados

bastante importantes dentro de “Infinite Mario Bros”; a

continuación se presenta un recorrido sobre los tipos

principales de algoritmos empleados y los resultados

obtenidos por cada uno de ellos.

En primer lugar, los algoritmos más frecuentes fueron los

creados directamente codificando a mano agentes reactivos;

es decir, sistemas de búsqueda para los que el propio

programador definió un conjunto de situaciones posibles y

las reacciones de Mario frente a ellas, sin utilizar ningún

tipo de aprendizaje adaptativo, ni búsqueda.

Un segundo tipo fueron los basados en aprendizaje

máquina; sistemas que utilizaban algoritmos de aprendizaje

(principalmente redes neuronales) empleando sistemas de

entrenamiento tanto supervisados como no supervisados.

Sin embargo, el tipo de agente más exitoso de entre los

propuestos para las competiciones ha sido el compuesto por

agentes de búsqueda A*. Ya se ha explicado que las

características del juego de plataforma Super Mario Bros se

ajustan de una forma muy buena a cualquier tipo de

algoritmo de búsqueda, y en particular a los que sacrifican

optimización ahorrando tiempo. De hecho, aun utilizando

este tipo de búsqueda heurística, algunos de los agentes

propuestos optaron por “cortar” la búsqueda a los 40ms, en

caso de que el algoritmo estuviese tardando demasiado, y

devolver el mejor nodo explorado hasta el momento. Para

emplear este tipo de algoritmo, es necesario familiarizarse

con la física de Mario: el movimiento de éste depende de

formas relativamente complejas de la velocidad de

movimiento actual, su posición en salto o en tierra y otra

serie de variables. A continuación se presentan dos

ejemplos de situaciones posibles de Mario, así como los

puntos a los que sería posible que Mario se moviese desde

dichas posiciones. [3]

-86-

Page 93: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

4. ALGORITMO DE BUSQUEDA: ÁRBOL

DE DECISIÓN

De entre los tipos considerados anteriormente, el algoritmo

empleado por nosotros entraría en la categoría de agentes

reactivos. Sin preocuparse de realizar una exploración

sobre el espacio de nodos a los que puede desplazarse,

nuestro agente simplemente determina una respuesta

concreta en base a las observaciones que recibe del espacio.

Se trata de un mecanismo simple y poco efectivo, a pesar de

lo que hemos conseguido superar con relativo éxito el nivel

cero de dificultad de la plataforma.

Para el desarrollo de éste hemos realizado un árbol de

decisiones, donde el agente comprobará una a una las

condiciones del árbol para saber en cada momento cual es

la mejor acción posible a tomar.

Este tipo de algoritmos se basan en el análisis secuencial de

los datos que ofrece la interfaz, para posteriormente decidir

cuál es la mejor solución posible en el entorno en el que se

encuentra el agente. Estas comprobaciones deben ser

tomadas por los programadores de dicho agente, pudiendo

ser erróneas si los programadores no identifican bien los

problemas que puede tener el agente. Además, esta misma

característica, hace que el agente sea muy dependiente del

ambiente que los programadores han empleado como

referencia. En concreto, en este caso, con el nivel de

dificultad: dado que entre niveles de dificultad se modifica

el tipo de enemigos que aparecen en el mapa y ciertas

características del mismo (presencia o ausencia de

precipicios, zonas “sin salida” en las que hay que

retroceder), nuestro agente –que fue codificado para

funcionar en el nivel 0- será incapaz de actuar

correctamente en ninguno de los niveles superiores, como

se verá en el apartado de estadísticas.

En el árbol de decisiones se tienen unas variables de salida

y otras de entrada. Las de entrada son las que ofrece en el

entorno para poder tomar las decisiones correctas en cada

momento y, las de salida son aquellas variables sobre las

que el agente puede tomar decisiones. Las decisiones que

tome el agente dependen de las comprobaciones que se

realicen dentro del árbol y de las variables de entrada que

se obtengan. En nuestro caso, las variables de entrada de

nuestro sistema son la posición de los enemigos cercanos a

Mario Bros y el escenario. Las variables de salida son:

saltar, ir hacia un lado u otro, correr y disparar para poder

matar enemigos.

Un ejemplo de árbol de decisiones es el siguiente [4]

:

5. DISEÑO DEL ALGORITMO

Una vez se han explicado los conceptos básicos sobre el

funcionamiento de un agente autónomo y concretamente las

diferencias entre agentes basados en búsqueda y agentes

reactivos, explicaremos el diseño de nuestro algoritmo.

Para ello hemos utilizado un árbol de decisiones binario

con cada una de las variables de salida en las que podíamos

actuar.

A continuación mostraremos los árboles de decisión de

cada una de las variables de salida que tenemos.

En primer lugar mostramos la toma de decisiones para

saltar o no saltar. La salida depende en este caso de

numerosos factores:

En primer lugar se comprueba si estamos en el

suelo, en caso de estar en el aire hemos optado por

mantener presionada siempre la tecla de saltar,

Figura 1: Ejemplos de nodos a explorar por

A* en función de la situación de Mario

Figura 2: Ejemplo de árbol de decisión

-87-

Page 94: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

obteniendo así potencia máxima en todos los

saltos.

A continuación, se examina la posible existencia

de un enemigo cercano que pueda causarnos un

daño.

Seguimos revisando si cerca de la posición actual

de nuestro agente hay una pared que bloquee el

camino de Mario Bross. En caso de que la haya se

procederá a saltar.

La última verificación consiste en ver si cerca de

Mario hay un precipicio. En caso de que lo haya se

saltará y en caso contrario no.

El siguiente árbol que definiremos será el de la decisión de

si debemos o no ir hacia la derecha del escenario. Al igual

que en el caso anterior se realizarán varias comprobaciones.

Este caso es bastante similar al caso de saltar o no saltar.

Con la salvedad del caso “habitual”, en el que no hay ni

enemigos ni hueco ni pared próximos, en el que se deberá

avanzar hacia la derecha pero no saltar, en el resto de casos

el salto va siempre acompañado de movimiento hacia la

derecha.

En primer lugar examinaremos la posible

existencia de un enemigo cercano.

En caso de que hubiera un monstruo cerca de

nuestro agente se comprobaría si puede saltar. En

caso de que pudiera hacerlo se activará esta acción

y no lo hará en el contrario.

En caso de que no hubiera ningún enemigo cerca

se procedería a revisar la posible existencia de un

hueco.

En caso de que hubiera un hueco cercano a Mario

se verificará si el agente esta en el suelo y es capaz

de saltar, en caso afirmativo se irá hacia la derecha

y no en el caso contrario.

El tercer árbol muestra la toma de decisiones sobre si ir o

no hacia la izquierda. El orden en el que se revisará las

condiciones es:

En primer lugar se comprobará si Mario Bross es

capaz de saltar. En caso afirmativo no será

necesario retroceder.

En el caso afirmativo anterior se comprobará la

existencia de un Hueco, o de un enemigo cercano.

En caso de que alguna de las dos preguntas sea

afirmativa el agente retrocederá para no sufrir

daño alguno.

El razonamiento detrás de esta forma de actuación es que

sólo utilizaremos el movimiento hacia la izquierda como

medida de precaución en los casos en los que no sea posible

saltar (porque justo acabemos de pisar el suelo) y exista un

peligro delante de nosotros. En caso de poder saltar o de no

existir ningún peligro, Mario no deberá retroceder ya que el

objetivo del algoritmo es llegar al final del nivel en el

menor tiempo posible. Existe otro caso en el que se utiliza

el movimiento hacia la izquierda que se expone en el

apartado 7.4.

Figura 3: Árbol de decisión para “saltar”

Figura 4: Árbol de decisión para “derecha”

Figura 5: Árbol de decisión para “izquierda”

-88-

Page 95: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Por último se muestra el árbol de decisiones sobre correr.

Este caso es muy sencillo, ya que solo correremos cuando

no haya enemigos cerca de la posición de Mario. Además

de evitar tener que considerar la excesiva velocidad de

Mario en los momentos en los que haya algún peligro

cercano, con esto también conseguimos que Mario dispare

continuamente cuando no se encuentra en peligro, con lo

que existe la posibilidad de que alguna de las bolas que

lanza impacte contra algún potencial futuro enemigo.

Como podemos ver en los grafos, la toma de decisiones

para cada una de las acciones en las que nuestro agente

puede actuar es totalmente independiente una de otra, lo

que permite a Mario ser mas versátil y adaptarse mejor a las

distintas situaciones que se pueda encontrar a lo largo de

los escenarios.

5.1 Mario en el suelo

Esta comprobación nos permite saber si Mario puede saltar

en este momento. Es muy importante ya que en función de

que pueda o no, el evitar enemigos es mas difícil si uno está

en el aire.

5.2 Enemigo cercano

Con el conocimiento de la posición de los enemigos

cercanos podemos determinar las acciones de nuestro

agente, en función de la distancia a la que se encuentren las

posibles amenazas en el mapa.

5.3 Pared cercana

Siendo una de las variables de entrada de nuestro agente el

escenario generado podemos hacer que nuestro agente

decida saltar cuando se encuentre una pared vertical,

infranqueable para Mario a no ser que este salte.

5.4 Hueco

Con esta ultima comprobación, nuestro agente es capaz de

predecir cuándo hay un hueco cerca de él y poder decidir

cuándo es mejor saltar.

6. ESTUDIO DE LAS VARIABLES

PROPORCIONADAS POR LA LIBRERÍA

Para la implementación del agente autónomo, previamente

expuesto, utilizaremos el código proporcionado por 2012

Mario AI Championship cuyas librerías nos servirán de

apoyo para realizar las comprobaciones necesarias.

6.1 Variables de entrada: El escenario.

Lo más importante de las librerías ofrecidas es el estudio

del escenario. Según las librerías ofrecidas por la web, la

clase Environment ofrece información sobre el escenario

actual. En concreto es la función

getLevelSceneObservationZ la que nos permite ver el

entorno cercano de nuestro agente, ofreciendo información

sobre las 9 casillas entorno a las que se encuentra,

generando esta función un array de 19x19. En este array de

bytes se guarda la información sobre todos los tipos de

superficies existentes en el escenario, desde los posibles

obstáculos en el escenario, pasando por las monedas e,

incluso, los bloques que se pueden destruir. Con esta

función únicamente nos ofrece la información sobre el

terreno, en caso de querer obtener la información sobre los

enemigos deberemos obtenerla a partir

getEnemiesObservationZ que devuelve lo mismo que la

función anterior, pero esta vez con los monstruos en vez de

con los obstáculos. Existe una tercera función que une

ambas informaciones que es getMergedObservationZZ.

Toda esta funcionalidad viene implementada por un agente

inteligente básico, por lo que, extendiendo de esta clase

tendremos toda esta información en unas variables, lo que

facilita la obtención de las variables de entrada,

permitiendo una más sencilla comprobación de estas a la

hora de tomar decisiones en nuestro árbol.

6.2 Variables de salida: Las acciones posibles.

Las variables de salida son: correr, ir hacia derecha o

izquierda, disparar y saltar. En las librerías proporcionadas

nos permiten realizar todas estas acciones, pero en el caso

de correr y disparar, esta acción es la misma, por lo que

será un poco más complicado decidir cuándo se debe de

correr y cuando disparar.

Las acciones que deseemos realizar vienen todas definidas

en un array de boolean, donde cada acción ocupa una

posición dentro de éste.

Además, para facilitar la depuración del código, cada una

de las posiciones del array tiene una macro asociada. Estas

macros son:

action[Environment.Mario.Key_RIGHT]

action[Environment.Mario.Key_LEFT]

Figura 6: Árbol de decisión para “correr”

-89-

Page 96: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

action[Environment.Mario.Key_JUMP]

action[Environment.Mario.Key_SPEED]

Existe una quinta variable de salida: agacharse, que solo es

útil cuando Mario no está en el estado “Small”. Sin

embargo, no la hemos considerado dentro del algoritmo

dado que la utilidad que proporciona es importante

únicamente cuando existen cañones u otro tipo de

adversarios que pueden ser esquivados de forma sencilla

mediante esta acción, y ese no era el caso en el nivel

considerado para el desarrollo del agente.

6.3 Variables de ayuda.

Además de las variables de entrada y de salida, previamente

comentadas, las librerías nos ofrecen otras variables que

nos permiten conocer el estado actual de Mario y su

entorno.

6.3.1 isMarioOnGround

Esta variable nos permite saber si Mario esta en el suelo. En

caso de que esto sea cierto, podremos saltar si lo deseamos.

6.3.2 marioEgoCol y marioEgoRow

Estas dos variables nos permiten saber cuál es la posición,

dentro de array de tanto en el de escenario, como en el de

enemigos. Estas variables no servirán para comprobar como

de lejos estamos de los enemigos y de los obstáculos que

nos impidan el paso.

6.3.3 marioFloatPos

Esta último variable nos permite saber en que posición total

del mapa estamos. Esto es útil para retroceder de un lugar

en el que consideramos que hay peligro, como cuando un

enemigo cae sobre ti tras un precipicio.

7. IMPLEMENTACION DEL ÁRBOL DE

DECISIONES.

Una vez ya sabemos cuáles son las variables de entrada,

salida y las que tenemos de ayuda, tenemos que decidir

cuáles son los umbrales a partir de los cuales nuestro agente

debe realizar según la situación actual del escenario.

7.1 Enemigos cercanos.

Para saber si tenemos un enemigo cerca de nuestro agente

tenemos que comprobar la variable enemies, que nos

proporciona la clase BasicMarioAIAgent. Para facilitar las

comprobaciones, cada vez que se llama al proceso

recorremos el array de enemies en busca de alguna posición

en la que el byte sea distinto de 0. En caso de que sea

distinto de 0, indica que en esa posición hay un enemigo y

procedemos a guardarlo en un vector. Realizamos esta

operación para que la comprobación de de posibles

monstruos en el escenario sea más simple de comprobar.

Un agente más complicado podría tomar en consideración

el tipo de enemigo, leyendo el valor concreto de enemies en

ese punto del array en lugar de comprobando si es o no

cero.

Una vez tenemos todos los enemigos en un vector,

procedemos a comprobar que en las proximidades de Mario

no hay ningún enemigo cerca. Las posiciones que se

comprueban son las que aparecen marcadas en el siguiente

dibujo de Mario. En este caso Mario empieza a saltar justo

en la siguiente comprobación de la acción que debe tomar.

Figura 7: Cuadrícula de Mario

Figura 8: Reacción de Mario ante un enemigo

próximo

-90-

Page 97: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

La función que nos permite conocer si hay algún enemigo

cerca de nuestro agente es la siguiente:

private boolean enemigoEn(int Row, int

Col,boolean abajo) {

int variabledefinida = 0;

//Comprobamos para todos los enemigos que hay

guardados //en el vector previamente comentado

while

(variabledefinida<enemigos1.size()){

//Comprobamos que no esté en la misma casilla

que mario

if

(enemigos1.elementAt(variabledefinida)==Row

&&

enemigos2.elementAt(variabledefinida)==Col) {

return true;

}

//Comprobamos que no esté en la casilla inferior a

mario

if

(enemigos1.elementAt(variabledefinida)==Row+1

&&

enemigos2.elementAt(variabledefinida)==Col) {

return true;

}

//Comprobamos que no esté dos casillas por

debajo de mario

if

(enemigos1.elementAt(variabledefinida) ==

Row+2 &&

enemigos2.elementAt(variabledefinida)==Col) {

return true;

}

//Comprobamos que no esté una casilla por encima

de mario

if

(enemigos1.elementAt(variabledefinida)==Row-1

&&

enemigos2.elementAt(variabledefinida)==Col) {

return true;

}

variabledefinida++;

}

return false;

}

Para comprobar cada columna lo que hacemos es invocar

este método dentro de un bucle for, lo que nos permite ver

si en alguna de las posiciones, que en la imagen anterior

están tachadas hay algún enemigo.

7.2 Pared cercana

Para verificar esta condición se comprobará que la siguiente

casilla a la que ocupa Mario. También hay que tener

cuidado ya que en algunos casos al ser Mario grande no

puede pasar al ser mas grande, es por ello que hay que

comprobar esa situación, evitando que Mario se quede

atascado en esta posición.

En este caso vemos como Mario se encuentra un bloque

enfrente de él y, tras comprobar la situación de los

elementos del escenario decide saltar. En la primera imagen

Figura 9: Mario detecta pared

Figura 10: Reacción de Mario ante una pared

-91-

Page 98: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

se incluyen las posiciones que se comprueban para que

nuestro agente no se quede estancado en ese bloque.

El código para comprobar este obstáculo es el siguiente:

if ((levelScene[marioEgoRow][i]!=0) || (marioMode>0 &&

levelScene[marioEgoRow-1][i]!=0))

action[Environment.MARIO_KEY_JUMP] = true;

Esta comprobación se realiza dentro del árbol de decisión

de si se salta o no. Como podemos ver se compraba la

posición siguiente y, en caso de que Mario sea más grande,

se comprueba la casilla superior también.

7.3 Comprobar Hueco

Por último, se comprueba que en las posiciones siguientes a

Mario no haya un desfiladero. Para ello comprobamos la

ultima fila a la que tenemos acceso comprobando que esta

sea distinta de 0. En caso de que esta fuera igual a 0.

Como podemos ver en estas dos imágenes, nuestro agente

salta cuando ve que se acerca a un precipicio.

Esta comprobación se realiza dentro del árbol de decisión

que decide si debe saltar o no.

7.4 Consideraciones menores

Además de todas las consideraciones anteriores, que

constituyen los principales elementos del árbol de decisión,

se han incluido dentro del código una serie de cuestiones

menores, destinadas a evitar ciertos casos particulares que

se daban con cierta frecuencia para el agente desarrollado.

Entre estos elementos destinados a evitar fallos menores

destacan el hecho de que Mario deje de moverse a la

derecha y se mueva en su lugar a la izquierda cuando

detecta un objetivo justo delante suyo en medio de un salto,

con el objetivo de evitar que Mario cayese tan a menudo

justo delante de un enemigo, punto en el que le era

imposible saltar por acabar de tocar el suelo y quedaba

inevitablemente a merced de su adversario. Esta sección de

código demostró experimentalmente ser eficaz en evitar el

problema anterior, aunque no en el 100% de los casos. Al

incluir esta condición, se daba el hecho de que Mario

quedaba bloqueado cuando ante él se encontraba un

enemigo atrapado entre dos bloques justo antes y justo

después suyo, con lo que saltaba hacia la derecha y nada

más saltar volvía a la izquierda. Se decidió solucionar este

otro problema de la misma manera, incluyendo el caso

particular de que cuando Mario detecta un adversario entre

dos bloques consecutivos anula el efecto anterior de

movimiento hacia la izquierda.

8. ESTADÍSTICAS OBTENIDAS

Con el fin de estudiar la adecuación de nuestro agente al

problema desarrollado, se ha modificado el método main de

la plataforma para recoger las estadísticas de número de

pantallas superadas para cada nivel, de entre las que el

sistema proporciona generadas de forma aleatoria a partir

de una semilla definida por el usuario. Los resultados se

incluyen en la tabla a continuación.

Nivel Ganados Tiempo medio en ganados (de 200 s)

0 67.4% 46s

1 0% -

Figura 11: Mario detecta un hueco

Figura 12: Reacción de Mario ante un hueco

Figura 13: Estadísticas

-92-

Page 99: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

9. REFERENCIAS[1] Sergey Karakovskiy and Julian TogeliusDing 2012.

The Mario AI Benchmark and Competitions

[2] http://es.wikipedia.org/wiki/Juego_de_plataforma

[3] Julian Togelius, Sergey Karakovskiy and Robin

Baumgarten 2009. The 2009 Mario AI Competition

[4] https://www.edx.org/static/content-berkeley-

cs188x~2012_Fall/handouts/global/slides/FA12%20cs

188%20lecture%202%20and%203%20--

%20search%20(2PP).a7a79f0c498b.pdf

-93-

Page 100: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Inteligencia artificial aplicada a personas con

discapacidad

Alejandro E. Reyes Bascuñana Universidad Carlos III de Madrid

Leganés, Madrid, España

[email protected]

Javier Santofimia Ruiz Universidad Carlos III de Madrid

Leganés, Madrid, España

[email protected]

RESUMEN

En este documento se intentara dar un vistazo general a las

distintas formas en las que la Inteligencia Artificial puede ayudar a

la integración, facilidad de acceso a la información y en general a la

mejora de la calidad de vida de personas que sufren una

discapacidad física o psíquica.

Palabras Clave

Deficiencia, discapacidad, minusvalía, ASIBOT, RAH, OCR,

acceso, alternativo, aumentativo, movilidad, ambiental, virtual,

BCI, P300.

1. INTRODUCCIÓN

Estudios recientes de la OMS (Organización Mundial de la Salud)

relatan que en la actualidad un 15% de la población mundial tiene

alguna discapacidad física, psíquica o sensorial que dificulta de una

manera u otra su integración en el mundo actual.

La inteligencia artificial, y en general las nuevas tecnologías, cada

vez avanzan más y proponen nuevas soluciones para realizar más

fácil la integración de estas personas.

Se pueden clasificar en cinco grupos las distintas tecnologías

empleadas como ayuda a personas discapacitadas:

1. Sistemas Alternativos y Aumentativos de Acceso a la

Información:

Se trata de sistemas de ayuda para personas con

problemas de visibilidad y/o auditiva, que proporcionan

otra vía para hacer llegar información a una persona

discapacitada. Cabe destacar los siguientes sistemas

actuales:

Tecnologías del habla.

Sistemas multimedia interactivos.

Comunicaciones Avanzadas.

Rehabilitación cognitiva.

2. Sistemas de acceso:

Interfaces adaptativos que ayudan a las personas con

discapacidad física o sensorial a poder usar un

ordenador. Podemos mencionar los siguientes sistemas:

Telelupas: sistemas de magnificación de imágenes

basados en circuitos cerrados de TV que posibilitan

la lectura a personas con disminución visual.

Sintetizador Braille: ordenador personal para

invidentes con sintetizador de voz ó voz digitalizada

que permite invidente escribir información

simulando a una máquina Perkins y verificar luego

la misma.

Reconocimiento óptico de caracteres (OCR):

permite al usuario reproducir información desde un

ordenador con la ayuda de un scanner que lee y

reconoce texto, para después sintetizarlo en voz o

braille.

Teclado de conceptos: Ideado para personas con

discapacidad motriz. Consiste en una cuadrícula en

blanco que se puede agrupar de acuerdo a varios

conceptos temáticos asignados por los terapeutas.

Sobreteclados: de muchos tipos, adaptados a la

necesidad del usuario.

Ratones: tipo palancas, pedal, esférico, touch, etc...

Pizarras Electrónicas Copiadoras: facilitan que

personas sordas e hipoacúsicas, o aquellas con

dificultades motrices puedan obtener copias de

clases presenciales sin perder la observación y

atención de las mismas.

Pantallas táctiles: para personas con dificultades

motrices puedan mover cursores con el tacto.

Interruptores: según la necesidad de cada usuario:

Los hay bucales, infrarrojos, fotoeléctricos, etc…

Navegadores: para facilitar la navegación por la red.

3. Sistemas Alternativos y Aumentativos de Comunicación:

Tienen por objeto sustituir o aumentar el habla de

personas con dificultades de comunicación verbal y/o

auditiva. Se clasifican en 2 tipos de sistemas:

Sistemas con ayuda: requieren del empleo de algún

instrumento para comunicarse, aparte del propio

cuerpo del usuario. Ejemplos: escritura,

pictogramas, tableros de comunicación,

ordenadores, etc.

-94-

Page 101: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Sistemas sin ayuda: comprenden formas de

comunicación producidas por la persona que se

tiene que comunicar. Ejemplos: lengua de señas,

palabra complementada, otros gestos como la

indicación, etc.

4. Sistemas de Movilidad:

Relacionados a la movilidad personal y a las barreras

arquitectónicas. Ejemplos: brazos o soportes articulados,

emuladores de mouse, varillas, micro-robots, etc. que se

combinan con sistemas alternativos y aumentativos de

comunicación.

5. Sistemas de control de entornos:

Permiten la manipulación de dispositivos que ayudan a

controlar un entorno. Hay 2 tipos de sistemas:

Inteligencia Ambiental: Permiten a personas con

discapacidad motora poder controlar dispositivos de

uso doméstico. Ejemplo: domótica en casas

inteligentes.

Sistemas de Realidad Virtual: Desarrollo de una

Tecnología Adaptativa mediante nuevos

dispositivos de entrada y salida avanzados.

Ejemplos: guantes sensitivos, dispositivos de

seguimiento de movimientos oculares,

posicionadores 3D, etc. Estos sistemas traen

muchas posibilidades futuras en el diseño de

sistemas de asistencia a personas con discapacidad.

En las páginas siguientes intentaremos ahondar en un sistema de

inteligencia artificial de cada uno de los 5 grupos presentados.

2. SISTEMAS ALTERNATIVOS Y

AUMENTATIVOS DE ACCESO A LA

INFORMACIÓN: Reconocimiento Automático

del Habla

2.1 Introducción

El Reconocimiento Automático del Habla (RAH) o

Reconocimiento Automático de Voz es una parte de la Inteligencia

Artificial que tiene como objetivo permitir la comunicación hablada

entre seres humanos y computadoras electrónicas.

Un sistema de reconocimiento de voz es una herramienta

computacional capaz de procesar la señal de voz emitida por el ser

humano y reconocer la información contenida en ésta,

convirtiéndola en texto o emitiendo órdenes que actúan sobre un

proceso. En su desarrollo intervienen diversas disciplinas, tales

como: la fisiología, la acústica, el procesamiento de señales, la

inteligencia artificial y la ciencia de la computación.

Estos sistemas pueden ser útiles para personas con discapacidades

que les impidan teclear con fluidez, así como para personas con

problemas auditivos, que pueden usarlos para obtener texto escrito

a partir de habla. Esto permitiría, por ejemplo, que los aquejados

de sordera pudieran recibir llamadas telefónicas.

2.2 Historia de los sistemas RAH

Los primeros intentos por construir máquinas que realizaran tareas

de reconocimiento del habla se remontan a la década de los 50,

cuando diversos investigadores trataban de explotar los principios

fundamentales de la fonética acústica. En 1952, los laboratorios

Bell, crearon un sistema electrónico que permitía identificar para

un solo hablante, pronunciaciones de los 10 dígitos realizadas de

forma aislada. El fundamento de esta máquina se basaba en

medidas de las resonancias espectrales del tracto vocal para cada

dígito.

En los años 60 se comenzó a experimentar con normalización

temporal según la detección de los puntos de comienzo y fin de las

palabras.

Los años 70 representan un periodo muy activo para esta

disciplina, avanzando de forma significativa las investigaciones en

el reconocimiento de palabras aisladas. También comienzan los

primeros intentos de reconocimiento de habla continua y la

experimentación en reconocimiento independiente del locutor.

En los años 80 se produce un giro metodológico como

consecuencia de pasar de métodos basados en comparación de

plantillas a los métodos basados en modelado estadístico. Se

empezaron a emplear los modelos ocultos de Markov (HMM),

obteniendo excelentes resultados en el modelado de voz. A partir

de entonces se han desarrollado numerosas mejoras y actualmente

constituyen los mejores modelos disponibles para capturar y

modelar la variabilidad presente en el habla.

La década de los 90 supone en cierta manera la continuidad en los

objetivos ya propuestos, ampliando eso sí, el tamaño de los

vocabularios a la vez que se diversifican los campos de aplicación.

2.3 Clasificación y características de los

sistemas RAH

Podemos clasificar los sistemas RAH según el tipo de aprendizaje

que usen:

Aprendizaje deductivo: se basa en la transferencia de

conocimientos que un experto humano posee, a un

sistema informático. Un ejemplo lo constituyen los

Sistemas Basados en el Conocimiento, en particular, los

Sistemas Expertos.

Aprendizaje inductivo: se basa en que el sistema pueda,

automáticamente, conseguir los conocimientos necesarios

a partir de ejemplos reales sobre la tarea que se desea

modelizar. Un ejemplo lo constituyen aquellas partes de

los sistemas basados en los modelos ocultos de Markov o

en las redes neuronales artificiales que son configuradas

automáticamente a partir de muestras de aprendizaje.

Aparte de esta clasificación inicial, los sistemas de reconocimiento

de voz tienen distintas características, dependiendo de la aplicación

para la que se vayan a emplear:

Entrenabilidad: determina si el sistema necesita un

entrenamiento previo antes de empezar a usarse.

-95-

Page 102: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Dependencia del hablante: determina si el sistema debe

entrenarse para cada usuario o es independiente del

hablante.

Continuidad: determina si el sistema es capaz de

reconocer habla continua o si el usuario debe hacer

pausas entre palabra y palabra.

Robustez: determina si el sistema está diseñado para

usarse con señales poco ruidosas, ya sea ruido de fondo,

ruido procedente del canal o la presencia de voces de

otras personas.

Tamaño del dominio: determina la cantidad de palabras

que el sistema es capaz de reconocer.

3. SISTEMAS DE ACCESO. Reconocimiento

óptico de caracteres.

3.1 Introducción.

El reconocimiento óptico de caracteres (OCR) es un proceso que

permite digitalizar texto a partir de imágenes, reconociendo los

símbolos del alfabeto correspondiente para poder tratar los datos

digitalizados de la manera que se precise.

Este sistema ha sido un gran avance para aquellas personas

invidentes, o concierto grado de discapacidad visual, puesto que les

ha facilitado su integración en la sociedad actual, consiguiendo

acceder a la palabra escrita por medio de este tipo de sistemas,

integrados en conjunto con sintetizadores Braille ó sintetizadores

de voz, por ejemplo, que permitan la reproducción del texto

reconocido.

Para llevar a cabo este sistema, han de usarse un conjunto de

técnicas basadas en estadística, en las formas de caracteres,

transformadas y en comparaciones, que complementándose entre

sí, se emplean para distinguir de manera automática los distintos

caracteres. Lo que se consigue no es reconocer un carácter, sino

distinguir entre patrones que se asemejen lo máximo posible a

ellos, por lo que no se puede asegurar que no se puedan cometer

errores en el proceso.

Los sistemas OCR se caracterizan por tener cuatro etapas

significativas:

Adecuación de imagen ó etapa de pre-procesamiento.

Selección de la zona de interés ó etapa de segmentación.

Representación digital de la imagen ó etapa de extracción

de características.

Difusión del carácter contenido en la imagen ó etapa de

reconocimiento.

El paso más difícil es el de la etapa de extracción de características,

por lo que elegir unas características idóneas puede ser

determinante. Además hay que tener en cuenta el gasto

computacional que acarren dichas características.

Los sistemas de reconocimiento de caracteres se pueden basar en

tres técnicas:

3.2 Etapas de sistemas OCR.

Como ya explicamos antes, los sistemas OCR se basan en cuatro

etapas:

Etapa de preprocesamiento: En esta etapa se pretende

eliminar cualquier tipo de ruido o imperfección que pueda

haber en la imagen, que no pertenezca al carácter analizado,

además de normalizar el tamaño de carácter.

Para eliminar el ruido se pueden usar distintos algoritmos:

o Etiquetado.

o Erosión.

o Fijar umbral del histograma.

Etapa de segmentación: Tras el preproceso, es necesario

fragmentar la imagen para reconocer los caracteres. Es el

proceso más costoso de todos. Implica la detección mediante

procedimientos de etiquetado determinista o estocástico de los

contornos o regiones de la imagen, basándose en la intensidad

o información espacial.

La fragmentación permite la descomposición de un texto en

distintas entidades lógicas para su reconocimiento. Han de ser

suficientemente invariables para poder identificarse.

Etapa de extracción de características: Acabada la anterior

etapa, ahora tenemos información tratada susceptible de ser

clasificada.

La extracción de características es una de las etapas más

difíciles de los sistemas de reconocimientos de caracteres.

Para considerar una característica como buena, debe ser:

o Diferente de otra característica.

o Igual valor para mismas clases

o Características incorreladas entre ellas.

o Pequeño espacio para características.

Algunos de los métodos empleados para extracción de

características basados en transformaciones del espacio de

representación de muestras son:

o Principal Component Analysis (PCA).

o Linear Discrimination Analysis (LDA).

o Independent Component Analysis (ICA).

o Non-linear Discriminant Analysis (NDA).

Etapa de reconocimiento: Tras haber obtenido las

características importantes de la imagen a analizar, debemos

determinar el carácter correspondiente por medio de técnicas

de minería de datos:

o OCR basado en el algoritmo KNN: (K vecinos más

próximos) método muy popular por su sencillez y

sus propiedad estadísticas que proporcionan buen

comportamiento para afrontar problemas de

clasificación.

-96-

Page 103: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Dado un conjunto de objetos prototipo de los que ya

se conoce su clase, y dado un nuevo objeto cuya

clase no conocemos, buscamos entre el conjunto de

prototipos los “k” más parecidos al nuevo objeto. A

este se le asigna la clase más numerosa entre los “k”

objetos prototipo seleccionados.

Para poder trabajar con KNN, necesitamos una

base de datos de imágenes de los tipos de caracteres

(procesados y sin ningún tipo de ruido) que

posteriormente se desean reconocer. Esta es la

llamada fase de entrenamiento. Tras ello, ya

podemos usar el algoritmo para reconocer

caracteres. Es la fase de test.

o OCR basado en árboles binarios: En esta técnica

el aprendizaje es inductivo. Los patrones a evaluar

de un carácter constituyen los nodos del árbol. Los

resultados finales se almacenan en las hojas del

mismo. Este tipo de estructura favorece la velocidad

del cálculo.

El orden de evaluación de los parámetros es muy

importante para realizar el ajuste óptimo del árbol.

La forma de recorrerlo consiste en que si se llega a

una hoja, esa serie de patrones recorridos

corresponden a cierto carácter conocido. De no

llegar a ninguna hoja, se crea una nueva hoja en el

árbol para guardar el nuevo resultado final.

o OCR basado en redes neuronales: Minerías de

datos que emulan la arquitectura del cerebro.

Formadas por neuronas (unidad básica), que reciben

una entrada, la multiplican por unos pesos y

presentan una salida con una función de ajuste,

dependiente de la salida de la etapa anterior.

Son muy útiles para representar y ajustar de forma

óptima difíciles funciones algebraicas, con lo que

usarlo para el reconocimiento de caracteres es una

buena alternativa.

Se pueden utilizar diferentes topologías:

Feed Forward: Sin bucles. Entradas

conectadas con salida de etapa anterior.

Feed Back: Con bucles.

Lateral: Adicionalmente, se permite

comunicación vertical entre neuronas de

la misma etapa.

También podemos clasificar una red neuronal según origen de

datos y el aprendizaje que realizan. OCR es un lenguaje

supervisado. Puede tratarse de datos continuos, normalmente

basados en el perceptron o binarios normalmente basados en redes

de Hamming.

4. SISTEMAS ALTERNATIVOS Y

AUMENTATIVOS DE COMUNICACIÓN:

Interfaces Ordenador Cerebro (BCI)

4.1 Introducción

Las BCIs (Brain Computer Interfaces) están dirigidas a crear una

comunicación directa entre el cerebro y un dispositivo externo. En

los últimos años, las investigaciones en este campo han crecido de

una manera espectacular, y hoy en día se considera una de las

aplicaciones con más éxito de las neurociencias.

Estos sistemas pueden proporcionar un aumento de la calidad de

vida de pacientes que sufran patologías que les impidan

comunicarse tanto de forma verbal como escrita, por ejemplo

pacientes que sufran esclerosis lateral, infarto cerebral, etc…

Podemos clasificar estos sistemas en dos tipos, según como

acceden a las respuestas cerebrales:

BCIs invasivos: Un array de micro-electrodos se

implanta en el cerebro del paciente (principalmente en la

zona motora o premotora o en la corteza parietal).

BCIs no invasivos: Principalmente

electroencefalogramas (EEGs) tomados en el cuero

cabelludo. Hay tres tipos principales de BCIs basados en

electroencefalogramas:

o SSVEP (State Visually Evoked Potential):

Cuando un sujeto se centra en un estimulo

visual que parpadee a una cierta frecuencia f,

esta frecuencia y sus armónicos aparecen en la

transformada de Fourier del EEG.

Mostrándole al usuario varios estímulos con

distintas frecuencias de parpadeo, y asociando

cada una a una acción predefinida, los

usuarios son capaces de conducir un coche en

la pantalla del ordenador o marcar un número

de teléfono.

o El segundo tipo de BCIs basados en

electroencefalogramas se basan en detectar

tareas mentales (imaginar movimientos de

manos a izquierda/derecha, asociaciones de

palabras, etc) que se detectan mediante SCP

(Slow Cortical Potentials), RP (Readiness

Potential) o ERD (Event-Related

Desynchronization).

o ERP (Event Related Potential): es una

respuesta electro-fisiológica estereotipada a

un estimulo interno o externo. Una de los

ERPs más conocidos y estudiados es el ERP

P300. Este aparece cuando un sujeto intenta

clasificar dos tipos de eventos, presentándose

uno de ellos de manera infrecuente. El evento

infrecuente provocara en el EGG del sujeto un

ERP con una componente positiva de duración

aproximada de 300ms.

-97-

Page 104: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Figura 1. Respuesta en EGG del ERP P300

4.2 P300 Mind-Speller de IMEC

Mind Speller es un dispositivo basado en EEG que interpreta las

ondas cerebrales para deletrear palabras y frases en fase de

desarrollo por investigadores de IMEC (Interuniversity

Microelectronics Centre). Se basa en detectar e interpretar ERP

P300 en el electroencefalograma de una persona que está

seleccionando caracteres de una pantalla en la que se presentan

columnas y filas de caracteres alternando. Cuando se ilumina una

columna o una fila en la que se encuentra el carácter que se quiere

seleccionar, se provocara un ERP P300, detectando este ERP el

BCI es capaz de indicar cuál es el carácter que el usuario tiene en

mente.

Figura 2. Interfaz de usuario para el Mind-Speller P300

Para detectar el ERP en el electroencefalograma, normalmente no

es suficiente con un solo intento y es necesario realizar una media

de varios intentos. Esto es debido a que la señal obtenida con el

EEG es la superposición de todas las actividades cerebrales que se

están llevando a cabo. Se añadirán a la media los eventos que se

detecten en momentos de tiempo en los que haya pasado cierto

evento y se sacarán de ella los que ocurran fuera de tiempo ya que

serán debidos a otro estimulo que no nos interesa. Es decir, cuanto

más fuerte sean las señales ERP, menos intentos se necesitarán

para detectar el carácter, y viceversa.

Figura 3. Media de acierto de clasificación en function del

numero de intensificaciones para todos los clasificadores

considerados.

En uno de los últimos estudios realizados por el grupo de trabajo

del Mind Speller P300 de IMEC [13], se compara el rendimiento

de 7 clasificadores distintos:

LDA (Fisher’s Linear Discriminant Analysis)

SWLDA(Stepwise Linear Discriminant Analysis)

BLDA (Bayesian Linear Discriminant Analysis)

SVM (Linear Support Vector Machine)

nSVM (Nonlinear Support Vector Machine)

FE (Method Based on Feature Extraction)

NN (Artificial Neural Network)

Las conclusiones del estudio, probado en pacientes de ELA

(Esclerosis Lateral Amiotrófica), indican que, en general, los

clasificadores no lineales se comportan igual o peor que los

lineales. Esto puede ser debido a la tendencia de los clasificadores

no lineales de sobreajustar los datos de entrenamiento, guiando a

una menor generalización. Por tanto se recomienda emplear

clasificadores lineales, ya que resultando en mejores o iguales

resultados, minimizan el tiempo de entrenamiento.

5. SISTEMAS DE MOVILIDAD:

5.1 Introducción

Uno de los problemas más graves a los que se enfrentan las

personas con lesiones en la medula, enfermedades degenerativas,

etc, es el de poder moverse de forma autónoma.

Para solventar este problema, o al menos, suavizarlo, el elemento

más empleado en la actualidad es la silla de ruedas. Pero hoy en

-98-

Page 105: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

día, el concepto de silla de ruedas es muy amplio, desde la clásica

silla de ruedas mecánica, la cual carece totalmente de ningún tipo

de alta tecnología, pasando por la silla eléctrica y llegando a sillas

más complejas, que hacen uso de varias formas de inteligencia.

A continuación analizaremos un proyecto llevados a cabo por

investigadores de Massachusetts Institute of Technology (MIT), en

el cual están desarrollando una silla de ruedas inteligente.

Figura 4. Silla de ruedas inteligente desarrollada por

investigadores del MIT

Esta silla, además de funcionar a través de comandos de voz, es

capaz de aprender la estructura de cualquier edificio, mobiliario

incluido, y llevar a su ocupante a través de él siguiendo comandos

de voz, trazando su propio camino. A diferencia de otros robots

similares, que basaban su funcionamiento en la memorización

visual de un plano o mapa, el sistema desarrollado por el MIT

aprende, según sus creadores, de una forma similar a como lo haría

un ser humano. Basta con realizar una visita guiada por el espacio

por el que se quiere que la silla se mueva y ella memorizará los

caminos a seguir.

5.2 Funcionamiento general

Dado que este robot es un sistema muy complejo, nos centraremos

en la parte de su inteligencia que se encarga de aprender,

memorizar e interpretar las rutas y localizaciones de los elementos

que se le quieran enseñar.

El robot aprenderá del entorno empleando supervisión humana. El

humano dirigirá un camino guiado, describiendo sitios destacados y

objetos verbalmente, mientras el robot le seguirá. El robot irá

adquiriendo representaciones del entorno tanto métricas como

topológicas, y lo relacionará todo con etiquetas semánticas.

La estructura del robot es la siguiente:

Base del robot: Esta compuesta por un sensor láser y

odometría (estimación de la posición de vehículos con

ruedas). Este bloque conduce al robot a una cierta

velocidad rotacional y traslacional.

Seguimiento de ruta:

o Rastreo de personas: Localiza al guía usando

un sensor láser.

o Seguimiento de personas: Controla al robot

para que se mueva siguiendo un guía.

Interpretación de ruta:

o SLAM (Simultaneous Localization And

Mapping): Construye mapas en tiempo real

durante el tour guiado.

o Gestor de conversaciones: Reconoce

expresiones del usuario y extrae etiquetas

semánticas.

o División del mapa: Particiona el mapa

obtenido, incorporando etiquetas semánticas a

cada parte.

5.3 Seguimiento de personas

Para comenzar el tour, el guía indicara verbalmente al robot que

están enfrente de él, el robot seleccionara a esa persona como guía

e indicara que está en modo seguimiento. El guía podrá iniciar y

pausar el tour indicándolo verbalmente.

Una vez iniciado el tour, el robot se moverá de forma que no invada

las zonas espaciales del guía o de los elementos del entorno,

diferenciando 3 zonas según la distancia a la que se encuentre del

guía:

Zona íntima (<0.45m del guía): El robot no realizará

ningún movimiento.

Zona personal (entre 0.45m y 1.2m del guía): El robot

rotará en el lugar o se moverá, dependiendo del contexto.

Zona de seguimiento (>1.2m del guía): El robot seguirá a

la persona.

Para poder calcular la velocidad de rotación y traslación, el

algoritmo primero obtendrá los obstáculos del entorno empleando

los LIDAR (Light Detection and Ranging). Después seleccionara el

camino objetivo en la que avanzar basándose en el espacio libre

entre cada una de los caminos posibles y la meta. Por último

calculará la velocidad necesaria para moverse por el camino

elegido. El proceso a seguir es el siguiente:

-99-

Page 106: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

1) Obtención de obstáculos: El algoritmo extraerá la

localización de los obstáculos, registrando y

discretizando el campo de vista del láser.

2) Selección de camino: El sistema elegirá un camino

basándose en el entorno y la localización del guía.

3) Velocidad rotacional: Se calcula mediante la diferencia

entre la dirección del robot y la dirección del camino.

Esta velocidad se calcula de forma que se eviten

rotaciones excesivamente rápidas, o para evitar que el

robot realice grandes arcos, por ejemplo cuando el guía

cruce una esquina.

4) Velocidad traslacional: La velocidad de translación se

calculará teniendo en cuenta la distancia al guía y la

distancia con los obstáculos, reduciéndose esta cuando

haya obstáculos cerca, y aumentando cuando el guía se

aleje.

5.4 Interpretación de ruta

El objetivo del subsistema de interpretación de ruta es adquirir

representación métrica, topológica y semántica del entorno

atravesado durante el tour. El algoritmo utilizado para realizar el

mapa en tiempo real (SLAM) será iSAM[1].

El resultado es un conjunto de mapas métricos, uno por cada planta

visitada. La representación topológica es un conjunto de nodos,

cada uno correspondiente a cada región espacial con espacio libre.

La información semántica, tales como nombres de las zonas o

salas, esta adjunta a cada uno de los nodos de la representación

topológica del mapa.

El mecanismo de gestión de diálogos extrae etiquetas semánticas

de las declaraciones del guía. Usa el reconocedor de habla

SUMMIT[2]. Cada declaración es analizada para determinar su

información útil de la siguiente forma:

<loc tagging> = <perspective> <prop> <place>

Perspectiva de la declaración (perspective): Una

localización puede ser etiquetada desde la perspectiva del

guía (“I am now in the loungue”) o desde la perspectiva

del robot (“You are now near the restroom”). La

localización métrica se obtendrá desde la posición del

guía o el robot dependiendo de la perspectiva.

Posición relativa del evento de etiquetado (prop): Una

localización puede ser etiquetada dentro del propio

espacio o cerca de él. Los espacios que se etiquetan

empleando “in” o “at” se consideran que están dentro del

espacio, y son incorporados en el proceso de

segmentación. Los espacios etiquetados usando “near”

no afectan a la segmentación.

Lugar/nombre del objeto (place): La etiqueta semántica

adquirida del evento de etiquetado.

6. SISTEMAS DE CONTROL DE

ENTORNOS. Inteligencia Ambiental.

6.1 Introducción.

Actualmente, la inteligencia ambiental es un área en fase

inicial y son pocas las aplicaciones reales implantadas las que

podemos encontrar.

La inteligencia ambiental implica diseñar tecnología de tal forma

que éstas tengan en cuenta la presencia de la persona y la situación

en la que se encuentra, adaptándose y respondiendo a sus

necesidades, costumbres y emociones. Cada vez trabajan más

empresas y universidades en este tipo de sistemas.

De estos sistemas podemos destacar tres características:

Ubicuidad: permite acompañar al usuario donde vaya.

Invisibilidad: pasar desapercibido en la vida diaria.

Inteligencia: capacidad de adaptación a las personas.

Estas investigaciones involucran a expertos de diversas áreas de

conocimiento como psicología cognitiva, ergonomía, ingeniería de

software, filología, inteligencia artificial y otras.

En resumen, la inteligencia ambiental es una tecnología de

tecnologías al servicio de la sociedad para hacernos la vida más

sencilla.

6.2 Historia de la Inteligencia Ambiental.

A principios de los 80 del pasado siglo, Mark Weiser,

investigador en el Xerox Parc Lab de California, elaboró el primer

escenario de cientos de pequeños ordenadores interconectado que

pasaban inadvertidos, como insignias, tarjetas y pizarras

electrónicas. Weiser decía “estos ordenadores ubicuos deberán

saber en qué habitación se encontraban para adaptarse al entorno e

identificarán a su usuario por medio de un sistema de

radiobúsqueda internacional”.

En 1998 Simon Birrell (director de Silicon Artists), Eli

Zelkha (vicepresidente de Compaq), y Stefano Marzano (CEO de

Philips Design tiempo después), junto a otros expertos, definieron

la visión en que estos ordenadores ubicuos interconectados

aprenderían de sus usuarios y de verdad mejorarían la vida de la

gente. El ser humano no tendría que adaptarse a las máquinas, sino

que la tecnología se adaptaría a él. “La inteligencia penetrará en el

entorno como una presencia ambiental, en el que nuestras

necesidades se verán satisfechas del mismo modo en que la sangre

circula en nuestro cuerpo: sin mediar una orden consciente”, decían

estos pioneros.

La inteligencia Ambiental ha sido denominada por la Comisión

Europea como el principal escenario de futuro para el siglo XXI.

6.3 Actividades de la Inteligencia Ambiental.

Las principales actividades a llevar a cabo son las del hogar,

educación, trabajo ó salud. Estos sistemas se pueden crear bajo

entornos inteligentes, en los que se puede:

Capturar experiencias diarias.

-100-

Page 107: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

Acceder a la información.

Soportar comunicación y colaboración.

Desarrollar entornos sensibles al contexto.

Proporcionar nuevas formas de interacción hombre-

máquina.

Ejercer de guía automática.

Facilitar el aprendizaje y entrenamiento.

Las personas con discapacidad y la población de la tercera edad

son los núcleos de la sociedad que más verán mejorar su calidad de

vida con estos sistemas. Nos acercamos cada vez más a la sociedad

del bienestar.

El objetivo final de la inteligencia ambiental es facilitar y mejorar

la vida de las personas recogiendo ingentes cantidades de

información, analizándolas y proveyendo un entorno exclusivo

personalizado mejor adecuado a sus ocupantes.

6.4 Ejemplo: ASIBOT.

ASIBOT (“Desarrollo y experimentación de un robot personal

portátil de ayuda a personas discapacitadas y mayores en

actividades en la vida diaria”) ha sido desarrollado por la entidad

coordinadora RoboticsLab, del Departamento de Ingeniería de

Sistemas y Automática de la Universidad Carlos III de Madrid

junto con la Fundación Hospital nacional de Parapléjicos de Toledo

para la Investigación y la Integración (FUHNPAIN).

Se trata de un robot portátil, que proporciona al usuario

“capacidades aumentadas” gracias a uso del sistema sensorial

(cubre deficiencias perceptivas), y al sistema locomotor (cubre

deficiencia motoras), y que se desplaza donde el usuario vaya. Se

trata del primer robot de asistencia portátil.

Figura 5. ASIBOT integrado en una silla de ruedas.

El conjunto de robot y dispositivo móvil (denominados “núcleo

asistencial portátil”) se encuentran en la silla de ruedas. Cualquier

dispositivo móvil sirve para la ejecución de distintas tareas

secuenciales. Las tareas a realizar son transparentes a cada usuario,

según como se programe.

Los puntos desarrollados en ASIBOT para considerarlo como

portátil y un robot de movilidad extendida son:

Sistema locomotor-manipulador: robot escalador

manipulador, manejable por una persona.

Interfase con el usuario: Dispositivo móvil.

Procesamiento distribuido: entre CPU + Móvil + robot.

Sistema de comunicaciones: WIFI, Bluetooth, etc.

Sistema sensorial: mínima sensorización a bordo.

La planificación de tareas de alto nivel son las que decide dar el

usuario al robot según sus necesidades. Este tipo de

funcionamiento satisface la “domótica proactiva”, que quiere decir

que el robot tiene la capacidad de integrarse al entorno que

proporciona la Inteligencia Ambiental.

ASIBOT consta de cinco grados de libertad, que traduce en cinco

motores para su funcionamiento. Puede de anclarse por cada uno de

sus extremos, a la pared o a la silla de ruedas. Es autónomo, salvo

por su conexión para alimentación.

El extremo que queda libre se usa para dos cosas:

Anclar portaherramientas, para realizar diferentes tareas:

una taza, conector para cubiertos, cepillo de dientes, etc.

Usar una “garra” de tres dedos retráctiles, que sirve para

manipular objetos, que se esconde cuando es necesario.

Figura 6. Distintos portaherramientas de ASIBOT.

ASIBOT posee tres modos de operación:

Modo autónomo: el robot se mueve por sí mismo.

Control directo: Mediante voz, móvil, joystick para

realizar algo puntual que desee el usuario.

Tareas de alto nivel: tareas que el usuario repite con

frecuencia. Son un conjunto de actividades

semiautónomas del robot, cuyos pasos quedan

registrados mediante una red de Petri.

Las principales tareas relacionadas con ASIBOT son las de ámbito

doméstico. En el diseño se decidió que para tareas como dar de

comer, cepillar dientes, o afeitarse, sería el usuario el que realizaría

un pequeño movimiento para llevarlo a cabo cuando se le presente

el utensilio. Es muy importante el control de la trayectoria del

control, aceleración, velocidad en cada movimiento, puesto que se

mueve muy cerca del usuario.

En resumen, podemos decir que se ha logrado integrar en un diseño

innovador y portátil las funcionalidades de robots escaladores y

brazos manipuladores con un propósito asistencial para personas

discapacitadas, y anclando el robot a una silla de ruedas del

usuario, el ámbito de operación no se limita al entorno doméstico.

-101-

Page 108: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/12-13/libro1213.pdf · construir cuadrados mágicos mediante una técnica de bordeado. La primera aparición del cuadrado

REFERENCIAS

[1] M. Kaess, A. Ranganathan, and F. Dellaert, “iSAM:

Incremental Smoothing and Mapping,” Robotics, IEEE

Transactions on, vol. 24, no. 6, pp. 1365–1378, 2008.

[2] J. Glass, “A Probabilistic Framework for Segment-Based

Speech Recognition,” in Computer Speech and Language 17,

pp. 137–152, 2003.

[3] Sachithra Hemachandra, Thomas Kollar, Nicholas Roy and

Seth Teller, “Following and Interpreting Narrated Guided

Tours” http://groups.csail.mit.edu/rrg/papers/sachi_icra11.pdf

[4] David Chandler, MIT News Office, “Robot wheelchair finds

its own way” http://web.mit.edu/newsoffice/2008/wheelchair-

0919.html

[5] A. Jardón, R. correal, S. Martinez, A. Giménez, C.Balaguer,”

“ASIBOT: robot portátil de asistencia a discapacitados.

concepto, arquitectura de control y evaluación clínica”.

RoboticsLab, Universidad Carlos III de Madrid.

http://roboticslab.uc3m.es/publications/Cap.%208.pdf

[6] J. Rivera Altimir. “Inteligencia ambiental” Universitat

Politènica de Catalunya, Barcelona.

http://www.lsi.upc.edu/~bejar/ia/material/trabajos/Inteligencia

%20Ambiental.pdf

[7] Wikipedia. “Reconocimiento óptico de caracteres”

http://es.wikipedia.org/wiki/Reconocimiento_%C3%B3ptico_

de_caracteres

[8] J. Arlandis Navarro. ”OCR, Sistema de reconocimiento de

caracteres”. ITI-Instituto tecnológico de Informática.

http://www.iti.es/media/about/docs/tic/13/articulo2.pdf

[9] Carlos Javier Sánchez Fernández, Victor Sandonís Consuegra,

“Reconocimiento Óptico de Caracteres (OCR)”. Universidad

Carlos III de Madrid.

http://www.it.uc3m.es/jvillena/irc/descarga.htm?url=practicas

/08-09/09.pdf

[10] Carlos de Castro Lozano, Cristóbal Romero Morales,

“Tecnología para el apoyo a personas con discapacidades”,

Universidad de Córdoba.

http://www.uco.es/investiga/grupos/eatco/automatica/ihm/des

cargar/discapacitados.pdf

[11] Lic. Ricardo A. Koon,” El impacto tecnológico en las

personas con discapacidad”.

http://diversidad.murciaeduca.es/tecnoneet/docs/2000/14-

2000.pdf

[12] N. Chumerin, N. V. Manyakov, A. Combaz, and M. M. Van

Hulle, “An Application of Feature Selection to On-Line P300

Detection in Brain-Computer Interface,” in IEEE

International Workshop on Machine Learning for Signal

Processing, Grenoble, 2009, p. a16.

[13] Nikolay V. Manyakov, Nikolay Chumerin, Adrien Combaz,

and Marc M. Van Hulle, “Comparison of Classification

Methods for P300 Brain-Computer Interface on Disabled

Subjects,” Computational Intelligence and Neuroscience, vol.

2011, Article ID 519868, 12 pages, 2011.

doi:10.1155/2011/519868

-102-