jueves, 19 de enero de 2012

Redes Neuronales Artificiales y Algoritmos Genéticos

Para empezar a programar el Ajedrez inteligente en Python, estoy comenzando a profundizar un poco más en el campo de la Inteligencia Artificial (IA), estudiando Redes Neuronales Artificiales (RNA) y Algoritmos Genéticos (AG).

¿Porqué se llaman Redes Neuronales Artificiales?, básicamente porque se intenta representar artificialmente al conjunto de celulas nerviosas de nuestro cerebro.

¿Porqué se llaman Algoritmos Genéticos?, como sabemos, un algoritmo es un conjunto de pasos que se deben realizar para cumplir "x" objetivo, al añadirle la palabra "genéticos", estamos diciendo que se tratara de un algoritmo capaz de evolucionar.

Las RNA, se encargan de decidir el comportamiento en este caso del ordenador, mientras que los AG, ayudaran al aprendizaje del ordenador.
Es decir que se necesitan mutuamente, para realizar movimientos, con ayuda de las RNA que luego si son erróneos serán corregidos para futuras partidas por el AG.

martes, 3 de enero de 2012

Ajedrez en Python [3]


Hace unos minutos estuve hablando con un amigo, y como sugerencia, consejo, me dijo que la idea de hacer el ajedrez con "if-else", era prácticamente imposible. Creo que tengo que ir por otros métodos para encarar el proyecto, algo que me nombro y me resulto bastante interesante fue que tendría que empezar con los algoritmos genéticos o redes neuronales, por lo cual ya me puse a leer material.
Me va a llevar un poco de estudio todo esto, pero igualmente voy a subir seguido mis avances en este campo de lo que básicamente seria inteligencia artificial.

Ajedrez en Python [2]


Hoy me senté frente al monitor, con un ajedrez al lado, y me puse  a hacer movidas aleatorias, con sus posibles contraataques.
Lo que intento hacer es que el código responda con la mejor movida, sin que esta sea al azar ("que piense").
Por el momento lo que se me ocurre es utilizar un sistema de if-else, pero también lo que necesito es guardar las movidas en variables, para que se sepa cuando un casillero esta ocupado o no, si esa pieza ya se movió y esta en otra parte, o si ya no esta sobre el tablero.
Por ahora, solo hice muy pocas movidas, y estas no quedan registradas, el siguiente paso sera registrarlas para evitar desplazamientos imposibles.

Se viene una noche bastante larga...con café al lado.

domingo, 1 de enero de 2012

Ajedrez en Python [1]

Kasparov vs. Deep Blue


Hace unos días estaba jugando ajedrez y se me paso por la cabeza hacer un "mini" programa en Python que emule ser un jugador de ajedrez, sin interfaz gráfica por el momento, solo por linea de comandos.
Como desafío de 2012, me propongo comenzar con la programación de un código que permita ingresar la pieza y posición de la misma para que luego decida cual es el movimiento correcto a hacer.
Por ahora voy a comenzar a maquetear todo con lapicera y papel para después ir dandome un poco de maña con el código.
Los avances se irán subiendo al blog, no se con que frecuencia, pero por lo menos los subire una vez por semana.