Friday, January 30, 2009

Fase 1 - Proyecto

1. Descripción detallada del medio ambiente.

El medio ambiente de nuestro proyecto está definido por el espacio directo donde los cubos o figuras(representando los átomos). Los cubos, tienen movimientos regidos por reglas, y los movimientos son adyacentes a los demás cubos con base en su posición actual. Es importante recalcar que los cubos pueden moverse de manera diferente para generar la figura final. En eso se basa el dilema de nuestro proyecto.

2. Plataforma en la que se programara el medio ambiente y lenguaje de programación a ser utilizado.

Con el desarrollo del proyecto aún no se ha determinado el lenguaje y la plataforma en la que se hará. Sin embargo, algunos de nuestras ideas dirigen nuestra atención al lenguaje Java o Phyton.

3. ¿Qué actividades o acciones puede aprender tu agente en ese medio?

De las cosas que el agente aprendería sería el desarrollo de figuras, es decir que aprenda a generar figuras. Posiblemente también será la de aprender algún tipo de movimientos a través del movimiento mismo de las moléculas sobre si mismas.



Chutas: Proyecto Fase 1

1. Descripción detallada del medio ambiente.

El medio ambiente estará creado gracias al simulador de 3D Simspartk, el cual se encuentra conformado por diferentes elementos, para empezar todos los robots estarán dentro de un terreno de juego con dimensiones previamente definidas y delimitado por líneas de las que los robots deben estar totalmente concientes. Habrá una portería de en cada extremo a lo largo y una pelota que la tendrán que meter existirán otros robots, enemigos y compañeros, con los que se tiene que interactuar, una pelota que en este caso el objetivo principal sería llevarla a la portería contraria y anotar gol.

2. Plataforma en que se desarrollara y lenguaje de programación a utilizar.

Debido a que el simulador Simspark corre unicamente en Linux, utilizaremos alguna distribución de este sistema operativo para desarrollar el proyecto, y en cuanto al lenguaje de programación, utilizaremos c++ debido a que este lenguaje es mas rapido que otros como java, y además de esto, nos serviria para el caso de que algun dia queramos migrar el codigo a los Naos reales, ya que estos se programan unicamente en C++ y en URBI.


3. Aprendizaje Automatico. ¿Qué actividades o acciones puede aprender tu agente en ese medio? Describe al menos 2 lo más detallado posible incluyendo ejemplos.

El agente del Nao tiene como objetivo además de realizar las funciones básicas de un partido de fútbol, el mantenerse estable y ordenado con respecto a sus limitaciones físicas y a las de su equipo. El aprendizaje será importante para que sea impredecible con respecto a sus contrincantes y para que tome las mejores decisiones. Por esta razón hemos identificado diferentes áreas en donde el Nao deba aprender para mejorar su rendimiento según sus objetivos:

  • 1) El aprender que jugadas son más efectivas.
Analizando las jugadas propias con respecto a los resultados exitosos, es importante que el Nao reconozca y aprenda que movimientos le brindó mayor desempeño en el partido. Este tipo de aprendizaje es favorable por dos razones, primero, es fácil de implementar y de analizar, y segundo, toma en cuenta indirectamente las jugadas contrarias siempre y cuando el jugador contrario no implemente el mismo tipo de aprendizaje.

  • 2) El aprender jugadas del otro equipo.
Algo más complejo sería que analice y aprenda las jugadas del equipo contrario para tomar decisiones sobre las jugadas propias. Este tipo de aprendizaje podría llegar a ser muy complejo analizando el comportamiento completo del equipo contrario, o también midiendo cosas básicas como la velocidad del contrincante que lleven a decidir sobre la propia velocidad de Nao.

Web Crawler + Applicacion Web

Un web crawler es un programa que navega de manera automática y sistemática por las páginas web, con el fin mostrar una relación entre palabras y URLs.
  1. Descripción detallada del medio ambiente.

    El Internet es un sistema global de redes interconectadas que intercambian datos.

    El ambiente en particular son lás páginas web escritas en (x)HTML y que utilizan el protocolo HTTP para transferir datos de una computadora llamada Servidor a otra llamada cliente.

  2. Plataforma en la que se programara el medio ambiente y lenguaje de programación a ser utilizado.

    Utilizaremos Python para hacer los prototipos del Web Crawler debido a que es un lenguaje que permite representar de manera sencilla los algoritmos además de contar con un gran numero de librerías y herramientas que facilitan la programación, como lo son avanzados profilers y debuggers.

    Para la aplicación tenemos pensado utilizar LAMP (Linux, Apache, MySQL y P*) para hacer la aplicación que presentara los resultados y hará las búsquedas en las bases de datos.

  3. Actividades o Acciones a Aprender:

    • Como ordenar las páginas de acuerdo a su importancia: Ajustar una función de relevancia para discriminar entre páginas "basura" y páginas útiles.

    • Como hacer recomendaciones a los usuarios: El crawler deberá aprender términos relecionados con lo buscado para poder hacer sugerencias sobre sitios similares.

PARTE 1 PROYECTO APRENDIZAJE AUTOMATICO

1. Medio Ambiente

Hemos decidido programar un videojuego, por lo tanto el ambiente encerrará distintas variables y retroalimentación para los agentes involucrados. Hemos pensado en algunas alternativas. Hasta ahora, nos inclinamos por un juego de aviones en el que existirán enemigos, obstáculos e interacción entre los varios agentes.

2. Plataforma y Lenguaje

La plataforma será parte de la realización del proyecto. Se programará en C++ con la librería de OpenGL, para poder aplicar también lo aprendido en Gráficas Computacionales. Dentro de esta plataforma, se debe decidir qué variables del entorno interactuarán con el ambiente.

3. Aprendizaje

Los agentes serán las naves enemigas, las cuáles deberán aprender tanto de su medio ambiente como de las entradas del usuario a través de la manipulación de su nave como del medio ambiente.

Dentro de este contexto, existen algunas cosas básicas que los agentes deben aprender.

Evitar perder: Evadir obstáculos, reacción ante situaciones adversas, refuerzos negativos al recibir daño, etc.

Procurar ganar: Movimientos del usuario para predecir estrategias de ataque, colaboración con otros agentes, métodos de ataque (distintas armas), etc.

También se puede pensar en que los agentes pueden aprender técnicas más especializadas a través de su experiencia. Por ejemplo, podrían observar que al disparar a una roca, los fragmentos de esta pueden alcanzar a su oponente, causando daño. Esto constituiría un aprendizaje avanzado, ya que pone de manifiesto el conocimiento del agente en cuanto al medio, los demás actuadores y la interacción entre ellos.

Selección de medio ambiente - Oriam y su huerto de tomates

1. Descripción detallada del medio ambiente.

El medio ambiente será un mundo virtual en 3D diseñado por nosotros, dentro de un videojuego, el medio ambiente contará con plataformas, desniveles y una topología que será distinta en la mayor parte de sus puntos.

El juego se pretende que tenga equipos, uno será controlado por los usuarios y uno por los agentes que programemos, cada escenario contará con dos bases en los extremos del mismo en donde los personajes podrán anotar puntos.

Finalmente, el medio ambiente contara con lugares que dañaran la vida del jugador, incluso matándolo, por lo que los personajes deberán aprender de su medio. De igual manera habrá lugares inaccesibles para los personajes.


2. Plataforma en la que se programara el medio ambiente y lenguaje de programación a ser utilizado.

La plataforma que utilizaremos será la que desarrollemos y utilizaremos el lenguaje de programación C++ con las librerías de OpenGL. Estamos considerando el uso de Python, pero por el momento esa opción queda como tentativa.

3. ¿Qué actividades o acciones puede aprender tu agente en ese medio?

Por tratarse de un videojuego, el agente tiene una gran variedad de cosas que puede aprender, por ejemplo puede aprender los patrones de ataque o de defensa del jugador, los lugares en los que más frecuentemente se encuentra o como atacarlo de formas diferentes para que sea siempre impredecible.

Como aprendizaje básico, debe ser capaz de aprender las estrategias del contrario, si son de ataque, ya sea directamente o en equipo, debe ser capaz de esquivar o contrarrestar, si son de defensa debe ser capaz de buscar puntos vulnerables.

Monday, January 26, 2009

Instrucciones del blog

Este es el blog de Aprendizaje Automático TC3020. El objetivo es que vayan documentando su proyecto final y que vayan compartiendo con sus compañeros su trabajo.

Por favor, cuando suban una actividad, pongan en el titulo el titulo de la actividad y en la etiqueta pongan su numero de equipo y nombre. En este caso, yo estoy poniendo el titulo de "Instrucciones del blog" y la etiqueta "0-Jorge".

Si desean usar más etiquetas para clasificar mejor su contribución, por favor háganlo.

Cualquier pregunta, por favor mándenme un correo electrónico, preguntenme en clase, o simplemente den de alta un post y yo lo contesto.

Gracias.