INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches...

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

Transcript of INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches...

Page 1: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

INTELIGENCIA EN REDES DE

COMUNICACIONES

Trabajos de la asignatura

Curso 11-12

Departamento de Ingeniería Telemática

Universidad Carlos III de Madrid

Page 2: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

- i -

INTELIGENCIA EN REDES DE COMUNICACIONES

Trabajos de la asignatura

Curso 11-12

Julio Villena Román

Raquel M. Crespo García Departamento de Ingeniería Telemática

Universidad Carlos III de Madrid {jvillena, rcrespo}@it.uc3m.es

ÍNDICE

1. El coche inteligente. .................................................................. 1 Daniel Asegurado Turón

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

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

2. Sistemas expertos: MYCIN ...................................................... 11 Ainhoa Sesmero Fernández, Sandra Pinero Sánchez

En este documento se explica lo que es un sistema experto, sus principales usos y en concreto hablaremos del sistema MYCIN. Uno de los primeros sistemas expertos para la detección y tratamiento de enfermedades de la sangre.

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

Page 3: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

- ii -

3. Diseño e implementación de un agente inteligente Mario A.I. .. 19 Yuchen Du, Virginia Izquierdo Bermúdez

En este artículo se detalla el diseño y la implementación de un agente inteligente capaz de jugar al videojuego de Mario así cómo las técnicas utilizadas para este diseño.

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

4. Jugador virtual de póker Texas Hold’em ................................. 29 Alberto Álvarez Polegre, Lucas Bernalte Pérez, David Díaz Chinea

El póquer es un juego de cartas de los llamados de "apuestas", en los que los jugadores, con todas o parte de sus cartas ocultas, hacen apuestas sobre una puja inicial, recayendo la suma total de las apuestas en el jugador o jugadores con la mejor combinación de cartas. Este trabajo hace un diseño de un jugador virtual de póker Texas Hold’em.

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

5. Inteligencia artificial en el mundo de la aviación ..................... 37 Daniel Ruesga Ibañez, Hector Molla Ruiz

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

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

6. Sistemas Expertos en meteorología ......................................... 45 Carlos Lentisco Sánchez, Tania Romero Rodríguez

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

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

Page 4: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

- iii -

7. Traducción automática. Técnicas y aplicaciones ...................... 53 Isabel Cuadrado Gutiérrez, David Ferrer Figueroa

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

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

8. Resolución de Puzzles Deslizantes ........................................... 61 Lara Rojo Celemín, Iván Suárez Morejudo

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

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

9. Desarrollo de un agente autónomo jugador de Super Mario .... 70 Adrián Amor Martín, Cristina García Muñoz

En este documento se va a detallar cómo realizar un agente, basado en árboles de decisión, que sea capaz jugar de forma autónoma al juego Super Mario en el marco del concurso Mario AI 2011.

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

10. Implementación de un Agente para un jugador de Mario A.I. .. 78 Alejandro Pérez Cruz, David de la Horra Iglesias

En este documento presentamos una posible implementación de un agente que pueda jugar al juego SuperMario Bross. con una cierta inteligencia autónoma.

Page 5: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

- iv -

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

11. Robot de Robocode ................................................................. 86 Felipe Llinares López, Juan José Torres García

En esta memoria describimos una implementación que hemos realizado de un robot de competición para el programa Robocode.

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

12. Minería de Datos .................................................................... 94 Óscar Palomo Miñambres

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

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

Page 6: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

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

Daniel Asegurado Turón Universidad Carlos III de Madrid

Leganés, Madrid, España

[email protected]

RESUMEN

Si alguna vez has soñado con tener un coche como KITT, el coche

fantástico, ese sueño podría hacerse realidad en un futuro no muy

lejano. El sueño del coche fantástico es una realidad que está

emergiendo con fuerza en varios países, incluido España. El

objetivo del presente documento es realizar un recorrido por la

historia del automóvil hasta llegar a los considerados coches

inteligentes, donde nos detendremos a analizar los diferentes

proyectos que trabajan con esta idea.

Palabras clave

Coche autónomo, automatización de vehículos, autoconducción,

Mecatrónica, radar, LIDAR, GPS, visión artificial, eye tracking,

estereoscopía

1. INTRODUCCION Todos hemos tenido envidia del mítico Michael Knight cuando,

con sólo una orden de voz llamaba a KITT, su coche fantástico,

para que le fuese a recoger allá donde se encontrase. KITT no sólo

era capaz de conducir autónomamente, sino que era capaz de

reaccionar a todo tipo de peligros a los que se enfrentase gracias a

una supercomputadora integrada dotada de inteligencia artificial

(cerebro), que era capaz de interpretar los datos procedentes de

los diversos sensores de sonidos, imágenes e incluso olores (los

órganos de los sentidos). Hasta era capaz de hablar. En definitiva,

un coche con el comportamiento de un ser humano.

Durante muchos años, esta idea del automóvil no ha sido más que

mera ciencia ficción. Sin embargo, la realidad hoy es bien

diferente. En los casi treinta años que separan la emisión de la

legendaria serie de la actualidad, se han realizado grandes

progresos en el estudio del coche inteligente. Organismos

oficiales, como la Unión Europea, fabricantes de automóviles,

como Volvo, o incluso compañías de otros sectores ajenos al

motor, como es el caso de Google, se han lanzado a la carrera por

conseguir el coche del futuro.

¿Cuál es el interés por obtener un coche de estas características?

Siguiendo con la analogía del coche fantástico, el principal interés

sigue siendo salvar vidas. Mientras que KITT se preocupaba de

salvarle la vida a su compañero Michael, el objetivo de los

organismos institucionales como la Unión Europea es reducir el

número de muertes al volante. Según la DGT [1], en el primer

semestre de 2011 ya se contabilizaban 986 víctimas mortales por

accidentes en la carretera (no están incluidas las víctimas de

lesiones graves o leves en el total de accidentes). En cifras

relativas, en Europa murieron 62 personas por millón de

habitantes el pasado 2010, según el informe del ETSC sobre

seguridad vial [2]. Aunque la cifra vaya en descenso en los

últimos años, sigue siendo demasiado elevado el número de

personas que pierden la vida en accidentes de tráfico, por lo que

es necesario la puesta en marcha de proyectos que trabajen por

aumentar la seguridad y evitar el mayor número posible de

siniestros. Con el coche inteligente podríamos mejorar en

cuestiones de seguridad gracias a la incorporación, por ejemplo,

de sistemas de alerta ante el alejamiento involuntario del carril,

detectores de peatones o sistemas de control del conductor que

sean capaz de reaccionar si el conductor se duerme al volante.

Por otro lado, el coche inteligente tiene que velar por la mayor

eficiencia energética posible. Con el creciente número de coches

en el mundo (sólo en 2010 se fabricaron más de 58 millones en

todo el mundo según el informe del OICA [3]), y la cada vez más

escasa cantidad de recursos energéticos, debida en gran parte a la

crisis del petróleo, exigen que los nuevos vehículos gestionen más

eficientemente las fuentes de energía con las que cuente. Las

propias instituciones gubernamentales exigen, para cumplir con

las normativas de sostenibilidad y respeto del medio ambiente,

que además se reemplacen los modelos más antiguos por nuevos

que sean más ecológicos. En España, un 13% del parque

automovilístico supera los 20 años de antigüedad según el último

informe de la DGT [4], por lo que un gran número de coches

deberá ser renovado en los próximos años. En este punto, el coche

inteligente juega también un papel crucial, pudiendo dotársele de

la capacidad para controlar el consumo de forma autónoma. Los

Figura 1. KITT, el coche fantástico

- 1 -

Page 7: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

nuevos coches eléctricos y los futuribles coches de hidrógeno u

otras fuentes de energía limpias, exigirán aún más si cabe una

gestión eficiente de la energía, y el desarrollo del mismo

incentivará la creación de coches cada vez más sostenibles.

Al automóvil, que ha vivido grandes transformaciones desde su

invención, le llega por tanto el momento de cobrar inteligencia.

Para ello, siguiendo el prototipo de KITT, es necesario

incrementar la capacidad de percepción (mejorar los órganos de

los sentidos para adquirir más información del exterior) y dotarle

de un cerebro que controle, analice y sea capaz de decidir

autónomamente. Nuevos medidores no sólo de mayor precisión de

los niveles internos del automóvil, como tradicionalmente se ha

venido desarrollando, sino para incorporar nuevas funcionalidades

como detectores de obstáculos para el aparcado automático,

detectores de otros objetos móviles -como otros vehículos- para

aumentar la seguridad en el adelantamiento, o detectores de

posición para el ambicioso plan de la autonavegación. Todo ello,

una vez más, para facilitarle la vida un poco más al ser humano

del siglo XXI.

El presente documento analizará el concepto de coche inteligente,

como el resultado de la incorporación de elementos de

inteligencia artificial en el automóvil, según el siguiente esquema:

- Sección 1 presenta una introducción al tema de la

inteligencia artificial aplicada al automóvil y motiva el

estudio realizado en este informe.

- Sección 2 realiza una breve reseña histórica de la

evolución del automóvil y de la incorporación de

elementos de inteligencia artificial en el mismo.

- Sección 3 analiza las distintas tecnologías en las que

actualmente trabaja la iniciativa i2010 Intelligent Car

Initiative, promovida por la Comisión Europea.

- Sección 4 aborda el concepto de autoconducción, donde

se presentarán diferentes proyectos que trabajan en

conseguir coches que se conduzcan solos. Una especial

atención se prestará al proyecto de Google, ya que está

actualmente en marcha en Estados Unidos, y al proyecto

que los compañeros de la Universidad Carlos III están

desarrollando en esta materia.

- Sección 5 valora el futuro de los coches inteligentes

para la sociedad en los próximos años, desde el punto

de vista del autor del documento.

2. HISTORIA Para entender con mayor detalle hacia dónde va dirigida la carrera

por el coche del futuro, es interesante hacer un breve recorrido

por la evolución del automóvil y repasar los avances que se han

ido desarrollando en la senda de la automatización desde su

invención hasta los modelos contemporáneos y los nuevos coches

autónomos.

2.1 El automóvil clásico Aunque hubo vehículos a vapor que se pueden considerar los

precursores del automóvil (como el invento de Cugnot en torno a

1769, o el modelo de Murdoch), se considera a Karl Benz el

inventor del automóvil moderno, con la incorporación de la

combustión por gasolina. El primer modelo de Benz, el Benz

Patent-Motorwagen (representado en la Figura 2), al igual que los

modelos que se venían desarrollando paralelamente a finales del

siglo XIX, no dejaba de ser un mero carro (más bien un triciclo

grande) propulsado por un motor.

Figura 2. Benz Patent-Motorwagen (1885)

Ya antes del invento de Benz, la idea del coche eléctrico estaba

desarrollándose. Los primeros coches eléctricos se remontan a

1828, cuando el húngaro Ányos Jedlik inventa el motor eléctrico y

crea el primer modelo de coche propulsado por dicho motor.

Diversos ingenieros trabajan en la idea del coche eléctrico hasta

que alrededor de 1839, el escocés Robert Anderson inventa el

primer coche eléctrico impulsado por baterías eléctricas no

recargables. Sin embargo, la abundancia de carburantes líquidos y

la eficiencia de los motores de gasolina hacen que el coche

eléctrico quede aparcado hasta la actualidad, cuando la necesidad

de nuevas alternativas a los derivados del petróleo hace que se

recupere esta vieja idea de coche eléctrico.

La etapa comprendida entre los últimos años del siglo XIX y la

primera mitad del siglo XX está cargada de avances en la

producción de automóviles. Entre ellos, la invención de la cadena

de montaje en 1910 de la mano de Henry Ford. A partir de este

momento, gracias a la producción industrial de modelos de coches

y su uso extendido para todas las clases sociales, la industria del

automóvil adquiere una importancia vital en la economía de los

países y se convierte en una de las industrias en las que más

recursos se invierten en investigación y desarrollo.

Los avances más destacados en la industria del automóvil durante

el siglo XX se orientan principalmente en la mejora del motor.

Las distintas empresas automovilísticas inician la guerra por

conseguir los motores más potentes y eficientes, y se investigan en

los motores de explosión, o comúnmente conocidos como diesel.

En los últimos años del siglo pasado y los primeros del XXI,

etapa considerada como la edad moderna del automóvil, aparecen

las primeras automatizaciones dentro del coche. A continuación,

se presentan algunas de estas incorporaciones:

El elevalunas eléctrico: mediante un mecanismo

eléctrico controlado por el usuario gracias a un botón de

dos posiciones, se suben y bajan las ventanillas del

automóvil, sustituyendo así a la tradicional manivela

manual.

El airbag: sistema de bolsas de aire que

automáticamente se dispara cuando el automóvil sufre

un choque brusco. Mediante un sistema electro-

- 2 -

Page 8: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

mecánico, el coche es capaz de saber cuándo debe

activar el airbag y cuándo no.

El climatizador: un sistema de calefacción que mantiene

la temperatura interna del vehículo a la temperatura

deseada por el conductor. Cuenta con un sensor de

temperatura gracias al cual determina la temperatura del

habitáculo y si debe proporcionar mayor calor o frío

para mantener la temperatura dentro de los márgenes

fijados por el usuario.

El ordenador de abordo: con mayor o menor

sofisticación, los nuevos automóviles incorporan una

pantalla que facilita información sobre kilómetros

recorridos, consumo medio cada 100km, velocidad

media, etc.

Aviso de cinturón de seguridad: mediante sensores de

presencia en los asientos, y sensores en el cierre del

cinturón de seguridad, el sistema de alarma detecta,

cuando el coche arranca el motor, los asientos que están

ocupados y si en dichos asientos sus pasajeros tienen

abrochado el cinturón de seguridad. En caso contrario,

se activa una alarma sonora y visual, indicando que hay

pasajeros sin cinturón de seguridad.

Aviso de puertas abiertas: mediante un sistema de

sensor de cierre, similar al del aviso de cinturón de

seguridad, cuando el motor se enciende un piloto avisa

de si hay alguna puerta mal cerrada o abierta.

Subida automática del volumen en función de la

velocidad: al superar determinada velocidad punta, el

coche sube automáticamente el volumen del reproductor

de música, avisando al conductor de que está

sobrepasando el límite de velocidad, o incluso

despertarte el caso de que el aumento de velocidad se

deba a que el conductor se ha dormido.

El limpiaparabrisas automático: gracias a un sensor de

lluvia en el parabrisas, la velocidad y frecuencia de

barrido de los limpiaparabrisas se ajustan

automáticamente de acuerdo con la cantidad de lluvia

detectada.

Aunque no puedan considerarse como elementos de inteligencia

artificial como tal en el automóvil, estas sutiles incorporaciones

en los coches modernos son, por así decirlo, antecedentes de los

proyectos que hay en marcha ya para dotar a los coches de

inteligencia. El auge de las nuevas tecnologías y la aparición de la

conocida Sociedad de la Información, afectan a todos los ámbitos

de la vida moderna. El automóvil, herramienta que empleamos a

diario, no podía ser menos y, dado el enorme capital económico

que genera la industria del automóvil, cualquier mejora en este

aspecto proporcionará grandes beneficios económicos, al margen

de cualquier otro progreso en sostenibilidad, seguridad o confort.

2.2 La automatización en el automóvil Con el auge de las nuevas tecnologías, surgen también nuevas

ramas en la ingeniería. Surge además la llamada ingeniería

Mecatrónica, que engloba los campos de las ingenierías mecánica,

electrónica, de control e informática, con el objetivo de diseñar

productos o procesos inteligentes, involucrando sistemas de

control en su diseño.

El origen de la Mecatrónica se remonta a las investigaciones en el

área de la Cibernética de Turing (1936), Wiener y Morthy (1948)

y Devol (1954) y los autómatas programables de Bedford

Associates en 1968. En la década de los setenta, la Mecatrónica se

centra en la tecnología de servomecanismos, empleada en

productos como puertas automáticas. En los años ochenta, en

pleno auge de la tecnología de la información, los

microprocesadores empiezan a ser introducidos en los sistemas

mecánicos para mejorar su desempeño. Las máquinas de control

numérico y los robots se volvieron más compactos, y las

aplicaciones automotrices como los mandos electrónicos del

motor y los sistemas anticerrado y frenando se hicieron extensas.

Por los años noventa, se agregó la tecnología de comunicaciones,

creando productos que podían conectarse en amplias redes. Al

mismo tiempo, se están usando novedosos microsensores y

microactuadores en nuevos productos como los sistemas

microelectromecánicos como los diminutos acelerómetros de

silicio que activan las bolsas de aire de los automóviles. El

concepto de automatización en el automóvil viene ligado

precisamente a esta rama de la ingeniería y en la aplicación

práctica de la Mecatrónica en técnicas que asistan al conductor en

el control del vehículo.

En este punto en el que se ha repasado brevemente la historia del

automóvil y la aparición de distintas técnicas de automatización

de la mano de la Mecatrónica, es necesario hacer una clasificación

de los nuevos vehículos, en función de la inmersión de la

inteligencia artificial en su producción. Así, podemos diferenciar

tres tipos de vehículos:

Vehículos inteligentes: aquellos que emplean técnicas

de automatización de la Mecatrónica, y en particular de

la inteligencia artificial, para disminuir o facilitarle las

responsabilidades del manejo del automóvil al

conductor. En general, las características inteligentes de

estos vehículos hacen referencia a tareas de baja o

media dificultad. El control del automóvil recae

totalmente en el conductor y la tarea fundamental de la

inteligencia del vehículo es asistirle.

Existen muchas técnicas de automatización aplicadas al

automóvil. Principalmente se clasifican en tres

categorías:

o Asistencia sensorial (informativa): informan

al conductor sobre eventos que ocurren y de

los que el conductor puede que no se dé

cuenta. Algunos ejemplos son:

Detectores de obstáculos

Visión nocturna (con detección de

peatones)

Sistema de aviso para el cambio de carril

Detección anticipada de colisión

Faros adaptativos

Reconocimiento de señales de tráfico

o Asistencia para actuación (correctiva):

modifican las instrucciones del conductor

para ejecutarlas de una forma más eficiente.

Entre las técnicas más conocidas están:

ABS (sistema de antibloqueo de frenos)

- 3 -

Page 9: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

TCS (sistema de control de tracción)

AWD (motor a las cuatro ruedas)

ESC (control electrónico de estabilidad)

DSR (respuesta a la dirección dinámica)

o Asistencia sistémica: introducen mejoras que

no se incluyen en las anteriores. Son por

ejemplo:

Aparcamiento automático

Asistencia para el control de distancias

Dead man's switch: sistemas para detener

el coche de forma segura en caso de que el

conductor quede inconsciente

La Comisión Europea está llevando a cabo un

programa de desarrollo de coches inteligentes, en el

cuál se engloban diferentes proyectos de universidades,

centros de investigación y empresas del mundo

automovilístico. Entre los objetivos de este proyecto

están el control de crucero autónomo, sistemas de alerta

para el cambio de carril o estudios para atacar el

problema del conductor somnoliento.

En la siguiente sección se presentarán en detalle en qué

consiste este programa y que tecnologías se están

investigando para el futuro coche inteligente.

Vehículos semiautónomos: aquellos que emplean las

técnicas de automatización para tareas de mayor

dificultad, especialmente en cuestiones relacionadas

con la navegación. El control del automóvil recae

principalmente en el conductor pero parte de la

responsabilidad se le cede al control automático. El

coche semiautónomo es un paso intermedio entre el

coche inteligente y el coche totalmente autónomo.

Vehículos autónomos o robóticos: aquellos que

confían por completo en el sistema de automatización

del vehículo. Se les conoce también por el nombre de

driverless, es decir, coches sin conductor. El vehículo

sustituye por completo las funciones que

tradicionalmente llevaba a cabo el conductor y, como el

propio nombre sugiere, conduce “solo”. El vehículo

autónomo es capaz de percibir el entorno (a imitación

de los sentidos humanos) mediante laser, radar,

LIDAR, GPS y visión artificial, y navegar por sí

mismo. El papel del humano en este caso se limita a

elegir un destino, pero ya no se le requiere realizar

ninguna operación mecánica sobre el vehículo.

2.3 El coche autónomo Aunque en el apartado anterior se han descrito las principales

características de los vehículos autónomos y posteriormente se

presentarán diferentes proyectos que están trabajando en el

desarrollo del coche autónomo, es interesante realizar también un

breve recorrido por la historia del coche autónomo.

La primera idea que se conoce sobre coches autónomos

corresponde al diseño Futurama, del americano Normal Bel

Geddes y financiado por General Motors, que fue presentado en la

Exposición Universal de Nueva York de 1939. El proyecto

presentaba coches eléctricos, alimentados por circuitos integrados

en la calzada, y que eran controlados por radio.

Aunque la idea se remonta a los años treinta, no es hasta los

ochenta cuando se empiezan a implementar los primeros modelos

reales, no sólo teóricos. En estos años, Mercedes-Benz presenta

una caravana robótica capaz de alcanzar hasta 100 km/h en

carreteras sin tráfico. El éxito del modelo animó a la Comisión

Europea a lanzar el proyecto EUREKA-Prometheus (1987-1995)

para el desarrollo de vehículos autónomos, el mayor proyecto de

I+D en el campo de los vehículos autónomos hasta el momento.

Al mismo tiempo en Estados Unidos el Departamento de Defensa

realiza sus propios experimentos en el llamado Autonomous Land

Vehicle (ALV) y lleva a cabo la primera demostración de

vehículos capaces de seguir un camino utilizando LIDAR, visión

artificial y control robótico autónomo para controlar un vehículo

robótico hasta los 30 km/h. En 1987, consiguen que el ALV sea

capaz de viajar autónomamente fuera de carretera mediante un

sistema de navegación autónomo basado en sensores. El nuevo

modelo es capaz de viajar 600m a 3 km/h en terrenos complejos

con fuertes pendientes, barrancos, grandes rocas y vegetación.

Figura 3. DARPA: Autonomous Land Vehicle (ALV)

En 1994 y de vuelta a Europa, los vehículos robóticos VaMP y su

gemelo Vita-2 logran circular miles de kilómetros por una

autopista parisina de tres carriles, con tráfico denso, alcanzando

velocidades de hasta 130 km/h con una mínima intervención

humana. El vehículo empleaba visión artificial para reconocer

obstáculos que se podían mover rápidamente, como otros coches,

y poder realizar cambios de carril a izquierda o derecha evitando

colisionar con otros vehículos. El éxito del proyecto dio paso a

muchos otros proyectos en los siguientes años que demostraron

ser capaces de recorrer mayores distancias a mayores velocidades.

En 1996, el proyecto ARGO consigue completar una ruta de 2000

km a lo largo de autopistas del norte de Italia durante 6 días y con

una velocidad media de 90 km/h. Lo sorprendente del proyecto

fue que el vehículo consiguió funcionar en modo totalmente

automático el 94% del tiempo. El automóvil contaba sólo con dos

cámaras detectoras de blancos y negros de bajo coste y utilizaba

algoritmos de visión estereoscópica para entender el entorno (se

guiaba gracias a que la carretera es negra y las líneas delimitantes

son blancas) en contraposición a la aproximación laser/radar de

los proyectos anteriores en el mismo campo.

Si hasta finales del siglo pasado, todos estos proyectos de coches

autónomos no eran más que proyectos, con el cambio de milenio

se han conseguido implantar sistemas de autoconducción en

distintos lugares del mundo, como puede ser el caso del

ParkShuttle en Rotterdam, un sistema de minibuses que funcionan

sin conductor. En 2010 además, con motivo de la Exposición

- 4 -

Page 10: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Universal de Shanghai, cuatro furgonetas eléctricas realizaron el

primer viaje intercontinental sin conductor, saliendo desde Italia y

alcanzando China.

3. EL COCHE INTELIGENTE Los problemas derivados de incremento del tráfico en Europa,

tales como congestión en las redes de carreteras y áreas urbanas,

el daño al medio ambiente y a la salud pública, el incremento del

gasto energético y el elevado número de accidentes (40.000

personas mueren al año en las carreteras europeas) han llevado a

la Comisión Europea a lanzar una iniciativa en favor del coche

inteligente para impulsar su implantación en los nuevos coches

europeos. Entre los objetivos que persiguen alcanzar con los

nuevos sistemas inteligentes están aumentar la seguridad,

ayudando a los conductores a prevenir o evitar accidentes y

mitigando las consecuencias de éstos, y reducir el gasto

energético, facilitando a los conductores información en tiempo

real sobre el estado del tráfico para evitar zonas congestionadas y

optimizando el funcionamiento del motor para mejorar la

eficiencia energética global.

La iniciativa europea, i2010 Intelligent Car Initiative, presenta

una serie de tecnologías en las que se está trabajando o ya están

disponibles para los usuarios, y que se clasifican en tres

categorías: sistemas de ayuda a la conducción, sistemas

cooperativos para la seguridad en carretera y sistemas basados en

localización para la seguridad en carretera.

3.1 Sistemas de ayuda a la conducción

Los sistemas de ayuda a la conducción buscan en última instancia

ayudar al conductor a evitar accidentes o a mitigar el daño

causado por estos. Son los sistemas conocidos como eSafety a

bordo. A continuación, vamos a analizar con más detalle algunas

de las tecnologías más interesantes relacionadas con estos

sistemas:

3.1.1 Sistema antibloqueo de frenos (ABS) Como su propio nombre indica, el sistema antibloqueo de frenos

(ABS) evita que las ruedas se bloqueen cuando el conductor pisa

el freno. Esto se consigue modulando automáticamente la presión

ejercida sobre la rueda gracias a una bomba que se incorpora a los

circuitos del líquido de freno y a unos detectores que controlan las

revoluciones de las ruedas. Cuando los sensores detectan una

reducción repentina en las revoluciones de las ruedas (debida a

una frenada brusca), interpreta que las ruedas están a punto de

bloquearse, por lo que envían una señal al Módulo de Control del

sistema ABS, el cual reduce la presión ejercida sobre los frenos

(sin intervención del conductor). El sistema ABS se empleó por

primera vez en los años 70 y es uno de los sistemas inteligentes

más extendidos en la actualidad.

3.1.2 Control de crucero adaptativo (ACC) Este sistema cuenta con un detector radar de gran alcance, un

procesador de señales y un control longitudinal del vehículo para

mantener la distancia de seguridad con el vehículo de delante,

ajustando automáticamente la velocidad del vehículo. Si el

vehículo de delante frena, el sistema ACC hace que el vehículo

reduzca la velocidad para mantener la distancia de seguridad y,

cuando el otro vehículo vuelve a acelerar, automáticamente el

sistema ACC acelera hasta una velocidad programada.

Actualmente la mayoría de sistemas funcionan para una gama de

velocidades limitada y el objetivo de la iniciativa es hacer que el

sistema funcione a cualquier velocidad, incluso que sea capaz de

detener el coche por completo si la situación lo requiere.

Figura 4. Sistema de control de crucero adaptativo (ACC)

Aunque los sistemas ACC más comunes están basados en

detectores radar, existen también sistemas basados en láser,

aunque éstos tienen la limitación de no detectar correctamente al

coche de delante en caso de condiciones meteorológicas adversas.

Los sistemas ACC son infraestructuras totalmente independientes

y no necesitan de ninguna señal satélite para funcionar. Sin

embargo, estos sistemas pueden aprovechar también las señales

GPS para realizar mejores estimaciones. Por ejemplo, si el

vehículo de delante frena no por congestión del tráfico sino

porque se aproxima a una salida de la autopista, en lugar de frenar

como el sistema ACC convencional haría, gracias a la señal de

GPS que avisa de que el otro coche tomará la próxima salida, el

coche mantendría su velocidad normalmente.

Existen multitud de fabricantes que incorporan el sistema ACC

parcialmente (es decir, requieren la intervención del conductor a

partir de cierta velocidad), aunque BMW, Mercedes-Benz, Volvo

y Audi ya cuentan con modelos que incorporan sistemas ACC

capaces de detener al vehículo por completo.

La nueva generación de sistemas ACC incluirá también

información facilitada por el coche de delante, en lo que se

conoce como sistemas cooperativos. Pero para ello, hará falta un

acuerdo entre los distintos fabricantes y la estandarización del

sistema para la correcta comunicación entre vehículos.

3.1.3 Asistente de cambio de carril / Detector de

punto muerto Estos sistemas controlan en todo momento los puntos traseros del

vehículo que quedan fuera del alcance de la vista del conductor.

Cuando el conductor pretende cambiar de carril y acciona la luz

intermitente, el sistema se activa y, en caso de que los sensores

detecten que hay otro vehículo que el conductor no ha podido ver,

avisa del peligro de choque mediante una señal luminosa o

mediante vibración en el volante.

3.1.4 Sistema de control y alerta antisueño El sistema de control y alerta antisueño entran dentro de lo que

comúnmente se conoce por sistema de monitorización del

- 5 -

Page 11: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

conductor, y se encargan de analizar la atención del conductor

sobre la carretera y detectar la somnolencia del mismo de

diferentes formas: atendiendo a las expresión facial, los

movimientos de manos y pies, analizando el parpadeo y la

posición de la cabeza o incluso las alteraciones del ritmo cardiaco.

Cuando el sistema, mediante alguna combinación de los factores

anteriores, entiende que el conductor está durmiéndose o

distrayéndose de la conducción, alerta al mismo mediante una

señal acústica, una fuerte señal luminosa o, en algunos vehículos,

tirando del cinturón de seguridad para con la presión captar su

atención.

Los primeros modelos, de la mano del fabricante Lexus,

monitorizaban la posición exacta y el ángulo de la cabeza del

conductor mientras el coche estaba en marcha. Si el sistema de

alerta de colisión (directamente relacionado con éste) detecta un

obstáculo delante del coche, y el sistema de monitorización

observa que la cabeza del conductor se ha mantenido fuera de la

atención de la carretera demasiado tiempo, se activan los sistemas

de aviso para evitar el choque. Toyota fue más allá e implantó un

sistema en el Toyota Crown de 2008 que era capaz de detectar si

el conductor se dormía analizando el movimiento de las pestañas.

Los nuevos modelos son más ambiciosos. Gracias a las imágenes

tomadas por la cámara, es posible realizar un seguimiento del

movimiento de los ojos. La técnica conocida como eye tracking

en inglés evalúa el punto donde se fija la mirada o también el

movimiento del ojo en relación con la cabeza. Los últimos

modelos de Mercedes-Benz monitorizan el nivel de fatiga y

somnolencia del conductor aplicando esta técnica.

Las cámaras que se utilizan para eye tracking contienen un sensor

CCD con diminutas células fotoeléctricas que registran la imagen,

cuyo número determina la resolución de la imagen. El sistema de

detección por tanto funciona enviando una señal infrarroja que se

refleja en los ojos del conductor y se captura por el sensor óptico.

Generalmente, se suelen emplear la señal reflejada en la córnea y

en el centro de la pupila para realizar el seguimiento de la visión

del conductor.

En estos sistemas, es fundamental que no sólo se analice el ojo en

sí (como por ejemplo en los sistemas de reconocimiento de retina)

sino en la dirección de la mirada. Por ello, además de analizar las

señales reflejadas en la zona del ojo (para poder detectar también

parpadeos o si el ojo está cerrado) es importante almacenar

información de la zona alrededor del ojo y también ángulos de

posicionamiento de la cabeza. Con esta información, el sistema es

capaz de calcular si la mirada se está fijando en la carretera o no,

aplicando geometría y una serie de márgenes donde la mirada

debería estar situada, y también, de los gestos de la cara,

comparando con modelos que la máquina haya aprendido o

contenga de fabricación, detectar síntomas de fatiga.

En la Figura 5 podemos ver los puntos que emplea un modelo de

Nissan para detectar síntomas de fatiga. El sistema monitoriza la

posición de determinadas zonas de la cara que, cuando superan un

umbral una serie de puntos, se considera que el conductor está

dormido y se activan los sistemas de alerta.

3.1.5 Sistema de protección de peatones y usuarios

vulnerables de la vía pública

Figura 6. Sistema de detección de peatones

Aunque aún no haya implementaciones en esta materia, sí hay un

especial interés en el seno de la iniciativa i2010 por impulsar un

sistema de protección de peatones y ciclistas. La idea de partida

de este sistema es similar a la que se viene empleando para evitar

colisiones con otros vehículos. Se trataría de instalar una serie de

sensores de diferentes tipos que vigilen la zona delantera del

vehículo y alerten de la presencia de usuarios vulnerables.

El sistema integraría un control para accionar de forma automática

el sistema de frenado para poder evitar la colisión. En caso de que

la colisión fuese inminente y no pudiera evitarse, el sistema

accionaría nuevos elementos de seguridad pasiva del coche, por

ejemplo airbags en el parachoques, elevación del capó del coche,

etc., que disminuyesen el riesgo de lesiones graves de las

víctimas.

La Figura 6 representa las mediciones realizadas por la tecnología

implementada por el proyecto de coche inteligente de la

Figura 5. Sistema de monitorización del conductor

- 6 -

Page 12: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Universidad Carlos III de Madrid. El sistema analiza no sólo

todos los peatones que rodean al vehículo sino que también debe

tener en cuenta los movimientos de éstos para poder determinar

quienes pueden presentar un problema de colisión con el

automóvil.

Especial interés recibe esta técnica no sólo como un sistema de

alerta del cambio involuntario del carril, sino por ser una técnica

que también será útil en el diseño del coche autónomo. Se trata de

un sistema que vigila la posición del vehículo dentro de un carril

y, en caso de que el conductor se salga o esté próximo a salirse y

el conductor no haya activado el intermitente, avisarle o, en los

modelos más autónomos, corregir la posición del vehículo

automáticamente hasta que el coche esté posicionado

correctamente dentro del carril. Los sistemas que simplemente

alertan al conductor se conocen como LDW (lane departure

warning) mientras que los que corrigen automáticamente la

posición se conocen como LKS (lane keeping system).

Figura 7. Sistema de aviso de cambio involuntario de carril

Los sensores empleados por estos sistemas se basan en sistemas

de vídeo (montados detrás del parabrisas para tener una visión

general en ángulo de los límites del carril), sensores láser (en la

parte delantera del vehículo) y sensores infrarrojos (detrás del

parabrisas o bajo el coche).

Los primeros modelos, como el Citröen de 2005, empleaban

infrarrojos para monitorizar las líneas pintadas en la carretera.

Cuando los sensores detectaban la presencia de la línea divisoria,

alertaban al conductor para que corrigiera la dirección.

Audi por su parte, desarrolla en 2007 un sistema basado en una

videocámara de espectro visible situada en el frontal del coche, y

que captura imágenes en el ángulo de visión del conductor para

estimar el carril. Además, incorpora ya un sistema en la dirección

que vibra en caso de salirse del carril, corrigiendo

automáticamente la dirección para que el vehículo retorne al

carril.

3.1.7 Visión nocturna Para aumentar la capacidad visual del conductor durante la noche,

se incorporan al vehículo un sistema de visión nocturna basado en

infrarrojos, con un alcance similar al de las luces largas. El

sistema no deslumbra, pues se trata de luz infrarroja, y la escena

iluminada se le muestra al conductor en una pantalla especial,

siendo capaz de percibir éste mejor posibles obstáculos o

vehículos distantes, adelantándose a situaciones peligrosas y así

poder reaccionar con mayor rapidez.

3.1.8 Sistema de reconocimiento de señales de

tráfico La detección de señales puede ser útil para alertar al conductor de

posibles señales que se le escapen a la vista, pero es muy

importante para los coches autónomos. El sistema de

reconocimiento de señales se basa también en la visión artificial

para, dada una serie de imágenes tomadas desde la parte frontal

del coche hacia la carretera, es capaz de distinguir e interpretar

distintas señales de tráfico.

La localización de las señales no es trivial, ya que hay que

emplear modelos geométricos que tengan en cuenta el color y la

forma y debe funcionar ante condiciones luminosas muy diversas.

Además, el diseño de las señales no está totalmente estandarizado,

y las señales antiguas y modernas son bastante diferentes.

3.1.9 Otros sistemas Existen otras tecnologías recogidas en el proyecto europeo sobre

sistemas de ayuda a la conducción que sólo vamos a mencionar

sin entrar en más detalle:

Luces autoadaptables

Sistemas electrónicos de asistencia en la frenada

Control electrónico de estabilidad

Indicador de cambio de marcha

Sistemas de control de presión de neumáticos

3.2 Sistemas cooperativos para la seguridad

en carretera Más allá de la asistencia individualizada, los nuevos modelos

deben ser capaces de interactuar y comunicarse. El automóvil

pasaría a ser un elemento de una red de comunicaciones y se

podría gestionar la red de una forma eficiente, como ocurre con

las redes de telecomunicaciones. Con la cooperación entre

vehículos, la iniciativa europea pretende obtener una mayor

eficacia del transporte, maximizando la eficiencia de uso de las

infraestructuras disponibles, y además mejorar la seguridad. A

continuación se detallan algunas tecnologías relacionadas.

3.2.1 Gestión dinámica del tráfico Los paneles de señalización variable, o paneles luminosos, que

actualmente están desplegados por las carreteras de toda Europa,

ayudan al conductor a conocer en tiempo real el estado de las

carreteras y ofrecen información sobre rutas alternativas en caso

de accidente. Los mensajes de obligatoriedad, de aviso de peligro

o informativos que actualmente se envían a través de los paneles

de señalización pueden ser enviados a un receptor situado en el

interior del vehículo, facilitando la llegada de información útil al

usuario sin necesidad de que éste tenga que llegar a la carretera

que se encuentra con problemas de tráfico para conocer su estado.

Muchos GPS ya disponen de esta funcionalidad de controlar el

estado de las carreteras. Pero en la actualidad no deja de ser un

sistema meramente informativo. En una red futura, en la que los

coches cooperan entre sí para una gestión eficiente del tráfico, la

decisión de ruta debería gestionarse por elementos enrutadores

(similares a los routers de las redes de ordenadores) y así evitar

que ciertas zonas se congestionen.

3.2.2 eCall El sistema eCall incorporaría a la red de comunicaciones de

coches a los servicios de urgencia. En caso de accidente, el

- 7 -

Page 13: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

sistema establecería una conexión de voz con el servicio de

emergencias 112, enviando la hora y lugar del accidente, las

características del vehículo afectado o incluso facilitar

información adicional sobre el conductor si fuese necesario

ponerse en contacto con los familiares. El ahorro de tiempo en

atender la emergencia supondría salvar la vida de muchos

afectados en accidentes que mueren debido a que no es posible

atenderles a tiempo.

Uno de los puntos negros en los que más accidentes se producen

es en las intersecciones. La iniciativa de la Comisión también

plantea actuar de forma cooperativa entre vehículos para aumentar

la seguridad en los cruces. Para ello, se proponen dos sistemas. El

primero, aviso de preferencia, que indique al conductor que ceda

el paso a la derecha en una pantalla y, en caso de que el conductor

no reaccione, avisarle del peligro de colisión. El segundo,

asistente de semáforos, recibiría la información del semáforo

inalámbricamente para que el coche adecúe la velocidad y poder

cruzarlo en verde.

3.2.4 Sistema de aviso de obstáculo o colisión Las soluciones que actualmente hay implementadas sobre la

detección de obstáculos son una extensión del sistema de control

de crucero adaptativo: utilizan también información obtenida por

detectores radar y generan avisos acústicos y visuales para alertar

al conductor de un peligro inminente.

Sin embargo, hacia lo que se está caminando es a utilizar en un

futuro radares de largo y corto alcance, sistemas LIDAR y

procesado de imágenes de vídeo en la detección, y contar con un

sistema de frenado automático, capaz de frenar a máxima

potencia, preparar los airbags o tensar los cinturones de seguridad

en caso de una colisión inminente.

Los sistemas LIDAR (Laser Imaging Detection and Ranging) que

se mencionan se posicionan como la tecnología de detección del

futuro más inmediato y es la tecnología que emplean por ejemplo

las pistolas láser de la policía para determinar la velocidad de los

vehículos que circular en el tráfico rodado. Estos sistemas

determinan distancias entre un emisor láser y un objeto utilizando

haces láser pulsados y midiendo el tiempo de retardo entre la

emisión del pulso y la detección de la señal reflejada (igual que el

radar pero con ondas de luz en vez de radio).

Entre las principales ventajas del LIDAR sobre el radar están: es

mucho más rápido; los haces de luz divergen menos que los de

ondas sonoras, que se dispersan y rebotan en el entorno, y por

tanto son más precisos en detección; son más económicos; puede

funcionar también de noche; y es más fácil de transportar y

mantener.

3.3 Sistemas basados en la localización para

la seguridad en carretera En el apartado anterior ya se presentaba la tecnología eCall en

materia de comunicar a los servicios de emergencias la posición

exacta del lugar donde se ha producido un accidente en carretera.

Además de este sistema, existen también proyectos que trabajan

con mapas de a bordo como sensores de posición para (al igual

que se utiliza el sensor radar para detectar obstáculos u otros

vehículos) predecir donde estará el coche momentos después,

pudiendo prever que le sucederá cuando llegue a dicho punto, si

hay algún corte de tráfico, o algún otro imprevisto en la carretera.

Todas estas medidas se recogen en la iniciativa eSafety, impulsada

por la Comisión Europea para mejorar la seguridad en la carretera.

4. AUTOCONDUCCIÓN Las mismas tecnologías que asisten al conductor en los coches

inteligentes, se toman desde una nueva perspectiva en los modelos

de coches autónomos. La técnica es la misma; la filosofía cambia.

En lugar de alertar al conductor para que reaccione, ¿por qué no

reaccionar autónomamente sin intervención del conductor? Con

esta idea se empieza a trabajar en el coche sin conductor,

aplicando estas tecnologías y delegando toda la funcionalidad del

conductor sobre la inteligencia artificial del vehículo.

En la actualidad existen ya varios modelos de vehículos

autónomos que funcionan sin problemas sin la necesidad de un

conductor. En este documento vamos a analizar dos proyectos

concretos: el modelo de Google, por ser el que más atención está

acaparando en el sector de los vehículos autoconducidos, y el

modelo que están desarrollando investigadores de la Universidad

Carlos III de Madrid, por ser parte de nuestra universidad.

4.1 El coche sin conductor de Google El proyecto que presenta Google en el ámbito del coche autónomo

está liderado por el ingeniero Sebastian Thrun, director del

laboratorio de inteligencia artificial de la Universidad de

Standford y coinventor de sistema Google Street View. El mismo

grupo de desarrollo de este prototipo ya ganó en 2005 un premio

del Departamento de Defensa norteamericano gracias al vehículo

robótico Stanley. Los coches sin conductor de Google son legales

en el estado de Nevada desde junio de 2011, convirtiéndose en el

primer estado que permite la circulación de vehículos autónomos

y convirtiendo al proyecto de Google como pionero en la

comercialización de estos modelos.

El sistema de Google combina información obtenida directamente

de Google Street View con software de inteligencia artificial.

Cuenta con diversos sensores: videocámaras dentro del vehículo

(que permiten controlar el movimiento del vehículo y detectar

peatones, ciclistas y semáforos), un sensor LIDAR en el capó del

coche (que permite al vehículo detectar a más de 60 m en todas

las direcciones y así crear un mapa 3D para el vehículo), sensores

radar en la parte delantera un sensor de posición adherido a una

de las ruedas traseras y que ayuda a localizar la posición del coche

en la carretera. Los vehículos además circulan a la velocidad

indicada por los mapas proporcionados por Google y lleva

Figura 8. Toyota Prius modificado para operar como

Google driverless car

- 8 -

Page 14: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

instalado un sistema de control de distancias con sensores para

evitar colisionar con el vehículo delantero.

4.2 El proyecto de la UC3M La Universidad Carlos III de Madrid cuenta con un proyecto

propio en la carrera por el vehículo autónomo. El proyecto cuenta

con 3 modelos de vehículos: el IVVI, el iCab y el IVVI 2.0.

Figura 9. Vehículo Inteligente basado en Información Visual

(IVVI). Universidad Carlos III de Madrid

El IVVI (acrónimo en inglés de Vehículo Inteligente basado en

Información Visual) es el homólogo al coche desarrollado por

Google. Cuenta con un sistema estéreo blanco y negro, con

cámaras de barrido progresivo para poder captar imágenes en

movimiento y evitar así los problemas inherentes al vídeo

entrelazado, además de una cámara a color para otros temas cómo

la detección de señales de tráfico. Para detectar obstáculos como

peatones u otros vehículos en condiciones de visibilidad adversas,

cuenta con una cámara de infrarrojo lejano capaz de distinguir

objetos por el calor desprendido. En cuanto al interior, el sistema

cuenta con tecnología de monitorización del estado del conductor,

empleando para ello una cámara infrarroja. El cerebro del coche

viaja en el maletero, en donde se hayan dos PC encargados del

procesamiento de los sistemas de visión por computador. Para

conocer el estado del vehículo, éste incorpora además un sistema

GPS.

Entre las tecnologías que se incorporan en este proyecto están:

Sistema de alerta ante el alejamiento involuntario del

carril: se trabaja con imágenes que simulan una vista

aérea de la vía y se acompañan de algoritmos de

calibración automática. Se distinguen los carriles por la

discontinuidad de los niveles de gris de la imagen.

Sistema de detección de peatones: dada la enorme

diversidad de apariencia de los peatones y los cambios

en la forma de estos entre imágenes sucesivas, se

emplea un algoritmo basado en los Contornos Activos

(técnica empleada para delinear el contorno de un

objeto en una imagen 2D ruidosa), inicializados con los

resultados de un sistema estéreo y teniendo en cuenta la

simetría de las formas de los peatones.

Sistema de control del conductor: midiendo parpadeo

de los ojos, movimiento de la cabeza y apertura de la

boca para detectar el grado de atención.

Sistema de reconocimiento de señales de tráfico:

emplean Algoritmos Genéticos y Templado Simulado

como algoritmos de búsqueda para encontrar las señales

presentes en las imágenes captadas por una cámara a

color.

Sistema de control de velocidad variable: el

reconocimiento del vehículo delantero se realiza

mediante análisis de imágenes en lugar de por sensores

radar. El sistema se fusiona con el módulo de detección

de carriles para delimitar la búsqueda.

La segunda versión, el IVVI 2.0, mejora el diseño del vehículo e

incorpora como novedad que los sistemas de ayuda a la

conducción sólo informan al conductor cuando éste esté en una

situación real de peligro. Además se incorpora una sonda CAN-

bus (que obtiene información del funcionamiento del vehículo) así

como un sistema GPS-IMU (que informa sobre posición y

velocidad del vehículo) para determinar el estado del vehículo.

El tercer vehículo, el iCab, es un pequeño vehículo eléctrico de

golf que es controlado por un ordenador embarcado. La función

de estos vehículos será llevar de forma autónoma a los visitantes

del Campus, por lo que la autonomía estará limitada al entorno del

Campus y a entornos previamente conocidos.

5. EL FUTURO DEL COCHE En este documento se ha pretendido hacer un recorrido por las

distintas tecnologías que se están empleando en construir los

coches del futuro hoy. Sin embargo, aunque ya haya muchos

modelos que incorporen tecnología inteligente y ya estén

circulando vehículos sin necesidad de conductor, aún queda

mucho camino por recorrer.

En la línea de la iniciativa europea, considero que, una vez

perfeccionadas las técnicas que hacen que un vehículo sea capaz

de conducirse sólo, sin necesidad de una figura humana, hay que

trazar un plan para que los vehículos cooperen entre ellos. Del

mismo modo que una a persona que entiende la mecánica del

coche no le es suficiente para circular por carreteras con tráfico,

sino que tiene que aprender el reglamento de circulación, el coche

autónomo tiene que ir a la autoescuela. Es decir, el coche que se

conduce sólo debe también saber conducirse en compañía de otros

coches.

El período que se abre para los próximos años, en el que

convivirán vehículos autónomos y vehículos tradicionales, se

debe prestar especial atención en que los vehículos autónomos

comprendan la inexactitud del conductor humano y, del mismo

modo, lanzar un sistema de gestión de vehículos autónomos que

permita la cooperación entre los distintos automóviles. Como ya

adelantaba anteriormente, uno de los objetivos finales es la

eficiencia, entendida no sólo como el eficiente uso de los recursos

energéticos del automóvil sino también la gestión eficiente de las

infraestructuras: las redes de carreteras. Y entendiéndolas como

tales redes y aplicando un modelo similar al de las redes de

ordenadores, en las que una serie de sistemas se encargan de

gestionar el tráfico, se podría –en un futuro algo más lejano-

construir redes de carreteras inteligentes, donde los coches

autónomos sean enrutados como los paquetes en los routers.

- 9 -

Page 15: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

6. REFERENCIAS

[1] Dirección General de Tráfico (DGT). 2011. Accidentalidad

mortal en carretera. Informe oficial. Ministerio del Interior,

España.

DOI=http://www.dgt.es/was6/portal/contenidos/documentos/

seguridad_vial/estadistica/accidentes_24horas/resumen_anua

l_siniestralidad/resumen_siniestralidad037.pdf (última visita

noviembre 2011).

[2] European Transport Safety Council (ETSC). 2010. 2010

Road Safety Target Outcome:100,000 fewer deaths since

2001. 5th Road Safety PIN Report. Unión Europea.

DOI=http://www.etsc.eu/documents/pin/report.pdf (última

visita noviembre 2011).

[3] Organisation Internationale des Constructeurs d’Automobiles

(OICA). 2010. 2010 Production Statistics. Informe oficial.

DOI=http://oica.net/category/production-statistics/ (última

visita noviembre 2011).

[4] Dirección General de Tráfico (DGT). 2009. Anuario

Estadístico General 2009. Informe oficial., Ministerio del

Interior. España.

DOI=http://www.dgt.es/was6/portal/contenidos/documentos/

seguridad_vial/estadistica/parque_vehiculos/series_historicas

_parque/series_historicas_parque.pdf (última visita

noviembre 2011).

[5] Wikipedia. 2011. Automobile. Artículo colectivo.

DOI=http://en.wikipedia.org/wiki/Automobile (última visita

noviembre 2011).

[6] Wikipedia. 2011. Autonomous car. Artículo colectivo.

DOI=http://en.wikipedia.org/wiki/Autonomous_car (última

visita noviembre 2011)

[7] Wikipedia. 2011. The history of the automobil. Artículo

colectivo.DOI=http://en.wikipedia.org/wiki/History_of_the_

automobile (última visita noviembre 2011)

[8] Wikipedia. 2011. Vehicle Automation. Artículo colectivo.

DOI=http://en.wikipedia.org/wiki/Vehicle_Automation

(última visita noviembre 2011)

[9] Comisión Europea, Sociedad de la Información y Medios.

2010. i2010 Intelligent Car Initiative. Publicación Oficial.

DOI=http://ec.europa.eu/information_society/activities/intelli

gentcar/index_en.htm (última visita noviembre 2011)

[10] Wikipedia. 2011. Autonomous cruise control system.

Artículo colectivo.

DOI=http://en.wikipedia.org/wiki/Autonomous_cruise_contr

ol_system(última visita noviembre 2011)

[11] Wikipedia. 2011. Driver monitoring system. Artículo

colectivo.

DOI=http://en.wikipedia.org/wiki/Driver_Monitoring_Syste

m (última visita noviembre 2011)

[12] Lexus. 2011. Driver Monitoring System. Catálogo de

prestaciones. DOI=http://www.lexus.eu/range/ls/key-

features/safety/safety-driver-monitoring-system.aspx (última

visita noviembre 2011)

[13] Wikipedia. 2011. Google driverless car. Artículo colectivo.

DOI=http://en.wikipedia.org/wiki/Google_driverless_car

(última visita noviembre 2011)

[14] Universidad Carlos III de Madrid. 2010. Sistemas

Inteligentes de Transportes. Sitio Web.

DOI=http://www.uc3m.es/portal/page/portal/dpto_ing_siste

mas_automatica/investigacion/lab_sist_inteligentes/sis_int_tr

ansporte/ (última visita noviembre 2011).

- 10 -

Page 16: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

SISTEMAS EXPERTOS: MYCIN Ainhoa Sesmero Fernández

Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid Avda. De la Universidad, 30

28911, Leganés (Madrid-España)

[email protected]

Sandra Pinero Sánchez 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 se explica lo que es un sistema experto, sus principales usos y en concreto hablaremos del sistema MYCIN. Uno de los primeros sistemas expertos para la detección y tratamiento de enfermedades de la sangre.

Categorias y Descriptores de Temas

[Inteligencia artificial]: Sistemas expertos (SE) y aplicaciones en medicina.

Terminos Generales

Algoritmos, medidas, documentación, diseño, factores humanos y teoría.

Palabras clave

Sistema expertos, MAYCIN, medicina, organismos, conocimiento.

1. INTRODUCCIÓN

Los sistemas expertos son programas que emulan el comportamiento de un experto, como su propio nombre indica. Están desarrollados en un entorno de tal forma que son capaces de gestionar la propia base de datos de conocimiento, resolver un problema específico, producir nuevos conocimientos y explicar su razonamiento.

MYCIN fue el primer sistema experto que llego a funcionar con la misma calidad que un experto humano. Muchos de los sistemas posteriores utilizaron MYCIN para comparar lo que era un sistema experto.

MYCIN era un sistema estrictamente para investigación, fue desarrollado para ayudar a los médicos en el diagnóstico y tratamiento de meningitis y enfermedades bacterianas como explicaremos a lo largo de este documento.

2. SISTEMAS EXPERTOS

Por tener más definiciones de sistemas expertos, unida a la anterior podemos decir de forma más rigurosa: “Los Sistemas Expertos son programas que simulan el comportamiento de los sistemas expertos humanos a la hora de resolver problemaas. Por

lo general, los expertos solucionan los problemnas de su especialización basándose en la experiencia. Muy sucintamente, esta experiencia consta de conocimientos de hechos y de soluciones de problemas. Con el desarrollo de los Sistemas Expertos se pretende estructurar este conocimiento de hechos y soluciones de problemas de tal forma, que sean almacenados en un ordenador y procesables por un programa. Por lo tanto, los Sistemas Expertos son programas para ordenador, en los que se han reflejado conocimientos humanos. Pero ya que el conocimiento humano es extremadamente complejo, tenemos que limitarnos, en estas “imitaciones técnicas” a campos especializados muy delimitados.1 ”

Se puede dividir los componenetes de un sistema experto en tres subsistemas direfentes: base de conocimientos, motor de inferencias e interfase. (ver figura 1)

Figura 1

Existen tres tipos de sistemas expertos principalmente. Están los llamados “basados en reglas”, los “basados en casos” y los “basados en redes bayesianas”. En el conjunto de sistemas expertos basados en reglas nos encontramos con MYCIN del que hablaremos más adelante, pero también nos encontramos con DENDRAL que fue el primer sistema experto utilizado para propósitos reales y la inspiración de MYCIN.

2.1 Base del Conocimiento

En ella se representan todos los conocimientos acerca de un dominio concreto. Puesto que el ordenador no posee dichos

1 NEBENDAHL, D.,Sistemas Expertos, Vol. 2, Marcombo. Barna., 1991. p. 1.

- 11 -

Page 17: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

conocimientos es necesario que sean introducidos por un experto humano en el tema en cuestión.

Ya que como su nombre indica es la base, es necesario que las reglas establecidas sean lo más clara posibles para evitar ambigüedad, eficiencia, que se facilite la deducción a la maquina por inferencia, y fuerza de expresión para definir de forma adecuada y completa todos los elementos del universo del tema elegido.

Como vemos por lo descrito anteriormente, es complicado traducir a un lenguaje todos los conocimientos de un experto humano de forma que pueda entenderlo y reflexionar sobre ellos como si del humano mismo se tratara y para el cual muchos de sus actos son de forma intuitiva.

¿Qué se le pide o que se le podría pedir a un experto humano?

- Habilidad para llegar a una solución de la forma más rápida posible y a poder ser de forma certera. Para que sea de una forma rápida y certera obligamos al experto, no solo a que sepa en que campo se mueve si no, que tenga experiencia en el.

- Habilidad para explicar a las personas que no cuentan con ese conocimiento o esa experiencia los resultados obtenidos.

- Habilidad de poder reestructurar el conocimiento para que se adapte a las circunstancias.

- Habilidad para poder aprender de las experiencias. Los expertos deben aprender de sus experiencias propias, pero además también de las de los demás. Esto implica que un experto debe estar al día en cuanto a sus conocimientos.

2.1.1 Tipos de Conocimiento

Existen tres tipos de conocimiento para construir un sistema experto:

• Reglas

Declaraciones estructuradas en forma de oraciones condicionales.

• Estructuras

Contienen jerarquía de componentes y de atributos objeto que pueden ser asignados heredados de otras estructuras a través de diversos procedimientos.

• Lógica

Son expresiones con predicados, valores y átomos para evaluar hechos del mundo real.

2.2 Motor de Inferencias

El motor de inferencia lo que hace es decidir, interpretar y aplicar el conocimiento que se ha obtenido de la base del conocimiento a la base de los hechos para poder así obtener la solución adecuada, o dicho de otra forma, es el encargado de hacer uso de los hechos y las reglas que el experto ha integrado en

la base del conocimiento y controla de forma estratégica la el sistema de conocimiento.

Además de utilizar la base del conocimiento el motor de inferencias también hace de controlador de la consulta del usuario y decide el orden en el que se hacen las inferencias.

2.3 Interfase

Se encarga de proporcionar el usuario una interfaz lo mas amigable posible para poder interactuar con el sistema experto de una forma fácil y sencilla. Recordemos que lo que hacemos es solucionar problemas como lo solucionaría un experto, con esto se ayuda a las personas y usuarios del sistema, no queremos que le sea más difícil y complicada su utilización.

Esta interfase se encargara de gestionar las entradas y salidas al sistema experto.

2.4 Ventajas y desventajas de los SE

2.4.1 Ventajas de los SE

Los sistemas expertos tienen multitud de ventajas, entre ellas podemos ver:

- Un sistema experto puede replicarse tantas veces queramos. Una vez que un SE ha sido creado podemos replicarlo y usarlo por donde queramos.

- Por causa de su replica su coste a largo plazo es bajo. Aun que inicialmente crearlo puede ser caro, al poder ser replicado su coste a largo plazo es bajo.

- Los SE no se ven afectados por la edad, o el entorno que les rodea como los seres humanos por lo que también es una ventaja a considerar.

2.4.2 Limitaciones de los SE

En cuanto a sus limitaciones podemos hablar de:

- El lenguaje es algo problemático. Con un humano podemos conversar y explicarnos mejor, con un SE lo que hay esta en sus reglas y no podemos usar explicaciones, aclaraciones, gestos…

- Es difícil que un SE aprenda de sus errores. Para un ser humano la experiencia, los errores y los aciertos hace que vaya mejorando, en un SE esto es difícil de conseguir.

- Perspectiva global. Un experto humano es capaz de separar los datos realmente relevantes de los irrelevantes, un SE no. Y a estos podemos añadirle que no están abiertos a nueva fuente de datos para ver como se puede resolver un problema ya que sus datos están programados.

- Elevado coste y tiempo.

- 12 -

Page 18: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

2.5 Aplicaciones

En el siguiente cuadro podemos observar algunas de las áreas en las que los sistemas expertos tienen aplicación.

Veamos algunos ejemplos:

- En el campo de la medicina tenemos varios como DENDRAL, MYCIN o PUFF. De entre ellos el más famoso es MYCIN del que hablaremos en el siguiente apartado.

- En el campo de la programación tenemos sistemas como EURISKO, sistema que es capaz de aprender a medida que funciona y crear circuitos microelectrónicos tridimensionales.

- Sistemas militares tenemos TWIRL, que simula guerras completas y guía de mejores accionas para realizar en casi todas las situaciones.

- En la industria podemos ver RI, Programa utilizado para el descubrimiento de yacimientos petrolíferos bajo aguas marinas.

- En el ámbito económico tenemos el TRADING, una serie de reglas matemáticas bien estructuradas en las que se basan las operaciones en bolsa.

- En la geología encontramos el PROSPECTOR, utilizado para hallar yacimientos de minerales.

3. MYCIN

Es un sistema experto desarrollado por Edgar ShortLiffe en la Universidad de Stanford a principios de los años 70. Su objetivo es el diagnóstico de enfermedades infecciosas de la sangre. Incluso es capaz de razonar el proceso seguido para llegar a los diagnósticos y de recetar medicaciones personalizadas a cada paciente.

3.1 Tratamiento de infecciones sanguíneas

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

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

• A continuación hay que establecer al o los posibles organismos involucrados.

• Después escoger el conjunto de antibióticos que puedan ser necesarios.

• Por último elegir el antibiótico.

Sin embargo dicho proceso no es nada fácil. Esto se debe a que el cuerpo humano está normalmente poblado por bacterias. Se toma del paciente las muestras necesarias realizándole un cultivo. Por lo que el diagnóstico inicial se base en criterio clínico, fiebre y dolor.

Los resultados de las pruebas pueden tomar de 24 a 48 horas o más. Una vez que el médico dispone de los resultados debe elegir el tratamiento basándose en:

• Posibles identidades del organismo.

• La probabilidad efectiva del agente antimicrobiano contra este rango de posibilidades.

Una vez que el médico dispone de los resultados del cultivo debe de decir que tratamiento hay que aplicar al paciente. Sin embargo, este tratamiento puede tener diferentes síntomas o efectos en cada paciente con lo que es necesario cambiarle el tratamiento.

Por otra parte, es evidente que el médico necesite ayuda con la selección antimicrobiana. Con lo que el problema se continúa aunque haya habido intentos para educar a los médicos; pocos parecen ir a través del proceso metódico de decisión. La sobre-prescripción en EEUU durante los años 70 fue estimado con un factor de 10 a 20, con lo que el coste anual para pacientes y hospitales es monumental. Asimismo, la sobre-prescripción puede resultar en el desarrollo de cepas bacterianas resistentes.

El objetivo de MYCIN es asistir al doctor, el cual no tiene por qué ser experto en el área de los antibióticos con el diagnóstico y tratamiento de infecciones sanguíneas.

Este sistema experto consta fundamentalmente de tres componentes:

1) Un sistema de consulta entre el programa y el doctor. Este sistema consiste en realizar una serie de preguntas, entrega de conclusiones y dar consejos.

2) Un sistema de explicación por parte del sistema al doctor en el cual, éste responde a las preguntas del médico y justifica sus propios consejos.

3) Un sistema para conseguir las reglas, agregas nuevas reglas y cambiar las existentes.

- 13 -

Page 19: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

3.2 Sistema de consulta

Esta primera parte del MYCIN consiste en generar el conjunto de hipótesis relacionado con el organismo dañoso y de este modo realizar una serie de recomendaciones de terapias para estas hipótesis. Recalcar que MYCIN suele describirse incorrectamente como un programa de diagnóstico médico; en realidad es un programa para tratamiento de infecciones sanguíneas.

Para comprender mejor un sistema de consulta a continuación se muestra un ejemplo:

Primero MYCIN necesita cuatro datos del paciente ya que son esenciales para cualquier diagnóstico. Una vez que dispone de ellos realiza una serie de preguntas para conocer la disponibilidad del cultivo.

1) Nombre del paciente: David King

2) Edad: 34

3) Sexo: Varón

4) Raza Caucasiana

5) ¿Hay cultivos de David qué puedan estar relacionados con su enfermedad actual, en los que hayan llegado a crecer organismos en el laboratorio de microbiología? No

6) ¿Hay cultivos pendientes de David? Sí

7) ¿De qué lugar se tomó la muestra para el cultivo? LCR

8) Por favor, escriba la fecha y la hora de la toma del cultivo de LCR pendiente (m/d/a hora) Junio/24/84 7:00

9) ¿Se examinó un frotis cuando se obtuvo la muestra para el cultivo pendiente de LCR? Sí

10) ¿Se vio organismo en el frotis de la muestra sometida al cultivo de LCR pendiente? No

Antes que nada deja que sea el propio médico quién diga los hechos conocidos. Pero en este ejemplo al paciente no se le ha realizado ningún cultivo positivo con lo que MYCIN insiste

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

En cierto momento de la consulta llega a esto:

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

14) ¿Hay en David alguna evidencia objetiva reciente de signos neurológicos anormales (rigidez de nuca, coma, convulsiones,…), documentados por observación o examen clínico? Sí.

Hay que destacar que los cultivos LCR (cultivo de líquido cefalorraquídeo) están asociados con meningitis.

Las dos siguientes preguntas representan un enfoque más tradicional al diagnóstico por síntomas y tras tener la contestación de la pregunta 14, MYCIN informa de su primera conclusión: la infección del LCR es probablemente meningitis.

Después continúa con otra tanda de preguntas para identificar el organismo concreto causante de la infección meningítica.

34) ¿La meningitis se ha contraído en el hospital? No

35) ¿Es la historia clínica de David consistente con Epiglotis? No

36) ¿Es la historia clínica de David consistente con Otitis-media? No

37) ¿Ha estado alguna vez el paciente en una zona endémica de coccidiomicosis? Desconocido

38) ¿Se ha sometido David a esplenotomía? No

39) ¿Ha sufrido David quemaduras? Si He encontrado evidencia (REGLA 507) de que el tratamiento debe cubrir Diplococcues-pneumoniae causante de meningitis. He encontrado evidencia (REGLA 545) de que el tratamiento debe cubrir E. coli causante de meningitis. He encontrado evidencia (REGLA 545 REGLA 578) de que el tratamiento debe cubrir Pseudomonas-aeruginas causante de meningitis.

A partir de este momento ha finalizado la parte diagnóstica de la consulta. Ahora el programa se encarga de buscar el conjunto de medicamentos para acabar a los organismos sin perjudicar al paciente. Con lo que vuelve a realizar otra serie

- 14 -

Page 20: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

de preguntas. Aunque hay que destacar que estas preguntas son diferentes dependiendo de los resultados intermedios.

40) ¿Tiene David signos neurológicos focales? No

41) ¿Presenta David alguna reacción alérgica importante frente algún agente antimicrobiano? Sí

42) ¿Cuál es el más reciente aclaramiento de creatinio, en ml/min, que usted considera representativo de la función renal de David? 77

43) Peso de David en Kg 77

Dicho sistema de consulta consiste en una serie de reglas de producción, un conjunto de estructuras estáticas y dinámicas, y una estructura de control.

3.2.1 Reglas de producción

La gramática que se utiliza para realizar dichas reglas es representada internamente como código LISP. El cual es un lenguaje de alto nivel de procesamiento de listas en el cual MYCIN está implementado. La sintaxis que se maneja es la siguiente:

<rule>::= <premise> <action> <premise>::= ($AND <condition> ...

<condition>) <condition>::= (<predicate> <context>

<parameter> <value>) | ($OR <condition> ... <condition>)

<action>::= <conclusion> | <instruction>

Un ejemplo de esta estructura es el siguiente:

PREMISE: ($AND (SAME CNTXT GRAM GRAMNEG) (SAME CNTXT MORPH ROD)

(SAME CNTXT AIR AEROBIC)) ACTION: (CONCLUDE CNTXT CLASS ENTEROBACTERIACEAE TALLY .8)

Donde gram se refiere a la cepa del organismo, morph a la morfología del organismo y air a la aerobicidad del organismo. El símbolo CNTXT es una variable que es instanciada por el nombre que MYCIN le da al nodo contextual que está actualmente observando.

El médico, el cual utiliza este sistema experto, no observa dicho código. Simplemente las reglas son traducidas en el terminal del siguiente modo:

If 1) the stain of the organism is gramneg, and 2) the morphology of the organism is rod, and 3) the aerobicity of the organism is aerobic THEN there is strongly suggestive evidence (.8) that the class of the

organism is enterobacteriaceae.

Donde (0.8) indica el factor de confianza que posteriormente se explicara.

3.2.2 Estructuras de datos

� Estructuras de datos estáticas

Se encarga de guardar la información de definición. Dicha información es mantenida separada del conocimiento inferencial, en la forma de listas simples (enumeran todos los organismos y sitios estériles conocidos por el sistema), tablas de conocimiento (tienen los registros de ciertos parámetros clínicos y los valores que toman bajo diversas circunstancias) y un sistema de clasificación para parámetros clínicos.

� Estructuras de datos dinámicas

Son almacenados en un árbol de contexto, el cual se utiliza para organizar la información referente a un paciente en concreto. El consejo estará basado tanto en los cultivos, organismos, operaciones previas y tratamientos relacionados con el paciente, como en características personales del paciente. Con lo que el árbol ayuda a estructurar el problema clínico y relacionar un contexto con otro.

Figura 2

3.2.3 Estructura de control

� Encaminamientos hacia atrás

MYCIN tiene una regla meta de máximo nivel que define la tarea completa del sistema de consulta:

IF there is an organism which requires therapy, and consideration has been given to the possibility of aditional organisms requiring therapy THEN compile a list of possible therapies, and determine the best therapy in this list.

Para realizar una sesión de consulta es necesario seguir los siguientes pasos:

• Crear el contexto del paciente como el nodo de más alto nivel en el árbol de contexto.

• Intentar aplicar la regla meta a este contexto del paciente.

- 15 -

Page 21: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Al aplicar la regla meta es necesario evaluar primero su premisa, la cual necesita determinar si hay un organismo que requiera terapia.

Por lo tanto la consulta se realiza mediante una búsqueda a través de un árbol meta. La meta superior en la raíz del árbol es la parte de acción de la regla meta. Las sub-metas futuras hacia abajo en el árbol, las cuales determinar el organismo involucrado y el ver si es importante. Puede ocurrir que estas sub-metas tengan a su vez más sub-metas, como por ejemplo para descubrir las propiedades de la cepa y morfología del organismo. Las hojas del árbol son metas fácticas, también conocidas como hechos, que no pueden ser deducidos como por ejemplo datos de laboratorio. Como se puede observar en la figura (ver figura 2).

Se llama estructura de control de encadenamiento hacia atrás porque el programa razona hacia atrás desde lo que quiere probar hacia los hechos que necesita para hacerlo.

� Factor de certeza

A cada regla se le asocia un factor de certeza, CF, comprendido entre [-1, 1]. Este factor indica el grado de confianza en la conclusión obtenida, dada la evidencia de las premisas. Si es positivo indica un grado de confianza, mientras que si es negativo un grado de desconfianza.

3.3 Sistema de explicación

Este sistema consiste en explicar al doctor todo lo referente a la consulta. Dicho doctor puede realizar las preguntas generales o relacionadas con la consulta necesaria al programa no sólo al final de la consulta sino durante la consulta misma.

Estas preguntas pueden ser del estilo ¿Qué te hace pensar que el organismo puede ser un Proteus?Ante esta situación MYCIN escribe las reglas que utilizó, su grado de certeza en cada decisión y la última pregunta hecha. Todo esto lo puede hacer porque lleva un registro de las decisiones que se hace.

La facilidad que tiene MYCIN para responder a dichas preguntas está basada en sus habilidades para:

• Desplegar aquellas reglas que se están utilizando durante la consulta.

• Almacenar dichas reglas y asociarlas con eventos.

• Utilizar el indizado de reglas para recuperar reglas particulares como respuestas a peticiones.

3.4 Sistema de adquisición de reglas

En el programa se pueden agregar nuevas reglas de decisión o cambiar alguna presente. El usuario no las agrega en LISP sino en formato inglés. Es el propio programa que se encargar de traducirla.

Sin embargo puede ocurrir que una nueva regla puede contradecir a otra del sistema o simplemente agregar una regla presente en el programa. Con lo que Shortliffe discutió planes para proveer facultades para verificar los efectos que pueden causar al ingresar una nueva regla en su libro.

Randall Davis desarrollo estos planes ampliamente en un sistema llamado TEIRESIAS. Este sistema ayuda a un experto a depurar y llenar el conjunto de reglas de un sistema experto existente. Además utiliza generalizaciones acerca de la estructura de reglas existentes.

3.5 Ventajas y Desventajas

A este sistema experto realizaron una serie de investigaciones para saber su grado de fiabilidad. Los resultados obtuvieron una tasa de aciertos de aproximadamente el 65%. Con lo que mejoraba las estadísticas de los doctores no especializados en el diagnóstico de infecciones bacterianas, que ejercían la profesión en aquellos años.

Además este sistema experto presenta una representación sencilla y una facilidad de comunicación con el sistema.

Sin embargo, a pesar de los resultados favorables obtenidos, MYCIN fue cayendo en desuso. El motivo es las debilidades que tenía el programa y por cuestiones legales y éticas debido a que se dejaba en manos de una máquina la responsabilidad de la salud de una persona.

3.6 Ejemplo

A continuación mostramos un pequeño ejemplo realizado en Prolog para simular el comportamiento de un sistema experto en el ámbito de la medicina.

No es un ejemplo MYCIN porque es el propio sistema el que realiza las preguntas al usuario y con dichas respuestas concluye el organismo infeccioso y el posible tratamiento.

En el siguiente código se muestra los síntomas y posibles tratamientos de enfermedades habituales.

El código de dicho programa es el siguiente:

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

- 16 -

Page 22: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

sintomas_de(tos,pulmonia). sintomas_de(fiebre_alta,pulmonia). sintomas_de(escalofrios,pulmonia). sintomas_de(dificultad_respirar,pulmonia). sintomas_de(dolor_pecho,pulmonia). sintomas_de(dolor_muscular,pulmonia). sintomas_de(manchas_cuerpo,varicela). sintomas_de(dolor_cabeza,varicela). sintomas_de(fiebre_baja,varicela). sintomas_de(falta_hambre,varicela). sintomas_de(cansancio,varicela). sintomas_de(fiebre_alta,meningitis). sintomas_de(dolor_cabeza_intenso,meningitis). sintomas_de(nuca_riguida,meningitis). sintomas_de(vomitos_bruscos,meningitis). sintomas_de(somnolencia,meningitis). sintomas_de(perdida_conciencia,meningitis). tratamiento_de(gripe,reposo). tratamiento_de(gripe,beber_mucho_liquido). tratamiento_de(gripe,analgesicos). tratamiento_de(pulmonia,antibioticos). tratamiento_de(pulmonia,beber_mucho_liquido). tratamiento_de(pulmonia,reposo). tratamiento_de(varicela,analgesicos). tratamiento_de(varicela,crema_calman_picor). tratamiento_de(meningitis,hospital). tratamiento_de(meningitis,antibioticos).

Como se puede observar solamente tratamos cuatro enfermedades, gripe, pulmonía, varicela y meningitis.

Ejecutamos el programa y obtenemos:

En la imagen anterior preguntamos por los síntomas de la varicela y nos devuelve los cinco síntomas y con el orden exactamente igual que están en el programa. La última sentencia es false para indicar que ya no hay más síntomas para esa enfermedad.

A continuación consultamos el tratamiento que hay que seguir para pacientes con dicha enfermedad.

También podemos saber con dicho programa la enfermedad que se corresponde con el síntoma especificado, como se puede observar en la captura de arriba.

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

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

- 17 -

Page 23: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

4. CONCLUSIONES

Como podemos ver el uso de los sistemas expertos en la sociedad tiene numerosas ventajas.

Por un lado como ya se ha dicho en este documento los sistemas expertos no se cansan, no les afecta el medio están en continuo funcionamiento y si los programas bien son rápidos y además eficaces.

Pero entrando en el terreno que nos ocupa, ¿Cómo de lejos puede llegar un sistema experto en medicina?, ¿los pacientes se fiarían de una “máquina”, o prefieren el trato personal? Estas preguntas serian fácilmente contestables viendo la caída de MYCIN. ¿De quién es la culpa de un mal tratamiento?, ¿Del médico?, si es del experto, ¿Para qué queremos la máquina?

Desde nuestro punto de vista los sistemas expertos son un gran avance en la sociedad, parece mentira a lo que llega la sociedad con el paso del tiempo, es increíble que una máquina programada pueda diagnosticar, y ayudar a las personas como si de un experto humano se tratara y sobre todo es increíble que este programada para aprender. Aun así, después de las ventajas comentadas a lo largo del documento, e incluso las ventajas que nosotras en este mismo momento pudiéramos verle todavía desde nuestro punto de vista hay sistemas expertos, como en medicina que no consideramos que estén preparados para anular al experto, sencillamente podrían complementarlo, ayudarlo, o podrían usarse para otro fin médico.

Muchos expertos podrían pensar que los sistemas expertos no son tan buenos ya que si empezamos a usar los sistemas expertos los expertos del mundo se quedarían inservibles, o peor aún, solo servirían para darle conocimiento a una máquina.

5. REFERENCES

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

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

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

- 18 -

Page 24: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Diseño e implementación de un agente

inteligente Mario A.I.

Yuchen Du

Ingeniería de Telecomunicación

Universidad Carlos III de Madrid

[email protected]

Virginia Izquierdo Bermúdez

Ingeniería de Telecomunicación

Universidad Carlos III de Madrid

[email protected]

RESÚMEN

En este artículo se detalla el diseño y la

implementación de un agente inteligente capaz de

jugar al videojuego de Mario así cómo las técnicas

utilizadas para este diseño.

Categorías y descriptores

Java [Lenguaje de programación]

Términos generales

Árbol de decisión, agente inteligente

Palabras claves

1. INTRODUCCIÓN

Para la implementación de este agente inteligente

analizaremos el uso de técnicas utilizadas

frecuentemente en aplicaciones de Inteligencia

Artificial, tales como árboles de decisión.

Después, construiremos nuestro propio árbol de

decisión para la solución del problema de agente

inteligente planteado en la página web de 2011

Mario AI Championship.

A continuación, haremos un estudio detallado del

paquete de software proporcionado por dicha

página web, sobre el cual se apoya nuestra

implementación del agente de Mario inteligente.

Para ello, analizaremos agentes básicos

proporcionados dentro del paquete de software,

tales como el ForwarJumpingAgent el cual

simplemente salta hacia delante sin prestar

ninguna atención a los distintos elementos

presentes en escenario.

Adicionalmente, comprobaremos la funcionalidad

de diversos métodos y variables implementados en

otras clases dentro del paquete de software que

nos serán de gran ayuda para la construcción en

código Java de nuestro agente inteligente.

Por último, procedemos a implementar y

programar el árbol de decisión construido

previamente y a comprobar su funcionamiento

real en diversos escenarios utilizando las distintas

opciones de simulación disponibles.

2. ÁRBOLES DE DECISIÓN

Se trata de modelos de predicción en los cuales se

utilizan técnicas mediante las que se pueden

analizar decisiones secuenciales basadas en el uso

de resultados. Estos árboles son utilizados para

generar sistemas expertos, árboles de juegos o

búsquedas binarias. Mediante su uso, un sistema

dotado de Inteligencia Artificial podrá tomar

decisiones en situaciones previamente definidas.

En un árbol de decisión, se dispone de unas ciertas

entradas o situaciones, a partir de las cuales se

devuelve un resultado, convergiendo así en una

nueva situación donde una nueva decisión ha de

ser tomada. Esta acción será realizada tantas veces

como sea necesario, hasta llegar a un punto final,

llamado hoja en nuestro árbol de decisión, donde

se determina la acción a realizar tras el camino

tomado, aquella que se ajusta a la situación

requerida.

- 19 -

Page 25: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Un ejemplo de árbol de decisión, binario en este

caso, se muestra a continuación.

3. DISEÑO DEL AGENTE

Para el diseño de nuestro agente, haremos uso de

un árbol de decisión, no binario en éste caso,

donde se tomarán decisiones dependiendo del

escenario al que se enfrenta Mario en cada

momento, indicándole la acción a realizar para

tratar de llegar lo menos dañado posible al final

del nivel.

Aquí mostramos el árbol de decisión que hemos

diseñado para resolver el presente problema:

Cada nodo consiste en una posible situación a la

que se podría enfrentar el agente a lo largo de una

partida. A continuación, veremos detalladamente

en qué consiste cada una de ellas, para tener

especial cuidado a la hora de implementar nuestro

sistema, evitando implementaciones que puedan

dar lugar a comportamientos erróneos del agente

inteligente.

3.1 Obstáculos delante

Si mientras caminamos observamos un objeto el

cual no es franqueable, necesitaremos saltar para

evitar situaciones en las que nos encontraríamos

estancados. Será conveniente adelantarnos a esta

situación y no detectar el obstáculo cuando se

encuentra justo a nuestro lado, sino que convendrá

intentar predecir la presencia de obstáculos a

distancias un poco mayores. De ésta manera se

mejorará el rendimiento del sistema al tratar de

adelantarse en la resolución de problemas que

pueden ser evitados fácilmente con un simple

salto a tiempo.

3.2 Agujero delante

Al igual que en el caso anterior, será necesario

predecir cuándo hay agujeros para tratar de evitar

caer en ellos y consecuentemente perder de forma

definitiva la partida. Para superar estos agujeros,

tomaremos la misma acción que anteriormente, es

decir, saltar en el momento necesario para evitar

situaciones indeseadas una vez más.

3.3 Enemigos delante

Los enemigos también han de ser evitados para no

ser dañados innecesariamente. Por ello, cuando

veamos un enemigo próximo y siempre que sea

posible (antes de saltar siempre habría que

comprobar si dicha acción es conveniente, véase

3.4), saltaremos hacia delante para evitar ser

alcanzados por un enemigo que pueda dañar a

Mario y reducir su nivel en un rango (disparo →

grande → pequeño → fin de partida).

- 20 -

Page 26: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

3.4 Obstáculos encima

Será necesario también comprobar si cuando es

necesario saltar, es decir, si nos encontramos en

las situaciones 3.1, 3.2 o 3.3, esto es conveniente.

En concreto, necesitamos comprobar si cuando se

requiere realizar un salto, hay algún tipo de

enemigo u obstáculo infranqueable por encima de

Mario. Si se diese alguna de estas situaciones, lo

más sensato sería no saltar, sino retroceder, ya que

de lo contrario estaríamos arriesgando a ser

dañados de forma innecesaria (enemigo encima) o

saltar en vano (objeto infranqueable) y estar

expuesto de nuevo a los peligros detectados

anteriormente.

3.5 Estancados

Puede darse la situación en la que tratamos de ir

hacia delante y saltar para evitar algún tipo de

obstáculo, pero no podemos franquearlo por

encontrar nuevos impedimentos y quedarnos

estancados, por ejemplo si chocamos con un

objeto que se encuentra justo encima nuestro y a

la vez tenemos una pared o una tubería delante

nuestro no podríamos avanzar con un simple salto

hacia delante. Por ello, la acción correcta a

realizar si esta situación ocurre es la descrita en

3.7, es decir, retroceder y probar a saltar de nuevo.

3.6 Saltar

Si hemos llegado a esta hoja del árbol, la acción

final a realizar es saltar hacia delante. La duración

y por tanto la altura del salto depende del

propósito de dicho salto, ya que depende de si

estamos intentando evitar un obstáculo o si

queremos recoger más monedas, nos interesa

saltar alturas diferentes.

3.7 Retroceder

Finalmente, si llegamos a esta hoja, ya sea para

evitar una situación de estancamiento, o para

escapar de un enemigo cuando no era conveniente

saltar directamente, retrocederemos hacia detrás

durante un tiempo determinado para después

poder saltar hacia delante sin chocarnos con

ningún tipo de obstáculo que podríamos habernos

encontrado.

4. IMPLEMENTACIÓN DEL AGENTE

Para la implementación del agente en Java, con

ayuda del código proporcionado por 2011 Mario

AI Championship necesitaremos analizar ciertas

funciones y variables ya implementadas o

definidas, que nos serán de apoyo a la hora de

programar.

4.1 Escenario

En primer lugar, y como información más

importante será necesario observar el escenario en

el que se mueve Mario. Según las descripciones

de la página web de la competición, este escenario

consiste en una matriz de 22 x 22 en el que Mario

se encuentra siempre en el centro de la

perspectiva, es decir, en esta matriz siempre

aparece en la columna 11 y en la fila 11.

En esta matriz, podemos encontrar todo tipo de

información acerca de los objetos que aparecen en

pantalla, tales como enemigos, obstáculos o

monedas.

Existen diversos métodos que permiten acceder a

la información de esta matriz en todo momento

con distinto nivel de detalle, pudiendo seleccionar

el tipo de información que se quiere conocer, bien

sea los enemigos, los obstáculos o ambas a la vez.

Por simplicidad utilizaremos los siguientes

métodos: getLevelSceneObservationZ (int level),

para ver únicamente los obstáculos en el

escenario; getEnemiesObservationZ (int level), en

este caso para ver solo los obstáculos; y por

último, getMergedObservationZZ(int level, int

level) en el cual se pueden observar ambas

informaciones.

Es importante mencionar que, a diferencia de la

matriz de perspectiva completa de dimensiones 22

x 22, estas funciones que simplifican la tarea de

obtención de información dividiéndola según su

clase, nos devuelven una matriz de perspectiva de

dimensiones 19 x 19 con la información requerida

según la función invocada. Al igual que antes,

Mario siempre estará situado en el centro de

perspectiva, que en este caso pasa a ser la fila 10 y

la columna 10.

- 21 -

Page 27: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

La variable level permite modificar el nivel de

detalle de los objetos en la pantalla que queremos

obtener. Cuando se le asigna el valor 2 a esta

variable de entrada, los datos que devuelve la

función tendrán la forma más simple

(mayoritariamente 0s y 1s) facilitando su

procesamiento y manipulación posterior, mientras

que si se le asigna 0 a esta variable, los datos

obtenidos tendrán la máxima precisión, siendo

posible la distinción entre distintos tipos de

enemigos u obstáculos. A la hora de programar,

dependiendo del propósito y las necesidades de la

función determinada, utilizaremos un nivel de

detalle mayor o menor, para adaptarnos mejor a la

situación concreta.

4.2 Variables utilizadas

A parte de estos tres métodos que utilizamos

para obtener información acerca del entorno en el

que se desenvuelve Mario, aprovecharemos

también otros atributos que se encuentran

distribuidos en el paquete de software Mario AI:

4.2.1 isMarioOnGround

Indica si en un momento determinado Mario está

sobre una plataforma fija, o si está en medio del

aire. Este atributo nos será de gran utilidad para

determinar si estamos preparados para detectar

nuevos enemigos u obstáculos y saltar de nuevo, o

si por el contrario tenemos que prestar mayor

atención a la zona donde Mario va a caer,

comprobando la proximidad a enemigos y

decidiendo si se debe retroceder hacia atrás para

evitar un posible choque y daño indeseado.

4.2.2 Mario.fire

Este atributo nos permite saber si Mario aún

mantiene en su situación inicial con capacidad de

disparo, o si ya ha sufrido daños y

consecuentemente es grande o pequeño,

inhabilitado para disparar. Esto es útil ya que, en

el caso de que podamos disparar, sería muy

interesante disparar continuamente para destruir

los enemigos que vienen de enfrente y por tanto

para aumentar las posibilidades de sobrevivencia.

Nótese que, al tratarse el botón de disparar el

mismo que sirve para correr, mientras Mario

disponga de la opción de disparar, lo hará

repetidamente mientras que va avanzando

rápidamente por el nivel. Después de sufrir algún

daño y perder la capacidad de disparo, perdemos

protección contra los enemigos que vienen de

frente, por lo que dejaremos de correr para

mejorar nuestra reacción contra las distintas

situaciones adversas que puedan tener lugar.

4.2.3 marioEgoRow y marioEgoCol

Estas dos variables indican la posición de Mario

en la matriz de perspectiva de escenario en un

momento determinado.

4.2.4 action

A parte de los atributos anteriores que utilizamos

para obtener información acerca del escenario

presente, también cabe mencionar que, para

indicar las acciones que debe tomar Mario en cada

momento, modificamos el array de variables

boolean action, que contiene la información

acerca de qué botones deben ser pulsados durante

una ronda determinada. Los que utilizamos

principalmente son:

action[Mario.Key_RIGHT]

action[Mario.Key_LEFT]

action[Mario.Key_JUMP]

action[Mario.Key_SPEED]

Que tienen nombres bastante intuitivos.

4.3 Enemigos

Siempre que sea posible, como dijimos en la parte

de diseño, al encontrarnos con un enemigo al lado

nuestro trataremos de saltar para no ser dañados.

En caso de que esto no fuera posible, bien porque

hay más enemigos encima o porque tenemos

algún obstáculo que nos lo impide, nos

desplazaremos hacia atrás para poder huir de él y

tomar distintas decisiones más adelante. Por lo

general, esta funcionalidad no es utilizada muy

frecuentemente, pero en ocasiones resulta de vital

importancia ya que nos evita ser dañados por un

estrecho margen. También se da la situación

cuando estamos cayendo después de un salto, que

Mario hace contacto muchas veces (sin llegar a

saltar encima) con un enemigo justo cuando está a

punto de tocar el suelo, por lo que es imposible - 22 -

Page 28: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

realizar otro salto para evitar ser dañado (para

realizar un salto es necesario que Mario esté sobre

alguna plataforma firme). Para prevenir y

solucionar este peligro, analizamos la posibilidad

de que algún enemigo se encuentre alrededor de la

zona de aterrizaje, y cuando se dé el caso,

trataremos de retroceder o bien frenar la

trayectoria y así evitar algunos enemigos que

podrían habernos atacado si simplemente

hubiéramos seguido el salto con nuestra

trayectoria inicial.

4.4 Obstáculos o Monedas

Aparte de los enemigos, a la hora de comprobar

obstáculos, nos interesa diferenciar si nos

encontramos ante un objeto sólido, al que haría

falta realizar un gran salto por encima para

superarlo y así poder seguir avanzando en el nivel,

o de monedas, que en vez de esquivarlas lo que

realmente nos interesa es recolectar la mayor

cantidad posible, realizando saltos pequeños para

intentar coger todas las monedas cercanas. En este

caso, esta tarea es relativamente fácil, pues

utilizando un nivel de detalle 2, bajo la presencia

de monedas, el método para obtener información

de escenario devuelve 2s en aquellas posiciones

donde éstas se encuentran, diferenciándolas

fácilmente de los obstáculos indeseados, que

corresponderían a ‘1’s, evitando franquearlas de

forma innecesaria.

4.5 Flores enemigas

Por lo general, para obtener la matriz con la

información del escenario será suficiente con un

nivel de detalle 2, pero en ocasiones, como por

ejemplo cuando tratamos de evitar las flores

enemigas que se esconden en las tuberías, nos

interesara saber específicamente si los enemigos

que encontramos delante se tratan de dichas flores

o no, ya que dependiendo de eso actuaremos de

una forma u otra: en el caso de que se trate de

enemigos comunes, no habría ningún problema y

por tanto actuaremos igual que ante el resto de

enemigos, mientras que cuando detectamos flores

enemigas, es mucho más seguro esperar a que se

refugien de nuevo en las tuberías antes de avanzar

de nuevo hacia delante.

Del código fuente del paquete software, podemos

saber que cuando se utiliza un nivel de detalle 0,

una flor enemiga será “traducida” con el valor de

91 cada vez que se invoque el método

getEnemiesObservationZ(...).

De esta forma, cuando detectamos un obstáculo

delante, y cuando no observamos ningún

impedimento para saltar por la existencia de

obstáculos, procedemos a comprobar la existencia

de flores enemigas en las celdas siguientes. En

caso de encontrarlas, nos pegaremos a la tubería,

esperaremos a que dichas flores bajen y cuando ya

el camino está libre, saltaremos hacia delante.

5. RESULTADOS

Una vez implementado nuestro sistema podemos

comprobar cómo este funciona aceptablemente,

siendo capaz de terminar diversos escenarios, con

distintas dificultades y obstáculos sin ser apenas

dañados. También es cierto que nuestro agente no

es infalible y en ocasiones comete fallos que le

suponen la pérdida de fuerza, sin embargo las

consecuencias no son tan graves en comparación

con la dificultad de la implementación de

soluciones a dichos problemas.

Por tanto, hemos tratado de llegar a una

implementación en la que exista un compromiso

entre funcionalidad y dificultad, consiguiendo, en

nuestra opinión una solución muy acertada en

cuanto a resolución de problemas por parte de

Mario y la dificultad a la que su implementación

está sometida.

No obstante, comentaremos posteriormente ciertas

mejoras que pueden realizarse para conseguir un

agente mucho más inteligente y capaz de superar

problemas mayores a los que nuestro agente puede

enfrentarse.

Antes de eso, mostraremos algunas de nuestras

implementaciones más destacadas, demostrando

su correcto funcionamiento, obteniendo el efecto

deseado según lo explicado anteriormente,

atendiendo a las decisiones que se toman tras

recorrer nuestro árbol de decisión definido.

- 23 -

Page 29: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

5.1 Enemigos

La tarea básica para hacer que nuestro agente

funcione es tratar de esquivar enemigos que se

acercan hacia nosotros, a nivel del suelo. Para

ello, antes de que estos nos ataquen, daremos un

salto evitándolos de forma exitosa, tal y como se

muestra en las imágenes a continuación:

5.2 Flores enemigas

Otra acción a realizar, es esquivar flores

enemigas, emergente de las tuberías del escenario

de Mario. Para ello, ya hemos explicado que

trataremos de esperar, hasta que esta se ha

escondido para saltar, evitando que la flor nos

dañe:

- 24 -

Page 30: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

5.3 Situaciones de estancamiento

Otra situación muy incómoda es cuando Mario se

encuentra atascado entre varios bloques

irrompibles, ya que si no se toman medidas, Mario

se mantendrá en la misma posición infinitamente,

pues ni puede seguir hacia delante ni puede saltar,

al chocar con algún bloque de su alrededor. Por

ello, será necesario hacer que Mario retroceda

cuando se encuentre en esta situación, pudiendo

completar el escenario tal y como se muestra:

6. POSIBLES MEJORAS

Debido a limitaciones tales como el tiempo

disponible, nuestra implementación no resulta ser

la más idónea, ya que existen detalles en el

funcionamiento del sistema que podrían ser

mejorados realizando implementaciones más

complejas.

Una de las posibles mejoras que a priori parece

asequible es la siguiente: del motor de generación

de niveles automático que utiliza el paquete de

software, muchas veces genera escenarios en el

cual hay muchos enemigos en distintos niveles

moviéndose hacia la izquierda (hacia Mario) y

cayéndose. Utilizando el agente que hemos

implementado, se necesita mucha suerte para

poder esquivar todos, ya que no es nada fácil

evitar contacto con 5 o más enemigos cayendo. A

simple vista, una posible solución sería: cuando se

detecta una gran cantidad de enemigos por

delante, en vez de seguir hacia delante, Mario

puede permanecer quieto o incluso retroceder un

poco, y esperar hasta que los enemigos hayan

caído sobre plataforma firme para seguir

avanzando, utilizando nuestro árbol de decisión

para esquivar los enemigos.

Sin embargo, esta solución no es óptima del todo.

Uno de los problemas generados por intentar

esquivar los enemigos saltándolos es que, cuando

hay una presencia numerosa de enemigos, es

complicado evitar el contacto con todos. Nosotros

intentamos detectar si en el aterrizaje de un salto

es posible hacer colisión con algún enemigo y así

cambiar la trayectoria del salto. Pero esto no evita

colisiones al 100% y muchas veces perdemos vida

justo en los instantes siguientes de un salto.

Además, en los niveles avanzados que se generan

con el paquete de software, son muy comunes los

enemigos con alas que pueden moverse en todas

las direcciones. Dado el caso, no sería de utilidad

esperar a que todos los enemigos aterricen, ya que

es algo que no ocurriría.

Para hacer frente a esta situación y resolver los

problemas que puedan presentarse, es necesario

diseñar una implementación más compleja: haría

falta conocer las posiciones de todos los enemigos

- 25 -

Page 31: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

y los obstáculos presentes y, teniendo en cuenta

las direcciones de movimiento de los enemigos,

calcular hacia que posiciones sería conveniente

saltar (ya sea un hueco entre los enemigos o saltar

sobre algún enemigo, aunque esta última opción

implicaría un pequeño salto forzado después de

matar al enemigo, que habría que tener en cuenta

para contemplar posibles resultados). Al mismo

tiempo, habría que tener conocimiento sobre las

capacidades de Mario, es decir, sus velocidades de

movimiento y de salto, para ver de la lista de

posiciones seguras hacia dónde es factible saltar.

Y eso no es todo: habría que tener un control

exhaustivo en todo momento sobre las posiciones

futuras de los enemigos y de Mario para así evitar

cualquier sorpresa.

Como podemos imaginar, esta solución, que

funcionaría de forma correcta en todas las

situaciones posibles, requiere una enorme

complejidad ya que se necesitaría estudiar

ecuaciones sobre los movimientos de Mario y los

enemigos, y se escapan del rango de

requerimientos de este trabajo. En cualquier caso,

el sistema para evitar enemigos que hemos

implementado funciona razonablemente bien para

niveles de dificultad limitada, superando incluso a

las capacidades de un jugador humano con poca

experiencia.

También existen otros aspectos en donde se puede

implementar mejoras, tales como recolectar

champiñones y flores para mejorar el estado de

Mario, así como colectar todas las monedas que

aparecen en pantalla. Sin embargo, todo eso

aumentaría en gran medida la complejidad del

sistema, por lo que para el presente diseño se ha

decidido por un sistema más simple y al mismo

tiempo veloz, que es capaz de resolver problemas

de cierta magnitud.

7. CÓDIGO FUENTE

/** * Inteligencia en Redes de Comunicaciones * Curso 2011 - 2012 * Diseño e Implementación de un agente inteligente Mario A.I. * @author - Yuchen Du 100073084 * @author - Virginia Izquierdo Bermúdez 100072580 */ package ch.idsia.agents.controllers; import ch.idsia.agents.Agent;

import ch.idsia.benchmark.mario.engine.sprites.Mario; import ch.idsia.benchmark.mario.environments.Environment; import ch.idsia.benchmark.mario.environments.MarioEnvironment; public class AiAgent extends BasicMarioAIAgent implements Agent { // Variable para controlar el salto int trueJumpCounter = 0; // Variable para controlar retrocesos int trueBufferCounter = 0; public AiAgent() { super("AiAgent"); reset(); } /**

* Metodo de inicializacion Estado inicial: todos los botones sin presionar

*/ public void reset() {

action = new boolean[Environment.numberOfKeys];

action[Mario.KEY_RIGHT] = false; action[Mario.KEY_SPEED] = false; action[Mario.KEY_JUMP] = false; trueJumpCounter = 0; trueBufferCounter = 0; } /** * Metodo para chequear si hay enemigos delante * * @param environment

* : el entorno en el que se * desenvuelve Mario. De ahi sacaremos * la informacion necesaria para * interactuar con el resto de * elementos que aparecen en la * pantalla. * @return boolean existencia de un enemigo * cercano Simplemente comprobamos * la existencia de enemigos en la * posicion consecutiva del array

*/ private boolean checkEnemiesFront(Environment environment) {

byte[][] enemies = environment.getEnemiesObservationZ(2); if (enemies[marioEgoRow][marioEgoCol + 1] != 0) {

return true; } else { return false; } } /** * Metodo para chequear si hay obstaculos * * @param environment

* : el entorno en el que se * desenvuelve Mario. * @return boolean existencia de obstáculos * delante Comprobamos la * existencia de elementos bloqueantes * por delante de la posicion * actual de la figura de Mario * Prestamos atencion a si el elemento * se trata de una moneda ya que de ser * asi, no se le considera como

* un elemento bloqueante */

private boolean checkObsFront(Environment environment) {

byte[][] obstacles = environment.getLevelSceneObservationZ(2); if ((obstacles[marioEgoRow][marioEgoCol + 1] != 0 && obstacles[marioEgoRow][marioEgoCol + 1] != 2) || (obstacles[marioEgoRow][marioEgoCol + 2] != 0 && obstacles[marioEgoRow][marioEgoCol + 2] != 2) || (obstacles[marioEgoRow][marioEgoCol + 3] != 0 && obstacles[marioEgoRow][marioEgoCol + 3] != 2) || (obstacles[marioEgoRow - 1][marioEgoCol + 1] != 0 &&

- 26 -

Page 32: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

obstacles[marioEgoRow - 1][marioEgoCol + 1] != 2)) {

return true; } else { return false; } } /** * Metodo para chequear si hay un agujero delante * * @param environment

* : el entorno en el que se * desenvuelve Mario. * @return boolean existencia un agujero delante * Verificamos si hay en la * columna delante existe una posicion * vacia

*/ private boolean checkGapFront(Environment environment) {

byte[][] obstacles = environment.getLevelSceneObservationZ(2); if (obstacles[marioEgoRow + 1][marioEgoCol + 1] == 0) {

return true; } else { return false; } } /** * Metodo para chequear si se puede saltar * * @param environment * : el entorno en el que se * desenvuelve Mario.

* @return boolean si debemos saltar Comprobamos * la existencia de enemigos * por encima de la posicion de Mario. * Si se diera la situación, no

* se debe saltar para evitar colision. */

private boolean checkJump(Environment environment) {

byte[][] things = environment.getEnemiesObservationZ(2); if (things[marioEgoRow - 1][marioEgoCol] != 0 || things[marioEgoRow - 2][marioEgoCol] != 0

|| things[marioEgoRow - 3][marioEgoCol] != 0) {

return false; } else { return true; } } /**

* Metodo para chequear si se ha llegado a una * situacion de estancamiento

* * @param environment

* : el entorno en el que se * desenvuelve Mario. * @return boolean si Mario esta estancado en * algun punto Verificamos si * Mario se encuentra en una situacion * de estancamiento, es decir, * si por delante de el hay un muro * infranqueable, pero al mismo * tiempo existe elementos irrompible * por encima de el

*/ private boolean stucked(Environment environment) {

byte[][] things2 = environment.getLevelSceneObservationZ(2); if ((things2[marioEgoRow - 2][marioEgoCol] == -60 || things2[marioEgoRow - 3][marioEgoCol] == -60)

&& (things2[marioEgoRow][marioEgoCol + 1] == 1 && things2[marioEgoRow - 1][marioEgoCol + 1] == 1)) {

return true; } else { return false; } }

/** * Metodo para comprobar si hay monedas cerca * * @param environment * : el entorno en el que se * desenvuelve Mario.

* @return boolean si hay monedas cerca * Comprobamos en los alrededores de la * posicion actual de Mario la * existencia de monedas

*/ private boolean areCoins(Environment environment) {

byte[][] coins = environment.getLevelSceneObservationZ(2); if (coins[marioEgoRow - 1][marioEgoCol] == 2 || coins[marioEgoRow - 1][marioEgoCol + 1] == 2) {

return true; } else { return false; } } /**

* Metodo para comprobar si hay enemigos cerca * en los instantes finales de

* un salto * * @param environment

* : el entorno en el que se * desenvuelve Mario. * @return boolean la existencia de peligro * cercana Comprobamos si hay * enemigos alrededor de la zona en * donde caeria mario

*/ private boolean checkWhileFalling(Environment environment) {

if (things[marioEgoRow + 1][marioEgoCol + 1] != 0 || things[marioEgoRow + 1][marioEgoCol + 2] != 0 || things[marioEgoRow + 1][marioEgoCol + 3] != 0 || things[marioEgoRow + 2][marioEgoCol + 3] != 0 || things[marioEgoRow + 2][marioEgoCol + 2] != 0) {

return true; } else { return false; } } /**

* Metodo para comprobar si ha salido una flor * enemiga de alguna de las

* tuberías cercanas * * @param environment

* : el entorno en el que se * desenvuelve Mario. * @return boolean la existencia de una flor * carnivora Chequeamos en los * puntos cercanos si hay alguna flor * enemiga

*/ private boolean checkFlower(Environment environment) {

byte[][] things = environment.getEnemiesObservationZ(0); if (things[marioEgoRow - 2][marioEgoCol + 1] == 91 || things[marioEgoRow - 3][marioEgoCol + 1] == 91 || things[marioEgoRow - 4][marioEgoCol + 1] == 91 || things[marioEgoRow - 2][marioEgoCol + 2] == 91 || things[marioEgoRow - 3][marioEgoCol + 2] == 91 || things[marioEgoRow - 4][marioEgoCol + 2] == 91) {

return true; } else { return false; } } /**

* Metodo auxiliar para imprimir el array por la * pantalla

- 27 -

Page 33: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

* * @param environment

* : el entorno en el que se * desenvuelve Mario.

* @return void */ private void printout(Environment environment) {

byte[][] things = environment.getLevelSceneObservationZ(2);

for (int i = 0; i < 19; i++) { System.out.println(""); for (int j = 0; j < 19; j++) {

System.out.print(things[i][j]+" ");

} } } /**

* Metodo para decidir en cada momento las * acciones a tomar

* * @return boolean[] el array indicando los * botonos que se deben mantener * pulsado Utilizando los métodos * definidos anteriormente, * comprobamos la situacion en la que se * encuentra Mario en cada * momento y decidimos los botones que * debemos accionar

*/ public boolean[] getAction() {

MarioEnvironment env = MarioEnvironment.getInstance(); // Si Mario se dispone de la habilidad de // disparo, // encendemnos y apagamos alternativamente // el botón

// de SPEED y así disparar continuamente if (Mario.fire) {

action[Mario.KEY_SPEED] = !action[Mario.KEY_SPEED];

} // En caso contrario, avanzamos a // velocidad regular

else { action[Mario.KEY_SPEED] = false; }

// Primero comprobamos si Mario esta // retrocediendo

// para evitar un enemigo o un obstaculo if (trueBufferCounter > 0) { trueBufferCounter--;

// Si este contador se ha llegado // a 0, dejamos de mover // hacia la izquierda y volvemos // hacia la derecha

if (trueBufferCounter == 0) { action[Mario.KEY_RIGHT] = true; action[Mario.KEY_LEFT] = false;

} }

// Ahora comprobamos si Mario estaba // saltando,

// gracias al contador trueJumpCounter if (trueJumpCounter > 0) { trueJumpCounter--;

// Si mario ya se encuentra sobre // alguna plataforma,

// reseteamos el contador if (isMarioOnGround) { trueJumpCounter = 0; }

// Si el contador esta a 0, // dejamos de pulsar el boton de // saltar

if (trueJumpCounter == 0) { action[Mario.KEY_JUMP] = false;

} }

// Si no se da lugar ninguna de las // situaciones anteriores, // Comprobamos si hay enemigos, obstaculos // o agujeros delantes

// y asi determinar las acciones a // desarrollar else if ((checkEnemiesFront(env) || checkObsFront(env) || checkGapFront(env)) && trueBufferCounter == 0) {

if (isMarioOnGround == false) { // Si hay enemigos // cercanos al punto de // caida,

// retrocedemos if (checkWhileFalling(env)) {

action[Mario.KEY_RIGHT] = false; action[Mario.KEY_LEFT] = true; trueBufferCounter = 1; } }

// Si se puede saltar con // seguridad y Mario no se // encuentra en una situacion de // estancamiento, movemos hacia // la derecha

action[Mario.KEY_RIGHT] = true; // Si no hay una flor // enemiga fuera de una // tuberia, saltamos // En caso contrario // esperamos hasta que // la flor se refugie

if (!checkFlower(env)) { action[Mario.KEY_JUMP] = true; trueJumpCounter = 7; } }

// Si no es asi, retrocedemos // hacia la izquierda

else { action[Mario.KEY_RIGHT] = false; action[Mario.KEY_LEFT] = true; trueBufferCounter = 3; } } // Si hay monedas cerca

else if (areCoins(env) && trueBufferCounter == 0) {

// Si saltar no implica ningun // peligro, // saltamos un poco para coger // mas monedas

if (checkJump(env)) { action[Mario.KEY_RIGHT] = true; action[Mario.KEY_JUMP] = true;

trueJumpCounter = 1; } }

// Finalmente si no pasa nada, // simplemente

// movemos hacia la derecha else if (trueBufferCounter == 0) { action[Mario.KEY_RIGHT] = true; action[Mario.KEY_JUMP] = false; } return action; } }

8. REFERENCIAS

[1] Página web de Mario AI Championship 2011:

http://www.marioai.org/

[2] Ejemplo del árbol de decisión tomado:

http://dms.irb.hr/tutorial/tut_dtrees.php

- 28 -

Page 34: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

JUGADOR VIRTUAL DE PÓKER TEXAS HOLD’EM Alberto Álvarez Polegre

Ingeniería de Telecomunicación Universidad Carlos III de Madrid

[email protected]

Lucas Bernalte Pérez Ingeniería de Telecomunicación Universidad Carlos III de Madrid

[email protected]

David Díaz Chinea Ingeniería de Telecomunicación Universidad Carlos III de Madrid

[email protected]

RESUMEN El póquer es un juego de cartas de los llamados de "apuestas", en

los que los jugadores, con todas o parte de sus cartas ocultas,

hacen apuestas sobre una puja inicial, recayendo la suma total de

las apuestas en el jugador o jugadores con la mejor combinación

de cartas.

Palabras Clave

Póker, Texas Hold „em, probabilidad, jugada, mano, estrategia.

1. INTRODUCCIÓN El Texas Hold‟em es una variación del conocido juego de cartas

conocido como Póker. En este juego se utilizan las 52 cartas de la

baraja inglesa, las cuales tienen los valores, de menor a mayor, 2,

3, 4, 5, 6, 7, 8, 9, 10, J, Q, K y A, en las cuatro combinaciones de

palos diferentes: trébol , corazones , picas , y diamantes .

En el póker se realizan una serie de apuestas en las que el jugador

que obtenga la mejor combinación de cartas será el ganador de

esta, llevándose el bote acumulado que será la suma de todo lo

apostado por el resto de jugadores. Además el jugador también

puede obtener el premio si el resto de jugadores de la mesa se ha

retirado de la partida. Cada jugador será eliminado si pierde todas

las fichas que ha apostado.

2. REGLAMENTO Esta variación se caracteriza sobre todo porque cada jugador

obtiene dos cartas boca abajo al inicio de la partida, que serán

siempre fijas. Dichas cartas serán reveladas al final de la ronda

por parte de los jugadores que queden al cerrar las apuestas, en

caso de que todos se retiren si el que no lo haga lo desea, o si los

apostantes que siguen en la partida apuestan todas sus fichas

restantes (jugada conocida como All-In).

A partir de aquí cada jugador comienza apostando a continuación

de la ciega grande (jugador que parte obligatoriamente con la

apuesta mínima, de modo que el jugador solo puede igualarla o

aumentarla si no quiere retirarse) siguiendo las agujas del reloj. A

esta ronda se le denomina, en términos del juego, Pre-Flop, y si

quedan más de dos jugadores tras esta se seguirá apostando.

Posteriormente se inicia una fase de tres rondas conocida como

Post-Flop, cada una con sus respectivas rondas de apuestas y ,en

cuanto a las mismas, a partir de aquí el jugador puede pasar (no

apostar nada) solo si los anteriores han pasado o es él el primero;

retirarse de la partida, igualar la apuesta o subirla. En este caso la

ronda la iniciará el jugador a la izquierda de la ciega grande,

conocido como ciega pequeña (apuesta inicialmente la mitad que

la grande). La primera de estas tres rondas se conoce como Flop y

en ella se mostrarán en la mesa tres cartas sacadas del montón de

cartas que no se ha repartido. Posteriormente pasamos al Turn

donde solo se enseña una carta conocida como Cuarta Calle. Por

último, se gira una última carta, Quinta Calle, en la ronda llamada

River, formando las cinco Cartas Comunes. Con tres de estas

cartas mostradas combinadas con las dos obtenidas al principio de

la partida el jugador deberá formar su mano de cartas con las que

intentar ganar la partida. Así pues a partir de aquí se presentan las

manos posibles que puede tener cada jugador, ordenadas de mayor

a menor valor.

Escalera Real de Color

La mejor jugada del póker. Comprende las cartas 10, J, Q, K y A

del mismo palo.

Escalera de Color

Cinco cartas de orden consecutivo del mismo palo. Cuanto mayor

sea la carta más alta de la escalera, mejor es el ranking de la

mano. En este ejemplo la carta más alta es el 10; vencería a una

escalera de color con un 9 de carta más alta.

Póker

Cuatro cartas del mismo valor. Cuanto más alto es el valor de

estas cuatro cartas, más alto es el ranking de la mano. En caso de

empate gana la mano cuya quinta carta sea más alta.

- 29 -

Page 35: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Full

Esta jugada reúne 3 cartas de un valor y 2 de otro. Cuando se

comparan dos fulls, gana el que tiene el valor de las tres cartas

más alto. Así pues, un full 7-7-7-2-2 supera a un full 5-5-5-A-A.

En caso de que los tríos sean del mismo valor en dos manos, gana

la mano que tenga la pareja de cartas restante más alta, con lo que

por ejemplo 7-7-7-A-A superaría a 7-7-7-K-K.

Color

El color lo forman cinco cartas no consecutivas del mismo palo.

Gana el desempate entre dos colores aquel que tenga la carta más

alta.

Escalera

Para la escalera se precisan cinco cartas de valor consecutivo.

Entre dos escaleras gana la que sea más alta. Por otra parte, el As

puede usarse para formar la escalera A-K-Q-J-10, que sería una

Escalera Real, y también la escalera 5-4-3-2-A.

Poquer.com.es. xx

Trío

Lo componen tres cartas del mismo valor. Entre dos tríos gana el

que está formado por cartas más altas. Si ambos tríos están

formados por cartas del mismo valor, decide el desempate la carta

más alta de las dos restantes de que consta la mano, y si esas dos

cartas fueran iguales, se compararían las quintas cartas de cada

mano.

Doble Pareja

Una doble pareja está formada por dos cartas del mismo valor en

combinación con otras dos cartas también de un mismo valor,

pero diferente al valor de las dos primeras. Cuando dos manos

muestran doble pareja, gana la mano cuya pareja es más alta.

Como siempre, en caso de empate decide la carta más alta.

Pareja

Dos cartas del mismo valor. Cuanto más alto es el valor de la

pareja, más alto es su ranking. En caso de igualdad, se recurre a la

carta más alta.

Carta Más Alta

Cuando ningún jugador consigue formar una de las jugadas arriba

expuestas, gana la mano aquel que tiene la carta más alta. Y en

caso de empate, se usa la siguiente carta más alta.

3. OBJETIVO Y PRESENTACIÓN DEL

MODELO

3.1 Introducción Primero, decir que un modelo que simule el comportamiento de

un humano jugando al póker, es casi inviable, por la cantidad de

factores que influyen, tanto dentro del juego como factores

externos.

El modelo que se presenta aquí, y la inmensa mayoría de modelos

existentes son modelos simplificados, que sólo tienen en cuenta

factores internos del juego y siempre será una máquina, luego

siempre pensará “con la cabeza fría” y elegirá la mejor jugada en

cada momento.

A corto plazo puede no resultar victorioso, pero este modelo sigue

un criterio de probabilidades, por el cual está comprobado que a

medio/largo plazo se obtienen ganancias.

Nuestro modelo empezará siguiendo una determinada estrategia, y

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

comportamiento del rival.

3.2 Modelos de jugador de Póker Podemos analizar que básicamente hay distintos tipos

de jugadores de Póker. Encontramos que podemos agrupar a los

diferentes tipos de jugadores en cuatro categorías, de acuerdo a

dos criterios: tight y loose y por otro aggressive y passive.

Así podemos empezar por explicar que significa tight y loose y

aggressive y passive.

De acuerdo con la cantidad de manos de Póker podemos

clasificar a un jugador como tight o loose. Un jugador loose juega

muchas y diferentes manos. En cambio uno tight juega pocas

manos y además con buenas cartas, es decir que tiene muchas

posibilidades de ganar.

Asimismo, encontramos los jugadores pasivos y agresivos. En

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

- 30 -

Page 36: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Póker, en cambio el agresivo sube con frecuencia la apuesta y

toma la iniciativa.

3.3 Fuerza de la mano inicial

3.4 Parámetros en los que basar las

decisiones. En esta sección explicares los parámetros en los que se basa el

jugador para tomar una decisión u otra.

3.4.1 Probabilidad umbral La probabilidad umbral es la probabilidad mínima de ganar que

debe tener la mano para jugar. Está es diferente dependiendo la

cantidad de jugadores en mesa. Por debajo se este umbral, se

considera que la mano tiene muy pocas probabilidades de ganar y

se supone una pérdida innecesaria de fichas. A lo largo de la

partida, dependiendo del tipo de jugadores a los que nos

enfrentemos, esta probabilidad umbral variará a más o menos.

3.4.2 Fuerza de la mano La fuerza de la mano es la probabilidad que tiene ésta de ganar la

jugada sin saber qué cartas tienen nuestros adversarios. La fuerza

de la mano inicial (en el pre-flop) se basa en la tabla del punto 3.3.

A partir de aquí se calculará de la siguiente manera:

-En el Flop: ODDS*4 + 1 (%)

-En el Turn: ODDS*2 - 1 (%)

-En el River: ODDS (%)

*ODDS: Las ODDS son las cartas que faltan por salir para tener la

mano ganadora a la que aspira el jugador.

3.4.3 Ratio de ganancia El ratio de ganancia es la cantidad de fichas que ganarás (en %) en

función de la apuesta que se haga y la cantidad de fichas en el

bote. Por ejemplo, si la apuesta es 20 fichas y hay 40 fichas en el

bote, entonces el ratio de ganancia será 20/(20+40) = 0.333.

3.4.4 Ratio de devolución El ratio de devolución es (en media) la proporción en que se

multiplicará la apuesta si se continúa jugando esa mano. Se

calcula como el cociente entre la fuerza de la mano y el ratio de

ganancia. Normalmente, seguiremos jugando esa mano si este

parámetro es igual o superior a 1 (como se mostrará en el punto

4).

3.4.5 Ratio de subida El ratio de subida es la cantidad de fichas que se apostarán en caso

de que se decida ver y subir. Se calcula teniendo en cuenta los 3

parámetros anteriores de la siguiente forma:

3.4.6 Probabilidad total La probabilidad total es la suma de la fuerza de la mano con un

Random de C++. Esta parámetro ha de ser igual o superior a la

probabilidad umbral para jugar la mano.

3.4.7 Random Para simular de mejor manera el jugador virtual, utilizaremos la

función de C++ Random y así poder hacer un jugador más

imprevisible. En todas las tomas de decisiones utilizaremos esta

función.

4. DESARROLLO DEL JUEGO

4.1 Pre-Flop El jugador comprobará si es ciega grande o pequeña y pondrá la

cantidad de fichas necesarias que estas indiquen.

if (ciega_grande == true)

Poner_ciega_grande();

if (ciega_pequeña == true)

Poner_ciega_pequeña();

Luego, se reparten dos cartas a cada jugador, y en ese momento

calculamos la probabilidad que tiene nuestra mano de ganar

- 31 -

Page 37: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

(fuerza de la mano), dependiendo del número de jugadores, de

nuestra posición en la mesa y de si hemos sido ciega (grande o

pequeña) o no.

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

{

probabilidad_total = Fuerza_mano(mano_inicial) +

Random(0,0.2) - Random(0,0.2) + 0.05;

else

probabilidad_total = Fuerza_mano(mano_incial) +

Random(0,0.2) - Random(0,0.2);

}

Mientras las apuestas no hayan sido igualadas, calcularemos el

ratio de ganancia y el ratio de devolución para realizar la jugada.

Teniendo en cuenta estos parámetros y los factores Random

jugaremos (función Jugar) de un modo u otro (Irse, Igualar o

Subir).

A lo largo de las manos, se analizará a los adversarios y teniendo

en cuenta la variables para este análisis jugaremos siguiendo una

estrategia u otra (definidas en el punto 3.2).

4.2 Flop Con esto llegamos al Flop, donde se reparten tres cartas

comunitarias. A partir de este momento nuestra mano pasará a

tener 5 cartas, y la probabilidad para calcular la fuerza de la mano

se calculará por un método señalado anteriormente. Hay que

señalar que este método no es del todo exacto, pero nos da una

muy buena aproximación de nuestras probabilidades de ganar la

mano.

Como ya se hiciera en el Pre-Flop, calcularemos de nuevo los

parámetros básicos para la toma de decisiones y en función de

ellos jugaremos (función Jugar).

4.3 Turn Igual que en las fases anteriores, realizaremos un tipo de jugada u

otra según los parámetros básicos.

4.4 River En esta última fase se decidirá quién gana finalmente esa mano

después de las apuestas.

Como añadido, el jugador hará un All in (apostarlo todo) si sus

fichas actuales son diez veces menos que sus fichas iniciales para

intentar salvar la partida (o perder inmediatamente).

Diagrama de las fases del juego:

*FM: Fuerza de la mano

Poner ciega

Calcular FM

Irse

Subir

Igualar

Flop

Turn

River

Calcular FM

Irse

Igualar

Subir

Calcular FM

Irse

Igualar

Subir

Calcular FM Igualar

Irse

Subir

- 32 -

Page 38: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

5. TOMA DE DECISIONES (función Jugar) En el código se ha implementado una función que decidirá cómo

jugar teniendo en cuenta el ratio de devolución.

Después de calcular este parámetros, se entrará en una serie de

condiciones para saber si ver la apuesta, subirla (o hacer un farol)

o irse.

5.1 Ratio de devolución inferior a 0.8 Este caso se considera una mano realmente mala, por lo que con

el 95% de probabilidad el jugador se irá, con un 5% subirá la

apuesta (farol) y en ningún caso igualará.

if (ratio_devolucion < 0.8)

{

if (aleatoriedad > 0.05)

Irse();

if (aleatoriedad <= 0.05)

Subir(ratio_subida);

}

5.2 Ratio de devolución inferior a 1 En este caso nuestra mano seguirá siendo bastante mala, por lo

que lo más lógico sería irse. No obstante, ha mejorado con

respecto al caso anterior conque nuestras probabilidades

cambiarán. Con un 80% de probabilidad nos iremos, subiremos

con un 15% (farol) y tan solo con un 5% igualaremos la apuesta.

if (ratio_devolucion < 1)

{

if (aleatoriedad > 0.15)

Irse();

if (aleatoriedad <= 0.15 && 0.05 < aleatoriedad)

Subir(ratio_subida);

if (aleatoriedad <= 0.05)

Igualar();

}

5.3 Ratio de devolución inferior a 1.3 En este punto nuestra mano ya se considerará buena y tendremos

opciones reales de hacernos con el boto final. Así que en este caso

igualaremos la apuesta con un 60% de probabilidad y subiremos

con un 40%. En ningún caso nos iremos.

if (ratio_devolicion < 1.3)

{

if (aleatoriedad > 0.4)

Igualar();

if (aleatoriedad <= 0.4)

Subir(ratio_subida);

}

5.4 Ratio de devolución superior a 1.3 En cuanto nuestro ratio de devolución sea superior a 1.3

significará que tenemos una mano difícilmente de ganar. Para este

caso igualaremos con un 30% y subiremos con un 70%. Tampoco

nos iremos en ningún caso.

{

if (aleatoriedad > 0.3)

Subir(ratio_subida);

if (aleatoriedad <= 0.3)

Igualar();

}

El hecho de tomar una decisión u otra dependerá del factor de

aleatoriedad que nos brinda la función Random de C++. Cuánto

apostar en caso de subida lo determinará el ratio de subirá que se

calcula con la fórmula vista en el punto 3.4.5.

En cuanto se igualen las apuesta de resolverá la jugada y se verá

qué jugador gana ese mano.

Diagrama del ratio de devolución:

Si

RD < 0.8

Irse (95%)

Subir (5%)

Si

RD < 1

Irse (80%)

Igualar (5%)

Subir (15%)

Igualar (0%)

- 33 -

Page 39: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

*RR: Ratio de devolución

6. CONCLUSIONES

El juego está basado en la minimización del factor suerte, luego

sólo sería rentable tras un número bastante grande de manos. Y

todo esto teniendo en cuenta sólo factores del juego, aunque no se

hayan contemplado todos (sería demasiado trabajoso y casi

inviable).

Si la máquina se enfrentara a un jugador principiante, lo más

probable es que gane, puesto que todas las probabilidades usadas,

fórmulas y estrategias son reales. Está comprobado que si se juega

de esa forma se obtienen beneficios a largo plazo. Esto, sumado a

que una máquina siempre piensa fríamente y que siempre va a

elegir la que cree que es su mejor opción, la hace un rival muy

difícil de batir.

Por otro lado, si tenemos el juego muy estudiado y sabemos cuál

es la mejor opción, podríamos predecir el comportamiento del

jugador virtual.

Cabe mencionar, en cuanto al tema de poker y la inteligencia

artificial, el ordenador Polaris, que se usó como experimento,

contra Phil Laak y Ali Eslami, dos jugadores de póquer de Los

Ángeles clasificados entre los mejores del mundo. Aunqué ganó y

empató las 2 primeras partidas (de 500 manos cada una), al final

el resultado se decantó para el lado humano.

Todo esto demuestra que a pesar de los años de estudio de la

inteligencia artificial, todavía estamos en una constante evolución

y nos queda mucho camino por recorrer.

7. BIBLIOGRAFÍA

[1] Wikipedia, La Enciclopedia Libre, www.wikipedia.org

[2] Cowboy Programming, Programming Poker AI

[3] Reglas del Póker, Tipos de jugaroes,

www.reglasdelpoker.es/Hay-diferentes-tipos-de-jugadores-

de-poker

[4] Apuntes de la asignatura Inteligencia en Redes de

Comunicación, Universidad Carlos III de Madrid

[5] Probabilidades Póker, www.probabilidadespoker.es

[6] World Series of Poker: Tournoment of Championship,

vídeojuego PlayStation 2

[7] Poker Stars, www.pokerstars.com

8. ANEXO. PSEUDO CÓDIGO EN C++

// Variables

int numero_jugadores,

probabilidad_umbral, probabilidad_total,

aletoriedad;

int fichas_iniciales,

fichas_disponibles, bote, apuesta,

ratio_devolucion, ratio_subida;

bool ciega_grande, ciega_pequeña,

apuesta_igualada, hablo, perder;

char mano_inicial [2],

cartas_comunitarias [5];

// Funciones (sólo se define Jugar())

void Poner_ciega_grande(void);

void Poner_ciega_pequeña(void);

void Igualar(void);

void Irse(void);

void Subir(int);

void All_in(void);

int Fuerza_mano(char);

int Ratio_ganancia(int, int);

bool Jugar(int, int, int, int);

bool Resolucion_jugada(void);

void main(void)

{

// Cálculo de probabilidad umbral

suponiendo un máximo de cuatro jugadores

switch (numero_jugadores)

{

case 2:

probabilidad_umbral = 0.58;

case 3:

probabilidad_umbral = 0.42;

case 4:

probabilidad_umbral = 0.32;

}

Si

RD < 1.3

Irse (0%)

Igualar (60%)

Subir (40%)

Si

RD > 1.3

Irse (0%)

Igualar (30%)

Subir (70%)

- 34 -

Page 40: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

// Inicio de la partida

while (1)

{

// Se ponen las ciegas

if (ciega_grande == true)

Poner_ciega_grande();

if (ciega_pequeña == true)

Poner_ciega_pequeña();

// Se reparte la mano (dos cartas

privadas)

if (ciega_grande == true ||

ciega_pequeña == true)

{

probabilidad_total =

Fuerza_mano(mano_inicial) +

Random(0,0.2) - Random(0,0.2) + 0.05;

else

probabilidad_total =

Fuerza_mano(mano_incial) + Random(0,0.2)

- Random(0,0.2);

}

// Pre-Flop

if (probabilidad_total >=

probabilidad_umbral)

{

while (apuesta_igualada == false)

{

Ratio_ganancia(bote,

apuesta);

ratio_devolucion =

Fuerza_mano / Ratio_ganancia;

aleatoriedad = Random(0,1);

Jugar(Ratio_ganancia, Fuerza_mano,

ratio_devolucion, aletoriedad);

}

}

// Flop (tres cartas comunitarias)

probabilidad_total =

Fuerza_mano(mano_inicial,

cartas_comunitarias)

+ Random(0,0.2) -

Random(0,0.2);

if (probabilidad_total >=

probabilidad_umbral)

{

while (apuesta_igualada == false

|| perder == false)

{

Ratio_ganancia(bote,

apuesta);

aleatoriedad = Random(0,1);

Jugar(Ratio_ganancia,

Fuerza_mano, ratio_devolucion,

aletoriedad);

}

}

// Turn (cuatro cartas comunitarias)

probabilidad_total =

Fuerza_mano(mano_inicial,

cartas_comunitarias)

+ Random(0,0.2) -

Random(0,0.2);

if (probabilidad_total >=

probabilidad_umbral)

{

while (apuesta_igualada == false

|| perder == false)

{

Ratio_ganancia(bote,

apuesta);

ratio_devolucion =

Fuerza_mano / Ratio_ganancia;

aleatoriedad = Random(0,1);

Jugar(Ratio_ganancia,

Fuerza_mano, ratio_devolucion,

aletoriedad);

}

}

// River (cinco cartas comunitarias)

probabilidad_total =

Fuerza_mano(mano_inicial,

cartas_comunitarias)

+ Random(0,0.2) -

Random(0,0.2);

if (probabilidad_total >=

probabilidad_umbral)

{

while (apuesta_igualada == false

|| perder == false)

{

Ratio_ganancia(bote,

apuesta);

ratio_devolucion =

Fuerza_mano / Ratio_ganancia;

aleatoriedad = Random(0,1);

Jugar(Ratio_ganancia,

Fuerza_mano, ratio_devolucion,

aletoriedad);

}

}

bool Jugar(void){

if (hablo == true)

{

if (fichas_disponibles <

fichas_iniciales / 10)

All_in();

else

- 35 -

Page 41: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

if (ratio_devolucion < 0.8)

//Muy mala mano

{

if (aleatoriedad >

0.05)

Irse();

if (aleatoriedad <=

0.05)

// Farol

ratio_subida = (10*Ratio_ganancia)

* fichas_disponibles /

(100*Fuerza_mano);

Subir(ratio_subida);

}

else if

(ratio_devolucion < 1) // Mala

mano

{

if (aletoriedad

> 0.15)

Irse();

if (aletoriedad

<= 0.15 && 0.05 < Aletoriedad)

// Farol

ratio_subida = (10*Ratio_ganancia)

* fichas_disponibles /

(100*Fuerza_mano);

Subir(ratio_subida);

if (aletoriedad

<= 0.05)

Igualar();

}

else if

(ratio_devolicion < 1.3) // Buena

mano

{

if (aletoriedad

> 0.4)

Igualar();

if (aletoriedad

<= 0.4)

ratio_subida = (10*Ratio_ganancia)

* fichas_disponibles /

(100*Fuerza_mano);

Subir(ratio_subida);

}

else

// Muy

buena mano

{

if (aletoriedad

> 0.3)

ratio_subida = (10*Ratio_ganancia)

* fichas_disponibles /

(100*Fuerza_mano);

Subir(ratio_subida);

if (aletoriedad

<= 0.3)

Igualar();

}

}

else

perder =

Resolucion_jugada();

}

- 36 -

Page 42: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Inteligencia artificial en el mundo de la aviación

Daniel Ruesga Ibañez

Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid

Avda. De la Universidad, 30 28911, Leganes (Madrid)

[email protected]

Hector Molla Ruiz Estudiante Ing. Telecomunicación Universidad Carlos III de Madrid

Avda. De la Universidad, 30 28911, Leganés (Madrid)

[email protected]

RESUMEN

En este documento vamos a realizar un estudio del impacto que ha

tenido la inteligencia artificial en el mundo de la aviación

moderna. Nos centraremos en los sistemas de pilotaje automático

disponibles en los aviones y su avance hasta la los vehículos no

tripulados (UAVS).

Categorías y Descriptores de Temas

[Inteligencia Artificial]: sistemas expertos [Aviónica]: pilotaje

Terminus Generales

Documentación, diseño, fiabilidad, seguridad, factores humanos,

teoría.

Palabras Clave Sistemas expertos, aviación, piloto automático, navegación, vuelo,

uav.

1. INTRODUCTION

Un piloto automático es un sistema mecánico, eléctrico o

hidráulico usado para guiar un vehículo sin la ayuda de un ser

humano. Aunque puede usarse en distintos tipos de vehículos

nosotros nos centramos en el pilotaje de aviones. De esta forma

tenemos que el sistema de piloto automático que se implementan

en los aviones son sistemas expertos.

Un sistema experto es una aplicación informática que emula la

forma de pensar y razonar de un experto en un campo

determinado, que normalmente requiere de una gran cantidad de

conocimientos asociados. Con esta clase de sistemas lo que se

busca es una mejora en la rapidez y velocidad de las respuestas.

El sistema de piloto automático tiene implementados los

conocimientos necesarios de navegación y fundamentos de vuelo

necesarios para pilotar un avión de manera automática sin

necesidad de la interacción del piloto.

Un vuelo está dividido en varias etapas: rodaje, despegue,

ascenso, crucero, descenso, aproximación, y aterrizaje. De todas

las anteriores las únicas etapas que nos pueden ser controladas

únicamente por el sistema de pilotaje automático son la de rodaje

y despegue.

2. SISTEMAS EXPERTOS

Como ya se ha comentado en la introducción un sistema experto

es aquel que puede almacenar el conocimiento de un experto en

un campo determinado y limitado, y a su vez solucionar

problemas mediante la inducción- deducción lógica.

Los sistemas expertos son programas de computación que

capturan el conocimiento de un experto y tratan de imitar su

proceso de razonamiento cuando resuelven los problemas en un

determinado dominio.

Para que un sistema experto sea efectivo, los usuarios tienen que

interactuar de una manera sencilla, siendo necesarias dos

capacidades para poder cumplirlo:

1. Explicar conocimientos y razonamientos: es necesario

que al realizar los sistemas se sigan unas pautas y reglas

que resulten comprensibles para lograr que se genere

una explicación para cada una de ellas.

2. Obtención mientos e integrador del

sistema: mecanismos que modifican los conocimientos

previos. Puede decirse que los sistemas son el resultado

de investigaciones en el campo de la inteligencia

artificial, puesto que no busca sustituir a los expertos

sino que sirvan de ayuda a la hora de realizar las tareas

con mayor rapidez y eficacia.

Los sistemas expertos están formados por diversos elementos:

base de conocimientos, base de hechos, motor de inferencia,

módulos de justificación e interfaz de usuario.

2.1 Base de conocimientos

Son bases de datos con los conocimientos de los expertos

implementados en el sistema sobre el campo concreto de trabajo.

A través de la base de conocimiento, el sistema experto obtiene

los razonamientos que debe aplicar en su funcionamiento.

- 37 -

Page 43: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

2.2 Base de hechos

Compuesta por los hechos descubiertos durante el análisis que se

realiza cuando existe algún problema.

2.3 Motor de inferencia

Se encarga de modelar el proceso del razonamiento humano. Para

ello utiliza el conocimiento disponible en las bases de

conocimientos y hechos.

2.4 Módulos de justificación

Se encarga de proporcionar una explicación al usuario del

razonamiento que ha utilizado el sistema experto para obtener una

conclusión determinada.

2.5 Interfaz de usuario

La interfaz de usuario es el medio por el cual la máquina y el

usuario se comunican. Comprende todos los puntos posibles de

contacto entre el usuario y la máquina. Comúnmente suelen ser

con diseños intuitivos, fáciles de entender y manejar.

3. FUNDAMENTOS DE VUELO

Es necesario profundizar un poco en los fundamentos de vuelo de

los aviones para entender como el piloto automático es capaz de

manejar un avión de manera independiente.

3.1 Sustentación

El principio básico por el que los aviones se mantienen en el aire

y consiguen volar es por la fuerza de sustentación. Se crea gracias

a las alas de los aviones, la cola y en general su estructura. Esta

fuerza que se ejerce consigue contrarrestar al peso propio de la

aeronave manteniéndola de esta forma en el aire.

3.2 Control aeronave

Para el movimiento de la aeronave es necesaria una fuerza de

empuje que se obtiene gracias a los motores de reacción. Estos

motores se encargan de contrarrestar la resistencia aerodinámica

que se genera precisamente por la sustentación.

Los aviones son capaces de rotar sobre tres ejes perpendiculares

entre sí. El punto donde se cruzan estos tres ejes se encuentra en

el centro de gravedad del avión. Los tres ejes son los siguientes:

Transversal

Este eje cruza de una punta a la otra de las alas del avión.

El movimiento asociado a este eje se le llama cabeceo y su

función es la de levantar el morro del avión para variar su

sustentación.

Longitudinal

Este eje cruza el avión desde el morro hasta la cola.

El movimiento asociado a este eje se le llama alabeo y consiste en

levantar un ala mientras bajas la otra.

Vertical

Este eje cruza el avión desde la parte inferior hasta la superior

pasando por el centro de gravedad.

El movimiento asociado a este eje se le llama guiñado y sirve para

modificar el rumbo hacia el que apunta el morro del avión.

Fig.1. Estructura sistema experto

Fig.2. Fuerzas sobre aeronave

Fig.3. Ejes del avión

- 38 -

Page 44: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Para el control de los movimientos, la aeronave dispone de una

serie de superficies de control que se encuentran en las alas:

Alerones: Se tratan de superficies móviles colocadas en

los extremos de las alas del avión, sobre el borde de

salida. La funcionalidad de los alerones es la de

controlar el movimiento de alabeo.

Flaps: Son dispositivos de hipersustentación que están

colocados también en el borde de salida del ala.

Normalmente se encuentran cerrados y cuando se

utilizan se despliegan separándose del ala. Los flaps

solo se usan en determinadas maniobras como el

despegue y el aterrizaje.

Spoilers: Son superficies con movilidad situadas en el

extradós del ala. El objetivo es reducir la fuerza de

sustentación que se genera en el ala.

Slaps: Son dispositivos hipersustentadores como los

flaps con la diferencia de que estos están situados sobre

el borde de ataque del ala y sirven para aumentar la

curvatura de esta.

Existen también otras superficies necesarias para el control del

avión pero que a diferencia de las anteriores no se encuentran en

el ala. Estas son el timón de dirección y el de profundidad.

Timón de dirección: Es una superficie de control

generalmente colocada en el estabilizador vertical y

cuya función es la de controlar el movimiento de

guiñada.

Timón de profundidad: Es una superficie

estabilizadora situada en la parte posterior del avión y

su función es la de controlar el movimiento de cabeceo

4. SISTEMA DE NAVEGACION

El sistema de navegación de un avión esta compuesto por varios

instrumentos esenciales que permiten orientarse seguir el rumbo

deseado. Los instrumentos básicos del sistema de navegación son

los siguientes:

Brújula: Permite conocer el rumbo que esta siguiendo

el avión.

Indicador de rumbos: Permite eliminar los defectos de

la brújula.

ADF: Capta la señal emitida por una estación terrestre y

nos muestra la dirección en la que se encuentra.

DME: Calcula la distancia del avión a un punto emisor.

CDI: Muestra la posición relativa de la aeronave con

respecto al radial que queremos seguir.

ILS: Muestra el ángulo de descenso y la alineación con

la pista de aterrizaje.

5. PILOTO AUTOMATICO

Una vez comprendimos los componentes básicos que permiten a

los aviones moverse y los sistemas que proporcionan la

información necesaria para la navegación podemos mostrar el

funcionamiento del piloto automático.

El avión está equipado para su guiado automático con dos

computadores digitales de vuelo (DFGG) que suministran la

información necesaria para la realización de las funciones de

piloto automático, estabilidad, empuje, altitud y dirección de

vuelo.

Los pilotos automáticos utilizan sistemas informáticos para

controlar diversos aspectos del avión, desde el control del vuelo a

componentes para la comunicación, sistemas para evitar

colisiones y maniobras de gran precisión como aterrizajes sin

visibilidad.

El sistema de piloto automático obtiene la información necesaria

de la posición del avión gracias a los sistemas implementados de

navegación. Estos datos le permiten calcular los movimientos que

serán necesarios efectuar para seguir el rumbo establecido. Los

datos obtenidos del sistema de navegación son enviamos al

sistema de gestión de vuelo que se encarga de establecer los

cambios necesarios en el rumbo y la altitud del avión.

El sistema tiene los conocimientos necesarios sobre los

fundamentos de vuelo del avión para poder actuar sobre los

diferentes elementos de control de movimiento que hemos visto

anteriormente además de sobre los motores para aumentar o

disminuir el empuje según sea necesario. Basándose en estos

conocimientos proporcionados previamente por un experto, el

sistema es capaz de controlar los ejes de cabeceo, alabeo y

guiñado del avión.

Fig.4. Superficies de control

- 39 -

Page 45: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Los datos necesarios de posición del avión se obtienen de un

sistema de guía inercial. Estos sistemas tienen el problema de que

acumulan errores con el tiempo de forma que se implementan

sistemas de reducción de errores.

El error que se produce en los giroscopios es conocido como error

de deriva y viene dado por las propiedades físicas del sistema, que

corrompen los datos de localización. Estos errores se resuelven

con la ayuda del procesamientos digital de señales, mediante un

filtro de Kalman hexadimensional. Siendo estas seis direcciones el

balanceo, la inclinación, orientación, altitud, latitud y longitud.

Las rutas por las que se mueven los aviones tienen asociadas un

factor de rendimiento exigido, de forma que el error tiene que ser

controlado para poder volar sobre dichas rutas. EL sistema de

pilotaje automático utiliza las ayudas de radio y los instrumentos

de navegación junto con sistemas como el GPS para corregir la

posición de la aeronave.

En la siguiente imagen podemos observar en detalle la sección de

control del piloto automático de un avión.

En el panel podemos observar los siguientes controles:

A/T: activa el control automático de la velocidad.

AP: activa el piloto automático.

HDG: activa la fijación de rumbo.

ALT: activa el seguimiento de altitud.

SPD/MACH: activan el control de velocidad en nudos o

mach.

NAV: activa el seguimiento de un radial.

APR: activa el seguimiento de ILS

BC: permite alejarse de una pista.

LVL: mantiene el avión nivelado.

Y/D: amortigua el giro.

También se tienen cuadros numéricos para establecer valores de

funcionamiento.

COURSE: establecer radial.

HDG: dirección hacia donde volar.

ALT: altitud en pies.

IAS/MACH: velocidad respecto al aire.

VS: velocidad vertical.

Un caso de demostración de un sistema de pilotaje automático se

da cuando el piloto fija un modo de control para que las alas del

avión se mantengan en un nivel concreto. Durante el vuelo se

pueden producir diferentes tipos de sacudidas de forma que el

avión puede sufrir una inclinación. Este cambio es detectado por

los sensores colocados en las alas de forma que envían dicha

información al ordenador del piloto automático, el cual procesa

los datos recibidos y toma una decisión para actuar sobre esta

variación. Esta decisión se lleva a cabo mediante el envío de las

señales necesarias a los mecanismos de control de la aeronave, en

este caso a los que controlan los alerones. Estas señales son

comandos muy específicos que indican que se tienen que producir

unos ajustes muy precisos. Esta actuación sobre los alerones

provoca que las alas se muevan de tal forma que se vuelva al nivel

establecido en el control dl piloto automático. Una vez se

restablece el nivel adecuado, el ordenador retira el comando de

actuación sobre los alerones.

Cuando el piloto automático falla el piloto puede desactivarlo

fácilmente devolviendo el control del avión a un modo manual.

Una de las limitación que se tiene en estos sistemas es la

imposibilidad de activar el piloto automatico durante la fase de

despegue, hasta que no se hayan superado los 200 pies de altitud

sobre el terreno.

6. UAV

En este último apartado del trabajo vamos a ir más allá del

concepto de piloto automático para tratar lo que se podría

considerar como la evolución lógica de este. Si bien el piloto

automático toma como principal objetivo la sustitución

momentánea y circunstancial de algunas de las funciones de un

piloto humano, llegando a tener en cuenta solo un conjunto

reducido de variables de todas la que pueden llegar a influir en la

toma de decisiones que el piloto humano, el siguiente paso

natural en la evolución de este tipo de sistemas experto sería la

sustitución completa del ser humano en el pilotaje del avión. Y

de esta idea nace el concepto de Vehículo aéreo no tripulado o,

Fig.5. Piloto automático

Fig.6. Algoritmo piloto automático

- 40 -

Page 46: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

como comúnmente se le conoce por sus siglas en inglés, los UAV

(Unmanned Aerial Vehicle).

Los UAV pueden volar de forma autónoma o bien ser controlados

de forma remota desde una estación de control, aunque en este

trabajo nos centraremos principalmente en los que vuelan de

forma autónoma.

6.1 Piloto Automático vs UAV

Para una clara diferenciación de estos dos conceptos (piloto

automático y UAV), vamos a hacer una breve comparativa que

motive claramente la aparición de los UAV, dejando a la vista el

gran avance que estos suponen.

Un piloto automático recibe información del sistema de

gestión de vuelo acerca de las correcciones necesarias

de altitud, rumbo, etc. que han sido calculadas en base a

la información de la posición que proporciona el

sistema de navegación. Con esta información, se

pretende que el piloto automático sea capaz de actuar

sobre los distintos elementos que influyen en el

movimiento del avión para mantener el rumbo prefijado.

Una UAV, al margen de tener un piloto automático que

se encargue de todo lo descrito anteriormente, debe ser

capaz de gestionar cualquier otra situación en la que un

piloto intervendría, como puede ser: elección de rumbo

óptimo o cambios en el mismo por distintos motivos

(climáticos, situaciones de combate, obstáculos no

previstos, escasez de combustible, etc.), gestión de los

diferentes recursos del avión en función de las

necesidades del momento (combustible, munición o la

propia integridad de la aeronave).

6.2 Utilidades de los UAV

En primera instancia, puede parecer que estos aviones no

tripulados tienen y tendrán su principal mercado en el mundo

militar, pero esto no es así. Actualmente hay diversas empresas

que se dedican al desarrollo de un tipo de UAV de bajo coste

orientado a actividades civiles, ofreciendo una alternativa más

económica que evita poner en peligro vidas humanas y que

permite liberar al humano de la carga de tareas rutinarias. Algunas

de estas actividades son o podrían ser: prevención y control de

incendios, fotografía aérea, control de tráfico en carreteras,

búsqueda de personas desaparecidas, ayuda crítica en los

momentos posteriores a un desastre natural, apoyo en estudios

medioambientales, etc. Además, ya se está yendo más allá y se

están implementando flotas enteras de UAV que trabajan en

equipo en labores tan complejas como la predicción

meteorológica o la monitorización y control de incendios

forestales. En estas flotas, cada UAV no solo tiene en cuentas un

objetivo individual, sino que en la toma de sus decisiones

interviene también el trabajo llevado a cabo por el resto de UAV

del grupo, para conseguir así un resultado óptimo en conjunto.

En este momento es necesario aclarar que aunque inicialmente se

empezaron a desarrollar los UAV como aviones, también se

pueden considerar representados por estas siglas los helicópteros

no tripulados y todas aquellas aeronaves que vuelen de forma

totalmente autónoma. Es por ello por lo que se amplía su campo

de utilización a más actividades de naturaleza mucho más

delicada, como lo son el apoyo en rescates de montaña o en zonas

de difícil acceso, exploración de cuevas o cualquier tipo de

lugares desconocidos que entrañen peligro.

Además de todo esto y como muchos de los grandes avances

tecnológicos, los UAV tienen su base en la industria militar. En

este sector cobran una gran relevancia, ya que posibilitan la

realización de misiones demasiado arriesgadas para una aeronave

tripulada y además, gracias a que no se necesita un habitáculo

para el humano en su interior ni equipos para su

acondicionamiento, permite diseñar aeronaves con geometrías

mucho más difíciles de detectar por los radares enemigos.

Principalmente se utilizan para tareas de vigilancia, combate y

misiones espía.

Como último punto de la exposición del gran avance que suponen

los UAV en nuestro mundo actual, cabe señalar que a medida que

vaya evolucionando y creciendo la potencia de la Inteligencia

Artificial, llegará el día en que los aviones comerciales o

aeronaves de combate estén pilotados de forma totalmente

autónoma sin la necesidad de ningún tipo de intervención humana

más allá de la fijación de los objetivos.

6.3 IA en los UAV

Anteriormente se han enumerado algunas de las tareas que debe

realizar un UAV de forma autónoma pero, sin duda, la más

importante de todas ellas será la de la elección del rumbo óptimo.

Con toda certeza el número de variables que forman parte de esta

decisión es demasiado elevado como para analizarlo en este

trabajo, ya que se escapa a las pretensiones del mismo, pero si nos

centraremos en los algoritmos que actualmente se utilizan para, en

función de un conjunto de variables, calcular el mejor camino

entre un origen y un destino prefijados.

6.3.1 Búsqueda de la ruta óptima El algoritmo más utilizado en el presente en la búsqueda del mejor

camino posible es el algoritmo A*. Este algoritmo se basa en la

búsqueda mediante grafos del camino de menor coste entre los

nodos origen y destino. Es completo, por lo que el propio

algoritmo asegura que siempre que exista una solución, este la

encontrará.

La búsqueda se realiza a través de un espacio de nodos en el que

sólo se visitan los posibles nodos en los que se puede alcanzar una

mejor solución que la última encontrada. Para ello se hace uso de

una función heurística, que será la encargada de determinar el

nodo que supone la mejor opción.

El funcionamiento global del algoritmo se describe a

continuación:

- 41 -

Page 47: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

En un primer paso cogemos como nodo a expandir el

nodo origen.

Expandimos el nodo origen dando lugar a todos sus

nodos hijos que cumplen que puede haber un camino al

nodo destino mejor que el que hasta ahora se ha

encontrado. Evidentemente estos hijos representarán

todos los posibles lugares a los que la aeronave podrá

llegar en un solo movimiento (considerando como un

movimiento el resultado de la actuaciones sobre los

elementos de control del rumbo de la aeronave en un

ciclo de decisión del algoritmo)

A continuación nos quedaremos con el que según la

función heurística vaya a tener un menor coste de entre

todos los nodos posibles a los que podemos llegar desde

los nodos expandidos y que no han sido, a su vez,

expandidos. Es por esto por lo que es crucial la buena

elección de la heurística a utilizar, así como los pesos

que se reparten a las diferentes variables (montañas,

tormentas, combustible, obstáculos móviles, etc.) que

influyen en la decisión.

Si el nodo al que llegamos es el nodo destino,

comprobamos si es mejor camino que el mejor

encontrado hasta el momento, sino, seguimos con el

mismo algoritmo.

Este proceso se repetirá cíclicamente hasta que no

existan otros nodos que sean capaces de mejorar el

mejor camino encontrado hasta el momento.

Un aspecto importante que se ha de tener en cuenta es

que la heurística sea admisible, es decir, que nunca se

debe tener un valor heurístico mayor que el coste

mínimo del nodo, lo cual ha de cumplirse para cualquier

nodo.

Con este algoritmo se consigue dar solución a los problemas que

se producen en algunos algoritmos de búsqueda en estructuras de

cierta complejidad, como por ejemplo el algoritmo voraz, que se

guían solo por la función heurística, la cual puede no indicar

siempre el camino de menor coste, o por el coste real de

desplazarse de un nodo a otro, pudiéndose dar la circunstancia de

que sea preciso llevar a cabo un movimiento de mayor coste para

llegar a la solución. Por este motivo en muy intuitivo el hecho de

que un buen algoritmo de búsqueda, como lo es el A*, debería

tener en cuenta los dos factores:

Valor heurístico de los nodos

Coste real del recorrido.

Centrémonos primero en la elección de la función heurística. Es

evidente que de su buena elección dependerá el buen

funcionamiento de todo el algoritmo por lo que hay que poner

especial atención es ello. Una buena función heurística será

aquella que nunca sobrestime el coste real de alcanzar el objetivo.

Las funciones heurísticas admisibles serán por naturaleza

optimistas, porque creerán que el coste de resolver el problema es

menor que el que es en realidad. Para construir una de estas

funciones admisibles podemos basarnos en dos técnicas:

Relajando la definición del problema.

Aprendiendo de la experiencia entrenando la función

con diversos tipos de problemas.

En el otro lado, tenemos la elección de los costes que suponen

cada uno de los nodos del recorrido, que habrán de ser elegidos

con especial cuidado atendiendo a una escala de prioridades que

estará formada por todo el conjunto de variables que la aeronave

tendrá en cuenta para la elección de la ruta. Como en la elección

de la función heurística, ahora también será necesario el

entrenamiento, para conseguir la experiencia necesaria que nos de

unos costes óptimos.

En la siguiente figura podemos ver un ejemplo de lo que sería una

búsqueda del camino óptimo muy simplificada. En ella podemos

apreciar como el espacio se ha dividido en un enjambre de nodos

a los que se les han asignado una serie de costes. Estos costes

podrían deberse en la vida real a multitud de factores:

combustible, obstáculos, clima, territorio enemigo, corrientes de

aire, etc. Además se puede observar como también hay nodos que

tienen coste infinito (los grises), es decir, que en ninguno de los

casos pueden ser elegidos. En la realidad estos nodos

representarían zonas no accesibles, como por ejemplo las

delimitadas por la propia elevación del terreno que se sobrevuela.

Es evidente, que si extrapolamos este algoritmo a un escenario

real, el número de nodos y de variables que influyen en el cálculo

de los costes es elevadísimo, lo que supone la ayuda de un gran

potencial computacional para poder llevar a cabo la elección de la

ruta óptima en tiempo real.

6.3.2 Gestión de flotas de UAV Otro aspecto importante a tener en cuenta en lo que a algoritmos

de navegación se refiere es la forma en la que se gestiona una flota

para poder controlar un grupo de UAV que trabajan en equipo

Fig.7. Elección de la ruta optima con A*

- 42 -

Page 48: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

para la consecución de un objetivo común. El algoritmo utilizado

para tal fin está definido y consta de cuatro capas:

1ª) Describe el sistema de navegación encargado de la

planificación de la misión, elección de objetivos,

reparto de trabajo entre los distintos miembros de la

flota, comunicación entre ellos, etc

2ª) Es la encargada de analizar toda la información

proveniente de los sensores de los UAV

3ª) Es la que controla el sistema de interpretación (FIS).

Este sistema tiene como misión principal utilizar la

información de la capa anterior para evitar colisiones

con obstáculos dinámicos o estáticos.

4ª) En esta última capa es en la que se engloba el

sistema de navegación y el piloto automático.

Otras funciones importantes del sistema de control de flotas de

UAV serían:

Evitar colisiones entre los distintos vehículos que

forman la flota.

Control del entorno por visión mediante tratamiento y

reconocimiento de imágenes.

6.4 Proyectos de UAV

En el mercado de los UAV es evidente que, como en todo lo

relacionado con tecnología militar, los Estado Unidos están al

frente con un gran número de compañías que dedican muchos

fondos a su desarrollo. Además, también hay otros países punteros

en la materia, como por ejemplo Alemania, Japón o Israel, que

han conseguido grandes avances.

Centrándonos solo a nivel Europeo cabe destacar un gran número

de iniciativas bastante interesantes. Algunas de las más

interesantes se enumeran a continuación:

NEURON: quizás sea el UAV más famosos

(junto con el Barracuda) por su peculiar geometría.

El principal objetivo del programa es conseguir un

UAV de combate, capaz de atacar un objetivo sin

que sea detectado por ningún radar. Aquí España

tiene diversos frentes de colaboración a través de

EADS-Casa: realización del ala del avión en fibra

de carbono, de la estación de control y de la

integración del Data Link.

ADVANCED: es un programa que trata de diseñar

un UAV de gran altitud llamado HALE para su uso

como avión de reconocimiento. En este proyecto

España cobra mucha importancia, estando, junto

con otros países, al frente del mismo.

A través de los programas Marco también se están creando

distintas líneas de desarrollo de UAV. En el VPM se encuentra el

proyecto COMMETS, que se llevó a cabo en la Universidad de

Sevilla. Este proyecto consistía en el desarrollo e implementación

de una flota de UAV que fuese capaz de realizar en tiempo real

una monitorización y detección de incendios. El proyecto fue

ejecutado con éxito.

También en Sevilla, se está desarrollando el proyecto AWARE,

que consiste en la integración de una flota de UAV con redes de

sensores terrenos. En el proyecto también se contempla el

despliegue autónomo de la red a través de un conjunto de

helicópteros no tripulados y totalmente autónomos orientados

principalmente a seguridad civil y como herramienta de ayuda

ante catástrofes naturales.

ALO (Avión Ligero de Observación),

SIVA (Sistema Integrado de Vigilancia Aérea)

ALBA (Avión Ligero Blanco Aéreo)

Y otros más recientes como:

HADA (Helicóptero Adaptativo Avión)

MILANO (versión de largo alcance del SIVA)

DIANA (Avión Blanco de Bajo Coste).

Fig.8. EADS Barracuda

- 43 -

Page 49: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Por último vamos a ver algunos gráficos que estiman la evolución

en los próximos años del número de UAV que se van a construir y

de la cantidad de fondos que se van a invertir en su desarrollo.

7. REFERENCIAS

[1] Villena, J. Apuntes de la asignatura Inteligencia en redes de

Comunicaciones. 5º Ingeniería de Telecomunicación.

[2] Muñoz, M. A., Manual del vuelo

http://www.manualvuelo.com/

[3] Sistemas expertos:

http://es.wikipedia.org/wiki/Sistema_experto

[4] Información piloto automático:

http://es.wikipedia.org/wiki/Piloto_autom%C3%A1tico

[5] Nogueira, J. I... Apuntes de la asignatura Aviónica. 3º

Ingeniería de Telecomunicación.

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

[7] Información algoritmo A*:

[8] Información sobre UAV:

http://es.wikipedia.org/wiki/Veh%C3%ADculo_a%C3%A9r

eo_no_tripulado

[9] Información sobre proyectos de UAV:

http://es.wikipedia.org/wiki/Anexo:Veh%C3%ADculos_a%

C3%A9reos_no_tripulados

[10] Almudena Jiménez Sierra, Fco. Javier Muñoz Rodríguez,

Gonzalo Torres Porta,2006, Aplicación de métodos de IA

para la stoma de decisiones en simulaciones de móviles:

http://eprints.ucm.es/8938/1/TC_2006-14.pdf

[11] Raúl Morales, 2008, Incorporan un algoritmo a un AUV

para predecir el tiempo con más exactitud:

http://www.tendencias21.net/Incorporan-un-algoritmo-a-un-

avion-no-tripulado-para-predecir-el-tiempo-con-mas-

exactitud_a2844.html

[12] A. Barrientos, J. del Cerro, P. Gutiérrez, R. San Martín, A.

Martínez, C. Rossi, 2007, UAV para uso civil. Tecnología y

aplicaciones:

http://webdiis.unizar.es/~neira/docs/ABarrientos-

CEDI2007.pdf

Unidades de UAS por regiones

2012 2013 2014 2015 2016 2017

USA 189 267 1772 1722 1747 1787

Europe 283 403 572 655 492 174

Mid East 98 178 171 110 109 23

Asia 687 788 662 604 542 679

Financiación por regiones (M$)

2012 2013 2014 2015 2016 2017

USA 2105 2035 1865 1765 2095 2060

Europe 470 655 697 761 623 566

Mid East 492 280 266 43 122 448

Asia 478 510 609 625 718 613

Fig.9. Neuron

- 44 -

Page 50: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Sistemas Expertos en meteorología Carlos Lentisco Sánchez

Ingeniería de Telecomunicaciones Universidad Carlos III de Madrid

Av. de la Universidad, 30 28911 Leganés (Madrid)

[email protected]

Tania Romero Rodríguez Ingeniería de Telecomunicaciones Universidad Carlos III de Madrid

Av. de la Universidad 30 28911 Leganés (Madrid)

[email protected]

RESUMEN

In this paper, we describe the formatting guidelines for ACM SIG

Proceedings.

Categorías y Descripciones de Temas

[Inteligencias Artificial]: Sistemas expertos y aplicaciones

metorológicas

Términos Generales

Meteorología, Medidas, documentación, diseño y teoría.

Palabras clave

Inteligencia, meteorología, sistemas expertos, predicción

meteorológica.

1. INTRODUCCIÓN

“La inteligencia consiste no sólo en el conocimiento, sino también en la destreza de aplicar los conocimientos en la práctica”

Aristóteles define perfectamente en esta frase lo que entendemos

por inteligencia, la inteligencia es un atributo que tenemos por

naturaleza y el ser humano como creador se ve impulsado a dotar a sus creaciones (artificiales y no naturales) de este atributo,

consiguiendo de esta forma obtener un sin fin de beneficios y

aplicaciones destinados a mejorar la calidad de vida del ser

humano, o por lo menos, así debería ser.

Las aplicaciones basadas en inteligencia artificial son

innumerables y van desde la biomedicina o educación hasta la

predicción de las condiciones meteorológicas que realizan los

sistemas expertos, objeto de estudio y razón de ser de este documento.

Los fenómenos meteorológicos son ocurrencias físicas

observables dentro de la atmósfera, algunos de estos fenómenos

son por ejemplo lluvia, nieve, granito o niebla. Estos eventos pueden alterar y alteran la actividad humana proponiendo en

algunos casos situaciones de peligro y amenaza.

Esta es la razón que justifica la búsqueda del ser humano por

predecir fiablemente las condiciones meteorológicas.

A lo largo de este documento nos introduciremos más en los

sistemas expertos repasando su evolución histórica hasta nuestros días para abordar posteriormente y con mayor profundidad un

ejemplo de estos sistemas. Centrándonos en el sistema Prometeo.

2. EVOLUCIÓN HISTÓRICA

El interés del ser humano por reproducir las habilidades mentales

humanas se remontan muy atrás en la historia, desde la antigua

Grecia (mito del coloso de Rodas) y pasando por la edad medieval

(estatuas parlantes) hasta el androide Von Kempelen que jugó al ajedrez con Napoleón y el motor analítico de Charles Babbage

que calculaba logaritmos.

Hemos abierto con una cita de Aristóteles y no sin un porqué,

Aristóteles (322-384 antes de Cristo) fue el primero en formular un conjunto de leyes que gobernaban la parte racional de la

inteligencia. Desarrolló un sistema informal para razonar con

silogismos, que se podían extraer conclusiones mecánicamente a

partir de una serie de premisas iníciales.

La idea de inteligencia artificial ha ido acompañada pues por la

filosofía, en 1315 d.c. Ramón Lull adelanto que se podría obtener

razonamiento útil mediante medios artificiales. Thomas Hobbes

(1588-1679 d.c.) relacionó la inteligencia artificial con la computación numérica.

El último elemento en la discusión filosófica es la relación que

existe entre conocimiento y acción, el objetivo es pues crear un

agente que tome decisiones que sean razonables o estén justificadas. El algoritmo de Aristóteles (análisis basado en

objetivos) se implementa 2300 años más tarde por Newell y

Simon con la ayuda de su programa SRGP.

De inicio no se propone que hacer cuando varias alternativas nos llevan al mismo objetivo o que hacer si ningún camino lleva a la

solución.

Las ideas filosóficas necesitan formalizarse formalmente por las

matemáticas y Boole es el primero que desarrolla el concepto de lógica formal.

- 45 -

Page 51: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Aparece el teorema de incompletitud que demostró que en

cualquier lenguaje que tuviese la capacidad suficiente para

expresar las propiedades de los números naturales existen aseveraciones verdaderas no decidibles en el sentido de que no es

posible decidir su validez con ningún algoritmo.

Más tarde Turing afirma que su máquina es capaz de computar

cualquier función computable pero que ninguna máquina puede decidir si se producirá una respuesta dado una entrada o si por lo

contrario seguirá computando indefinidamente.

Otro principio importante de cara a abordar la inteligencia artificial es el concepto de intratabilidad que dice que un problema

es intratable si el tiempo que se necesita para resolverlo crece

exponencialmente con el tamaño de los casos.

Además de la lógica y cálculo otro pilar básico de la inteligencia

artificial se proporciona mediante la probabilidad, siendo

Cardano el primero que propone el concepto en si de

probabilidad. La economía empleando dicho concepto aporta su beneficio con la teoría de decisiones y juegos.

Más cerca de nuestro tiempo actual y con la Neurociencia (1861

hasta presente) se ahonda más en la IA (Inteligencias Artificial) ya que esta se basa en el estudio del sistema neurológico y en

particular, del cerebro.

Santiago Ramón y Cajal que terminó acudiendo a sesiones

espiritistas para intentar comprender aquello que no podía

comprender utilizo la técnica de Golgi para la observación de

neuronas individuales en el cerebro

La ciencia está todavía lejos en este aspecto ya que no hay ninguna teoría de cómo se almacenan recuerdos individuales.

La conclusión increíble de todo esto, por si no es ya de por si

increíble, es que una colección de pequeñas células genera

razonamiento, acción y conciencia. Los cerebros generan inteligencias.

A pesar de que una computadora puede ejecutar una instrucción

en un nanosegundo (mucho más rápido que una neurona) el cerebro acaba siendo 100.000 veces más rápido en su conjunto.

Más cercano a nuestra época y en el 1940 introducimos el campo

de ingeniería computacional, para que la inteligencia artificial

llegue a ser posible se necesitan dos cosas, inteligencia y un artefacto. El artefacto es la computadora y la ingeniería de

computación tiene como objetivo desarrollar eficaz y

eficientemente un computador inteligente. Como podemos ver la

génesis de la inteligencia artificial desde sus orígenes es extensa y complicada.

La inteligencia artificial nace en 1956 y los conceptos que se

deducen de ella se explican en la asignatura por lo que no

ahondaremos en ellos y pasaremos a presentar los sistemas expertos.

3. SISTEMAS EXPERTOS

Se considera a alguien experto en un problema cuando un

individuo tiene un conocimiento especializado sobre dicho

problema

Podría afirmarse que para resolver un problema en la práctica

habría que conocer la respuesta de antemano, ¿si no conocemos la

solución como sabremos que lo hemos resuelto?

El programa DENDRAL es el primero que enfocan este problema, diseñado por Feigebaum y Lederberg encuentran una solución al

problema de inferir una estructura molecular a partir de la

información proporcionada por un espectro de masas. Se resolvía

de la siguiente manera: generación de todas las posibles estructuras que correspondieran a la formula, predicción a

posteriori del espectro de masas y comprobación con el espectro

real.

A continuación comienza el proyecto de programación heurística (PPH) se dedico a determinar el grado con el que la nueva

metodología de sistemas expertos podía aplicarse a otras áreas de

la actividad humana.

Los sistemas expertos emulan el razonamiento de un experto en un dominio concreto. Con ellos se busca una mejor calidad y

rapidez en las respuestas dando así lugar a una mejora de la

productividad del experto, en la mayoría de las ocasiones no

suplen al experto pero si lo ayudan en su labor.

Para un persona sería una experiencia traumática realizar una

búsqueda de reglas posibles al completado de un problema,

mientras la persona responde a las preguntas formuladas por el

sistema experto este recorre las ramas más interesantes del árbol hasta dar con la respuesta al fin del problema.

Estos SSEE (sistemas expertos) son aplicaciones informáticas, son

una amalgama de programas cimentados sobre una base de

conocimientos de uno o más expertos en un área. Estos sistemas imitan a los humanos en la resolución de problemas, que no

necesariamente tienen que estar relacionados con la IA, aunque en

este documento es en ese tipo de sistemas expertos en los que nos

vamos a centrar.

Los sistemas expertos tienen una gran flexibilidad ya que solo

basta con introducir una nueva regla sin necesidad de cambiar el

funcionamiento del programa.

Otra de las ventajas de este tipo de sistemas es la gran cantidad de información que manejan, manejar tal volumen de información es

una tarea compleja para el analista humano.

- 46 -

Page 52: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Un SE se basa en conocimiento declarativo (hechos sobre objetos)

y de control (información sobre el seguimiento de una acción).

Este tipo de sistemas tienen una serie de requisitos para poder ser considerados eficaces.

En primer lugar deben ser capaces de dar explicaciones sobre los

razonamientos a los que llegan. Cada regla debe tener su

explicación y debe estar basada en hechos.

En segundo lugar, un SE, debe ser capaz de adquirir conocimiento

fruto de la experiencia. Es decir, tiene que ser capaz de modificar

los conocimientos almacenados si la experiencia indica que no

son correctos del todo.

Las partes básicas de un SE, como ya se vio en clase, son la base

de conocimientos, la base de hechos, el motor de inferencia, los

módulos de justificación y la interfaz de usuario.

Existen diversos tipos de SE atendiendo al modo de llegar a la solución de los problemas que se plantean. Están los sistemas

basados en reglas previamente establecidas (lógica difusa), los

basados en casos (CBR, razonamiento basado en casos) y los

basados en redes bayesianas (razonamiento basado en la estadística y en el teorema de Bayes).

Algunos ejemplos importantes dentro del ámbito de los SSEE son

DENDRAL (como se cito antes), XCon, Mycin, CLIPS, Prolog…

4. SISTEMAS EXPERTOS EN EL ÁMBITO

DE LA PREDICCIÓN METEOROLÓGICA

Este documento ha comenzado con una cita de Aristóteles, este

filósofo griego no solo reflexionó sobre la inteligencia sino que también fue el primero en hablar de la meteorología. Él acuño ese

término que proviene del griego meteoron (referente a objetos

altos en el cielo). De esta forma, sin saberlo, Aristóteles trabajo en

dos temas muy diferentes a priori que, en la actualidad, están muy relacionados y que están siendo tratados en este documento.

Aunque fue Aristóteles quien acuño el término meteorología, fue

su discípulo Teofrason quien habló por primera vez de previsiones

del tiempo basadas en experiencias vividas y recopiladas.

Sin embargo, fueron necesarios algunos avances técnicos para que

se llegara a poder medir la temperatura ambiental con un

termómetro (Galileo 1607), la presión con un barómetro

(Torricelli 1643), la velocidad del viento con un anemómetro (Hooke 1667) o la humedad con el higrómetro de cabello

(Saussure 1781). Y es que hasta que no existieron estos aparatos

de medida la predicción meteorológica era imprecisa y, en demasiadas ocasiones, arbitraria y localizada ya que las

previsiones se basaban en sucesos meteorológicos ya pasados y en

circunstancias pasadas que posiblemente podían no ser parecidas a

las del momento posterior de predicción, no siempre que hay nubes en el cielo llueve, por ejemplo. Fue Benjamin Franklin el

primer americano en registrar de modo seguro y detallado la

condición del tiempo sobre la base diaria y hacer una previsión

sobre esa misma.

El primero en realizar una explicación general de la circulación

atmosférica global fue George Hadley. A este le siguieron otros

estudios de Gaspard-Gustave Criolis y William Ferrel entre otros.

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

de la moderna previsión del tiempo basada en modelos

matemáticos. En 1922, Lewis Fry Richardson descubrió como

simplificar las variantes de las ecuaciones de los fluidos para facilitar una previsión del tiempo sencilla mediante soluciones

matemáticas. Aun con estas simplificaciones, el cálculo numérico

era bastante grande.

Finalmente, en los años 50 se empezaron a mostrar factibles los experimentos de cálculo numérico con computadores. Dando

lugar a la primera previsión realizada con este método usando los

modelos baroscópicos.

En los años 60 la meteorología adopto la teoría del caos y los

avances matemáticos obtenidos en este campo, de esta forma se

ayudó a estabilizar el límite de previsibilidad del modelo

atmosférico (efecto mariposa).

Otro hito importante en la meteorología es el lanzamiento de satélites meteorológicos. El primero fue el TIROS-1, lanzado en

1960, que marcó el inicio de una difusión global de la información

climática.

Y así llegamos hasta el día de hoy, en el que el uso de

computadores y modelos matemáticos para la previsión del

- 47 -

Page 53: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

tiempo están totalmente afianzados y en el que los satélites juegan

un papel crucial a la hora de saber como se desplazan las tormentas, ciclones,…

En la actualidad existen muchos y muy diversos SSEE

relacionados con los fenómenos atmosféricos. Algunos de ellos

son: Sistema Automático de Información Hidrológica (SAIH), pronóstico de vientos en el Mediterráneo (MEDEX), pronóstico

de ciclones tropicales, análisis del tipo de nubes en imágenes

satelitales, estudio de imágenes satelitales para clasificar el hielo

marino y Prometeo diseñado para la generación y distribución automática de la predicción a partir de modelos matemáticos,

entre otros. Este último se tratara en este documento con una

mayor extensión y profundidad. Además, existen sistemas

expertos que, basándose en los datos meteorológicos recogidos por otros sistemas, llevan a cabo labores de otra índole como

puede ser por ejemplo facilitar a los conductores información

meteorológica en tiempo o real o ayudar a los órganos gestores de

tráfico para un uso más dinámico y en tiempo real de los datos

meteorológicos.

4.1 Sistema Automático de Información

Hidrológica (SAIH)

El SAIH es una red de recogida de datos de precipitación y de control de caudales circulantes.

En la zona del mediterráneo son especialmente útiles estos

sistemas porque las crecidas de los ríos son muy comunes (existe

una creciente ocupación humana de las vegas y riberas fluviales) y muy repentinas. Estas inundaciones causan grandes daños, tanto

materiales como humanos, económicos o sociales, por lo que se

puso de relieve la necesidad de medidas eficaces de previsión,

predicción y control de las crecidas de los ríos.

Sin embargo, esto no es sencillo, existen dos problemas

principalmente: hay un tiempo muy corto para avisar a la

población expuesta al riesgo y una escasa información hidrológica

en los momentos clave. Se hacen necesarios datos en tiempo real o incluso poder preveer mediante modelos el comportamiento de

las cuencas.

El primer sistema de este tipo que se creo en España fue el de la

Confederación Hidrográfica del Júcar en 1984 tras el desastre del embalse de Tous (el cual se podría haber prevenido con un buen

sistemas automático q trabajara con los datos como hace el

SAIH).

Los datos captados por los sensores del sistema se almacenan en los puntos de control. A su vez, estos puntos de control transmiten

la información vía radio y vía satélite al Centro de Proceso (para

el caso del SAIH del Júcar este centro se encuentra en Cuenca). El

centro de proceso es una sala de control del SAIH donde se centralizan las labores de gestión y mantenimiento de la

información que se recibe y, en el caso de España, se suele situar

en la sede de la Confederación correspondiente. Para el caso del

Júcar la sede de la Confederación del Júcar está en Cuenca.

4.2 Pronóstico de vientos en el Mediterráneo

(MEDEX)

MEDEX (MEDiterranean EXpert system) es un paquete software

que usa tecnologías de inteligencia artificial para predecir la

creación, continuación y fin de vientos huracanados. Este software hace uso de sistemas expertos que simulan la experiencia de un

meteorólogo de aproximadamente 25 años de experiencia en el

Mediterráneo para hacer frente a la imprecisión inherente a este

tipo de conocimientos. Pero, ¿por qué surge la idea de MEDEX?

La zona del mediterráneo, como ya se ha indicado anteriormente,

es una de las de más difícil pronóstico principalmente debida esta

circunstancia a la topografía montañosa que lo rodea. La

predicción de los vientos aleatorios de esta zona requiere muchos años de experiencia y de muchos datos los cuales no se tienen. De

esta forma, MEDEX es diseñado como un sistemas de predicción

(que proporciona probabilidades de eventos de vientos

huracanados para complementar las decisiones de pronóstico de sistemas) y un sistema de aprendizaje (fue entrenado con la

experiencia de 25 años en el mediterráneo y aprende con la

utilización de los usuarios).

MEDEX hace uso de sistemas expertos y de tecnologías de conjuntos difusos. Las reglas que siguen sus sistemas expertos en

sus inicios fueron derivadas por Brody y Nestor (1980). La ayuda

de los sistemas difusos, cuyas respuestas no son si o no, sino

rangos de 0 (“absolutamente no”) a 4 (“definitivamente si”). Las reglas están expresadas en términos de lógica difusa, de forma que

los umbrales son reemplazados por conjuntos difusos. Finalmente,

las salidas difusas son porcentajes (de 0 a 100%) que indican la

probabilidad de la predicción

.

4.3 Meteosafety

El proyecto Meoteosafety pretende mejorar la seguridad vial en

las carreteras españolas haciendo un uso inteligente de la información recibida por parte de los sistemas meteorológicos

existentes.

Está liderado por el Instituto de Robótica y Tecnologías de la

Información y la Comunicación (IRTIC) de la Universidad de Valencia (UV) y también está financiado, en parte, por el Centro

de Estudios y Experimentación de Obras Públicas (CEDEX). Se

inició en el 2008 y la creación del prototipo final se llevo a cabo a

finales del 2010, la cual está en fase de implantación en este momento.

- 48 -

Page 54: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Este proyecto cuenta con dos líneas de actuación:

- Actualización dinámica y en tiempo real de los paneles

luminosos de carretera, para que los usuarios tengan en

cada momento la información meteorológica. El sistema experto Meteosafety trata los datos provenientes los

diferentes sistemas meteorológicos para ofrecer dichas

predicciones.

- Análisis de las acciones a tomar para reducir las consecuencias de los fenómenos meteorológicos

adversos (envío de datos al Centro de Gestión de

Tráfico, por ejemplo)

Además de estos dos frentes de actuación se pretende

aprovechar el conocimiento adquirido para asesorar a los

organismos responsables de carreteras y analizar la influencia

de los factores meteorológicos sobre la accidentalidad de las

mismas y así poder ofrecer soluciones. Para facilitar la implantación de este innovador sistema los

trabajos se han basado en los estándares y tecnologías que ya

existen en el mercado.

La integración de estos sistemas expertos va a ayudar a realizar un gran avance para la seguridad de los conductores y

para la gestión eficaz del tráfico y de las carreteras,

4.4 PROMETEO: Sistema Experto basado en

redes Neuronales

1. Introducción

Prometeo, de la estirpe de los Titanes, fue según la mitología el

creador de la humanidad, que este hizo con barro y agua. Es por

tanto un buen nombre para definir a este sistema experto ya que el

ser humano se ve atraído a dotar de inteligencia (al igual que Prometeo) los sistemas consiguiendo de estos beneficios prácticos

para la humanidad.

Este sistema utiliza las predicciones a baja resolución de los

modelos numéricos sobre el grid peninsular y busca configuraciones análogas en las serie diaria 1979-1993 de la base

de datos ERA (del Centro Europeo de Meteorología). Estas

configuraciones análogas permiten entrenar una red neuronal

utilizando como salida los datos locales de cualquier observatorio del Instituto Nacional de Meteorología obteniendo, de esta forma,

un sistema para mejorar la resolución de los modelos numéricos.

Los modelos actuales de predicción meteorológica se basan en la

integración numérica de un conjunto de ecuaciones diferenciales de compleja resolución. El tiempo de cómputo necesario que

tenemos que asumir como coste es tan elevado que el tamaño de

la rejilla no es suficiente para dar pronósticos locales que se

adecuen a las propias características de la zona.

Un ejemplo de esto es el Centro Europeo de Predicción a Plazo

Medio cuya rejilla no permite obtener un pronóstico

meteorológico a una resolución menor a 100 Km.

A pesar de ello contamos con un registro completo de las características de los”microclimas” gracias al I.N.M (Instituto

Nacional de Meteorología).

Nos encontramos con el problema de tener diferencias no

despreciables en los patrones climáticos de estaciones cercanas observando que los patrones de correlación son muy diferentes y

mostrando la limitación de los modelos numéricos a la hora de

realizar pronósticos de forma local.

2. Sistema Prometeo

El proceso de inferencia se basa en dos etapas: se realiza un cálculo de analogías entre la salida del modelo numérico para el

día problema y los datos recogidos por ERA que hemos

comentado anteriormente, obteniéndose un conjunto de días

análogos.

Posteriormente se infieren pronósticos a mayor resolución en base

a los datos numéricos y registros para los días análogos obtenidos

utilizando un modelo de regresión múltiple y una red neuronal.

En la figura anterior podemos ver las etapas que se realizan para

llegar finalmente a la predicción meteorológica, vamos a ir documentando progresivamente dichas etapas.

La recogida de datos ERA (datos que utiliza Prometeo) consiste

en la producción de un re-análisis a partir de los datos recogidos

mediante diversos medios.

Con los datos obtenidos se construyen las condiciones iníciales

para introducir en el modelo numérico del CEPPM obteniendo

predicciones sobre la evolución temporal de la atmósfera.

- 49 -

Page 55: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Una vez hecho esto debemos calcular un conjunto de días

análogos para un día problema, para obtenerlos se compara el estado de la atmósfera del día problema con los estados que

tenemos de ERA. El número de variables asociadas con el grid del

modelo es demasiado grande por lo que seleccionamos variables

representativas que satisfacen nuestros objetivos.

Las variables tienen en cuenta el comportamiento de la atmósfera

en la escala sinóptica (global) y el comportamiento en la

mesoescala (local).

La discrepancia de dos días se obtendría en base a la distancia euclidea de los vectores numéricos resultantes de la mesoescala y

la escala sinóptica en los días analizados.

3. Modelos de regresión y redes

neuronales

Una vez obtenidos los días análogos como hemos visto

anteriormente se puede obtener un pronóstico local donde

tengamos un observatorio del INM, para ello lo que realiza es la

extracción de una relación entre los valores del modelo numérico como son la dirección del viento o temperatura y el valor a

pronosticar y registrado en el observatorio.

Para ello lo más sencillo es utilizar un modelo de regresión

múltiple para obtener una relación lineal óptima entre las variables.

Sin embargo en la figura siguiente podemos ver la necesidad de

obtener un modelo no lineal que nos permita más flexibilidad en

el modelo.

Otro problema importante es determinar el número óptimo de

análogos. Si usamos un conjunto reducido no obtendremos buenos

resultados de estimación. Por otra parte, si usamos un conjunto

muy amplio corremos el riesgo de ocultar la dinámica particular del conjunto de observaciones.

Se ve aquí por tanto la importancia de las redes neuronales en

estos sistemas expertos.

Vamos a profundizar un poco en este concepto para tener más

claro en qué consiste una red neuronal y como se aplica al caso de nuestro estudio.

Como hemos comentado brevemente el cerebro humano tiene

10^11 de neuronas y 10^14 sinapsis (conexiones) en el sistema

nervioso, esto implica que por razones físicas somos capaces de mejorar el tiempo de conmutación de las neuronas, el problema es

que las neuronas naturales mejoran la conectividad en un orden de

1000 veces superior.

Vamos a explicar con mayor detalle los modelos de regresión y redes neuronales desde un punto de vista más matemático.

Los modelos de regresión estudian las relaciones entre una serie

de variables (independientes) „xi‟ y otras variables dependientes o

de respuesta denotadas por „y‟ en función de los valores de las „xi‟.

Donde:

Donde h(.) es la función que liga las componentes β i son los

coeficientes, N es el número de variables independientes y β0 es la

pendiente.

Como hemos comentado lo más sencillo es utilizar un modelo

lineal, este modelo lineal se puede implementar como un modelo

una red neuronal simple. La red neuronal tiene una unidad de

sesgo constante a 1, una entrada „x‟ y una salida:

- 50 -

Page 56: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

El modelo lineal tiene por lo tanto 3 componentes, la variable aleatoria y (con media μ y varianza σ2), un componente que

relaciona las variables independientes (observaciones) „xi‟ con el

predictor lineal η y una función que relaciona la media con el

predictor lineal.

Como hemos comentado lo más sencillo es utilizar un modelo de

regresión múltiple lineal, este es una generalización de lo que

acabamos de contar si se considera que la variable aleatoria se

distribuye como una normal y la función h(.) asume que es la identidad .

El modelo quedaría por lo tanto de la siguiente forma:

Donde . El objetivo es encontrar los coeficientes βi

que minimizan la suma de cuadrados de los errores.

Este problema es equivalente al de una red neuronal con una sola capa donde los βi son los pesos y la función de activación es la

identidad.

El problema es que necesitamos un modelo no lineal que nos de la

flexibilidad que nos falta.

Para ello la función de activación debe ser una función no lineal,

el modelo quedaría de la siguiente forma:

Donde como ya sabemos „xip‟ son las entradas e „yi‟ las salidas.

Cada procesador realiza una actividad muy simple: valor

sigmoidal de la combinación lineal de las actividades recibidas

por la neurona:

4. Salidas del sistema

A continuación vamos a mostrar las salidas del sistema PROMETEO para un par de predicciones entre distintas comarcas

como pueden ser Cantabria y Asturias. Estas comarcas se

encuentran en el territorio norte de la península Ibérica pero deben mostrar sus diferencias locales como se sobreentiende.

Los pronósticos se actualizan cada 12 horas y tras la supervisión

de un experto se envían a una página web.

Como podemos ver en la figura anterior tenemos múltiples variables de salida que contienen el estado de las rachas de viento,

niebla, nubosidad, lluvia si la hubiere, granizo, o el estado de la

marea.

Mostramos aquí los resultados:

5. CONCLUSIONES

A lo largo de este documento hemos hecho una introducción a la

inteligencia artificial cuya primera piedra pone Aristóteles en su

obra Metafísica, hemos visto la parte más histórica de la

inteligencia artificial viendo su evolución hasta nuestros días.

Hemos justificado por lo tanto la razón de ser de este documento y dado el porqué de la razón que hace tan importante la IA.

Una vez hecho esto nos hemos centrado en los sistemas expertos,

los hemos definido y comprendido para pasar a los sistemas

expertos en el ámbito de la meteorología.

Hemos visto los SEs SAIH, MEDEX y METEOSAFETY para

pasar a un ejemplo práctico de esto: el sistema experto

PROMETEO.

Hemos introducido PROMETEO y visto en que etapas resuelve el

proceso de predicción describiendo el modelo de regresión lineal

y no lineal desde el punto de vista de las redes neuronales.

- 51 -

Page 57: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Por último hemos visto algún resultado práctico del sistema

Prometeo.

Visto todo lo anterior podemos concluir la importancia de la IA

no solo para un proceso que puede no parecer crítico como la

predicción meteorológica (realmente si es crítico y beneficioso),

sino en cualquier ámbito que involucra a la especia humana.

Es por tanto una herramienta que en sí misma es altamente

interesante y beneficiosa y que solo bajo un mal uso del ser

humano puede ser destinada para fines pocos éticos. Es por tanto

labor nuestra usar el conocimiento con fines justificados y beneficiosos para nosotros.

Desde el punto de vista meteorológico, permite evitar la sesga de

vidas por catástrofes naturales y nos ha permitido comprender

mejor los sistemas expertos.

El sistema PROMETEO nos resulta pues, un sistema de alta

importancia que nos permite realizar predicciones locales gracias

a los modelos de regresión no lineales que hemos explicado en

este documento, logrando de esta forma, una buena precisión y resolución en la predicción que como su nombre indica no deja de

ser eso, una predicción.

6. BIBLIOGRAFÍA [1] Wikipedia

http://es.wikipedia.org/wiki/Sistema_experto

http://es.wikipedia.org/wiki/Historia_de_la_meteorolog%C3%AD

a

http://es.wikipedia.org/wiki/Sistema_Autom%C3%A1tico_de_Inf

ormaci%C3%B3n_Hidrol%C3%B3gica

[2] Brody, L. R. & Nestor, M.J.R. (1980). Regional Forecasting Aids for the Mediterranean Basin (Handbook for Forecasters in

the Mediterranean, Part 2) (MEDEX)

[3] Kandel, A. (1992). Fuzzy Expert Systems, CRC Press, Boca

Raton, FL, 314 pp. (MEDEX)

[4] Zadeh, L.A. (1983). The role of fuzzy logic in the

management of uncertainty in expert systems. Fuzzy Sets Syst.,

11: 199. (MEDEX)

[5]MEDEX

http://www.nrlmry.navy.mil/~medex/

[6] SAIH

http://www.mma.es/portal/secciones/acm/aguas_continent_zonas_

asoc/saih/index.htm

[7] METEOSAFETY

http://www.tecnocarreteras.es/web/items/1/6/meteosafety-un-uso-

inteligente-de-la-informacion-meteorologica

[8] PROMETEO

[Bishop97] Bishop, B. Neural Networks for Pattern Recognition.

Clarendon Press, 1997

Juan Miguel Marín Diazaraque. Introducción a las Redes Neuronales Aplicadas

PROMETEO: Un Sistema Experto para el Pronóstico

Meteorológico Local basado en Redes Neuronales y

Cálculo de Analogías. grupos.unican.es/ai/meteo/articulos/caepia99.pdf

http://www.monografias.com/trabajos30/sistemas-

expertos/sistemas-expertos.shtml#ejempl

http://grupos.unican.es/ai/meteo/Book.html

- 52 -

Page 58: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Traducción automática. Técnicas y aplicaciones Isabel Cuadrado Gutiérrez Ingeniería de Telecomunicación Universidad Carlos III de Madrid

[email protected]

David Ferrer Figueroa Ingeniería de Telecomunicación Universidad Carlos III de Madrid

[email protected]

ABSTRACTO

En este texto se aborda un tema de gran relevancia en la

actualidad, el concepto de la traducción automática. Se analizará

esta desde su origen hasta la actualidad, tratando la evolución de

las distintas técnicas empleadas para obtener la mayor calidad

posible en las traducciones.

Asimismo, se hace un breve repaso a las aplicaciones más

utilizadas y al desarrollo futuro previsto en este campo teniendo

en cuenta, entre otros factores, la rentabilidad del negocio y la

calidad de la traducción.

Categorías y descripciones I.2.6.g [Computing Methodologies]: Machine learning

I.2.7.f [Computing Methodologies]: Machine translation

Términos generales

Documentación, Algoritmos, Teoría

Palabras clave

1. INTRODUCCIÓN Desde el origen de los tiempos, el hombre, como ser social, ha

necesitado comunicarse con otras personas. Si bien en un

principio el entorno del ser humano era restringido, conforme ha

ido avanzando el tiempo, el hombre ha ido expandiendo su área de

acción, lo cual le supone un problema cuando ha de hacerlo con

alguien que no habla su misma lengua. Esta necesidad de

comunicación unida a la cantidad de información disponible hoy

en día en todo tipo de lenguas hace que sea más que necesaria la

mecanización de la traducción.

La traducción supone todo un reto para los seres humanos dado

que no tenemos el mismo dominio en ambas lenguas, pero el

hecho de intentar que todo el proceso de traducción lo lleve a cabo

un sistema automatizado se convierte en un trabajo todavía más

complejo.

Por este motivo, hoy en día uno de los principales objetivos del

ser humano es conseguir que, mediante el uso de tecnología, se

puedan pasar las palabras habladas y escritas en una lengua a otra

sin perder información por el camino ni decir cosas diferentes a

las del texto original.

Uno de los pioneros en dar a conocer la traducción automática

fue Warren Weaver que además de introducir este concepto

sugirió algunos métodos para encarar la disciplina como son el

uso de técnicas criptográficas, los análisis estadísticos, la

exploración de la lógica subyacente, la aplicación de los teoremas

de Shannon. Los primeros desarrollos informáticos se realizaron a

finales de la década de 1950 pero no se obtuvieron los resultados

que se esperaba.

En la actualidad, no hay ningún sistema capaz de obtener

resultados de igual calidad que un traductor humano.

Especialmente, si la traducción se realiza sobre un texto de

lenguaje común o coloquial. Nadie ha sido capaz hasta ahora, ni

empleando el mejor programa que hay en el mercado, de ofrecer

la fluidez y habilidad que nos proporcionan los nativos de un

idioma y los traductores humanos. No nos cansaremos de reiterar

lo complicada que puede llegar a ser la traducción, debido en gran

medida a que el significado de las palabras depende siempre del

contexto en el que se formulan.

Todos los traductores de los que disponemos en la red hacen que

en la gran mayoría de ocasiones la traducción se haga inteligible

entre otros motivos porque realizan mal las puntuaciones, tienen

errores gramaticales, desplazan las palabras y son bastante

imprecisos. La deficiencia con la que cuentan algunos sistemas en

cuanto a traducciones se refiere es tal que sólo son capaces de

traducir algunas palabras o frases hechas como ocurre por ejemplo

con algunos sistemas de reservas de vuelos.

Se ha observado sin embargo, que cuando se pretende realizar una

traducción entre dos lenguas que no tienen raíces comunes (como

por ejemplo el español y el alemán) la calidad de la traducción

empeora mucho en comparación con la que se consigue

traduciendo entre lenguas de raíces afines (por ejemplo, las

lenguas romances: Español, portugués, francés, etc.).

Se ha comprobado que uno de los factores más importantes para

obtener una traducción de alta calidad, es el grado de

especialización, ya que cuanto más especializado esté el sistema al

Permission to make digital or hard copies of all or part of this work

for personal or classroom use is granted without fee provided that

copies are not made or distributed for profit or commercial advantage

and that copies bear this notice and the full citation on the first page.

To copy otherwise, to republish, to post on servers or to redistribute

to lists, requires prior specific permission and/or a fee.

Copyright © 2011 Isabel Cuadrado Gutiérrez y David Ferrer

Figueroa

Inteligencia en Redes de Comunicación. 2011

- 53 -

Page 59: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

tipo de texto y vocabulario que se pretende traducir mejor será la

calidad del texto obtenido.

Así pues, un sistema especializado en traducir cotizaciones en

bolsa produce traducciones muy buenas, incluso para lenguas que

no son afines. Sin embargo, esta idea no se puede aplicar a

campos como la medicina.

La traducción es un proceso más tedioso de lo que parece ya que

con sustituir todas las palabras por su significado correspondiente

no es suficiente, tenemos que tener en cuenta otra gran cantidad

de factores como son el orden en que aparecen las palabras, la

influencia que tienen unas sobre las otras, el contexto en el que

son escritas, etc. Esto es debido a que todos los idiomas cuentan

con tres factores fundamentales en las construcciones de oraciones

como son la morfología de las palabras, la sintaxis de las frases y

la semántica, un texto por muy sencillo que parezca puede contar

con palabras o frases ambiguas.

Sin embargo, hoy en día existen métodos estadísticos que

traducen textos sin tener en cuenta la gramática, pero la tendencia

actual es aplicar todas las metodologías a lo que llamamos corpus

lingüísticos.

2. HISTORIA: La idea de la traducción automática se remonta al siglo XVII. En

1629, René Descartes ya propuso un lenguaje universal, con ideas

equivalentes en otras lenguas que compartiesen un mismo

símbolo.

En el siglo XIX, Jean-François Champollion consiguió, tras

muchos intentos fallidos, descifrar los jeroglíficos egipcios a

través del primer texto bilingüe conocido, la Piedra Rosetta. Esta

piedra es un fragmento de una estela egipcia que contiene un

mismo texto escrito en tres lenguas distintas: Egipcio demótico,

antiguos jeroglíficos egipcios, y griego antiguo.

Imagen 1. Piedra Rosetta

Para poder descifrarla, Champollion tuvo que buscar patrones

entre los textos, símbolos repetidos y posteriormente encontrar su

significado.

La idea de utilizar ordenadores para traducir idiomas fue

propuesta en 1946 por A.D. Booth entre otros.

En la década de 1950, se llevó a cabo el conocido como

“Experimento de Georgetown”, donde se tradujeron exitosamente

más de cincuenta frases del inglés al ruso. Este experimento

supuso un punto de inflexión en esta área de trabajo, y también el

comienzo de una época dorada en el campo, donde se invirtió una

gran cantidad de dinero.

En 1954, en el Birkbeck College (Universidad de Londres) se

consiguió realizar una traducción muy básica entre el francés y el

inglés usando la máquina APEXC. Otro ejemplo, fue la lectura y

escritura de textos Braille por ordenador.

Por aquel entonces se esperaba que la traducción automática fuese

un problema resuelto en unos 4 o 5 años. Pero la realidad fue muy

diferente, y conforme se observaba que los frutos obtenidos no

eran los esperados, la financiación dedicada a esta área se fue

reduciendo notablemente.

Por aquel entonces, la traducción automática se realizaba casi por

completo mediante sistemas basados en reglas. Como su nombre

indica, estos sistemas de traducción requerían de expertos en

lingüística que formasen los diccionarios de ambos lenguajes

teniendo en cuenta tanto reglas gramaticales como sintácticas. Por

ejemplo, que en español los adjetivos siguen al nombre y en inglés

es al revés. No obstante, la gran complejidad de los idiomas, con

todas sus variantes, hacía que los sistemas resultantes se

encontrasen muy lejos de una traducción de calidad.

Con los avances tecnológicos propios de la década de los 80, se

consiguió abaratar y aumentar la potencia de los ordenadores, y

esto permitió a los expertos centrar su investigación en otros

modelos de traducción, los llamados modelos estadísticos. Desde

entonces, los investigadores han ajustado sus algoritmos

basándose en esta metodología.

Otro momento de gran importancia en el campo sucedió con el

boom de Internet. Desde entonces han salido a la luz ingentes

cantidades de textos iguales en diversos idiomas. Este hecho ha

permitido los sistemas comparar muchos más textos y conseguir

traducciones mejores.

Sin embargo, prácticamente desde que se comenzó a trabajar en

este aprendizaje máquina, ha habido diversidad de opiniones

acerca de si una máquina podrá ser capaz algún día de producir

traducciones de texto con una gran calidad. Si bien grandes

expertos en el área consideran este objetivo como imposible, y

relegan el papel de la traducción automática a una herramienta

para el traductor humano, otros creen que en un futuro sí será

posible automatizar las traducciones con una calidad óptima

3. TRADUCCIÓN AUTOMÁTICA Este subcampo de la lingüística computacional investiga el uso de

programas para traducir texto o voz entre dos idiomas. [1]

Existen diferentes aproximaciones para traducir lenguajes. La

aproximación más sencilla consiste en cambiar directamente

palabras provenientes de un lenguaje en palabras de otro. Sin

embargo, este método puede inducir a una mala traducción,

puesto que en muchas ocasiones, la información que prima se

basa en el contexto y la frase en las que se encuentra la palabra a

traducir.

- 54 -

Page 60: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Una manera de solventar el problema anterior consiste en situar el

contenido a traducir en el contexto del que proviene. Así, se

pueden acotar los posibles significados del texto y sus

traducciones. Por ello, muchos programas hoy en día permiten

focalizar la búsqueda en función de las profesiones o de los

campos a los que va dirigido el texto.

No obstante, la ayuda de las personas sigue siendo muy útil (y

necesaria en muchos casos) para obtener mejores resultados en la

traducción. Por ejemplo, si se le indica al sistema que palabras del

texto son nombres propios, acrónimos, o palabras en general que

no se deben traducir, el traductor puede ofrecer resultados más

precisos.

4. COMPONENTES DE UN SISTEMA DE

TRADUCCIÓN AUTOMÁTICA La traducción automática puede dividirse en tres fases principales.

Primero el sistema tiene que analizar la entrada en el lenguaje

original para crear una representación interna. Entonces,

normalmente se manipula esta representación interna para

transferirla a una forma adecuada del lenguaje destino.

Finalmente, genera la salida en el lenguaje de destino.

Normalmente, un sistema de traducción automática contiene

componentes de análisis, transferencia y generación. Estos

componentes incorporan un gran conocimiento de las palabras

(conocimiento léxico) y del lenguaje (conocimiento lingüístico).

Este conocimiento es almacenado en uno o más lexicones y

posiblemente en otras fuentes de conocimiento lingüístico, como

gramáticas. La interfaz de usuario es invariablemente una parte

crucial de la mayoría de los sistemas de traducción automática. La

interface permite a los usuarios verificar, desambiguar y si es

necesario, corregir la salida del sistema. Otra característica común

dentro del procesamiento de lenguaje natural es el uso de grandes

“corpora” (plural de “corpus”). Un corpus es una gran colección

de texto que ha sido correctamente etiquetada, y se emplea para

adquirir el conocimiento léxico y lingüístico requerido.

El lexicón es un componente importante de cualquier sistema de

traducción automática Contiene toda la información relevante

acerca de palabras y frases que se requiere para los distintos

niveles de análisis y generación. Una entrada típica del lexicon

para una palabra contendría la siguiente información acerca de la

palabra: La parte de discurso, las variantes morfológicas, las

palabras típicas, frases o construcciones típicas que acompañan a

esta palabra, algún tipo de información semántica acerca de la

palabra e información acerca del equivalente de la palabra en el

lenguaje de destino. Algunos sistemas prefieren dividir el lexicón

en lexicones de fuente, destino y transferencia que enlaza los otros

dos. El formato exacto de los lexicones depende del diseño

ingenieril.

5. TIPOS DE TRADUCCIÓN

AUTOMÁTICA

5.1 Basada en reglas Este es el método inicial explicado anteriormente; consiste en

dividir el texto original en fragmentos, y convertir estos

fragmentos en partes del texto en el lenguaje de destino.

El proceso a seguir en este tipo de traducciones es el siguiente:

Primero, se crea una representación simbólica del texto y

posteriormente se pasa de esa representación al lenguaje de

destino. Sin embargo, esta representación se puede dividir en

diversos niveles según su profundidad: Se pueden traducir todas

las palabras independientemente de las demás, o bien, se puede

crear una interlingua, donde existe una representación intermedia

completa. En la Imagen 2 se puede observarlas aproximaciones

basadas en diccionario (color rojo), en transferencia (color verde)

e interlingua (color azul).

Imagen 2. Modelos de traducción automática basados en

reglas

5.1.1 Basada en diccionario

Se basa en el uso de entradas de diccionario. Esto quiere decir que

se hará una traducción directa palabra por palabra, que por lo

general, carece de relación con las palabras colindantes.

Si bien esta técnica es la más rudimentaria, es válida para la

traducción de listas de frases (ej. Frases incompletas o catálogos

sencillos de productos y servicios).

También se puede utilizar para facilitar la traducción manual si la

persona a cargo de la traducción tiene un elevado nivel de

comprensión en ambos idiomas, y por lo tanto, es capaz de

corregir errores de sintaxis y gramática.

En la Imagen 3, se puede apreciar un ejemplo de un mal uso de la

traducción basada en diccionario.

- 55 -

Page 61: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Imagen 3. Traducción basada en diccionario

5.1.2 Basada en transferencia: Este método tiene en cuenta que para poder realizar

adecuadamente una traducción es necesario tener una

representación intermedia que sea capaz de entender el significado

de la frase original y así, poder producir la traducción adecuada.

Normalmente, se sigue el siguiente patrón a la hora de realizar una

traducción basada en transferencia: Primero se analiza el texto de

entrada sintáctica y morfológicamente para crear la representación

interna. Posteriormente, se genera la traducción desde esta

representación interna empleando vocabulario y reglas

gramaticales.

Esta técnica produce resultados satisfactorios en

aproximadamente un 90% de los casos.

5.1.3 Basada en un lenguaje intermedio:

En este caso, también se considera necesario emplear un lenguaje

intermedio para realizar la traducción. Sin embargo, ahora este

lenguaje tiene una importancia mucho mayor, es la interlingua. El

lenguaje original, es convertido a esta interlingua que

estructuralmente, es independiente de ambos lenguajes (origen y

destino). Finalmente, el texto traducido se obtiene desde esta

interlingua.

5.2 Basada en contexto: Este método emplea técnicas que buscan la mejor traducción

posible para cada una de las palabras basándose en su contexto

(palabras colindantes). Así pues, el texto se divide en ventanas de

unas pocas palabras, y se busca la traducción idónea para cada una

de las palabras, desechando todas las acepciones que no tienen

sentido dentro de la ventana utilizada.

Posteriormente, se desplaza esta ventana una posición (palabra), y

se repite el proceso anterior. Como se puede observar, una sola

palabra se traduce en varias ocasiones hasta obtener un resultado

óptimo.

Finalmente, se amplían las ventanas para que las frases, o el texto

en general tengan también significado, y se hace otra búsqueda.

Este proceso se va ampliando hasta que implica a una parte de

texto suficientemente grande.

Los resultados proporcionados por este método son muy buenos,

aunque sin embargo, conlleva un elevado coste computacional por

todas las iteraciones que son necesarias para traducir un texto.

Sin embargo, como contrapartida, es muy sencillo ampliar la

traducción a nuevos idiomas, ya que al no precisar de un lenguaje

intermedio, la traducción se realiza únicamente con diccionarios y

un corpus apropiado.

5.3 Basada en corpus La traducción automática realizada en base a un corpus lingüístico

consiste en el análisis de textos lingüísticos con sus respectivas

traducciones. Podemos diferenciar entre dos tipos de mecanismos

que emplean los corpus como son los basados en métodos

estadísticos y los basados en ejemplos. Para comprender el

funcionamiento de ambos métodos que explicaremos a

continuación hay que tener claros los conceptos siguientes:

- Corpus bilingüe paralelo: Es la selección de un texto original y

de su traducción en otra lengua, colocado todo de forma natural

sin haber realizado ningún análisis ni separación.

- Corpus bilingüe alineado: Es la selección de un texto original y

de su traducción en otra lengua colocada siguiendo algún tipo de

orden pudiendo éste ser realizado por palabras, frases o párrafos.

- Alineamiento: Este término se define como la acción de

identificar en dos textos en idiomas diferentes, qué partes de uno

de ellos (párrafos, frases, palabras) se corresponden con las del

otro.

5.3.1 Traducción automática estadística El empleo de técnicas estadísticas en la traducción automática

cuenta con defectos y virtudes como suele ocurrir con muchos

aspectos hoy en día. Un beneficio destacable es el poder conseguir

que un sistema aprenda a traducir gracias a una inmensa cantidad

de ejemplos de los que se realiza su traducción previamente.

Asimismo, este hecho hace a su vez que se vean los importantes

defectos que van a arrastrar estos sistemas de traducción, como

son la necesidad de disponer de estos corpus y el hecho de que el

sistema obtenido es muy sensible al sistema de entrenamiento

utilizado.

Debido a este motivo se han obtenido resultados bastante

satisfactorios cuando se emplea traducción estadística en campos

restringidos de traducción que están especializados en un lenguaje

determinado, por el contrario cuando el traductor sale de este

campo y abarca un ámbito de lenguaje más coloquial, predominan

todavía los sistemas que se basan en conocimiento.

Los sistemas de traducción estadísticos parten de lo que se conoce

como corpus bilingüe. Para que se entienda mejor el concepto, un

ejemplo de corpus bilingüe sería por ejemplo los subtítulos de una

película.

El proceso comienza con la obtención de un corpus bilingüe, y

una vez que se dispone de éste, se pasa al proceso de alineación.

La finalidad de la alineación del corpus es crear una

correspondencia entre las palabras de un idioma y otro, y es en

este punto donde la estadística empieza a ser importante.

Para hacernos una idea de cómo va a funcionar el sistema

imaginemos que tenemos dos textos iguales en dos idiomas

diferentes. Si nos ponemos a compararles oración por oración nos

- 56 -

Page 62: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

damos cuenta de que ciertas palabras en uno de ellos siempre se

corresponden con otras en el otro texto. Por ejemplo, si en todas

las oraciones inglesas de un texto en las que aparece la palabra

“boy” vemos que la versión en español tiene la palabra “niño”

relacionaríamos una con la otra obteniendo su traducción.

Del mismo modo en esta etapa el sistema observa muchos pares

de oraciones escritos en dos idiomas diferentes, siendo unas

traducciones de las otras y a partir de lo que observa construye

asociaciones entre palabras. Para lograr buenas asociaciones es

necesario observar muchas oraciones, ya que con una única

oración sin saber nada del idioma es imposible determinar con

certeza el significado de algunas palabras, así podemos decir que

cuanto más grande sea el corpus con más certeza crearemos

asociaciones.

Una vez completado el alineamiento de todos los pares de

oraciones, buscamos entre nuestras asociaciones las que encajan

en nuestra oración realizando así la traducción.

Sin embargo, utilizando únicamente estas asociaciones no siempre

es posible traducir de forma correcta una oración, ya que por

ejemplo podemos encontrarnos con palabras que muestran

ambigüedades como por ejemplo la palabra “ganar” en una

sentencia en inglés puede ponerse como “win”,”gain”,”get” y no

sabemos cuál de todas es la correcta para nuestra oración.

Por ello en la traducción automática estadística se emplean dos

modelos: el de traducción y el de lenguaje. Con estos modelos

podremos puntuar a las posibles traducciones eligiendo finalmente

a la que tenga mayor puntuación. Con el modelo de traducción

puntuamos lo bien que está traducida una palabra, mientras que

con el modelo de lenguaje puntuamos lo bien que está escrita la

traducción.

Estos modelos no son los únicos que participan en el cálculo de la

traducción, existen varios dependiendo del paradigma de

traducción que se siga. El que nos vamos a centrar en explicar es

el basado en frases, para ello nuestro corpus tiene que estar

alineado a nivel de oraciones de forma que tendremos dos

documentos con el mismo número de oraciones tal y como se

muestra a continuación:

Imagen 4. Ejemplo de corpus basado en frases

Posteriormente, se continua alineando al nivel de palabras: Para

cada par de oraciones del corpus paralelo, se enlazan las palabras

de la oración fuente con las palabras de la oración destino.

Finalmente se realiza la extracción de frases bilingües,

entendiendo estas como la unión de dos frases tal que no exista un

enlace entre alguna de las palabras de la frase bilingüe y una

palabra que esté fuera de la misma:

Imagen 5. Ejemplo de extracción de frases bilingües

En este ejemplo se puede ver que la frase bilingüe “This will”-

“Este será” no es válida, pues el enlace “be”-“será” asocia una

palabra dentro de la frase con una fuera. De esta forma serán

válida frases como “This will be”-“será”, “will be”- “será”,

“interesting”-“interesante”, “interesting example”-“ejemplo

interesante”, "This will be an interesting example”-“Este será un

ejemplo interesante”.

Una vez extraídas todas las frases de todos los pares de oraciones

del corpus podemos calcular el modelo de traducción. Ésta técnica

de traducción parte de la definición de un modelo estadístico en el

que se trata de estimar la probabilidad de que, dadas dos frases

cada una en un idioma, una sea la traducción de la otra, y así

poder decidir cómo de buena es una traducción para una frase

determinada; todo esto a partir de funciones y cambios

estadísticos.

Este modelo de traducción junto con el de lenguaje (que también

basándose en funciones estadísticas estimará la probabilidad de

que una traducción ya realizada sea la más adecuada para ese

texto en concreto y esté hecha de forma correcta) intentarán

conseguir una traducción con la mejor calidad posible.

5.3.2 Traducción basada en ejemplos La idea en la que se fundamenta la traducción basada en ejemplos

tal y como su nombre indica, es realizar las traducciones a partir

de ejemplos similares a las oraciones que se pretenden traducir y

de los cuáles ya conocemos su traducción. Se precisa contar con

una gran cantidad de corpus bilingües alineados para obtener estos

ejemplos de traducciones y almacenarlos en bases de datos para

- 57 -

Page 63: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

que resulte más fácil encontrarlos a partir de las palabras que

contienen los ejemplos.

Además, hay que tener en cuenta otro concepto dentro de la

traducción basada en ejemplos, las memorias de traducción. Al

igual que en el caso de los ejemplos, las memorias de traducción

buscan en el corpus bilingüe frases similares a las que se quiere

traducir en un momento determinado y se mira cómo se tradujo

dicha frase tomándola como ejemplo. El traductor podrá emplear

esta información como referencia una vez la haya encontrado.

La forma de llevar a cabo la traducción de un sistema basado tanto

en ejemplos como en memorias se realiza de la siguiente forma:

en primer lugar se introduce al sistema el texto del que queremos

obtener la traducción, seguidamente el sistema le divide en

unidades de texto buscando en la base de datos aquellos ejemplos

que se asemejan a nuestras unidades. Si la traducción se basa en

memorias, el sistema extrae todos los ejemplos que encuentra

proporcionándoselos a un traductor humano que será el encargado

de construir las frases adecuadas Sin embargo si la traducción

está basada en ejemplos, no hay intervención humana en el

proceso realizándose todo el proceso por el sistema automatizado

que se arriesga a tomar las decisiones que producirán el texto de

salida.

A la hora de realizar la búsqueda de los ejemplos, hay que tener

cuidado con la longitud de las unidades de texto elegidas para

realizar dicha búsqueda dado que si establecemos segmentos con

una longitud muy pequeña podemos encontrarnos con demasiados

problemas de ambigüedad que en muchos casos provocarían que

el sistema se confundiese en sus decisiones al realizar la

traducción.

Actualmente muchos sistemas basados en ejemplos funcionan

utilizando la oración como unidad de texto, pero cabe destacar

que para explotar la capacidad con la que cuentan estos sistemas

debemos emplear unidades más pequeñas que la oración y así a

partir de ellas, realizando combinaciones, producir oraciones

completas.

5.4 Traducción híbrida Estas técnicas aprovechan los puntos fuertes de las metodologías

basadas en reglas y estadística.

Actualmente varias empresas dedicadas a la traducción

automática (Asia Online, LinguaSys, Systran, PangeaMT, UPV)

afirman tener sistemas híbridos de este tipo.

Se pueden distinguir dos variantes principales dentro de esta

metodología:

5.4.1 Reglas de post-procesado por las estadísticas Las traducciones son realizadas utilizando un motor basado en

reglas. Posteriormente se emplean reglas estadísticas en un intento

de ajustar o corregir la salida del motor de reglas.

5.4.2 Estadísticas guiadas por reglas: Las reglas se utilizan para preprocesar los datos, en un intento de

orientar mejor el motor estadístico. Las reglas son empleadas

también en el post-proceso de la producción estadística para

realizar funciones tales como la normalización. Este enfoque tiene

mucho más poder, flexibilidad y control cuando se traduce.

6. DESAMBIGUACIÓN EN LA

TRADUCCIÓN La desambiguación consiste en encontrar la traducción correcta

cuando hay varias traducciones posibles. Este problema fue

enunciado en la década de 1950 por Yehoshua Bar-Hillel. Él

indicaba que sin una enciclopedia universal, una máquina nunca

sería capaz de distinguir entre dos significados de una misma

palabra.

Hoy en día existen numerosas aproximaciones diseñadas para

paliar este problema. Pueden dividirse en someras y profundas.

Las aproximaciones someras asumen que no hay un conocimiento

del texto. Simplemente aplican métodos estadísticos a las palabras

que rodean a la palabra ambigua para obtener el resultado mejo.

Las aproximaciones profundas sin embargo, pre asumen un

conocimiento comprensivo de la palabra.

Sin embargo, a día de hoy, las aproximaciones someras han

demostrado dar mejores resultados en las traducciones.

Grandes expertos en el mundo de la traducción (como Claude

Piron, que fue traductor para las Naciones Unidas y la

Organización Mundial de la Salud), indican que la traducción

automática, como mucho, será capaz de automatizar la parte más

sencilla del trabajo de un traductor; sin embargo, la parte más

costosa y que consume mayor cantidad de tiempo, tendrá que

seguir siendo realizada por una persona cualificada, ya que

normalmente implica hacer una investigación extensa para

resolver ambigüedades en el texto de origen.

Para poder realizar esta investigación a un nivel tan profundo sería

necesario que el software de traducción emplease también parte

de sus recursos a buscar la desambiguación correcta. Sin embargo,

esto requiere un nivel de desarrollo en Inteligencia Artificial que

no se ha alcanzado aún.

7. SERVICIOS DE TRADUCCIÓN

AUTOMÁTICA Si bien, como se ha indicado anteriormente, ningún sistema de

traducción hoy en día es capaz de producir una traducción

perfecta en campos que no se encuentren restringidos, hay una

gran variedad de sistemas automáticos que producen resultados

muy notorios.

A continuación vamos a nombrar sólo dos de estas aplicaciones.

No obstante, para mostrar el gran impacto que tiene este mercado,

y la cantidad de empresas que hay, mostramos en la siguiente

tabla, una comparación entre las empresas más importantes y el

número de lenguajes en los que traducen.

Tabla 1. Número de idiomas disponibles por empresa

Compañía Número de idiomas

Asia Online 77

Google Translate 65

WorldLingo 43

PROMT 43

Apertium 42

Systran 36

Systran 36

- 58 -

Page 64: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

7.1 Systran Systran es una de las empresas más antiguas en traducción

automática. Fue fundada por el Dr. Peter Toma en 1968 y ha

trabajado durante muchos años para el departamento de defensa

de los Estados Unidos de América y para la Comisión Europea.

En un origen, basó sus métodos de traducción en reglas, aunque

posteriormente ha ido migrando a memorias de traducción (corpus

paralelos).

Hoy en día es una de los sistemas más utilizados aunque muchas

veces el cliente lo desconoce. Este sistema se encuentra integrado

en aplicaciones como en el traductor de textos de los ordenadores

que emplean el sistema operativo Mac OS X, en el traductor

online de Yahoo!, Yahoo! Babel Fish, y fue también utilizado por

el buscador Google hasta 2007.

7.2 Google translate Posiblemente es una de las aplicaciones más conocidas para

traducir textos hoy en día. Esta herramienta de uno de los gigantes

de Internet, Google, proporciona traducción automática entre 65

idiomas (Si bien, entre muchos de ellos se realiza una traducción

intermedia al inglés). Para lograrlo, el sistema busca rápidamente

en Internet de entre la gran cantidad de textos ya traducidos que

existen, aquella combinación de palabras que proporciona un

resultado mejor. El sistema empleado para la traducción es

estadístico, y por tanto, su misión no es fragmentar y reunir las

frases para obtener el significado, sino que proporciona un

resultado obtenido tras analizar los textos equivalentes más

probables. Las fuentes de datos provienen en la mayoría de los

casos de traducciones humanas: Desde textos clásicos hasta

obras modernas. En el primer caso los resultados son muy

interesantes, pero cuando se enfrenta a nuevos textos, en muchos

casos, Google Translate se pierde en la intención, el contexto real

y el estilo.

8. PROBLEMAS EN LA TRADUCCIÓN

AUTOMÁTICA La traducción automática en sí misma es un problema difícil por

dos motivos principalmente: El primero es que los lenguajes

naturales son muy ambiguos. Esta ambigüedad se da en todos los

niveles (tanto léxico, sintáctico, semántico como pragmático).

Una palabra of rase puede tener más de un significado. Decidir el

significado adecuado en cada momento es crucial para hacer un

análisis correcto. El segundo motivo es que cuando los humanos

emplean el lenguaje natural, emplean a la vez una enorme

cantidad de sentido común, y conocimiento acerca del mundo, que

les ayuda a resolver la ambigüedad. Conseguir que la traducción

automática consiga el mismo conocimiento del mundo en un

contexto sin restricciones requiere de un gran esfuerzo.

9. INVESTIGACIÓN ACTUAL Y

RENTABILIDAD DE LA TRADUCCIÓN

AUTOMÁTICA Las investigaciones llevadas a cabo hoy en día en los sistemas de

traducción automática están centradas en especial en la búsqueda

y mejora de técnicas de aprendizaje máquina para adquirir el

significado de las palabras y la gramática de forma automática.

Estas tareas necesitan emplear inmensas cantidades de corpora y

aplicar técnicas estadísticas como por ejemplo redes neuronales

para obtener correlaciones en el corpus. Los corpora que se

emplean en estas investigaciones pueden ser para un único idioma

o bien pueden ser corpora bilingües alineados, que tal y como se

ha comentado con anterioridad se trata de textos traducidos en dos

lenguas y ordenados haciendo corresponderse ciertas partes del

texto origen con el texto destino.

Las memorias de traducción son otra línea de investigación hoy en

día. Consisten en recordar automáticamente las traducciones

completas de frases o expresiones comunes para evitar procesarlas

repetitivamente.

Actualmente, hay gran actividad en el mundo de la traducción

automática en Japón y la Unión Europea, y por extensión en

EEUU.

Todavía se continuará investigando hasta que se obtenga un

sistema de traducción que, desde el punto de vista lingüístico y

comercial, sea rentable. Como hemos comentado ya a lo largo del

trabajo los sistemas han sido útiles y rentables cuando nos

centramos en campos y ciencias específicas de un grupo, por ello

se está tendiendo a realizar sistemas que se basan en lo que

denominaríamos sublenguajes como entre otros podemos

encontrar, el jurídico, el científico, el médico, el filosófico, etc.

Estos sublenguajes no requieren traducciones de calidad elevada y

pueden resultar muy valiosos para las personas que desempeñen

actividades dentro de estos campos. La traducción resultará más

sencilla haciendo estas subdivisiones dado que el vocabulario será

más reducido y la sintaxis está más limitada, ya que son lenguajes

con formas fijadas, más estáticos, abundan en ellos fórmulas y

suelen estar sometidos a controles permanentes.

Un ejemplo claro de lo que acabamos de exponer es el de Meteo,

un programa que desde el año siguiente a su instalación (1977) ha

estado produciendo partes meteorológicos para el servicio

meteorológico de Canadá diariamente. En la actualidad, podemos

hablar de unos resultados tan buenos como son que el programa

traduzca alrededor de 37.000 palabras diarias con un 90%.de

precisión.

Resultados como los obtenidos con un sistema como es Meteo

hacen que se pueda demostrar lo rentable que resulta la traducción

automática en algunos casos, a pesar de que para otros ámbitos

todavía no lo sea., como ocurre con el lenguaje espontáneo,

coloquial que se resiste a una formalización precisa y a ajustarse a

reglas gramaticales, hechos que resultan necesarios para la

obtención de una buena traducción. De esta forma, tendremos que

esperar para ver buenos resultados en lo que al lenguaje común se

refiere por lo que de momento sólo podemos hablar de traductor

como un complemento de ayuda al ser humano.

10. CONCLUSIONES Podemos concluir que el desarrollo de los sistemas de traducción

ha sido posible gracias a dos hechos importantes que les han

favorecido claramente: en primer lugar la explosión de

información al alcance de todo el mundo y en idiomas diferentes

de lo cual el gran culpable es Internet y en segundo lugar la

globalización. Esto significa que hay una enorme necesidad de

comunicación y de hacerse con información la cuál debe estar

disponible en diversos idiomas para que pueda ser accesible a

todo el mundo

Sólo basta con fijarse en las cifras para hacerse una idea de la

valía que tiene el mercado de la traducción automática hoy en día;

se estima que a nivel mundial vale casi 10.000 millones de euros.

- 59 -

Page 65: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Hemos comprobado que los sistemas encargados de traducir por

ejemplo grandes obras literarias (como puede ser El Quijote) se

encuentran aún muy alejados de obtener una traducción de buena

calidad, pero por el contrario aquellos que traduzcan partes

meteorológicos, textos técnicos, etc. tienen un peso importante

hoy en día para la sociedad.

El mayor problema con el que cuentan todavía los sistemas de

traducción radica en la calidad que se obtiene tras la realización

de la traducción. Aún tenemos que recortar distancias entre el

producto obtenido y la verdadera traducción, porque aunque cada

vez vayamos imitando mejor la labor que lleva a cabo un

traductor humano, todavía nos queda un largo camino que recorrer

para igualarlo.

11. REFERENCIAS [1] Wikipedia

http://es.wikipedia.org/wiki/Traduccion_automatica

[2] Cohen, J.M., "Translation", Encyclopedia Americana, 1986,

vol. 27, pp. 12–15.

[3] Wikipedia

http://es.wikipedia.org/wiki/Piedra_de_Rosetta

[4] Hutchins, W. John; and Harold L. Somers (1992). An

Introduction to Machine Translation. London: Academic

Press. ISBN 0-12-362830-X.

[5] Rao, Durgesh D. (1998)

Machine translation: A gentle introduction.

ISSN: 0971-8044

[6] Jos Hallebeek

“El corpus paralelo”. Universidad de Nijimegen. Nederlands

[7] José A. Troyano

“Alineación de textos y traducción automática”. ITALICA.

Universidad de Sevilla

[8] Petra Prochäzková (2006)

“Fundamentos de la lingüística del corpus. Concepción de

los corpus y métodos de investigación con corpus”.

[9] Andreas Eisele (2007)

“Hybrid machine translations: Combining rule-based and

statistical MT systems”. Saarland University & DFKI. LT

Lab.

[10] WIRED

http://www.wired.com/wired/archive/14.12/translate.html

[11] European Association for Machine Translation

- 60 -

Page 66: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

1

Resolución de Puzzles Deslizantes

Lara Rojo Celemín

Ingeniería de Telecomunicación Universidad Carlos III de Madrid [email protected]

Iván Suárez Morejudo

Ingeniería de Telecomunicación Universidad Carlos III de Madrid [email protected]

ABSTRACT

En 1878, Sam Loyd daba un premio de $1.000 a quien fuera

capaz de resolver su famoso 14-15 Puzzle. Se trataba de un puzzle

deslizante de 16 piezas que no tenía solución, lo que hizo que

muchas personas se volvieran locas tratando de resolverlo.

En este trabajo tratamos de presentar diferentes algoritmos para

resolver el 15-Puzzle desde el punto de vista de la Inteligencia

Artificial. Para ello, utilizamos el algoritmo de búsqueda en

árboles A*, del que daremos una visión general que luego

particularizaremos a nuestro caso del 15-Puzzle.

Aunque en este trabajo sólo nos hemos centrado en resolver el

rompecabezas de 16 piezas, los algoritmos explicados pueden

utilizarse para resolver cualquier puzzle deslizante n x n con

solución.

Términos Generales

Puzzles, Algoritmos, permutaciones pares, heurística, Inteligencia

Artificial, resolución humana.

Keywords

Puzzles deslizantes, 15-puzzle, Sam Loyd, Algoritmo A*,

herística, Turing.

1. INTRODUCTION

El objetivo de este trabajo es presentar diferentes algoritmos para

la resolución de puzzles deslizantes. Aunque sólo nos hemos

centrado en el 15-puzzle, los algoritmos aquí presentados pueden

ser aplicados a puzzles de cualquier tamaño, siempre y cuando

estos tengan solución.

Sin embargo, no sólo nos centraremos en cómo resolverlos de

forma manual sino también explicaremos como implementar

dichos algoritmos en ordenadores. Para ello, utilizaremos

búsquedas en árboles aplicando el algoritmo de búsqueda A*, el

cual explicaremos y particularizaremos.

El primer algoritmo que presentaremos es el algoritmo propuesto

por Richard Hayes [4] en el cual el n-puzzle se irá reduciendo a

(n – 1)puzzle resolviendo la primera fila y la primera columna.

En el segundo, [5] propone colocar en orden las casillas de las

primeras (n – 2) filas. Finalmente, las piezas de estas dos últimas

filas se colocarán por columnas. Este método, como veremos más

adelante, será el más eficiente.

Finalmente, daremos una visión desde el punto de vista de la

psicología sobre las habilidades obtenidas resolviendo este tipo de

rompecabezas así como las partes de nuestro cerebro que se ven

afectadas. Además explicaremos las diferencias de nuestra mente

con respecto a las máquinas y las variables que influyen en la

forma de resolver problemas, como es el caso de la ansiedad.

2. EL PUZZLE

2.1 Definición

El (n2 - 1)puzzle consiste en un tablero de (n x n) con n casillas,

numeradas del 1 al (n2 - 1) , ordenadas de manera aleatoria. La

casilla n2 se encuentra vacía para poder realizar los movimientos

necesarios, de forma horizontal o vertical, para poder cambiar el

orden de las casillas. Recibe multitud de nombres según el

número de fichas 8-puzzle para la versión 3x3, 15-puzzle para la

versión de 4x4, u otros nombres menos comunes como Puzzle

Gem, Puzzle Boss o Cuadrado Místico. El objeto del

rompecabezas es ordenar las fichas utilizando el espacio vacío

para desplazarlas.

Figura 1: 15-Puzzle resuelto.

- 61 -

Page 67: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

2

Es un problema clásico de modelación de algoritmos usando

heurística, de modo que estos sean eficientes con buenos tiempos

de ejecución y usando óptimas soluciones. El uso de la heurística

común en este problema conlleva el recuento del número de fichas

que se encuentran fuera de lugar, y encontrar la suma de las

distancias Manhattan desde su posición actual hasta su posición

correcta.

2.2 Historia

No se sabe muy bien a quien atribuir la invención de este

rompecabezas ya que la historia es confusa. Los libros, en un

principio, la atribuyen a Sam Loyd debido a que en 1878 “llevara

al mundo a la locura” por un premio de $1.000 a quien fuera

capaz de resolver el famoso puzzle de 14-15, el cual no tenía

solución debido que se necesitaba un número impar de

movimientos y, como veremos más adelante, sólo un número de

movimientos par tiene solución.

El puzzle se extendió rápidamente por todas las ciudades de

Estados Unidos, Canadá incluso llegó a Europa.

En realidad, el puzzle no fue inventado por Sam Loyd, a pesar que

él lo defendiera durante años, sino que era una variación del

rompecabezas creado por Palmer Noyes Chapman con los bloques

14-15 invertidos.

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

Palmer Noyes Chapman, en Agosto de 1880, presentó ante la

oficina de patentes el registro del 15-puzzle. Sin embargo, su

solicitud le fue denegada ya que en Febrero de 1878 se había

registrado otra patente de un puzzle similar llamado “Puzzle de

bloques” por Ernest U. Kinsey.

Previamente, su hijo lo distribuyó en 1879 por diferentes ciudades

de Estados Unidos. Por suerte, uno de dichos rompecabezas fue a

parar a la Escuela Americana de Sordos de Hartford, quienes lo

comenzaron a fabricar en su taller de carpintería para venderlo en

las calles de Hartford y Boston. Matthias Rice, propietario de un

negocio de carpintería de lujo en Boston, se interesó en la

fabricación del mismo y convenció a Yankee Notions

(Distribuidor de bienes de lujo) para su comercialización con el

nombre de Puzzle Gem.

Casi un siglo después, Ernö Rubik se interesó por el

rompecabezas buscando una forma de que funcionara sin el

espacio vacío que permitía mover las piezas. Finalmente, su

trabajó desembocó en la creación del famoso Cubo de Rubik.

3. ALGORITMOS

Para resolver el 15-puzzle podemos aplicar distintos algoritmos

que nos lleven a la solución. Como es lógico, unos algoritmos son

más eficientes que otros. A continuación se presentan dos

algoritmos pero en ambos, la condición necesaria para que tengan

solución es que el número de permutaciones sea par.

3.1 Permutaciones pares

Como hemos dicho anteriormente, el 15-puzzle sólo tiene

solución si el número de movimientos para resolverlo es par. El

número de posibles estados iniciales es n!, siendo n el número de

fichas. Por tanto, en nuestro caso, tendremos más de 130.000

millones de posibles estados iniciales. Sin embargo, sólo la mitad

de esas combinaciones tiene solución.

Para poder saber la paridad del estado inicial se define el concepto

de Inversión, es decir, la violación del orden de la posición de

acuerdo a su valor. En otras palabras, la inversión de una ficha

será la suma del número de fichas que se encuentran en una

posición superior a dicha ficha y que deberían estar situadas en

una posición inferior. La inversión total será la suma de las

inversiones individuales. Si este número es par, el puzzle tendrá

solución. En caso contrario, no habrá solución.

Por ejemplo, en el puzzle propuesto por Loyd, la inversión total

será uno y, como este número es impar, el número de

permutaciones será impar y, por tanto, el puzzle no tiene solución.

Una vez que se conoce la paridad del puzzle, podremos aplicar

algún tipo de algoritmo para resolverlo. En nuestro caso,

presentamos dos posibles soluciones.

3.2 Algoritmo I

Este algoritmo fue propuesto por Parberry en 1997 para resolver

puzles deslizantes n x n. Su método se basa en reducir el n-puzzle

en un (n-1)-puzzle resolviendo la primera fila y la primera

columna de cada puzzle, quedando como resultado un (n-1)-

puzzle. Sin embargo, una vez que se llega a un 3x3-puzzle, este

método deja de funcionar ya que no tenemos libertad de

movimiento para no afectar a las piezas colindantes y se tiene que

resolver usando “la fuerza bruta”.

Más tarde, en 2001, Richard Hayes, utilizando el algoritmo de

Parberry, consigue evitar el problema de resolver el puzzle usando

la fuerza bruta.

- 62 -

Page 68: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

3

El algoritmo se desarrolla en tres pasos:

1. Colocar las piezas de la primera fila

2. Colocar las piezas de la primera columna.

3. Volver al primer paso con el (n-1)puzzle.

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

Para colocar tanto las piezas de la primera fila como de la primera

columna de manera eficiente, se toma como referencia las

diagonales de la posición en la que debe ir la ficha en cuestión. En

función de la posición original de la ficha, utilizaremos una

diagonal u otra.

Si la ficha se encuentra a la izquierda de la columna en la que

debería ir o en la misma columna, utilizaremos la diagonal de la

figura 4a. En cambio, si la ficha se sitúa a la derecha, utilizaremos

una de las diagonales descritas en las figuras 4b y 4c.

Figura 4: Descripción de las diagonales.

No obstante, las dos últimas fichas de la fila serán colocadas de

manera especial. En este caso, se coloca en la posición 1 x (n-1) la

ficha (n-2) y, en la posición 2 x (n-2) la ficha (n-2) siguiendo el

mismo procedimiento explicado con anterioridad. Por último, se

desplaza la ficha(n – 2) a la posición 1 x (n – 2) y la (n – 1) a su

posición.

Figura 5: Colocación de las últimas piezas.

Para las columnas, se sigue un procedimiento similar: se colocan

las primeras piezas y cuando queden sólo dos, se pondrá la

penúltima pieza en la última posición y la última pieza en la

columna adyacente a la última posición.

Sin embargo, hay algunas combinaciones que no pueden ser

resueltas aplicando este algoritmo. Para ello, buscamos una

posible combinación tal que se pueda resolver a través del

algoritmo previamente descrito.

Las únicas combinaciones que no tienen solución ocurren cuando

la pieza (n- 1) de una fila se sitúa en la posición (n – 2) o cuando

la pieza (n – 1) de una columna se encuentra en ((n – 2), 0). Por

ello, lo único que debemos hacer es mover dicha pieza de esa

posición.

Figura 6: Caso especial.

3.3 Algoritmo II

A partir de la información obtenida en [4], podemos resolver el

15-Puzzle ordenando la primera y segunda fila de manera

consecutiva, para luego terminar de ordenar las dos últimas filas

por columnas. De esta manera se consigue llegar al estado final

del puzzle en un promedio de 80 movimientos, una cifra bastante

eficiente teniendo en cuenta el número de movimientos posibles.

La implementación de dicho método se basa en el Algoritmo de

búsqueda A*.

3.3.1 Algoritmo de búsqueda A*

El algoritmo de búsqueda A* es un algoritmo computacional

clasificado dentro de la búsqueda por grafos, para encontrar el

camino de menor coste entre el nodo origen y destino. Está

motivado debido a que en algoritmos de búsqueda en grafos

informados, como el algoritmo voraz, estos siguen un camino

basado únicamente en la función heurística. Dicha función no nos

indica el coste real de desplazarse de un nodo a otro, sino una

aproximación que puede no ser óptima, llevando a realizar

movimientos extra que terminan derivando en un mayor coste

para alcanzar la solución.

Por ello un algoritmo óptimo de búsqueda informada deberá tener

en cuenta el factor del valor heurístico de los nodos, y el coste real

del recorrido. Por ello el algoritmo A* usa la siguiente función de

evaluación f(n) = g(n) + h'(n), siendo el primer término g(n) el

coste real del camino recorrido para llegar al nodo n, y h’(n) el

valor heurístico del nodo a evaluar desde el actual n hasta el final.

Además A* necesita de dos estructuras de datos auxiliares, para

mantener un conjunto de soluciones parciales almacenadas:

Abiertos: se trata de una cola de prioridad ordenada

según el valor f(n) de cada nodo.

Cerrados: información de los nodos ya visitados.

En cada iteración del algoritmo se realiza una consulta de la

estructura de Abiertos, se consulta el primer nodo de la lista

ordenada, si no se trata de un nodo objetivo, se calcula la f(n) de

- 63 -

Page 69: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

4

todos sus hijos, se insertan en la cola de Abiertos, y finalmente el

nodo evaluado se traspasa a la estructura de Cerrados.

Se trata de un algoritmo de búsquedas de tipo primero en anchura

para g(n) con primero en profundidad para h’(n). Esto quiere decir

que:

Para g(n) se establece un nodo raíz, y se exploran y

evalúan todos los vecinos de este nodo, y a

continuación para cada uno de los vecinos se

exploraran sus correspondientes vecinos adyacentes, y

se realiza esto hasta que hayamos explorado todo el

árbol.

Para h’(n) el modo de exploración es diferente, en la

búsqueda en profundidad partimos de un nodo que

vamos expandiendo de manera recurrente para un

camino determinado, en el momento que ese camino no

se puede propagar más, volvemos atrás y comenzamos

de nuevo a expandir el nodo vecino del cual partimos y

que ya ha sido procesado. Es un algoritmo que nos

permite recorrer todo el árbol de manera ordenada pero

no uniforme.

La complejidad y carga computacional de este algoritmo está

dispuesta por la calidad heurística usada en el problema. Por ello

para una mala heurística la complejidad será exponencial, y para

una heurística óptima tendremos una complejidad lineal y por ello

un tiempo de ejecución del mismo modo, siendo necesario por

ello, que con una heurística optima se verifique que:

h’(x) <= g(y) - g(x) + h’(y)

,donde h’(y) es un estimador de h(x) que indica la distancia a la

solución.

Las propiedades del algoritmo son las siguientes:

Es un algoritmo completo, en caso de existir solución la

encontrará.

El algoritmo no desarrolla un camino por interacción,

formula varios y selecciona lo más competentes.

Para garantizar que se trata de un algoritmo óptimo, la

función h(n) deberá ser válida, sin exagerar el valor real

de encontrar la solución.

SI h’(n) realiza una estimación exacta de h(n), el

algoritmo converge rápidamente a la solución.

Si h’(x) = 0, la búsqueda es controlada por la función

g(x).

Si h’(x) = g(x) = 0 se trata de una búsqueda aleatoria.

Si h’(x) = 0 y g(x) = 1, se trata de una búsqueda que se

desarrolla primero en anchura.

Si h(x) no se sobrestima por h’(x), se encuentra un

camino optimo pero se han buscado rutas alternativas

que han conllevado un sobre cálculo desaprovechado.

En caso contrario si h(x) se sobrestima por h’(x), no se

asegura que se avance por el camino de menor coste.

Si para todos los nodos n del grafo se verifica que g(n)

= 0 se trata de una búsqueda voraz.

Si para todos los nodos n del grafo se verifica que h(n)

= 0, se trata de una búsqueda de coste uniforme no

informada.

Pero en este algoritmo no todo son ventajas, existe un gran

problema a la hora de ejecutar un algoritmo basado en A*, que es

la gran cantidad necesaria de memoria. Esto es debido a que se

debe almacenar todos los posibles siguientes nodos de cada

estado, derivando por ello en una cantidad de memoria

exponencial respecto al tamaño y complejidad del problema.

Como alternativas a este problema se presentan variaciones de

este algoritmo como pueden ser RTA*, IDA* o SMA*.

Figura 7: Ejemplo de aplicación del algoritmo A*.

A continuación explicamos el funcionamiento del algoritmo

mediante un ejemplo. En dicho ejemplo buscamos el camino a

recorrer más corto para ir desde el punto verde al rojo, esquivando

el muro azul el cual no podemos atravesar. Como observamos el

área de búsqueda se ha dividido en una simple rejilla,

simplificando así el problema a una matriz bidimensional,

representando así cada cuadrado de la rejilla como un elemento de

la rejilla, y pudiendo así almacenar sus propiedades y valores,

como si es posible atravesarlo. A partir de ahora a dichos

cuadrados los llamaremos nodos.

Figura 8: Área de búsqueda en rejilla. En verde, punto de

inicio. En rojo, punto final.

- 64 -

Page 70: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

5

Comienza la búsqueda:

1. Comenzamos por el nodo de inicio (verde), añadimos este a

una lista abierta, la cual está formada por los nodos que

pueden formar parte del camino a seguir, pero que aún

debemos comprobar.

2. Revisamos todos los nodos alcanzables y colindantes al nodo

de inicio, ignorando los cuadrados intransitables como puede

ser el muro. Los añadimos a la lista abierta, marcando en

cada uno de ellos una referencia al nodo de inicio como su

nodo padre. Bordeamos los nodos de la lista abierta en color

verde, y marcamos la referencia al nodo padre con una flecha

gris.

Figura 9: Nodo de inicio y sus nodos alcanzables.

3. Traspasamos el nodo inicio a la lista cerrada, ya que no es

necesario para nada de momento. El borde de su color en la

imagen será azul, debido a que se encuentra en la lista

cerrada.

4. Ahora deberemos seleccionar el nodo con el valor de F (F =

G+H) más bajo. Donde G es el valor de movimiento del

nodo inicio a otro nodo de la rejilla siguiendo el camino

necesario, y siendo F el valor del movimiento estimado para

ir desde ese nodo hasta el nodo final, donde este último valor

no es más que una hipótesis ya que no conocemos aún la

distancia exacta.

a. En este ejemplo al valor de G le daremos un valor

de 10 a los movimientos ortogonales, y de 14 a los

movimientos diagonales. Para el cálculo del valor

G del nodo, sumaremos al valor G de su padre el

valor del tipo de movimiento que realicemos.

b. En el caso del valor H este se puede estimar de

muchas maneras diferentes. En este caso

utilizaremos una aproximación mediante la

distancia Manhattan, donde solo tendremos en

cuenta el número de cuadrados horizontales y

verticales (solo existe movimiento ortogonal) que

debemos desplazarnos de manera directa

(ignorando y no teniendo en cuenta los obstáculos

que pudieran existir en el recorrido) para llegar

desde el nodo inicio al nodo de destino. Como

observamos se trata de una aproximación del

recorrido a seguir, de ahí que se trate de un valor

heurístico.

En la Figura [9] podemos observar los valores obtenidos, donde el

valor G está representado en la esquina inferior izquierda, H se

encuentra en la esquina inferior derecha, y el valor F de resultante

de la suma de G y H se encuentra en la esquina superior izquierda.

También vemos que hemos elegido el nodo que colinda a la

derecha con el nodo inicio (marcado con el borde azul), ya que se

trata del nodo con menor valor de F, en este caso 40.

Figura 9: Valores de las funciones.

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

cerrada, ya que no vamos a operar más con él, y cambiamos

por ello el color de su borde de verde a azul.

6. Verificamos que los nodos contiguos que sean accesibles y

no se encuentren en la lista cerrada, y añadimos a la lista

abierta a aquellos que no pertenecen aún a ella, marcando

como nodo padre al seleccionado anteriormente.

7. Comprobamos para los nodos contiguos que ya se

encontraban en la lista abierta, si su valor G es inferior al

nuevo valor de G que recalcularíamos con el nodo

actualmente seleccionado. Si el valor G del nuevo camino es

menor, seleccionamos este nuevo nodo, y cambiamos el

padre de los nodos contiguos por este otro, recalculando de

estos nodos su nuevo valor de G y F.

- 65 -

Page 71: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

6

En nuestro caso como observamos, el valor obtenido de G

para el nodo inferior derecho moviéndonos en diagonal

desde el nodo inicio tiene un valor de 14, frente al valor G

igual a 20 que tendría si el camino recorrido por dicho nodo,

proviniera del nodo superior, que previamente provenía por

su izquierda del nodo inicial. Por ello seleccionamos este

nuevo nodo (marcándolo como azul), desechamos el anterior.

En el caso de existir un caso con dos posibilidades

seleccionamos aquella con valor F menor.

8. Marcamos y apuntamos el nuevo nodo seleccionado como

padre para los nodos contiguos. Comprobamos los nodos

contiguos y calculamos sus valores de G, H y F. Podemos

observar el proceso en la Figura [10].

Figura 10: Marcamos y calculamos las funciones de las casillas

colindantes al nuevo nodo.

9. Comprobamos si el nodo situado a la izquierda del ahora

seleccionado tiene un coste G menor a través del nodo actual,

frente a llegar desde el nodo inicial. Como no es así lo

desechamos.

10. Repetimos de manera recursiva este proceso, hasta que

finalmente añadimos el nodo destino a la lista abierta. Una

vez llegado a ese estado obtendremos algo similar a lo que

podemos apreciar en la Figura [11].

Figura 11: Resultados tras aplicar el algoritmo.

11. El camino buscado que une el nodo inicial con el final, es

aquel el cual apuntan las flechas partiendo desde el nodo

final, recorriéndolas hasta el nodo inicial. En la Figura [12],

observamos el camino obtenido para esta interacción.

Figura 12: Camino obtenido para llegar del nodo origen al

destino aplicando este algoritmo de búsqueda.

Aplicando este algoritmo para el caso del 15 Puzzle, nuestros

nodos serán las posibles combinaciones que conseguimos

desplazando las fichas a través de la casilla vacía. A través del

siguiente ejemplo explicaremos su funcionamiento.

Partimos del siguiente estado inicial, Figura [13]. Primero

comprobaremos el número de permutaciones, que en este caso es

par (4). A continuación, creamos las dos listas o estructuras de

datos: Abierta y Cerrada. En la abierta, insertamos nuestro estado

inicial.

Figura 13: Estado Inicial de nuestro Puzzle.

Ahora tenemos que analizar los nodos alcanzables a nuestro nodo

origen, es decir, definimos los posibles movimientos que podemos

realizar. En este caso, sólo tenemos dos posibilidades (Figura

[14])

Figura 14: Posibles movimientos.

- 66 -

Page 72: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

7

Hay que calcular el valor de la función f(n). Dado que estamos

realizando un ejemplo sencillo y sólo hacemos movimientos

ortogonales (horizontal o vertical), tomaremos como función g(n)

el número de movimientos realizados hasta llegar a ese estado. En

cuanto a la función heurística h(n), utilizaremos la suma del

número de casillas que se encuentran en una posición superior

con respecto a la casilla analizada, sin tener en cuenta la casilla

vacía. Para ello, la forma más sencilla es colocar nuestro tablero

en forma de vector:

Estado inicialA: 1 2 3 4 5 6 7 8 9 10 12 15 13 14 – 11

Estado final: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 –

gA(n)= 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 3 + 1+1= 6

Estado inicialB: 1 2 3 4 5 6 7 8 9 10 12 15 13 14 – 11

Estado final: 1 2 3 4 5 6 7 8 9 10 11 – 13 14 11 15

gB(n)= 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1+1= 3

Por tanto, obtendremos los siguientes valores para la función f(n):

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

fB(n) = gB(n) + hB(n) = 1 + 3 = 4

A continuación pasamos nuestro estado origen a la lista Cerrada y

añadimos en la lista Abierta nuestros nuevos estados ordenados en

orden creciente de acuerdo al valor obtenido de la función.

Nuestro nodo origen será ahora el estado de la figura [14]b. Ahora

sólo obtendremos un nuevo estado: Figura [15]

Figura 15: Nuevo estado inicial.

La función f(n) será ahora 5, así que será nuestro siguiente nodo

origen.

Aplicando dos veces más este algoritmo, llegamos a la solución

del puzzle en tan sólo 4 movimientos.

Figura [16]: Últimos estados iniciales.

Finalmente, en la Figura [17] se muestra el árbol resultante tras

aplicar el algoritmo:

Figura [17]: Árbol resultante.

4. ENFOQUE PSICOLÓGICO PARA EL

PLANTEAMIENTO DE ALGORITMOS

En las últimas décadas, debido al desarrollo tecnológico, ha

tenido una especial importancia el debate sobre si la mente

humana puede compararse con el ordenador. Para ello, se han

realizado estudios que abordaban la resolución de problemas tanto

en humanos como en ordenadores. En Psicología han destacado

dos autores que han tratado este tema: Turing afirmó que la mente

humana se puede comparar con el ordenador debido a que ambos

pueden razonar lógicamente, mientras que Searle se opuso a esta

afirmación defendiendo que, si bien es cierto que ambos pueden

manejar símbolos, sólo la mente humana es capaz de atribuir

significado a los símbolos que maneja, por ello, según este autor

la mente no es un programa informático. No obstante, para

resolver determinadas tareas no es necesaria la intervención del

significado, por ejemplo, en la solución de este puzle basta con

manejar los símbolos adecuadamente.

Turing es considerado uno de los padres de la ciencia de la

computación ya que formalizó los conceptos de algoritmo y

computación mediante su famosa máquina de Turing. Además, es

uno de los precursores de la Inteligencia Artificial ya que

consideraba que las máquinas podrían llegar a pensar. Lo cual

enunció a través de la prueba que lleva su nombre, en la que

pretendía comprobar de manera estándar si una máquina puede

apuntar a ser sensible o sintiente.

Con respecto a la anatomía cerebral, cabe destacar que el cerebro

se divide en dos hemisferios y para resolver este puzle se

requieren ambos. Por un lado, el hemisferio izquierdo se relaciona

con el razonamiento y la habilidad numérica, puesto que es

analítico, racional, secuencial, organizado, matemático, simbólico,

etc. Mientras que, por otro lado, el hemisferio derecho se

corresponde con la habilidad visoespacial. Las habilidades

- 67 -

Page 73: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

8

mencionadas son necesarias para resolver el puzle y estos datos se

pueden apoyar mediante técnicas cerebrales como el EEG que

muestran las áreas cerebrales que se activan ante esta tarea.

Además, las alteraciones en determinadas zonas del cerebro

suelen ir acompañadas de una dificultad a la hora de resolver este

tipo de problemas.

Esta especialización cerebral se produce por la necesidad que

tiene el cerebro de ahorrar energía, lo que nos da una similitud

con la programación que nos conlleva siempre a diseñar

programas especializados para hacer un uso eficiente de los

recursos disponibles y/o limitados de la máquina para su

ejecución.

En cuanto a la solución de problemas, los seres humanos aplican

una serie de estrategias según el tipo de problema. Para resolver

este puzle la estrategia óptima es la división del problema en

subproblemas o submetas. Esta estrategia se basa en la idea de

“divide y vencerás”, por lo que se trata de reducir un problema

amplio en varios más pequeños que acerquen a la persona a la

meta.

Para la Gestalt, la solución de problemas es algo más que aplicar

de forma mecánica la experiencia, es realizar una reestructuración

perceptiva. Este enfoque diferencia entre pensamiento productivo

y reproductivo: el pensamiento productivo es la producción de

una solución nueva a partir de una organización creativa del

problema (se usa cuando se ha comprendido la estructura del

problema), por ello, para la Gestalt éste es el verdadero

pensamiento; por otro lado, el pensamiento reproductivo consiste

en aplicar en situaciones similares la misma solución. Para la

resolución del puzle se requiere el pensamiento productivo.

Por otro lado, según Greeno, los problemas se pueden dividir en

tres clases principales: Problemas de deducción de la estructura,

Problemas de organización y Problemas de transformación. Este

puzle es un problema de transformación, puesto que tiene todos

los elementos del estado inicial y, a medida que se va avanzando y

se van aplicando operadores, se va transformando el problema

hasta llegar a la meta.

Sumado a ello, cabe mencionar los cuatro pasos necesarios para

resolver un problema propuestos por Polya (1945). En primer

lugar, es necesaria la comprensión del problema, esto supone no

sólo descodificar el lenguaje del enunciado, sino también adoptar

una actitud de solución de la tarea e identificar el problema.

Algunos ejemplos de preguntas que se pueden proponer en esta

fase son: ¿cuál es la meta?, ¿cuáles son los datos?, ¿qué

condiciones? y ¿es suficiente la información?. En segundo lugar

se elabora un plan. Las preguntas características de este paso son:

¿conozco algún problema relacionado con éste?, ¿es necesario

dividir el problema? y ¿es necesario resolver alguna parte antes

que otra?. En tercer lugar, se ejecuta el plan, se comprueba cada

paso y se resuelve el problema. Algunas de las preguntas de esta

paso son: ¿es necesario este paso?, ¿es correcto?. Por último, el

cuarto paso contempla la visión retrospectiva o revisión de la

tarea, esto es, verificar el resultado y el razonamiento. Algunos

ejemplos de preguntas son: ¿se puede obtener el mismo resultado

por algún otro método?. Estos cuatro pasos son descriptivos y

normativos y, como puede observarse, mantienen relación con el

proceso que lleva a cabo un ordenador a la hora de resolver este

tipo de problemas.

No obstante, en determinadas ocasiones la mente humana no

sigue estos pasos ininterrumpidamente, sino que llega a un punto

en el que la persona no se ve capaz de resolver el problema y lo

abandona durante un tiempo en el que la mente de forma

inconsciente sigue pensando en el problema hasta dar con la

solución. Este fenómeno recibe el nombre de insight y es uno de

los aspectos que diferencia a los seres humanos de los

ordenadores. Sumado a ello, los seres humanos presentan otras

variables que influyen en la forma de resolver problemas, por

ejemplo, la ansiedad, que facilita hasta cierto punto la resolución

de la tarea y, pasado ese punto, la dificulta. Por ello, la relación

entre rendimiento y activación se representa siguiendo la Ley de

Yerkes-Dodson:

Figura 18: Ley de Yerkes-Dodson.

Otro punto a destacar es el papel que tiene el aprendizaje en la

resolución de este tipo de puzle. Por un lado, existen teorías sobre

la solución de problemas basadas en habilidades generales, como

la Gestalt y el Procesamiento de la Información, mientras que

otras teorías defienden que la solución de problemas se basa en

habilidades específicas, como la teoría de Expertos y novatos.

Para el primer enfoque se puede aprender a resolver este tipo de

problemas de forma que el aprendizaje afecte a las habilidades

generales. No obstante, según el enfoque de Expertos y novatos el

aprendizaje solo se produce en una habilidad específica, puesto

que, por ejemplo, aprender a resolver un puzle no mejora la

capacidad para resolver problemas de índole social. La eficacia en

la solución de un problema no depende de la disposición de

estrategias o habilidades generales y transferibles, válidas para

cualquier problema, sino de los conocimientos específicos, útiles

para solucionar ese problema. El rendimiento experto sería el

modelo para la solución eficiente de un problema. Hay dos tipos

de expertos: los técnicos y los estratégicos. Los técnicos resuelven

un problema de su dominio de forma automática y rutinaria. Los

estratégicos resuelven un problema nuevo o poco familiar dentro

de su dominio sin contar con procedimientos automáticos, por

ello, requieren un control metacognitivo.

Los expertos son mejores que los novatos resolviendo problemas

incluso cuando se enfrentan con problemas fuera de su área de

pericia porque manejan más recursos cognitivos.

­ La eficacia en la solución de problemas no se debe a

diferencias en la capacidad cognitiva general, sino a las

diferencias en conocimientos específicos.

- 68 -

Page 74: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

9

­ El conocimiento procedural: Por un lado, los expertos y

los novatos utilizan distintos heurísticos en la solución

de los mismos problemas. Además, los expertos

controlan mejor la ejecución del problema. Por último,

los expertos utilizan un amplio número de algoritmos de

forma automática y, además los generalizan a diversos

problemas. Los expertos aplican técnicas y no

estrategias (uso deliberado e intencional).

Sumado a ello, la teoría de Expertos y novatos destaca el papel del

conocimiento previo, lo que nos lleva a una de las teorías más

relevantes de la Psicología de la Educación: el Constructivismo.

Pese a que la idea de que una persona no es experta en todo sino

que sólo en unos dominios, como propone la teoría de Expertos y

novatos, es opuesta a la teoría de Piaget, también es cierto que

ambas teorías recogen la importancia de la experiencia o

conocimiento previo debido a la influencia que tiene a la hora de

resolver un problema de este tipo. Por ejemplo, si una persona a

aplicado anteriormente una estrategia inadecuada para resolver el

puzle, en el futuro será menos probable que vuelva a aplicar la

misma estrategia, por lo que dará antes con la estrategia óptima y

solucionará la tarea con mayor rapidez.

Por su parte, esta relación entre la conducta y sus consecuencias

ya la propuso el Conductismo cuyo fundador fue Watson,

destacando el condicionamiento instrumental u operante

desarrollado por Skinner, cuya premisa principal es que aquella

conducta que vaya seguida de una consecuencia negativa (castigo)

tendrá menor probabilidad de repetirse, mientras que la conducta

seguida de una consecuencia positiva (refuerzo) probablemente se

repita en un futuro.

Referencias

[1] Fifteen Puzzle

http://en.wikipedia.org/wiki/15-puzzle

[2] Slocum, J. Sonneveld D. 2006. The 15 Puzzle: How it drove

the World crazy. The Slocum puzzle Foundation.

[3] Juego del Puzzle

http://es.scribd.com/doc/41776980/Juego-Del-Puzzle-1

[4] Hayes, R. 2001. The Sam Loyds 15 Puzzle.

[5] Parberry, I. 1997. A Real-Time Algorithm for the (n2-1)-

Puzzle. University of North Texas. Department of Computer

Science.

[6] Búsqueda en árboles

http://es.scribd.com/doc/19950923/Busqueda-Heuristica

[7] Algoritmo A*

http://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqued

a_A*

[8] A* search algorithm

http://en.wikipedia.org/wiki/A*_search_algorithm

[9] Zorahn. 2010. Applying Search Algorithms to Turn-Based

Games. http://forum.codecall.net/blogs/zoranh/1323-

applying-search-algorithms-turn-based-games.html

[10] Carreteto, M. 2008. Psicología del Pensamiento: Teoría y

prácticas. Madrid: Alianza

[11] Carretero, M. 2009. Constructivismo y educación. Buenos

Aires: Paidós.

[12] Haines, D. E. 2003. Principios de Neurociencia. Madrid:

Elsevier.

[13] Hergenhahn, B. R. 2001. Introducción a la Historia de la

Psicología. Madrid Paraninfo.

[14] Alan Turing

http://es.wikipedia.org/wiki/Alan_Turing

[15] Weiten, W. 2004. Themes and Variations. Thomson-

Wadsworth

- 69 -

Page 75: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Desarrollo de un agente autónomo jugador de Super Mario Adrián Amor Martín

100072611 Ingeniería de Telecomunicación Universidad Carlos III de Madrid

[email protected]

Cristina García Muñoz 100072663

Ingeniería de Telecomunicación Universidad Carlos III de Madrid

[email protected]

RESUMEN En este documento se va a detallar cómo realizar un agente,

basado en árboles de decisión, que sea capaz de jugar de forma

autónoma al juego Super Mario en el marco del concurso Mario

AI 2011.

Descripción de categorías y temas. [Agente]: Un agente es un sistema informático que demuestra

que percibe su entorno a través de sensores y es capaz de actuar

sobre dicho entorno mediante efectores.

[Super Mario]: Videojuego de plataformas muy popular desde la

década de los 80, diseñado por Shigeru Miyamoto.

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

1. INTRODUCCIÓN. Una de las principales inquietudes del ser humano es conseguir

hacer entes que se muevan “artificialmente”, es decir, que simulen

(e incluso mejoren) el comportamiento humano. Así, a lo largo de

la Edad Media se desarrollaron autómatas como el hombre de

palo de Juanelo Turriano, en Toledo, y artificios como El Turco,

que era capaz de jugar al ajedrez de manera autónoma (aunque se

descubriera poco después que era un engaño). Con el auge de la

computación se empieza a tener una capacidad de procesamiento

similar a la del ser humano, de manera que se desarrollan

programas que intentan simular un jugador automático. La línea

de investigación que más se desarrolló en el siglo XX fue la de

desarrollar un autómata capaz de vencer a un ser humano al

ajedrez, de manera que se empiezan a diseñar estrategias en la

década de los 50 por, entre otros, Shannon y Turing, y el

refinamiento de estas estrategias consiguen que, en 1998, se

produzca la derrota del campeón mundial del momento, Gary

Kasparov, a manos de una

máquina llamada Deep

Blue.

Debemos destacar también

el auge de la industria del

videojuego que, si bien

nace con la creación del

Pong (juego muy simple

entre dos personas),

experimenta un gran

incremento desde la década

de los 80. Una de las

razones de este

espectacular crecimiento es la capacidad de generar jugadores

automáticos mejores que el propio humano, de manera que el

jugador se debe esforzar en superar a la máquina. Esto se

convierte en un fenómeno social (se habla incluso de la llamada

generación gamer) y provoca también un incremento en la

investigación en inteligencia artificial, ya que muchos juegos

compiten en demostrar que su jugador no humano es mejor que

cualquier otro (como puede observarse con la guerra anual entre

juegos de fútbol). De esta manera, se producen cada vez jugadores

más inteligentes, llegando a imponer niveles de dificultad que

sólo son resolubles después de mucha experiencia en el juego.

De esta manera, se vio de manera casi inmediata que la fuerza

bruta para implementar un jugador automático (es decir, explorar

todas las posibilidades hasta el final para ver si con cierto

movimiento podemos llegar a la derrota o a la solución) es,

además de poco eficiente, irrealizable en la práctica debido a la

limitación de los sistemas de computación del momento. Se

impone así investigar sobre técnicas de búsqueda que permitan

resolver problemas, ya sean relacionados con derrotar a un

jugador humano o llegar a la solución de, por ejemplo, las torres

de Hanoi.

Todas estas técnicas para llegar a una solución deben maximizar

la eficiencia de cálculo, para lo que las opciones que se deben

evaluar deben ser las más inteligentes posibles, e intentar llegar a

la solución óptima. De esta manera, una primera aproximación

son los árboles de decisión en los que se contemplan todas las

posibilidades de actuación y se elige la más ventajosa (ya sea con

una función de evaluación o heurística, es decir, basada en la

práctica); otra aproximación son las redes neuronales, que

construyen asociaciones entre las entradas del problema y las

salidas, de manera que buscan la solución más eficiente; y otra

aproximación son máquinas de estados, que es otra manera de

hacer jugadores razonablemente inteligentes. Se evalúan todas las

entradas en cada máquina y se llega a un estado de actuación; el

objetivo es llegar al estado final que es la solución. A estos

efectos se implementan los llamados autómatas de Moore y de

Mealy, que no contemplaremos en este trabajo por considerar que

un agente no puede ser perfectamente definido por estas máquinas

de estados.

Una vez que situados en el contexto histórico actual, y haber

planteado las opciones que tenemos a la hora de hacer un jugador

automático, uno de los entretenimientos que sirve para ahondar en

el concepto de inteligencia artificial es generar un agente, que sea

capaz de hacer cosas que un ser humano, si no es experto,

normalmente no consigue. En esta línea surge el concurso Mario

AI Championship, o Mario AI Competition, consistente en

proporcionar una interfaz “fácil de usar” para el usuario de

manera que éste se encargue, únicamente, de generar un agente

Figura 1. Pong original.

- 70 -

Page 76: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

que se pase todas las pantallas posibles. Posteriormente

ahondaremos en las posibilidades que se nos dan a la hora de

elegir el nivel que queremos que juegue nuestro agente, pero la

libertad es casi infinita.

Así, se convoca un concurso intentando escoger al agente que

demuestre un mejor comportamiento en la interfaz que se

proporciona al usuario. En este documento detallaremos cómo es

la interfaz y qué podemos utilizar para que nuestro jugador juegue

de manera autónoma de manera similar a como lo haría un

humano; las estrategias que podemos seguir a la hora de conseguir

el objetivo (que es que se pase la pantalla con la mayor

puntuación posible), evaluando su dificultad y la estrategia que

seguiremos finalmente; y las reglas que hemos usado, finalmente,

para conseguir un agente lo más complejo posible.

2. INTERFAZ CON EL ENTORNO. Antes de nada, lo que tenemos que analizar es qué necesitamos

del escenario para que nuestro agente sobreviva. Así, a primera

vista necesitamos:

Conocer cómo es el escenario, dónde están las caídas

(que en el código se llamarán gaps), dónde podemos

saltar, romper ladrillos, conseguir monedas, bonus…

Todo esto se nos da en la matriz levelScene; es una

matriz de tipo byte que incluye todos los elementos

relativos al escenario, es decir, dónde está el suelo, los

ladrillos… y que tiene como dimensiones [19x19], de

manera que Mario sólo es capaz de ver 10 posiciones

delante suya (ya que Mario está en el centro de esta

matriz). Los valores relevantes que debemos tener en

cuenta en una primera aproximación son:

o 0 si no hay nada.

o -60 para el suelo. Debemos destacar que este

valor no es constante desde que empieza el

suelo hasta el final, sino que tenemos un -60

en la primera línea de suelo y más hacia abajo,

0. Esto es importante a la hora de detectar

gaps para nuestro código.

o -62 para suelo que se puede acceder saltando

desde abajo (es decir, el agente no se cae si

está encima pero puede sobrepasarlo

saltando).

o -20 para ladrillos que se pueden romper.

o -22 para ladrillos que no se pueden romper

(cuadrados con interrogación en los que se

consigue un bonus).

o -90 para tuberías.

Es importante saber que la interfaz nos da varias

posibilidades de zoom, es decir, que podemos

especificar si queremos, por ejemplo, que se nos

informe de qué tipo de ladrillos tenemos, o simplemente

se nos diga que hay un ladrillo, o un obstáculo. Esto es

útil cuando se empieza a codificar un agente, pero si se

quiere añadir un poco de complejidad es necesario usar

el zoom más detallado que hay. Podemos ver un

esquema del comportamiento de la matriz en la figura 2.

Conocer dónde están los enemigos, y qué tipo de

enemigos podemos tener, es decir, si podemos

eliminarlos saltando sobre ellos o disparándoles, o no

les podemos eliminar. Esto se da mediante la matriz de

byte enemies, que tiene la misma dimensión que

levelScene, es decir, [19x19]. Así, los valores más

relevantes que tenemos son:

o 80 para un goomba. Se puede eliminar

saltando o disparando sobre él.

o 84 para una bala, que solo sale si tenemos los

cañones activados. Se puede eliminar de la

misma manera que el goomba, saltando sobre

él o disparando.

Figura 8. Bala.

Figura 7. Goomba.

Figura 6. Matriz de observaciones (levelScene).

Figura 2. Casilla con suelo.

Figura 3. Ladrillo rompible.

Figura 4. Ladrillo irrompible.

Figura 5. Tubería.

- 71 -

Page 77: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

o 81 y 82 para un koopa. Un koopa se puede

eliminar disparándole, y si se salta sobre él

dejará un caparazón sobre el que, si salta, se

desplazará a lo largo de la pantalla

destruyendo todo lo que encuentre en su

camino.

o 91 para las flores que saltan de las tuberías. Se

puede eliminar saltando por debajo de ellas o

disparando.

De nuevo se puede hacer una distinción entre el zoom

que queremos, de manera que se distingue entre

enemigos que son destructibles saltando sobre ellos, o

aquellos que no se pueden destruir, como Spiky:

Debemos destacar, también, que la matriz enemies y

levelScene se pueden usar en la misma matriz, llamada

mergedObservation, que contiene los mismos valores

pero concatenando ambas matrices.

Posición en la que se encuentra Mario. Sus coordenadas

dentro de la matriz levelScene y enemies se nos da con

marioCenter, array de dos posiciones en la que la

primera posición corresponde a la coordenada Y de

Mario, y la segunda, a la coordenada X.

Posición absoluta sobre el escenario total en la que se

encuentra Mario. Esto se da con marioFloatPos, array

de dos posiciones en la que, en una posición se nos da

la coordenada X absoluta de Mario sobre el escenario

completo, y en la coordenada Y, la altura de Mario

sobre el fondo de la pantalla.

Posición absoluta sobre el escenario en la que se

encuentran los enemigos. Esto se da con

enemiesFloatPos, que es un array en el que se da el

identificador del enemigo y su posición según las

características que hemos descrito anteriormente.

Una vez que conocemos todas las variables que podemos

usar para determinar el comportamiento de nuestro agente, lo

que debemos evaluar es qué debemos cambiar en el código

para que haga lo que nosotros queremos. De esta manera, se

nos dan unos agentes ya hechos (pero casi sin inteligencia

asociada) y podemos observar que lo que debemos modificar

es el método getAction(), que devuelve un array de boolean

cuyo significado es el comportamiento que va a hacer Mario

en cada momento, es decir, si va a ir a la izquierda, derecha,

correr y disparar (es la misma tecla), agacharse y saltar. Para

definir eso habrá que poner a true las acciones que queremos

que haga en las posiciones correspondientes del array, y a

false las acciones que queremos que no haga. Con esto

podemos controlar el comportamiento de nuestro agente cada

vez que se llama a getAction(), que es en un intervalo de

tiempo lo suficientemente pequeño para ser capaz de pasarse

la pantalla.

Así, una vez familiarizados con el entorno de trabajo, ya

conocemos todo lo que podemos usar para crear nuestro

agente, es decir, toda la información relevante que influirá en

su comportamiento con el escenario y con los enemigos. A

continuación, debemos determinar cuál será nuestra

estrategia de comportamiento para nuestro agente.

3. POSIBLES ESTRATEGIAS DE

COMPORTAMIENTO. A continuación vamos a detallar posibles estrategias de

comportamiento que fueron evaluadas para hacer nuestro agente,

y justificaremos, finalmente, la estrategia elegida.

3.1 Redes neuronales. Una red neuronal es capaz de modelar la relación existente entre

las entradas a la red y sus salidas. De esta manera, lo que tenemos

que escoger es qué queremos como entrada, y qué queremos como

salida, ya que la relación entre ellos se encargará de definirlo el

modelo de red neuronal que utilicemos, como, por ejemplo, el

perceptrón. Un modelo general de red neuronal es el que se ve

aquí:

Figura 10. Flor.

Figura 11. Spiky.

Figura 12. Modelo general de red neuronal.

Figura 9. Koopa.

- 72 -

Page 78: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Como entrada querríamos saber, por ejemplo, si Mario puede

saltar, si Mario puede disparar, si Mario está en peligro de caer, o

si tiene un gap cercano, si Mario ve enemigos… en fin, las

entradas deberíamos definirlas con cuidado, mientras que las

salidas están claras: serán las acciones que debe tomar Mario, es

decir, si salta, si se mueve a la izquierda, si se agacha, si se para…

básicamente, definir el array action que debemos devolver en el

método getAction().

Este modelo no fue el que utilizamos porque lo vimos complejo

(debemos programar dos fases, la de entrenamiento para generar

el modelo, y la de juego en sí, aunque aprendería con el tiempo) y

computacionalmente costoso al tratarse de una red neuronal. Por

ello, esta estrategia fue descartada.

3.2 Búsqueda A* La siguiente solución que nos planteamos seriamente fue hacer

una búsqueda heurística, pues está claro que en nuestro problema,

que no es un problema cerrado, debemos tener en cuenta el factor

heurístico. Así, podemos usar una función de evaluación best-first

como la búsqueda A*. La búsqueda avariciosa (greedy search) la

descartamos por poder atascarse en bucles infinitos si las

estimaciones no son del todo correctas, así que nos decantamos

por la investigación sobre A*.

Como ya hemos dicho, A* hace una búsqueda best-first que evita

expandir caminos que ya son muy costosos de por sí, para no

desperdiciar recursos de computación. En cada nodo tiene que

evaluar una cierta función f(n) que es:

f(n) = g(n) + h(n)

donde f(n) es el coste estimado total hasta la meta pasando por el

nodo n (que es el que estamos evaluando), g(n) el coste sufrido

hasta alcanzar el nodo n, y h(n) el coste estimado total hasta la

meta pasando por n.

A* es capaz de alcanzar la solución óptima (el camino más corto

hacia la meta) si conseguimos que la función heurística no

sobreestime el coste real.

Una vez planteado el modelo que se debería usar, debemos

plantearnos las siguientes dudas:

¿Cuál es la meta? Obviamente, no es la meta final, ya

que Mario no es capaz de acceder a ella desde el

principio, por lo que lo más razonable es escoger el

punto de suelo que se encuentre más a la derecha de

nuestra matriz levelScene, y evaluar el camino hacia allí

tomando el camino más corto posible.

¿Qué función heurística debemos emplear? Aquí es

donde está la calidad del algoritmo A*; en realidad,

deberíamos evaluar si hay un enemigo, si hay un gap…

poniendo por delante de todo la supervivencia.

Pongamos un ejemplo: está claro que si avanzamos

hacia la derecha y hay un enemigo, no deberíamos

avanzar y, en vez de eso, deberíamos quedarnos parados

o saltar. De esta manera, al camino que sea “avanzar” le

ponemos un coste sensiblemente superior al de saltar o

quedarnos parados, descartando esa opción, y

posteriormente decidiremos en qué dirección debemos

ir.

Ése es un simple ejemplo de función heurística, sin

embargo, si lo pensamos un poco, la complejidad no

hace más que incrementarse, ya que debemos tener en

cuenta el enemigo que tenemos delante: si salta, lo más

conveniente es quedarse parado, o retroceder un poco y

saltar sobre él; si no salta, lo más inteligente es saltar

para intentar eliminarlo; si somos capaces de disparar,

deberíamos dispararle para destruirlo… y además de

todas las reglas que en una primera exploración se nos

ocurren, debemos tener en cuenta el movimiento que

van a seguir nuestros enemigos, es decir, si van a saltar,

si van a moverse hacia nosotros, o hacia el otro lado, si

son más rápidos o más lentos; es decir, debemos

conocer el sentido de su marcha pues es inútil saltar

sobre un goomba que no viene hacia nosotros, por

ejemplo. Así, deberíamos hacer un seguimiento de cada

enemigo para tener una función heurística buena.

El algoritmo, por tanto, debería calcular el camino menos costoso,

para lo que cada casilla de la matriz mergedObservation (si

consideramos escenario y enemigos a la vez) es un nodo,

evaluando la función para cada casilla y considerando cuál es el

camino que nos puede llevar hacia la meta. Para ello, necesitamos

una estimación futura de lo que va a pasar hasta que lleguemos

hacia la meta para que la función heurística esté bien definida.

No vamos a hablar sobre temas de implementación porque ésta no

fue la solución que escogimos, aunque fue la solución ganadora

en el concurso de 2009. No fue escogida porque para que

funcionara adecuadamente debíamos implementar un simulador

de cada elemento en pantalla, es decir, todos los enemigos, las

bolas de fuego que lanzamos para ser precisos… y eso es algo

cuya complejidad excede el espíritu de este trabajo; además, la

implementación de un algoritmo A* tampoco es trivial (debemos

evaluar la función en cada nodo) ni algorítmica ni

computacionalmente. Por ello, la solución que escogemos,

finalmente, es la de los árboles de decisión.

3.3 Árboles de decisión. En primer lugar, debemos referirnos a esta estrategia como un

punto medio entre hacer un algoritmo muy elaborado, como el

algoritmo A*, y hacer una estrategia completamente heurística, es

decir, ir “parcheando” el agente para que se pase una sola

pantalla.

Un árbol de decisión constituye un mecanismo de aprendizaje

mediante inducción supervisada, como las redes neuronales

(aunque con menos complejidad a priori).

Figura 13. Modelo general de árbol de decisión.

- 73 -

Page 79: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

De esta manera, buscamos encontrar las reglas que mejor modelan

la relación entre las entradas, que en nuestro caso es el entorno

(tanto escenario como enemigos) y las salidas, que es el

comportamiento de Mario, es decir, si decidimos que salte, que

vaya a la izquierda, a la derecha...

Así, la manera de trabajar será ir aumentando la inteligencia del

agente en función de la dificultad de la pantalla, introduciendo

reglas y, por tanto, expandiendo el árbol que debemos evaluar.

Otra ventaja con la que contamos es que la implementación no es

muy costosa computacionalmente, ya que básicamente se trata de

evaluación de condiciones if-else; además, su implementación es

sencilla algorítmicamente, ya que al tratarse de este tipo de

condiciones, es fácilmente entendible.

El gran problema de usar estos tipos de algoritmos es que no son

tan generales como pueda ser el algoritmo A*, ya que se

programan en base a pantallas, es decir, de forma heurística. De

esta manera, puede llegar a ocurrir que sea óptimo para una

pantalla pero que sea incapaz de pasarse otra pantalla

completamente distinta; por ello, nuestro objetivo a la hora de

implementar este árbol es la generalización, es decir, que no haya

sobreentrenamiento en nuestro modelo de aprendizaje. Esto lo

mostraremos con varias pantallas con escenarios muy diversos.

Una vez que hemos decidido usar esta estructura por su sencillez

y los resultados aceptables que se obtienen, debemos pensar en

ciertos aspectos:

Prioridades, es decir, qué entrada es más importante

para garantizar la supervivencia del agente. Esto,

traducido a árboles de decisión, es qué condición vamos

a evaluar primero, si la condición de que haya un

enemigo delante o la condición de que haya un gap por

el que nos podamos caer.

Acciones a tomar, esto es, que si vemos, por ejemplo,

un enemigo que no salte, nuestra decisión sea saltar

sobre él o esquivarlo. Para ello deberíamos prever el

movimiento del enemigo, como ya discutimos en la

sección 3.2; el problema es que este simulador físico no

es fácil (se requieren muchas horas para calibrarlo) así

que estas reglas se determinarán de forma heurística

para el caso en el que haya enemigos.

Objetivos, es decir, si preferimos, por ejemplo, caminar

por encima de una fila de ladrillos porque haya una fila

de monedas o por el suelo porque haya más enemigos a

los que podemos matar, o simplemente garantizar

nuestra supervivencia que es a lo que este concurso se

limita.

Con todo esto en nuestra cabeza, pasamos sin más dilación a la

explicación del código realizado.

4. REGLAS DEL ÁRBOL DE

DECISIÓN. El código desarrollado dota al agente de una serie de habilidades

para superar los obstáculos que pueda encontrarse a lo largo de

distintas pantallas de nivel medio-alto. En este apartado

analizaremos en orden creciente de prioridad las herramientas con

las que cuenta Mario para salir airoso de las trampas que aparecen

en su camino.

La base de la que partimos permite al agente correr mientras

dispara bolas de fuego de manera intermitente. Los métodos a

continuación descritos modifican los valores base de manera

apropiada para hacer que el agente se adapte a las situaciones

detectadas.

Para obtener el máximo rendimiento de este planteamiento se

hace necesario un estudio previo de los peligros que van a acechar

al jugador automático a lo largo de los recorridos que atraviesa.

Una vez estudiados se puede establecer un orden de actuación

para dar más prioridad a la resolución de los problemas más

graves. La mejor manera de identificar de forma real el mayor

número de situaciones posibles es jugar manualmente

experimentando los problemas y viendo cómo pueden solventarse.

Fruto de este estudio previo del entorno pudimos descubrir que

las fuentes de fallo más habituales sin tener en cuenta las criaturas

que puedan aparecer son:

Hoyos: en principio bastaría con saltar al detectar una

aproximación a uno de ellos, sin embargo pudimos

comprobar que en ocasiones es necesario ajustar el

impulso ya que la superficie disponible para aterrizar el

salto no es infinita.

Combinaciones de obstáculos y escalones con hoyos:

los hoyos presentan una dificultad mayor si van detrás

de un escalón de bajada, ya que por el impulso de

avanzar ya caes al vacío. Además si el hoyo está detrás

de un obstáculo corremos el peligro de saltar más de la

cuenta y precipitarnos por el gap.

Bloqueo entre ladrillos: cuando hay ladrillos en

ocasiones el espacio que hay entre ellos y el suelo no

permite avanzar por lo que el agente se queda atascado

como si se tratase de un callejón. En particular ocurre

cuando los ladrillos no pueden romperse. En la figura

vemos que el hueco que queda es de una unidad y al ser

el agente grande no entra, por lo que tiene que dar la

vuelta y saltar por encima.

Bloqueo con cañones: la situación de los cañones

cuando también hay ladrillos impide el paso y el salto

del agente de la misma manera.

Obstáculo final demasiado alto: el final del escenario

por defecto presenta una colina alta que obliga al agente

a subir ayudándose de otras colinas intermedias.

Escaleras: las escaleras presentan un problema ya que

suelen tener un hoyo detrás y deben estar muy ajustadas

Figura 14. Bloqueo.

- 74 -

Page 80: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

para no sobrepasarlas como también apuntábamos con

los obstáculos anteriormente.

Considerando todos estos retos sumados a la posibilidad de

aparición de criaturas y balas, se establece un método por

solución requerida.

Las reglas que se encuentran implementas en nuestro agente son,

por prioridad:

Evitar flor de las tuberías: esta amenaza se resuelve de

forma pasiva, parándose hasta que la planta está

escondida. En este caso detecto las flores con una

antelación de tres cuadros para tener un margen de

frenada ya que no es posible pararse en seco.

Evitar enemigo saltando

Bloqueo: como respuesta al peligro de quedar atascado

manifestado anteriormente, ya sea por la existencia de

ladrillos o por la colocación de un cañón, se implementa

este método. En cada consulta del método getAction()

se intenta detectar si nos encontramos en situación de

bloqueo. Detectamos bloqueo cuando tenemos un

objeto sobre nosotros que nos impide saltar y además el

hueco que hay por delante es nulo o insuficiente. Si

descubrimos que estamos en ese punto nos servimos de

unos contadores para dar varios pasos en sentido

contrario, volver a girar y saltar sobre el objeto que nos

impedía el salto.

Enemigo no saltarín, destructible saltando sobre él: si el

enemigo no salta, y lo detectamos justo delante (o una

casilla más adelante) de Mario, saltamos para intentar

eliminarlo.

Parar salto: es un método crucial ya que nos permite

hacer un ajuste menos fino de la potencia de los saltos.

Cuando el agente está en pleno salto se hace un barrido

por el suelo y si se detecta que el hueco se termina en

los dos próximos cuadros, el salto se frena y con la

inercia que lleva es suficiente para caer sobre la

superficie detectada. Esto soluciona los problemas que

aparecían cuando había que aterrizar sobre una

superficie pequeña.

Frenar: este es otro de los métodos que más a menudo

salvan a nuestro agente. Cuando tenemos un escalón de

bajada seguido de un hoyo no basta con pararse ya que

como no se consigue frenar en seco la inercia que llevas

sólo de avanzar hace que te precipites. Cuando se juega

manualmente este problema se resuelve anticipándose a

la situación lo que nos da tiempo para conseguir frenar

y caer de manera casi vertical. Sin embargo para el

jugador automático decidimos detectar la situación con

un par de casillas de antelación y ajustar la cantidad de

frenada en función de la altura que tenga el escalón. De

esta forma cambiamos de dirección durante un número

de intervalos proporcional a la cantidad de frenada

calculada y con ello conseguimos que caiga en tierra

firme.

Gap: el método que detecta los hoyos y asigna una

intensidad de salto que es por defecto la máxima ya que

contamos con el método de parar salto para ajustar

mejor la potencia del salto.

Obstáculo delante: contamos con dos métodos que

detectan que hay obstáculos delante y uno adicional que

identifica el tipo de obstáculo de manera que si es uno

con un hoyo detrás, la intensidad que se le pone al salto

es la mínima para que lo supere sin pasarse.

Gap salvable: para que el agente recorriese las pantallas

de forma más fluida introdujimos este método que

detecta cuando podemos saltar para acortar el camino

aunque no haya un hoyo entre medias del origen y el

destino del salto. De forma empírica establecimos unos

límites de lo que Mario es capaz de saltar y con ello

cada vez que detecta que saltando puede llegar

acortando el recorrido. Viene bien cuando hay tuberías

ya que en muchas ocasiones están emparejadas y acorta

bastante.

Subir ladrillo: este método detecta cuando hay ladrillos

por delante a una altura a la que pueda llegar con un

salto el agente de forma que éste se mueva por las zonas

más altas para coger monedas, evitar criaturas y posibles

bloqueos por debajo de las filas de ladrillos.

Bala: si detectamos una bala encima de Mario, o encima

y a la derecha de Mario, esperamos a que pase antes de

proseguir nuestro camino.

Colina alta final: en esta competición de Mario se ha

habilitado la opción de que el final sea en alto, es decir,

sobre una colina muy alta que no es alcanzable saltando

con Mario, sino que tiene que volver atrás y saltar desde

más arriba. Estamos hablando, por ejemplo, de esta

situación:

Figura 15. Escaleras con gap.

Figura 16. Escalón con gap.

- 75 -

Page 81: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

En ese caso lo que hacemos es volver atrás hasta que

encontramos una estructura de ese tipo y llegamos a una

altura suficiente desde la que podamos saltar y alcanzar

la meta.

5. RESULTADOS OBTENIDOS. Como ya explicamos en la introducción, la posibilidad de

personalización del nivel al que juega Mario es muy grande.

Listaremos aquí algunas de las que hemos usado para mostrar el

comportamiento de nuestro agente:

-le: define los enemigos que queremos que aparezcan en

la pantalla. Al contrario de lo que pone en la página

oficial, [1], ya no se hace una máscara a nivel de bit

sino que requiere un String. De esta manera, si ponemos

–le g, los únicos enemigos que aparecerán serán

goombas. Debemos destacar que esta opción está

definida de forma distina a la que viene en la página

oficial del campeonato, que propone hacer máscaras de

bits cuando aquí funcionan Strings concatenados. De

esta manera las opciones que tenemos aquí (y son

importantes a la hora de caracterizar si Mario reconoce

bien a cada enemigo) son:

g: para los goombas.

gw: para los goombas voladores.

rk: para los koopa rojos.

gk: para los koopa verdes.

s: para spiky.

De igual manera que se hace para los goombas, si se le

añade una w al final de cada cadena, se convierten en

voladores.

De esta manera, si tenemos por ejemplo grkwgk en la

pantalla lo que tendremos es enemigos que son,

únicamente, goombas, koopas rojos voladores y

koopas voladores. Parece trivial insistir en esto, pero

no está bien documentado (hay que mirar el código

que da la competición) y puede ahorrar más de un

quebradero de cabeza.

-lg [on/off]: define si se quiere que haya gaps en

nuestro nivel o no, es decir, si Mario puede morir por

caer en un hoyo que no haya contemplado.

-ltb [on/off]: define si queremos que haya tuberías en

nuestro nivel (tuberías en las que pueden salir flores

como las que se detallaron en el apartado 2).

-lc [on/off]: con esto podemos hacer que en la pantalla

haya cañones (de los que salen balas) o no.

-ld <número>: define la dificultad del nivel.

-lt <número>: define el tipo de escenario en el que

queremos jugar: si es el estándar, en el castillo… no

tiene mucha más repercusión en el nivel salvo el fondo

de escenario.

-ll <longitud>: con esto puedes especificar la longitud

deseada del nivel.

-ls <valor>: define la “semilla” del nivel. El nivel se

genera aleatoriamente, pero los números aleatorios

dependen de una semilla; pues bien, con esto podemos

cambiar la semilla generando tantos niveles distintos

(con dificultad similar) como queramos.

Con la adecuada manipulación de esas opciones, observamos que

nuestro agente es lo suficientemente inteligente para superar:

El escenario por defecto.

El escenario por defecto, con nivel de dificultad 2, sólo

goombas, con una semilla de 256 y una longitud de 200.

El escenario por defecto, con nivel de dificultad 3, sólo

goombas, con una semilla de 985, con cañones y con

una longitud de 150.

El escenario por defecto, sin enemigos salvo flores y

balas, dificultad 4, con cañones y tuberías.

El escenario por defecto, con goombas voladores y no

voladores, semilla de 3 y longitud de escenario de 150.

El escenario por defecto con koopas verdes y rojos,

semilla de 1780, nivel de dificultad de 1 y longitud de

escenario 250.

El escenario por defecto, con koopas verdes y rojos,

semilla de 2, nivel de dificultad 4 y longitud de

escenario de 145.

No hemos probado muchos escenarios más por falta de tiempo,

aunque creemos que con el tiempo invertido los resultados de

nuestro agente son razonablemente buenos y generales, puesto

que sobrevive de manera admirable a ciertas pantallas que un

humano no se pasaría fácilmente, como hemos podido comprobar.

De esta manera, el techo de nuestro agente está en un nivel de

dificultad 4 tanto con enemigos (con koopas, aunque es lo mismo

con goombas y con una combinación de los dos) como sin ellos.

6. REFERENCIAS. [1] Página oficial de Mario AI Championship 2011:

http://www.marioai.com/.

[2] Historia del Pong: http://es.wikipedia.org/wiki/Pong.

[3] Historia sobre Inteligencia Artificial:

http://es.wikipedia.org/wiki/Inteligencia_artificial.

[4] Historia sobre jugadores automáticos de ajedrez:

http://es.wikipedia.org/wiki/Ajedrez_por_computadora.

[5] Reflexiones sobre la generación gamer:

http://www.cookingideas.es/como-motivar-a-la-generacion-

Figura 17. Colina alta final.

- 76 -

Page 82: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

gamer-cambiando-las-notas-de-clase-por-puntos-de-

experiencia-20110111.html

[6] Apuntes de la asignatura Inteligencia en Redes de

Comunicaciones, 5º IT.

[7] Información sobre el algoritmo A*:

http://en.wikipedia.org/wiki/A*_search_algorithm.

[8] Resumen de la primera competición de Mario AI:

http://en.wikipedia.org/wiki/A*_search_algorithm.

[9] Agente basado en algoritmo A* (ganador de Mario AI 2009):

http://www.youtube.com/watch?v=DlkMs4ZHHr8.

- 77 -

Page 83: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

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

Alejandro Pérez Cruz Ingeniería de Telecomunicación Universidad Carlos III de Madrid

NIA: 100072647 [email protected]

David de la Horra Iglesias Ingeniería de Telecomunicación Universidad Carlos III de Madrid

NIA: 100066695 [email protected]

RESUMEN En este documento presentamos una posible implementación de un agente que pueda jugar al juego SuperMario Bross. con una cierta inteligencia autónoma.

Categorías y descriptores de temas. [Inteligencia Artificial]: Agente reactivo que permite interactuar con el medio y realizar acciones para superar los distintos niveles del juego SuperMario Bros.

Términos generales Algoritmos de búsqueda, lenguaje de programación Java, diseño e implementación de un agente.

Palabras Clave Búsqueda, inteligencia artificial, agentes.

1. INTRODUCCIÓN A lo largo del siguiente documento expondremos las diferentes estrategias de búsqueda existentes y las posibles implementaciones que se deben tener en cuenta para desarrollar un agente que permita jugar de manera autónoma y con cierta inteligencia al SuperMario, consiguiendo superar el mayor número de niveles posibles y con la mayor puntuación posible.

Además se explicará la solución llevada a cabo y nuestra implementación del agente en Java para lograr un resultado satisfactorio en la competición para nuestro jugador. Se presentará pues el algoritmo utilizado (árboles de decisión) y el entorno en el que se desarrolla nuestra aplicación.

2. ESTRATEGIAS DE BÚSQUEDA Los algoritmos de búsqueda tratan de encontrar, en general, la solución más apropiada al problema en cuestión. Para ello se parte de un estado inicial y se trata de alcanzar un estado final deseado (meta, objetivo) por medio del uso de árboles de decisión en los cuales se van expandiendo nodos y desechando caminos de búsqueda según se avanza en el árbol.

Para ello existen diferentes estrategias de búsqueda que definen el orden para la expansión de nodos y que deben ser evaluadas según:

Completitud de la solución: hay que evaluar si la solución se encuentra siempre que esta exista.

Complejidad temporal: en este caso, lo que se debe evaluar es el número de nodos que han sido generados.

Complejidad espacial: hay que evaluar además el número de nodos que como máximo se han guardado en memoria.

Optimalidad de la solución: hay que evaluar si se encuentra la solución con menor coste.

Para evaluar cada estrategia se utilizan unos parámetros, que son:

1) Factor de ramificación (b).

2) Profundidad de la solución (d).

3) Máxima profundidad (m).

Una vez tenemos toda la información necesaria para evaluar nuestra solución, trataremos de implementar aquella estrategia que se adecúe más al fin que persigamos y que sea posible con los recursos de tiempo y memoria de los que se dispone.

En nuestro caso se dispone de información del dominio por medio de una matriz de 19x19 que nos proporciona información de la escena en la que se encuentra nuestro Mario y en la que dicho Mario se encuentra centrado en la posición (9,9) en todo momento.

Así pues, debido a que tenemos información del dominio puede ser lógico utilizar algún tipo de estrategia heurística que ayude a encontrar la solución a nuestro problema, es decir, en nuestro caso a permitir avanzar a nuestro jugador a lo largo de un nivel sin que sufra daño alguno.

- 78 -

Page 84: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

3. ALGORITMOS

3.1 Árboles de decisión Es la estrategia que hemos seguido para desarrollar nuestro agente. Consiste en un modelo de predicción usado en el ámbito de la inteligencia artificial. Permiten construir un diagrama de decisiones y/o de predicción basados en reglas que sirven para representar una serie de condiciones que ocurren de forma sucesiva.

Un árbol tiene una serie de entradas, las cuales pueden ser un objeto o una situación descrita a partir de un conjunto de atributos. Como resultado del procesamiento de las entradas y a través de la estructura del árbol, basada en ciertas reglas, se consigue alcanzar las hojas del árbol en el que se encuentran las decisiones a tomar en función de las entradas que se tenían.

Así pues, lo importante en este tipo de algoritmos es definir bien las reglas de modo que se adapten correctamente a la situación que se plantea para que la solución que se alcanza sea la más apropiada dada la situación y el conocimiento del entorno que se tiene.

3.2 Algoritmos genéticos Este tipo de algoritmos se desarrolla en múltiples ámbitos de la inteligencia artificial y era uno de los que se nos proponía desarrollar desde la página web de la competición de Mario AI y por eso aparece en esta memoria.

Un algoritmo genético es una técnica de búsqueda basada en la teoría de la evolución de Darwin, que ha cobrado tremenda popularidad en los últimos años.

Esta técnica se basa en los mecanismo de selección que utiliza la naturaleza, de acuerdo a los cuales, los individuos más aptos de una población son los que sobreviven al adaptarse más fácilmente a los cambios que se producen en su entorno.

Así pues, los algoritmos genéticos son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización y que están basados en el proceso genético de los organismos vivos.

Durante la fase reproductiva se seleccionan los individuos de la población para cruzarse y producir descendientes que constituirán, una vez mutados, la siguiente generación de individuos. La selección de padres se efectúa al azar usando un procedimiento que favorezca a los individuos mejor adaptados, ya que a cada individuo se le asigna una probabilidad de ser seleccionado que es proporcional a su función de adaptación. De este modo, los individuos bien adaptados se escogerán probablemente varias veces por generación, mientras que los pobremente adaptados no se escogerán más que de vez en cuando.

Por lo tanto, un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo una condición muy débil (que el algoritmo guarde siempre al mejor elemento de la población sin hacerle ningún cambio) se puede demostrar que el algoritmo converge en probabilidad al óptimo. Es decir, al aumentar el número de iteraciones, la probabilidad de tener el óptimo en la población tiende a uno.

3.3 Algoritmo de pathfinding A*

Presentamos este algoritmo porque también se recomienda desde la competición de MarioAI ya que ha dado buenos frutos a anteriores participantes que lo desarrollaron.

Este algoritmo se clasifica dentro de los algoritmos de búsqueda en grafos. Además, se demuestra que la búsqueda realizada por medio de este algoritmo alcanza la solución óptima (el camino de menor coste entre un nodo origen y uno objetivo) siempre que se utilice un heurístico admisible, es decir, que no sobreestime el coste real.

Este algoritmo utiliza una función de evaluación que tiene en cuenta tanto el coste real del recorrido como el valor heurístico de los nodos. La función es la siguiente:

푓(푛) = 푔(푛) + ℎ(푛)

Donde:

g(n): coste sufrido hasta alcanzar n (nodo actual).

h(n): coste estimado desde n hasta la meta.

f(n): coste estimado total hasta la meta pasando por n.

Dicho algoritmo mantiene dos estructuras de datos auxiliares: nodos abiertos (implementados como una cola con prioridad ordenada por el valor f(n) de cada nodo) y los nodos cerrados donde se guarda la información de los nodos que ya han sido visitados.

En cada paso, se expande el nodo que esté primero en abiertos, y en caso de que no sea un nodo objetivo, calcula el f(n) de todos sus hijos, los inserta en abiertos, y pasa el nodo evaluado a cerrados.

Así pues, este algoritmo es una combinación entre búsquedas de tipo en anchura con búsquedas en profundidad.

- 79 -

Page 85: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

4. AGENTES Una vez hemos comentado un poco las diferentes estrategias de búsqueda para ayudarnos a solucionar nuestro problema, vamos a comentar un poco la teoría que hay por debajo del agente que debemos desarrollar.

4.1 Definición y principios básicos Un agente es una entidad capaz de percibir su entorno, procesar tales percepciones y responder o actuar en su entorno de manera racional, es decir, de manera correcta y tendiendo a maximizar un resultado esperado basándose en la evidencia proporcionada por sus sensores y en el conocimiento del que disponga. Así pues, un agente es autónomo en tanto en cuanto sus acciones y elecciones dependen más de su propia experiencia que del conocimiento introducido sobre el entorno por el programador. Según Michael Wooldridge un agente inteligente es el que es capaz de actuar con autonomía de forma flexible, destacando la reactividad, la proactividad y la habilidad social sobre otras propiedades. En general, los agentes poseen las siguientes propiedades:

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

Reactividad: el agente debe observar e interactuar con el

entorno.

Proactividad: debe haber una intención de cumplir con los objetivos fijados mediante planificación y razonamiento práctico.

Persistencia: es la capacidad para mantener un estado

(estado mental) que no se modifica caprichosamente.

Razonamiento: el agente debe ser capaz de interpretar la información del entorno, realizar inferencias y tomar las decisiones oportunas.

Aprendizaje: es la capacidad para cambiar su

conocimiento a partir de la experiencia.

Planificación: se define como la capacidad de construir planes propios para lograr objetivos a partir de las tareas que se sabe realizar o podemos pedir a otros.

Comunicación: es la capacidad para entenderse con

otros agentes en un lenguaje expresivo con actos comunicativos.

Cooperación: es la capacidad para solicitar o dar

servicios a otros agentes y trabajar en cooperación para conseguir un objetivo común.

Delegación: capacidad para realizar tareas delegadas por el usuario u otros agentes.

Movilidad: capacidad de suspender la ejecución a mitad

de una tarea y reanudarla en otro nodo.

Personalidad: capacidad para tener un estado mental que incluya creencias, deseos, intenciones, motivaciones... que determinen su comportamiento.

Continuidad temporal: se considera un agente como un

proceso sin fin, ejecutándose continuamente y desarrollando su función.

Veracidad: asunción de que un agente no comunica

información falsa a propósito.

Benevolencia: asunción de que un agente está dispuesto a ayudar a otros agentes si esto no entra en conflicto con sus propios objetivos.

Además, presentamos las arquitecturas generales de los agentes:

En nuestro caso, implementamos un agente reactivo debido a su simplicidad básicamente. Además, cabe decir que la conducta de una agente rara vez es la óptima. Esto es debido a que calcular el óptimo de un criterio de un modo suficientemente bueno para ser considerado razonable es muy difícil cuando en el problema planteado concurren múltiples restricciones.

- 80 -

Page 86: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

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

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

Agentes personales: actúan par un usuario o un grupo de

usuarios compartiendo tareas, datos, etc.

Agentes de información: investigan y analizan la información en la red y permiten fusionar la información de múltiples fuentes.

Agentes móviles: son aquellos que se desplazan para

ejecutarse. Suelen ser agentes de información.

4.3 Estados de Mario

Aunque en nuestra implementación no tenemos en cuenta el estado en el que se encuentra Mario, consideramos cultura del juego el que el lector sepa los diferentes estados en los que se puede encontrar Mario y las características de las que puede disponer.

Mario Fuego: Este es el mejor estado en el que puede

encontrarse Mario, en el podrá efectuar todos los movimientos posible incluyendo correr y echar fuego. Si Mario es herido por alguna de las criaturas pasará al estado Súper Mario tras parpadear un tiempo en la pantalla. Este es por defecto el estado en el que empieza la partida.

Súper Mario: Mario llega a este estado tras comer una

seta desde Mario o ser herido desde Mario Fuego, podrá realizar todos los movimientos excepto correr y echar fuego.

Mario Pequeño: Este estado es el más pequeño de todos

en tamaño, y esto repercute en que tenga que saltar más que Súper Mario o Mario Fuego para superar el mismo obstáculo, además de no disponer del botón correr y echar fuego.

4.4 Estados de movimientos

Mario podrá estar en diversos estados a lo largo de la partida, estos son vitales para posteriormente poder establecer las reglas de decisión. Estos estados vienen ya codificados en el paquete que nos descargamos de [8] Estos estados son: Andando: Este movimiento se produce cuando se pulsan

cualquiera de las teclas de dirección izquierda (KEY_ LEFT) o derecha (KEY_RIGTH). Esta acción es independiente del estado de Mario y también podemos pasar a cualquier otra acción.

Corriendo: Mario avanza a una velocidad superior a la normal, esto solo se puede conseguir si se encuentra en los estados Mario Fuego o Súper Mario. Para poder llegar a este estado es necesario mantener pulsadas las teclas de dirección ya sea izquierda o derecha y la de correr (KEY_SPEED).

Saltando: Esta acción se puede realizar en cualquier estado de Mario, pero debido al tamaño reducido de Mario pequeño como es obvio necesitara saltar más para poder sobrepasar el mismo obstáculo. Este movimiento contempla desde que presionamos la tecla de salto hasta que llegamos al punto más alto, el nivel del salto depende de cuánto tiempo esté pulsada la tecla de salto (hasta alcanzar un máximo).

- 81 -

Page 87: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Es importante tener en cuenta que para poder iniciar un salto no puede estar pulsada con anterioridad la tecla de salto, en ese caso no saltará.

Cayendo: Después de haber efectuado un salto, la gravedad nos hace caer, en este momento no podremos impulsarnos más e iremos hacia el suelo. Esta acción es independiente del estado en que se encuentre Mario y no requiere pulsar ninguna tecla. Eso si podremos mantener una de las teclas de dirección pulsadas para controlar la caída.

Agachado: Este movimiento hará que Mario reduzca su tamaño lo cual puede ser útil para esquivar una bala por ejemplo. Mario pequeño no se podrá agachar. Para alcanzar este estado se debe pulsar la tecla de dirección que apunta hacia abajo (KEY_DOWN). Cuando nos encontremos en este estado no se podrá saltar.

Disparando: Este movimiento solo se podrá hacer cuando se encuentre en el estado Mario Fuego. Para realizarlo habrá que hacer una pulsación de la tecla de correr (KEY_SPEED).

Herido: Este estado se alcanzará tras colisionar con algún enemigo, acto seguido dispondrá de un tiempo de aproximadamente medio segundo de inmunidad y luego cambiara de estado. Si el estado inicial era Mario Fire pasará a Supe Mario, si por el contrario Mario se encontraba en el estado de Supe Mario iremos a Mario Pequeño y por último si estábamos en Mario Pequeño moriremos y se acabará la partida.

4.5 Movimientos de nuestro agente Nuestro agente como ya mencionamos en el apartado de algoritmos será reactivo y se basara en distintas reglas de más o menos prioridad para decidir qué acción deberá realizar. Para ilustrar gráficamente los movimientos hemos construido un árbol para que se pueda ver el nivel de decisión el primer estado que es Final especial es el estado que tiene más prioridad y el estado Avanzar es el que tiene menos prioridad.

En nuestra implementación distinguimos ente:

Avanzar: Esta acción consiste en correr hacia la derecha, dicha acción tiene una prioridad muy baja, ya que como es lógico será interrumpida cuando encuentre un enemigo o tenga que saltar. Esta es la acción básica de nuestro Agente.

Saltar paredes: Como su propio nombre indica esta acción se aplicara cuando Mario encuentre un obstáculo en su campo de visión. Las reglas que aplicamos para este método son muy amplias debido a que deberá distinguir entre una amplia gama de superficies y también dependiendo de la superficie elegir la mas optima Hemos incorporado un contador de saltos cuyo objetivo es que cuando la tecla salto este mucho tiempo pulsada pero siga teniendo que saltar suelta la tecla (se ponga a KEY_JUMP=false en el código). Esto es muy necesario debido a que Mario no puede saltar si ya esta presionada la tecla de salto y si esto ocurriera antes de que Mario pudiera saltar, si por ejemplo esta en el aire, esto produciría que nuestro agente se quedase bloqueado.

Saltar escaleras: Este movimiento es uno de los más complicados debido a la complejidad que supone saltar de un escalón en un escalón. Primero deberá detectar la escalera, lo cual lo hacemos cuando se la encuentra o cae de un salto en un escalón. A continuación saltará de uno peldaño si ese es el último escalón, es decir, si después ya solo tiene vacio saltara al otro lado, en caso contrario deberá saltar al siguiente escalón. Esto lo realizará todas las veces que sea necesario.

Saltar enemigo: Para esta acción hemos puesto reglas genéricas aplicables a todos los enemigos, ya que después de analizar el código que nos proporcionan hemos visto que la mayoría tienen un valor mayor o igual a 80. Estas reglas son del estilo: saltar cuando detecte un enemigo delante suya, saltar cuando detecte un enemigo cayendo hacia él, etc. Para hacer bien este movimiento deberemos tener en cuenta muchas variantes ya que los enemigos pueden perseguir a Mario, caer del cielo, o incluso caer a sus “pies”.

Agacharse: Esto es un caso especial de esquivar un enemigo y lo hacemos cuando un misil va hacia Mario, en este caso se agacha hasta que pase. Para ello mantenemos pulsada la tecla con dirección hacia abajo (KEY_DOWN=true) e irá comprobando si en la posición de encima de su cabeza no tiene nada, sólo entonces podrá levantarse.

Retroceder: Si hay enemigos en una posición en la cual no va a poder esquivarlos saltando, retrocedemos. Esto se antoja de vital importancia en niveles muy altos donde pueden aparecer 10 enemigos de golpe, esto hará que retrocedamos y podamos analizar mejor la situación ya que si hubiéramos seguido avanzando podríamos haber sido heridos al no poder tener en cuenta todos a la vez.

INICIO:

Final especial

Esquivar flor

Esquivar bala

Saltar tubería/cañ

ón

Saltar escalera

Evitar hoyos Saltar pared Avanzar

- 82 -

Page 88: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

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

Escalón antes de hoyo: Cuando detectamos un escalón

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

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

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

Nuestro agente dispondrá de dos matrices de 19x19 las cuales le aportarán información de su entorno. Mario estará en la posición (9,9) en todo momento. En cualquiera de las dos matrices si no hay nada, esa posición tendrá el valor 0. La primera matriz será LevelScene, esta matriz le indicara los elementos fijos de la pantalla, tales como: paredes, tuberías, cañones…

Algunos de los más usuales son:

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

- 83 -

Page 89: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Como podemos apreciar en esta primera matriz salen todos los valores del entorno incluyendo las monedas cuyo valor es el único positivo (el 1). La segunda matriz es enemies también de 19x19 y en su interior tendrá los valores de los enemigos. Algunos de los enemigos más usuales son:

Una vez tenemos identificados los números que tendrá la matriz enemies, vamos a ver sobre la pantalla como quedaría. También es llamativo resaltar que la mayoría de enemigos tiene un valor superior a 80, eso nos facilitara a la hora de implementar el código para que esquive a cualquier enemigo desconocido y sin que necesidad de tratarlo como un caso especial. Para eso utilizamos la pantalla anterior aunque solo tengamos un par de enemigos del mismo tipo.

Como podemos ver en la imagen aunque el fuego que arroja Mario no es un enemigo como tal, también viene indicada en la matriz enemies con un 25. Como hemos podido comprobar estas matrices nos van a ser de vital importancia para poner las reglas ya que nos irán proporcionando información detallada de la posición y el numero de enemigos en cada instante.

- 84 -

Page 90: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

5. SOLUCIÓN ÓPTIMA Obviamente el algoritmo que hemos implementado en dos semanas dista de ser el óptimo y deseado, la mayoría de los participantes mejor clasificados disponen de algoritmos genéticos Y en particular los tres mejores clasificados del 2010 usaron el pathfinding A*

6. BIBLIOGRAFÍA [1] http://es.wikipedia.org/wiki/%C3%81rbol_de_decisi%C3%B

3n [2] http://julian.togelius.com/mariocompetition2009/GIC2009Co

mpetition.pdf [3] http://es.wikipedia.org/wiki/Algoritmos_gen%C3%A9ticos [4] http://eddyalfaro.galeon.com/geneticos.html [5] http://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqued

a_A*. [6] http://es.wikipedia.org/wiki/Agente_inteligente_(inteligencia

_artificial) [7] http://www.ati.es/novatica/2000/145/vjulia-145.pdf [8] http://www.marioai.com/

- 85 -

Page 91: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Inteligencia en Redes de Comunicaciones

Robot de Robocode

Felipe Llinares López 100072665

Juan José Torres

García 10072753

ABSTRACTO En esta memoria describimos una implementación

que hemos realizado de un robot de competición para

el programa Robocode.

General Terms Algoritmos, Rendimiento, Diseño.

1. INTRODUCTION Robocode es, en parte un juego, y en parte un

language de programación.

Es un juego en el que unos tanques controlados por el

ordenador luchan entre sí por su propia

supervivencia, dentro de un tablero de juego.

Los tanques, llamados robots, están puramente

controlados por un algoritmo interno para cada uno

de ellos. Es decir, es un juego de Inteligencia

Artificial. Dichos algoritmos se escriben en el

lenguaje de programación Java.

El propio programa da muchas facilidades para hacer

robots, y es muy sencillo escribir el algoritmo de un

robot básico que se mueva, detecte a los enemigos y

les dispare. Sin embargo, los algoritmos pueden llegar

a complicarse mucho. Hay quien dedica mucho

tiempo a hacer robots muy difíciles de combatir. De

hecho, incluso hay una liga profesional de Robocode.

Nuestro trabajo ha consistido en hacer un robot

bastante competitivo. Quizá no tan efectivo como los

mejores de la liga profesional, pero sí es capaz de

vencer con facilidad a los robots sencillos, e incluso

es capaz de ganar algunas veces a los más

complicados.

En esta memoria, explicamos de forma breve en qué

consisten los algoritmos que hemos utilizado. Está

dividida en dos partes:

- 86 -

Page 92: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Sistema de Disparo

Sistema de Esquiva

El sistema de disparo intenta predecir el movimiento

de los robots enemigos, para así disparar a donde van

a estar cuando la bala llegue a su posición, mientras

que el sistema de esquiva mueve al robot intentando

esquivar de la forma más efectiva las balas de los

robots enemigos.

2. Sistema de Disparo

2.1 Introducción El lema de Robocode es “Build the best, destroy the

rest”. Por tanto, no debe resultar una sorpresa que

diseñar un sistema efectivo de disparo es esencial

para obtener un bot competitivo.

Hay multitud de aproximaciones a dicho problema.

La más sencilla de todas es conocida como “Head-

On-Targeting”

Consiste simplemente en disparar hacia donde vemos

al enemigo. Si bien a primera vista puede parecer algo

totalmente razonable, la reducida velocidad de las

balas, entre 11 pixeles por turno para las balas más

poderosas hasta 20 pixeles por turno para las más

débiles, hace que si utilizamos “Head-On-Targeting”,

lo más probable es que para cuando la bala llegue a la

posición del bot enemigo, éste ya no se encuentre allí.

Por tanto, diseñar un buen sistema de disparo es

mucho más complejo de lo que puede parecer en un

principio y ha sido objeto de estudio por muchos

aficionados a la Inteligencia Artificial dentro del

mundo de Robocode.

Debido a la limitación máxima de diez páginas que

pesa sobre el contenido de este trabajo,

renunciaremos a la posibilidad de exponer el estado

del arte sobre los sistemas de Inteligencia Artificial

para disparo en Robocode y nos centramos en

describir de forma detallada cuál es la forma en la que

nosotros hemos atajado el problema.

En nuestra opinión, el problema de diseñar un sistema

de disparo es claramente un problema que se presta a

ser tratado desde la rama del Aprendizaje Máquina.

Es fácil plantearlo como un problema de aprendizaje

supervisado, concretamente, como un problema de

estimación, o si consideramos un comportamiento

puramente determinista, de regresión.

2.2 Preprocesador de Datos Cada vez que escaneamos a un robot enemigo (lo

cual, con un algoritmo de escaneo adecuado, ocurre

cada turno), el kernel que controla la ejecución de la

batalla invoca el método onScannedRobot, el cuál

recibe como parámetro un objeto de la clase

ScannedRobotEvent.

Dicho objeto contiene información muy interesante

sobre el estado del robot enemigo, como la distancia

al enemigo, su dirección, velocidad, energía restante o

el ángulo relativo entre nuestra dirección y su centro.

Además, dedicando suficiente esfuerzo, es posible

programar un módulo de pre procesado de datos que

obtenga muchas otras medidas de segundo, tercer o

incluso cuarto orden a partir de los datos que se

obtienen directamente del objeto ScannedRobotEvent

y de invocaciones anteriores de dicho método.

Por ejemplo, a partir de la velocidad y la dirección se

puede obtener la velocidad radial y angular, así como

el sentido de giro del robot enemigo respecto a

nuestro centro. Igualmente, a partir de nuestra

posición (la cual es conocida en todo momento), la

distancia al robot enemigo y el ángulo relativo entre

nuestra dirección y el centro del robot enemigo

podemos calcular la posición absoluta del robot

enemigo. Otro dato interesante es la distancia del

robot enemigo a los muros, que puede ser medida

tanto en pixeles como en el número de turnos que

tardaría el robot enemigo en chocar con los muros si

siguiese la misma trayectoria.

Si además usamos los datos obtenidos en el evento

anterior, podemos obtener medidas con dimensión

temporal como la aceleración del robot enemigo, el

número de turnos que lleva sin cambiar sentido de

- 87 -

Page 93: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

giro, sin acelerar o sin decelerar o simplemente

parado.

La forma de obtener dicho dato es bastante original.

Cada vez que vemos al enemigo, consideramos que se

genera una onda esférica en el centro de nuestro robot

y que se propaga a la misma velocidad que lo haría la

bala que dispararíamos en ese momento si

pudiéramos hacerlo (hay que recordar que en

Robocode, no es posible disparar repetidamente de

forma ilimitada porque hay calentamiento en el

cañón).

En el momento de generar la onda, almacenamos

información sobre la posición en la que se encontraba

el enemigo. A cada turno, comprobamos si la onda ha

llegado al enemigo. Cuando es así, podemos saber

cuál ha sido su desplazamiento desde que disparamos

la bala “virtual” hasta que dicha bala habría

impactado. Una vez realizada dicha medida, tenemos

una nueva muestra para nuestro conjunto de datos de

entrenamiento, formada por todos los datos de

entrada comentados anteriormente (velocidad,

dirección, aceleración, etc.) y el ángulo de desviación

que debimos usar.

En la figura se muestran las ondas originadas para el

cálculo de los valores exactos de la variable de salida.

Las ondas negras tienen una bala real .mientras que

las blancas son balas “virtuales”.

Así, nuestro sistema tratará de utilizar una serie de

datos que obtenemos de las invocaciones del método

onScannedRobotEvent para tratar de estimar

mediante ciertos algoritmos cómo se moverá nuestro

rival durante el tiempo que tardará la bala en llegar a

él y así calcular el ángulo correcto con el que

debemos compensar nuestro cañón a la hora de

disparar.

Realmente, la limitación en los datos que tomaremos

cada vez que escaneamos al robot enemigo está

simplemente en nuestra imaginación y habilidad

como diseñadores. Un buen pre procesado de datos,

en el que adquiramos datos verdaderamente

relevantes para el problema, es la primera clave para

diseñar un sistema de disparo efectivo. En ese

sentido, vemos que el problema no se diferencia en

absoluto de cualquier otro sistema que hemos

- 88 -

Page 94: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

estudiado durante la asignatura en el tema de

Aprendizaje Máquina.

2.3 Algoritmos Una vez hemos adquirido y procesado los datos que

conformaran nuestro conjunto de entrenamiento,

debemos diseñar algoritmos para estimar el ángulo de

desviación óptimo al disparar a partir de dichos datos.

La primera cosa que debemos mencionar es que,

gracias al concepto introducido anteriormente de

balas “virtuales”, podemos utilizar simultáneamente

varios algoritmos distintos. Así, a cada momento,

elegimos cuál es el algoritmo que está obteniendo

mejores resultados en términos de porcentaje de

acierto y la bala real es disparada según la predicción

de dicho algoritmo. El resto simplemente generan una

bala “virtual” de la cual nos ocuparemos para ver si

hace impacto “virtual” o no.

Utilizando dicha idea, nuestro sistema de disparo se

compone de cuatro algoritmos:

Sistema de disparo de corto alcance: En

situaciones en las que nuestro enemigo está

cerca, esto es, a menos de 100 píxeles, se puede

aproximar el movimiento del bot enemigo

durante breves periodos de tiempo por un

movimiento circular. En esa situación, es

posible diseñar un algoritmo que, asumiendo

dicho movimiento circular, prediga de forma

exacta donde se encontrará en enemigo y

dispare ahí. Dado que la similitud al

movimiento circular es grande pero no exacta,

la probabilidad de fallar existe. Sin embargo,

este algoritmo funciona bien a distancias

cortas.

Least Mean Squares: La utilización del

archiconocido algoritmo LMS en Robocode

es, creemos, una contribución original nuestra

ya que no hemos encontrado referencia

alguna en la wiki. Tras volcar conjuntos de

datos obtenidos tras varias batallas en

ficheros y procesarlos con MATLAB,

llegamos a la conclusión que una regresión

lineal era sorprendentemente precisa. Debido

a la elevada complejidad computación de las

regresiones lineales exactas (inversión de

matrices principalmente) y a que en este

contexto es mucho más interesante emplear

un algoritmo adaptativo, llegamos a la

conclusión de que LMS podía obtener buenos

resultados, como así hemos comprobado en la

práctica.

Dynamic Clustering: El algoritmo de moda

para disparar en Robocode a fecha de

Diciembre de 2012. El método es una

- 89 -

Page 95: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

combinación de KNN con estimación de

densidades de probabilidad. A cada instante

que debemos disparar, buscamos en nuestro

conjunto de datos las K situaciones más

similares a la actual que hemos vivido en el

pasado, donde cada situación se caracteriza

por los datos de entrada que hayamos

decidido usar. Con dichas K situaciones más

similares, trataremos de estimar la PDF de la

variable de salida para nuestro estado actual y

elegiremos como ángulo de desviación aquel

que tenga la máxima densidad de

probabilidad. En otras palabras, usamos el

criterio de máxima verosimilitud. Es

importante reseñar que tanto el método de

estimación de la PDF, como el parámetro K,

como los datos de entradas para identificar

situaciones son algo que debe elegir el

diseñador. Sobre los datos de entrada ya

hemos hablado. Respecto a los otros dos

parámetros, nosotros utilizamos el método de

las ventanas de Parzen con kernel gaussiano

para la estimación de la PDF y K = 25 como

parámetro del KNN ya que es la

configuración que mejor tasa de acierto nos

ha proporcionado en nuestros benchmark.

Este algoritmo es utilizado por los robots más

competentes de todo Robocode.

LMS Weighted Dynamic Clustering: Nuestra

segunda aportación original a los algoritmos

de disparo en el mundo de Robocode. Uno de

los problemas, a nuestro juicio, del algoritmo

Dynamic Clustering es que es tremendamente

heurístico. Viendo el código de varios bots

open source que implementan dicho

algoritmo, comprobamos que cada bot

tomaba sus propios datos de entrada y les

asignaba pesos de una forma bastante oscura

a priori. Por tanto, nos planteamos si había

una forma de que nuestro robot aprendiese

también, a la hora de buscar las situaciones

más similares en el paso KNN del algoritmo

de Dynamic Clustering, que datos de entrada

son realmente más importantes. Nuestra idea

fue emplear los pesos del filtro LMS, en valor

absoluto y normalizados, como indicador de

qué datos son más importantes. Así,

sustituimos la distancia Euclídea por una

distancia con pesos y el resto del algoritmo se

mantiene igual.

- 90 -

Page 96: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Predicciones para la futura posición del enemigo

según los distintos algoritmos

Como dijimos, los cuatros algoritmos anteriormente

descritos son constantemente simulados de forma

concurrente. Sus tasas de acierto virtual son

monitorizadas y, aquel con mayor tasa de acierto

virtual, es el que guiara la dirección de nuestra

siguiente bala real. En la práctica, hemos comprobado

que el algoritmo LMS Weighted Dynamic Clustering

es aquel que suele ofrecer mejores resultados. Sin

embargo, mantener los cuatro a la vez es, sin duda, la

mejor elección: no sólo hace nuestros disparos más

impredecibles sino que hace nuestro bot mucho más

adaptable a enemigos de distintas características.

3. Sistema de Esquiva

3.1 Introducción Al igual que nuestro bot intenta estimar la posición

del bot enemigo para impactarle incluso aunque se

mueva, de igual forma el bot enemigo intentará

estimar nuestra posición.

Nuestro deber es ponerle al bot enemigo lo más difícil

posible dicha estimación. Es decir, debemos decidir

hacia qué dirección y sentido queremos mover

nuestro bot y cuánto, en términos de velocidad, para

que las bolas enemigas no nos den. Dicho de otra

forma, tenemos que elegir dónde vamos a estar cierto

tiempo después al momento de disparo del enemigo,

tal que el movimiento de la bola enemiga no

interseccione con el de nuestro robot.

De nuevo, hay multitud de formas de afrontar el

problema, y el espacio que podemos dedicarlas en

esta memoria es escaso. Por tanto, nos centraremos en

nuestra forma de resolver el problema.

Hemos utilizado un algoritmo bastante común entre

los robots más poderosos actuales, conocido como

Wave Surfing, o surfeo de ondas, que exponemos a

continuación.

3.2 Preprocesador de Datos Como ya hemos comentado, con un algoritmo

adecuado, nuestro robot escaneará al robot enemigo

cada turno. La idea básica de Wave Surfing consiste

en que cada vez que esto ocurre, generamos una onda

imaginaria esférica, como la que se generaba para el

algoritmo de disparo, pero esta vez centrada en el

robot enemigo.

Dicha onda se irá propagando a lo largo del tiempo, y

llegará un momento en el que su frente rompa contra

nuestro robot. Como generamos una onda cada turno,

cada vez que el robot enemigo dispare una bala, habrá

una onda asociada a ella.

- 91 -

Page 97: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Lo interesante del algoritmo estriba en que la bala

enemiga viaja en uno de los puntos del frente de su

onda asociada. Por tanto, haciendo una estimación de

cuál es ese punto, podemos predecir dónde estará la

bala enemiga cuando el frente de la onda rompa con

nuestro robot.

Si además, nuestro robot se mueve a lo largo del

frente de dicha onda, podemos moverlo a un punto en

el que creamos que la bala no estará, de forma que la

esquivaremos. Y ese tipo de movimiento es conocido

como surfear la onda.

Cada vez que escaneamos al robot enemigo, que es

cuando queremos generar la onda, se llama al método

onScannedRobot, que como ya hemos comentado,

tiene datos de sobra como para apuntar todo lo que

necesitamos saber de la onda. Concretamente, el

momento en el que la generamos, su velocidad (en

función de la potencia con la que dispara nuestro

enemigo), su dirección (que sería hacia donde está

apuntando el enemigo), la posición en la que se

genera (que es la posición del enemigo), y la posición

de nuestro propio robot en el momento que se genera.

Cada turno, tenemos que actualizar la posición de

todas las ondas que teníamos apuntadas (en función

del tiempo que ha transcurrido desde que se

generaron y de su velocidad individual), y borrar las

ondas que ya han traspasado nuestro robot.

Además, en cada turno, tenemos que elegir cómo

movernos a lo largo del frente de la/las ondas que

tenemos apuntadas, para esquivar las balas enemigas.

La forma en la que lo hagamos es lo que diferencia a

los distintos algoritmos de Wave Surfing.

3.3 Algoritmo Nuestro algoritmo en concreto, análogamente a lo que

hacíamos para disparar, consiste en estimar con

cuánto ángulo de desviación respecto a donde está

nuestro robot está disparando el robot enemigo.

Para ello, nos basamos en las balas que nos

impactaron anteriormente. Cada vez que nos impacta

una bala, buscamos entre las ondas que tenemos

apuntadas a cuál estaba asociada. En dicha onda,

tenemos apuntado el punto de donde salió, que es

dónde estaba el enemigo cuando disparó la bala que

nos ha dado, y también tenemos dónde estaba nuestro

robot en el momento de disparo. Sabiendo el punto en

el que nos ha impactado la bala, que es justamente

nuestra posición en el momento del impacto,

podemos estimar con cuánto ángulo de desviación

disparó el robot enemigo.

La idea es guardarnos con que ángulos de desviación

nos está impactando más veces el robot enemigo. De

esta forma, a la hora de movernos, nos moveremos

hacia un punto cuyo ángulo de desviación tenga poca

probabilidad de impactarnos.

Más en detalle, lo que hace el algoritmo de

movimiento es buscar la onda que está más cerca de

nuestro robot, ya que está asociada a la bala más

cercana y por tanto más peligrosa. A continuación,

estima donde estaría nuestro robot cuando la onda nos

impacte, si nos moviésemos a lo largo del frente de

dicha onda (surfeándola) hacia la derecha y hacia la

izquierda, y a diferentes velocidades. A continuación,

para cada uno de esos puntos, calcula cuánto sería el

ángulo de desviación con el que tendría que haber

disparado el robot enemigo para impactarnos, y busca

entre los impactos anteriores cuál de dichos ángulos

de desviación nos ha impactado menos veces

anteriormente. Y pone al robot en movimiento hacia

dicho punto y con dicha velocidad.

De esta forma, cuando la onda nos impacte, estaremos

en el punto de su frente de onda cuyo ángulo de

desviación con el que tendría que haber disparado el

robot enemigo para darnos tiene menos probabilidad

de darnos, basándonos en los disparos que nos

impactaron anteriormente.

Hay que tener en cuenta, que todo esto se recalcula

cada turno, de forma que nos iremos acercando de

una forma suave al punto más seguro.

- 92 -

Page 98: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Empíricamente, hemos descubierto que el algoritmo

más efectivo es moverse surfeando la onda hacia el

lado con menor probabilidad de impacto, a una

velocidad constante, y ese es el algoritmo que hemos

utilizado finalmente.

La gran ventaja de este algoritmo es que, aunque el

robot enemigo tenga un método para aprender y

estimar nuestros movimientos, si consigue

impactarnos alguna bala, nuestro algoritmo

reaccionará y empezará a mover el robot de forma

diferente para contrarrestar la forma de disparo del

robot enemigo.

4. Referencias

[1] La mayor parte de la información la hemos

adquirido de Robowiki

http://robowiki.net/wiki/Main_Page

[2] Para el algoritmo de disparo, hemos utilizado

información de las siguientes páginas:

http://en.wikipedia.org/wiki/Kernel_density_esti

mation

http://es.wikipedia.org/wiki/Knn

http://robowiki.net/wiki/Dynamic_Clustering_Tut

orial

http://en.wikipedia.org/wiki/Kd-tree

http://robowiki.net/wiki/GuessFactor_Targeting

http://homepages.inf.ed.ac.uk/rbf/CVonline/LOC

AL_COPIES/AV0405/MISHRA/kde.html

http://robowiki.net/wiki/Maximum_Escape_Angl

e

[3] Para el algoritmo de esquiva, hemos utlizado

información de las siguientes páginas:

http://robowiki.net/wiki/Wave_surfing

[4] Hemos utilizado también los apuntes de la

asignatura.

Hemos utilizado también código open-source de

bots del repositorio de robocode.

- 93 -

Page 99: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Minería de Datos Óscar Palomo Miñambres

Universidad Carlos III de Madrid Avda. De la Universidad, 30

28911, Leganés (Madrid-España) [email protected]

Abstract En este artículo analizaremos las ideas básicas que sustentan el Data Mining y, más concretamente, la utilización de árboles de decisión como herramienta estadística avanzada. Presento también un ejemplo ficticio de la aplicación de estas técnicas: predecir clientes que tienen un alto porcentaje de impagos. 1. INTRODUCCIÓN

La minería de datos (DM, Data Mining) consiste

en la extracción no trivial de información que

reside de manera implícita en los datos. Es una

tecnología con gran potencial para ayudar a las

compañías a concentrarse en la información más

importante de sus Bases de Información. Las

herramientas de Data Mining predicen futuras

tendencias y comportamientos, permitiendo en

los negocios tomar decisiones proactivas y

conducidas por un conocimiento acabado de la

información.

Lo que en verdad hace el data mining es reunir

las ventajas de varias áreas como la Estadística, la

Inteligencia Artificial, la Computación Gráfica, las

Bases de Datos y el Procesamiento Masivo,

principalmente usando como materia prima las

bases de datos.

Existen cuatro razones fundamentales por las cuales el Data Mining es una realidad en nuestros días:

• Avances tecnológicos en almacenamiento masivo de datos y CPU.

• Existencia de nuevos algoritmos para extraer información en forma eficiente

• Existencia de herramientas automáticas que no hacen necesario el ser un experto en estadística

• Potencia de computo

2. MINERIA DE DATOS – DATA MINING

La técnica usada para realizar estas hazañas en

Data Mining se llama Modelado. Modelado es

simplemente el acto de construir un modelo en

una situación donde usted conoce la respuesta y

luego la aplica en otra situación de la cual

desconoce la respuesta. Por ejemplo, si busca un

galeón español hundido en los mares lo primero

que podría hacer es investigar otros tesoros

españoles que ya fueron encontrados en el

pasado. Notaría que esos barcos frecuentemente

fueron encontrados fuera de las costas de

Bermuda y que hay ciertas características

respecto de las corrientes oceánicas y ciertas

rutas que probablemente tomara el capitán del

barco en esa época. Usted nota esas similitudes y

arma un modelo que incluye las características

comunes a todos los sitios de estos tesoros

hundidos. Con estos modelos en mano sale a

buscar el tesoro donde el modelo indica que en el

pasado hubo más probabilidad de darse una

situación similar. Con un poco de esperanza, si

tiene un buen modelo, probablemente

encontrará el tesoro.

2.1 CICLO DATA MINING

El data mining se ha ido incorporando a la vida de empresas, gobiernos, universidades, hospitales y diversas organizaciones que están interesadas en explorar sus bases de datos. Podemos decir que

- 94 -

Page 100: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

"en data mining cada caso es un caso". Sin embargo, en términos generales, el proceso se compone de cuatro etapas principales:

• Selección del conjunto de datos, tanto en lo que se refiere a las variables objetivo (aquellas que se quiere predecir, calcular o inferir), como a las variables independientes (las que sirven para hacer el cálculo o proceso)

• Pre procesamiento de los datos. Determinación, obtención y limpieza de los datos necesarios. Esta etapa consume generalmente alrededor del setenta por ciento del tiempo total de un proyecto de data mining. Determinación del modelo. Después de haber sido pre procesados y realizar la limpieza de datos, se sigue teniendo una cantidad enorme de variables o atributos. La selección de características reduce el tamaño de los datos, eligiendo las variables más influyentes del problema, sin apenas sacrificar la calidad del modelo de conocimiento obtenido del proceso de minería. Los métodos para la selección de los atributos que más influencia tienen en el problema son básicamente dos: - Aquellos basados en la elección de los mejores atributos del problema. - Aquellos que buscan variables independientes mediante test de sensibilidad, algoritmos de distancia o heurísticos. Realizado esto se comienza realizando unos análisis estadísticos de los datos, y después se lleva a cabo una visualización gráfica de los mismos para tener una primera aproximación. Según los objetivos planteados y la tarea que debe llevarse a cabo, pueden utilizarse algoritmos desarrollados en diferentes áreas de la Inteligencia Artificial.

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

mediante el uso de distintas técnicas, se deben comparar los modelos en busca de aquel que se ajuste mejor al problema. Si ninguno de los modelos alcanza los resultados esperados, debe alterarse alguno de los pasos anteriores para generar nuevos modelos. Por ejemplo, tenemos un conjunto de datos y sabemos que algunos algoritmos de generación de clasificadores funcionara mejor sobre esos datos que otros ¿Cual usar?, ej.: J48 o SVM? Podemos hacer validación cruzada y quedarnos con el mas alto (en la practica esto es suficiente), pero en ocasiones la diferencia puede ser debida al azar y no ser significativa estadísticamente Ejemplo: buscamos un algoritmo preciso pero también rápido (lo vamos a utilizar en una situación dinámica que exige un entrenamiento rápido). Tenemos un algoritmo A (J48) que obtiene un 90% de aciertos, y otro B (NN) que obtiene un 92%, pero B es 100 veces más lento que A. ¿Merece la pena usar B?

• Integración, si procede, de los resultados en un sistema transaccional o similar.

Figura 1. Proceso Data Mining

- 95 -

Page 101: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

2.2 EL ALCANCE DE DATA MINING

Dadas bases de datos de suficiente tamaño y calidad, la tecnología de Data Mining puede generar nuevas oportunidades de negocios al proveer estas capacidades:

Las herramientas de Data Mining pueden analizar bases de datos masivas en minutos. Procesamiento más rápido significa que los usuarios pueden automáticamente experimentar con más modelos para entender datos complejos. Alta velocidad hace que sea práctico para los usuarios analizar inmensas cantidades de datos. Grandes bases de datos, a su vez, producen mejores predicciones.

Las bases de datos pueden ser grandes tanto en profundidad como en ancho:

• Más columnas. Los analistas muchas veces deben limitar el número de variables a examinar cuando realizan análisis manuales debido a limitaciones de tiempo. Sin embargo, variables que son descartadas porque parecen sin importancia pueden proveer información acerca de modelos desconocidos. Un Data Mining de alto rendimiento permite a los usuarios explorar toda la base de datos, sin preseleccionar un subconjunto de variables.

• Más filas. Muestras mayores producen menos errores de estimación y desvíos, y permite a los usuarios hacer inferencias acerca de pequeños pero importantes segmentos de población.

2.3 TÉCNICAS DE DATA MINING

Como ya se ha comentado, las técnicas de la minería de datos provienen de la Inteligencia artificial y de la estadística, dichas técnicas, no son más que algoritmos, más o menos sofisticados que se aplican sobre un conjunto de datos para obtener unos resultados.

Las técnicas más representativas son:

• Redes Neuronales. Son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales, es decir, un sistema de interconexión de neuronas en una red que colabora para producir un estímulo de salida. Esta tecnología puede ser desarrollada tanto en software como en hardware y con ella se pueden construir sistemas capaces de aprender, de adaptarse a condiciones variantes, o inclusive si se dispone de una colección suficiente grande de datos, predecir el estado futuro de algunos modelos. Estas técnicas son adecuadas para enfrentar problemas que hasta ahora eran resueltos sólo por el cerebro humano y resultaban difíciles o imposibles para las máquinas lógicas secuenciales.

• Regresión lineal.- Es la más utilizada para formar relaciones entre datos. Rápida y eficaz pero insuficiente en espacios multidimensionales donde puedan relacionarse más de 2 variables.

• Árboles de decisión.- Un árbol de decisión se describe como un modelo de predicción utilizado en el ámbito de la inteligencia artificial, ya que dada una base de datos se construyen diagramas de construcciones lógicas, muy similares a los sistemas de predicción basados en reglas, que sirven para representar y categorizar una serie de condiciones que suceden de forma sucesiva, para la resolución de un problema.

En este tipo de árbol, los nodos intermedios son los atributos de entrada de los ejemplos presentados, las ramas representan valores de dichos atributos y los nodos finales son los valores de la clase. Para elegir qué atributos y en qué orden aparecen en el árbol, se utiliza una función de evaluación: ganancia de información.

• Modelos estadísticos.- Es una expresión

simbólica en forma de igualdad o ecuación

- 96 -

Page 102: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

que se emplea en todos los diseños experimentales y en la regresión para indicar los diferentes factores que modifican la variable de respuesta.

• Clustering. Métodos de agrupación de

datos que nos permiten clasificar los datos por su similitud entre ellos. Son utilizadas con frecuencia para entender los grupos naturales de clientes en empresas o bancos.

• Algoritmos genéticos. Son modelos inspirados incluir fácilmente ligaduras complicadas que limitan la solución a un problema en la evolución de las especies y que se aplican generalmente en problemas de optimización.

Según el objetivo del análisis de los datos, los algoritmos utilizados se clasifican en supervisados y no supervisados:

• Algoritmos supervisados (o predictivos): predicen un dato (o un conjunto de ellos) desconocido a priori, a partir de otros conocidos.

• Algoritmos no supervisados (o del descubrimiento del conocimiento): se descubren patrones y tendencias en los datos.

A continuación se describen un ejemplo de aplicación en el sector financiero y banca donde se ha visto involucrado el data mining.

3 APLICACIONES DE USO: CONCESIÓN DE CREDITOS BANCARIOS

Para el desarrollo de este ejemplo he utilizado WEKA (herramienta de aprendizaje automático y data mining, escrita en lenguaje Java, gratuita). Es un entorno para experimentación de análisis de datos que permite aplicar, analizar y evaluar las técnicas más relevantes de análisis de datos, principalmente las provenientes del aprendizaje automático, sobre cualquier conjunto de datos del usuario. Para ello únicamente se requiere que los datos a analizar se almacenen con un cierto formato, conocido como ARFF (Attribute-Relation

File Format).

La concesión de créditos bancarios en el momento que vivimos es un tema bastante complicado. La crisis económica que se esta viviendo en estos momentos obliga a los bancos a ser muchos más estrictos a la hora de conceder un préstamo/crédito a sus clientes. Se ha intentado, a partir de ciertos estudios y usando distintas metodologías, identificar las probabilidades que tiene un cliente de devolver un crédito de acuerdo con los datos de los que se dispone de él. Es importante destacar que los modelos cambian y dependen en ocasiones del momento en que se realizan, es decir, no es lo mismo dar un crédito hoy en día que hace unos años en los que se otorgaban créditos más fácilmente. Con ello quiero decir, que aunque los datos de los que disponemos son los mismos y unos casos conviene realizar el estudio con un subconjunto determinado y en otras con otro. En este caso, la minería de datos, junto con el uso de un modelo basado en árboles de decisión, nos ayudará a investigar las correlaciones existentes en los casos de morosidad. 3.1 Objetivos del análisis Antes de comenzar con la aplicación de las técnicas de WEKA a los datos de este dominio, es muy conveniente hacer una consideración acerca de los objetivos perseguidos en el análisis. Como se mencionó en la introducción, un paso previo a la búsqueda de relaciones y modelos subyacentes en los datos ha de ser la comprensión del dominio de aplicación y establecer una idea clara acerca de los objetivos del usuario final. De esta manera, el proceso de análisis de datos (proceso KDD), permitirá dirigir la búsqueda y hacer refinamientos, con una interpretación adecuada de los resultados generados. Los objetivos, utilidad, aplicaciones, etc., del análisis efectuado no "emergen" de los datos, sino que deben ser considerados con detenimiento como primer paso del estudio. En nuestro caso, un banco desea obtener reglas para predecir qué personas de las que piden un crédito no van a devolverlo.

- 97 -

Page 103: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Por otra parte, este análisis tiene un enfoque introductorio e ilustrativo para acercarse a las técnicas disponibles y su manipulación desde la herramienta. 3.2 Pre procesado de los datos La entidad bancaria cuenta con una gran base de datos correspondiente a los créditos concedidos a otros clientes con anterioridad. Para este caso los datos disponibles son: @attribute estado {soltero, casado, divorciado} @attribute DNI @attribute nomina real @attribute sexo {HOMBRE, MUJER} @attribute PAGO {si, no} El campo ¿Pagó? es binario (solo puede tomar

como valores sí o no) y es el atributo clave que

tiene el banco para estudiar la concesión del

crédito. No siempre existe un atributo clave. A

partir de los datos, las técnicas de DM 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 solicitase un préstamo.

Para generar gráficos con los datos del ejemplo, se seleccionará la pestaña Visualize. Por defecto, se muestran gráficos para todas las combinaciones de atributos tomadas dos a dos, de modo que se pueda estudiar la relación entre dos atributos cualesquiera. El aspecto de la pantalla es el mostrado en la figura siguiente

Figura 2. Relación entre datos dos a dos

Si seleccionamos uno de ellos podemos apreciar

la relación existente. Por ejemplo:

Figura 3. Relación Nomina-Pago

Podemos apreciar que todos aquellos clientes con nóminas superiores a 2000 euros van a devolver el préstamo. Por otra parte cuando la nómina es menor de esa cantidad la devolución no esta solo relacionado con este atributo sino que depende de otros factores. Podemos deducir por lo tanto que el modo visual nos ayuda a tener una idea de los datos pero no a conocerlos por completo. 3.3 Arboles de decisión Utilizar un conjunto de datos disponibles, en forma de tabla de atributos, para aprender a predecir la clase de datos NO VISTOS TODAVÍA. El predictor puede tomar diversas formas, según el algoritmo (árbol de decisión, reglas, función, red de neuronas, probabilidades, centroides, ..). Pero en último termino, un predictor es una estructura que toma una entrada (los distintos valores de los atributos que representan al dato) y devuelve una salida (la clase o cantidad predicha para ese dato) En este ejemplo he utilizado la técnica de generación de reglas en forma de árboles de decisión ya que es un modelo de datos sencillo y comprensible para todo el mundo. Obtenemos el siguiente esquema:

- 98 -

Page 104: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

Figura 4. Árbol de decisión

Cabe destacar que para la realización del clasificador se ha utilizado validación cruzada (dividir varias veces el mismo conjunto de datos en entrenamiento y test y calcular la media. Así, las particiones de test no solaparan). El método de validación cruzada utiliza muy bien los datos al calcular el porcentaje de aciertos esperado, porque todos ellos se utilizan para test (en alguna partición). De hecho, todos los datos figuran como entrenamiento o test en alguno de los ciclos de validación cruzada. Pero es costoso en tiempo (hay que lanzar el algoritmo de aprendizaje n veces) 3.4 Análisis de los resultados Una vez obtenido el conocimiento es necesario validarlo para observar su comportamiento con datos no vistos. Es una práctica conveniente el realizar el experimento, el cálculo, dividiendo los datos en dos subconjuntos de distinta magnitud. Un subconjunto para entrenamiento (66%) y otro subconjunto para test (33%). Esto puedo ocasionar problemas, es posible que

por azar, los datos de entrenamiento y test estén

sesgados. Por lo tanto, la proporción entre las

clases que existe en el conjunto de datos original,

se intenta mantener en los conjuntos de

entrenamiento y test.

Ejemplo: si en el conjunto original un 65% de los

datos pertenecen a la clase positiva, la

estratificación intentara que esa proporción se

mantenga en entrenamiento y test

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

• Comprensibilidad: si el conocimiento es

fácilmente comprensible para un ser

humano. Útil para evaluar si el

conocimiento es correcto o para tomar

decisiones en base al conocimiento

obtenido.

• Muy relacionado con el tamaño (numero

de reglas o nodos en el árbol de decisión)

• A veces merece la pena perder en

porcentaje de aciertos (= subadaptacion)

para ganar en comprensibilidad

(construyendo arboles de decisión mas

pequeños, discretizando atributos, etc.)

Algunos atributos pueden ser redundantes y

hacen más lento el proceso de aprendizaje. Otros

son irrelevantes (como el DNI para predecir si una

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

exceso de atributos puede llevar a

sobreaprendizaje, pues incrementa la

complejidad del modelo (sobre todo si hay pocos

datos). En este ejemplo sencillo podemos deducir

fácilmente algunas reglas que servirán para

determinar si se concede el préstamo a un

determinado cliente o no.

Si la nomina es > 2000 siempre pagan el préstamo. Un hombre soltero, con nomina < 800 euros tiene grandes probabilidades de no devolver un préstamo. 4 Extensiones del data mining

• Web mining: consiste en aplicar las

técnicas de minería de datos a

documentos y servicios del Web. Todos - 99 -

Page 105: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

los que visitan un sitio en Internet dejan

huellas digitales (direcciones de IP,

navegador, etc.) que los servidores

automáticamente almacenan en una

bitácora de accesos (Log). Las

herramientas de Web mining analizan y

procesan estos logs para producir

información significativa. Debido a que los

contenidos de Internet consisten en varios

tipos de datos, como texto, imagen, vídeo,

metadatos o hiperligas, investigaciones

recientes usan el término multimedia data

mining (minería de datos multimedia)

como una instancia del Web mining para

tratar ese tipo de datos. Los accesos

totales por dominio, horarios de accesos

más frecuentes y visitas por día, entre

otros datos, son registrados por

herramientas estadísticas que

complementan todo el proceso de análisis

del Web mining.

• Text mining: dado que el ochenta por

ciento de la información de una compañía

está almacenada en forma de

documentos, las técnicas como la

categorización de texto, el procesamiento

de lenguaje natural, la extracción y

recuperación de la información o el

aprendizaje automático, entre otras,

apoyan al text mining (minería de texto).

En ocasiones se confunde el text mining

con la recuperación de la información.

Esta última consiste en la recuperación

automática de documentos relevantes

mediante indexaciones de textos,

clasificación, categorización, etc.

Generalmente se utilizan palabras clave

para encontrar una página relevante. En

cambio, el text mining se refiere a

examinar una colección de documentos y

descubrir información no contenida en

ningún documento individual de la

colección; en otras palabras, trata de

obtener información sin haber partido de

algo.

5 CONCLUSIONES

Nuestra capacidad para almacenar datos ha

crecido en los últimos años a velocidades

exponenciales. En contrapartida, nuestra

capacidad para procesarlos y utilizarlos no ha ido

a la par. Por este motivo, el data mining se

presenta como una tecnología de apoyo para

explorar, analizar, comprender y aplicar el

conocimiento obtenido usando grandes

volúmenes de datos. Descubrir nuevos caminos

que nos ayuden en la identificación de

interesantes estructuras en los datos es una de

las tareas fundamentales en el data mining.

Las herramientas comerciales de data mining que

existen actualmente en el mercado son variadas y

excelentes. Las hay orientadas al estudio del web

o al análisis de documentos o de clientes de

supermercado, mientras que otras son de uso

más general. Su correcta elección depende de la

necesidad de la empresa y de los objetivos a

corto y largo plazo que pretenda alcanzar.

En resumen, el data mining se presenta como

una tecnología emergente, con varias ventajas:

por un lado, resulta un buen punto de encuentro

entre los investigadores y las personas de

negocios; por otro, ahorra grandes cantidades de

dinero a una empresa y abre nuevas

oportunidades de negocios. Además, no hay duda

de que trabajar con esta tecnología implica cuidar

- 100 -

Page 106: INTELIGENCIA EN REDES DE COMUNICACIONESjvillena/irc/practicas/11-12/libro1112.pdf · nuevos coches eléctricos y los futuribles coches de hidrógeno u otras fuentes de energía limpias,

un sinnúmero de detalles debido a que el

producto final involucra "toma de decisiones".

6 REFERENCIAS

[1] “Introducción a la Minería de Datos”

José Hernández Orallo, M.José Ramírez Quintana,

Cèsar Ferri Ramírez

Editorial Pearson, 2004. ISBN: 84 205 4091 9

[2] “Tendencias de la Minería de Datos en

España”

Raúl Giráldez, José C. Riquelme, Jesús S.

Aguilar-Ruiz

Red Española de Minería de Datos TIC2002-

11124-E

.

[3] Baker, R.S.J.d. Data Mining for Education.

Encontrado en McGaw, B., Peterson, P.,

Baker, E. (Eds.) International Encyclopedia of

Education (3rd edition). Oxford, UK: Elsevier

[4] Artículo: “Data mining: torturando a los datos

hasta que confiesen”.

Luis Carlos Molina Felix.

Universitat Politécnica de Catalunya.

- 101 -