miércoles, 13 de febrero de 2013

Requiem por un bit

Me siento atrapado
en una realidad electrónica.
En mi mundo solo existe
la verdad y la negación absoluta.

No hay medias tintas,
refracciones de prismas
ni escalas de grises.

En la dualidad de estados,
de la que soy prisionero,
no hay escapatoria ni
alta impedancia posible.

A mi cuarzo no se le
escapa un pulso.
Solo puedo resignarme
y maldecir a Boole
por este lógico cautiverio.

lunes, 7 de marzo de 2011

PFC: Emboscada Helada

Tras mucho tiempo sin actualizar esta triste bitácora ha llegado el momento de dotarla de nuevo y jugoso contenido. El tema de hoy es un nuevo capítulo sobre mi proyecto de fin de carrera, si, aquél que empecé a dar vueltas hace más de dos años y que me quita el sueño y la vida desde entonces.

Para abrir boca hoy le proporcionaremos conocimiento a mi pequeña amiga traga bolas. Bueno, para quien no la conozca, os presento a la señorita pacman. Es una muchachita dulce y asustadiza a la que le dan miedo los fantasmas pero que puede llegar a ponerse muy agresiva si abusa de las pastillas. Aunque la pobre tiene un problema, no sabe ir a ninguna parte sin que alguien le indique el camino. Se podría decir que es un poco despistada y que se desorienta con facilidad. Así que me he propuesto enseñarle una serie de reglas para que pueda desenvolverse por sí misma.

442-problemas-entre-los-pacman_thumb

Continuar leyendo...

Objetivo

El algoritmo elegido para controlar a Ms. Pacman está basado en ICE Pambush 3, presentando en el CIG2009 por Takashi Ashida, Takeru Miyama, Hiroshi Matsumoto, y Ruck Thawonmas, miembros de la Ritsumeikan University en Japón. Ellos fueron los ganadores de la competición en dicho congreso y son los actuales poseedores del record mundial, es por ello que he decidido homenajearlos llamando a mi algoritmo Emboscada Helada.

El objetivo del juego es alcanzar la mayor puntación posible. La forma de conseguir más puntos en el juego es comer fantasmas y el algoritmo explota esta característica. El principal objetivo de Emboscada Helada es atraer a los fantasmas a posiciones próximas a una píldora de poder para que cuando estos están lo suficientemente cerca tomársela y perseguirlos. Viendo el esquema se observa mejor esta forma de actuar.

esquema-emboscada-helada_thumb4

Conjunto de reglas

A continuación explicaré de la forma más sencilla que pueda las diferentes reglas que rigen el comportamiento de esta inteligencia artificial. Estas se aplican en orden de prioridad ascendente y se selecciona cada turno la primera de ellas que cumpla la condición.

  • Regla 1: Si hay una píldora de poder cerca y el fantasma más próximo no está ni lejos ni demasiado cerca se quedará emboscando en una posición cercana a la píldora de poder.
  • Regla 2: Si está a distancia de emboscada y se le acerca algún fantasma a ella o a la píldora se moverá hacia la píldora de poder más próxima para comérsela.
  • Regla 3: Si no hay fantasmas comestibles, hay una píldora de poder cerca y hay algún fantasma agresivo que no esté muy lejos entonces se dirigirá hacia la píldora de poder más próxima por el camino más directo.
  • Regla 4: Si no hay fantasmas comestibles y hay algún fantasma agresivo que no esté muy lejos tomará el camino hacia la píldora de poder más próxima evitando los fantasmas agresivos.
  • Regla 5: Si hay algún fantasma comestible cerca y además hay algún fantasma agresivo que no esté muy lejos se moverá hacia el fantasma comestible más próximo intentando evitar los fantasmas agresivos.

pacman-vs-ghost-gotern_thumb4

  • Regla 6: Si hay alguna píldora y además el fantasma agresivo más próximo está medianamente lejos se dirigirá hacia la píldora más cercana.
  • Regla 7: Si hay algún fantasma comestible cerca y todos los fantasmas agresivos están lejos entonces irá tras el fantasma comestible más próximo por el camino más directo.
  • Regla 8: Si existe una píldora de poder, no existen píldoras normales que estén en un cruce de caminos que contiene una píldora de poder, no existen fantasmas agresivos o estos están lejos, la píldora de poder más próxima está lejos y hay alguna píldora normal que esté cerca, entonces, se dirigirá hacia dicha píldora.
  • Regla 9: Si existe una píldora normal que no está en un cruce de caminos que contiene una píldora de poder y no existen fantasmas agresivos u estos están lejos, entonces se desplazará hacia dicha píldora.

Como os habréis dado cuenta, o si no ya estoy aquí para apuntarlo, el determinar si una píldora o un fantasma están lo suficientemente cerca o lejos es subjetivo, y el ordenador necesita de parámetros deterministas para decidir si aplica una regla u otra. Estas constantes que se utilizan para la toma de decisiones no las incluyo en el artículo porque no son necesarias para comprender el funcionamiento. Pero si alguna mente ávida de conocimiento quiere profundizar siempre puede consultar los enlaces con información extendida que se incluyen al final del post.

Puntos fuertes

La principal virtud de esta estrategia radica en que explota muy bien el encadenar combos de matar fantasmas. Para los que no hayan jugado nunca, cuando se come uno el primer fantasma se ganan 200 puntos, pero los siguientes que comas antes de que se pase el efecto de la píldora de poder van duplicando su valor, es decir, 400, 800 y 1600. Es decir si encadenas un combo completo ganas 3000 puntos del tirón.

Puntos débiles

Las constantes para la toma de decisiones no son todo lo buenas que podrían ser. Han sido estimadas manualmente analizando el comportamiento y la respuesta de Ms. Pacman. Una posible mejora radicaría en aplicar un algoritmo de optimización.

Además, un defecto importante que tiene esta estrategia es que no huye demasiado bien. El algoritmo no está pensado para ello y a veces se arriesga tanto para conseguir un combo de fantasmas que acaba muriendo. Tampoco está demasiado fino el algoritmo que decide que ruta tomar.

Video de funcionamiento

Todo lo explicado queda reflejado en el siguiente video. Si eres uno de esos locos programadores que se dedican a este tipo de viles actividades reconocerás el entorno de ejecución en un segundo. Si no lo eres, no te preocupes, el video es para todos los públicos. A la izquierda podréis observar la ventanita con la ejecución de la estrategia, y si, la señorita Pacman se mueve ella solita. El video está en HD y tó para que no os perdáis detalle.

En próximas entregas, espero que en menos de dos años xD, intentaré optimizar este algoritmo aplicando alguna técnica que incluso podría llegar a enorgullecer a Darwin.

Bueno, esto es todo por hoy, si has aguantado hasta aquí te felicito, porque menudo tostón. Si me conoces y sales algún día de fiesta conmigo tienes derecho a que te invite a una cervecita por aguantar esta “lectura ligera”. Pero si tu rollo es el masoquismo y piensas que aún no has tenido suficiente te dejo estos enlaces, eso sí, tendrás que usarlos bajo tu propia responsabilidad.

Enlaces de interés

  • Ms. Pacman, por si hay alguien con ganas de jugar: juego
  • Código de la inteligencia Emboscada Helada: código
  • Diseño de controlador para Ms. Pacman: diseño
  • Sitio web con información del proyecto: sitio
  • Repositorio del código del proyecto: repositorio

jueves, 13 de enero de 2011

Reload

reload

jueves, 18 de junio de 2009

Some motivation required.

some_motivation_required_black

Si que hace falta... muchas gracias a la tropa de los locos por recordarme que hay que moverme del sofá con espátula y de paso felicitarme el cumpleaños con unos pocos meses de retraso :D

martes, 9 de junio de 2009

Mi primer curro!

Bueno, en realidad no es mi primer primer curro, pero si el primero como informático :D. Y si, claro, las condiciones dejan mucho que desear: 5 horas al día sin ver un duro... soy un esclavo!!! Pero bueno, de momento como son practicas obligatorias de Forman (ver enlace en post anterior) para poder obtener el título del curso de Experto en Desarrollo Java, me lo tomaré con filosofía e intentaré aprender todo lo que pueda sin necesidad de tomar ninguna responsabilidad ni deslomarme en demasía.

La empresa es ARI, y es el brazo tecnológico de grupo Vértice. Grupo que empezó con un par de academias de idiomas, los que sois de Málaga os sonará Keops-Kefren, y actualmente tiene un pequeño emporio de la formación y el e-learning. En un principio ARI se constituyó para dar soporte informático a las diversas empresas del grupo, pero en la actualidad tiene una mayor autonomía y se dedica además a desarrollar y mantener aplicaciones y páginas webs de clientes externos.

malaga

La empresa reside en Málaga y tiene su sede en el Parque Tecnológico de Andalucía (PTA), la verdad es que no me pilla muy lejos de casa, aunque el trayecto es a veces pesado cuando hay caravana. Después del primer día, la verdad, es que me he llevado una buena impresión, no parece haber malos rollos entre compañeros y tiene pinta de estar todo medio organizado, o al menos así me ha parecido. Aunque tiene algunas normas un poco arcaicas, como tener que ir con traje chaqueta y corbata  (aunque en verano me he librado y sólo tengo que ir con camisa y pantalón de vestir), no poder escuchar música mientras se trabaja, o no poder colocar objetos personales en tu lugar de trabajo.

Para empezar no lo veo mal y me han comentado que al terminar las 200 horas de practicas existe la posibilidad de realizar practicas universidad-empresa, 360€ por las mismas horas de trabajo, pasando de la esclavitud a la precariedad laboral xD. Pero bueno, como en todo hay opiniones de diverso tipo, aunque muchas coinciden en que no es un mal sitio para comenzar. A ver como discurre mi aventura, que, como mínimo, ya podré rellenar el hueco de Experiencia Profesional en el curriculum ^^.

jueves, 4 de junio de 2009

Sun Certified Java Programmer

En eso hemos dedicado nuestros esfuerzos mis compañeros y yo los últimos meses. La nota de prensa dice así:

Los orgullosos miembros de la organización Burto se complacen en anunciar que tras la el exitoso paso por el curso de Experto en Desarrollo Java J2EE impartido en Forman, han alcanzado un nuevo hito en sus carreras profesionales al superar con éxito el examen de Certificación Sun como Programadores de Java (SCJP)

scjp1

Esperemos que estos méritos alcanzados nos traigan consigo un prometedor futuro profesional y podamos convertirnos en unos informáticos de provecho.

Continuar leyendo...

Actualización: Ya me ha llegado el diploma y un carnet que constatan que soy un programador certificado en java. Dejo unas capturillas:

DSC00437

DSC00438

jueves, 23 de abril de 2009

PFC: Ms. Pac-Man

El primer juego sujeto a investigación se trata de Ms. Pac-Man, videojuego lanzado en 1981 como una secuela no autorizada de Pac-Man. El juego es casi idéntico al original. El jugador tiene que ir comiendo píldoras y esquivar fantasmas. Las píldoras de mayor tamaño permiten comerse a los fantasmas y hacen que éstos huyan en la dirección contraria. A medida que se van completando niveles, se va incrementando la dificultad.

Ms Pacman logo

La mayor diferencia con respecto al Pac-Man original, es que, al contrario que este, Ms. Pac-Man es un juego no determinista. Además, es bastante difícil para la mayoría de los jugadores. Esto hace que desarrollar una Inteligencia Artificial para este juego se convierta en un autentico reto. El récord mundial para un jugador humano (en la versión original de arcade) es actualmente de 921360 puntos. ¿Podría alguien desarrollar un agente software capaz de superar ese record?

Partiendo desde este interrogante, Simon M. Lucas, doctor en informática y miembro de la IEEE Computational Intelligence Society lleva organizando desde hace varios años una competición internacional cuyo objetivo es desarrollar una inteligencia capaz de controlar a la señora Pac-man y hacer que ésta alcance la mayor puntuación posible. Para ello, el señor Lucas ha creado un kit de desarrollo lo suficientemente completo para que los competidores puedan centrarse casi en exclusiva en la concepción de la inteligencia artificial.

El kit en cuestión está programado en Java y su modo de interacción es el siguiente: 15 veces por segundo el programa recibe información sobre el juego (posición de los fantasmas, del personaje, de las píldoras, etc), dicha información es procesada y la inteligencia artificial debe enviar una orden para decirle al personaje hacia que dirección tiene que moverse. Para ello, el agente realiza capturas de pantalla del emulador que usemos para, posteriormente, analizar su contenido. Es decir, el código del juego no se toca, y se carece de información de cómo están programadas las inteligencias de los fantasmas, se debe de realizar el programa usando éste sistema controlado por capturas de pantalla. El modo de funcionamiento puede entenderse mejor observando el siguiente video:


Así, mi primera meta será dotar a la señora Pac-man de una inteligencia básica creada por mí, implementándola con de una máquina de estados sencilla. Estoy ya con ello y cuando tenga otro hueco libre iré mostrando los avances.