jueves, 23 de febrero de 2012

ME MUDE DE BLOG

Por cuestiones de comodidad, para enlazar mi cuenta con Google+, me mude a un nuevo dominio:

 
Las nuevas entradas seran publicadas en la nueva dirección.
Gracias.

miércoles, 22 de febrero de 2012

¿Te cambiarias a Linux?

Últimamente se esta hablando un poco más del software libre. Entre todo ello se encuentra este excelente Sistema Operativo, libre y gratuito, Linux. Bueno no es ninguna novedad, existe ya hace dos décadas, pero a pesar de ello todavía hay muy poca gente que lo utiliza, teniendo en cuenta a Microsoft Windows.
Por eso decidi hacer esta encuesta, para saber si ya usan Linux como su SO principal, si lo usan pero como SO secundario, si piensan usarlo alguna vez, o si directamente no se les paso por la cabeza, también pueden comentar sobre los cambios que quiseran que haya en este sistema operativo.
La votación esta a la derecha del blog.

martes, 21 de febrero de 2012

Linux From Scratch

Paralelamente al proyecto de inteligencia artificial, hace unos días empece a trabajar con Linux From Scratch (Linux desde 0).
Para lo que no lo conocen, LFS, es un manual que tiene los pasos para crear un sistema Linux desde cero, compilando e instalando paquetes, los que nosotros queramos, para finalmente crear nuestro SO, también dispone de un Live CD, que pueden encontrar en Linux From Scratch, al igual que su manual.

Ya desde hace un tiempo quería empezar con un sistema operativo o modificar alguna distro de Linux, pero...la documentación que encontraba se basaba en hacer solo algunos cambios. En cambio con LFS, empezamos desde 0, instalando compiladores C, etc, más adelante también podemos incluir Python :)!
Con el tiempo, seguro subo algunos avances ;), estoy haciendo todo en una Pentium II con 168mb de RAM y les digo...que hay que tener paciencia a la hora de compilar grandes paquetes como el GCC (el compilador de C) y Glibc (las librerías de C).

lunes, 13 de febrero de 2012

¿Qué es un agente?

Si leyeron el post anterior, seguro que prestaron atención a la palabra agente, no, no se trata de los personajes de Matrix que persiguen a Neo, al final aclaraba que era el software de la inteligencia artificial. ¿El software de la inteligencia artificial?, claro a lo mejor me explique un poco mal, por que lo que quería yo era nada más darles un pie para después en un post futuro (este), explicarles mejor de que se trata.

Se llama agente a la aplicación que se programa para que resuelva  determinado problema utilizando la inteligencia artificial.
Hay varios tipos de entornos o de problemas:

domingo, 12 de febrero de 2012

¿Donde aplicar la Inteligencia Artificial?

En los post anteriores hable sobre la inteligencia artificial e hice una breve descripción de las RNA y de los AG. Pero lo que todavía no dije, fue en dónde o en que situación se puede aplicar un agente1.
Un agente puede ser utilizado en toda situación en la que se necesite resolver un problema, ¿un problema?, si, por ejemplo, supongamos que tenemos que ir de "x" lugar a "y", tenemos una sola posibilidad de hacer el viaje, pero la trampa esta en que el recorrido tiene que ser el más corto. Podemos hacer dos cosas en esta situación, la primera es tirarnos al azar por cualquier camino y llegar sin saber durante el recorrido si ese fue el trayecto más corto, o podemos programar un agente que por medio de un mapa pueda seleccionar el camino más adecuado, en nuestro caso, el más corto.
Si alguna vez leyeron sobre la inteligencia artificial, el ejemplo que les di antes, es uno de los más usuales, por lo general, muchos se quedan con ese ejemplo, y solamente se imaginan usar la IA para realizar un recorrido, pero se puede aplicar en muchas otras cosas.
Entonces...¿dónde podemos aplicar el uso de un agente?, el limite esta en nuestra imaginación, en nuestro desempeño y en las leyes de la física :p.

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.