martes, 30 de noviembre de 2010

Algoritmo genético que diseña un coche

Algoritmo genético que diseña un coche: "

Algoritmo genético que diseña un coche

Bueno, no se trata de un coche como los que podemos ver en la calle, ni mucho menos. Es una simple representación en dos dimensiones a través de la cual este algoritmo genético en particular lucha por cumplir las condiciones necesarias que le permitan optimizar su resultado final. Y aunque sus primeras expresiones siempre con caóticas o ineficientes, es muy interesante ver cómo el algoritmo trata de compensar sus errores previos con cada nuevo diseño.

Su definición clasifica a un algoritmo genético como un proceso de búsqueda heurística que trata de imitar la evolución natural. Al hablar de "heurística" estamos claramente tratando con la solución o la respuesta más óptima o más eficiente ante un problema o una condición. Hablar de "mejor" no es del todo adecuado en estos casos ya que implica que la solución es comparada a otra ya conocida, lo que en cierta forma anula el proceso del "camino evolutivo" que trata de utilizar el algoritmo. Por esta y otras razones, el algoritmo genético ha recibido muchas críticas y se lo considera inferior a otros "algoritmos evolucionarios", pero en lo que se refiere a optimización, el algoritmo genético es el más popular.

Visto en Neoteo: Algoritmo genético que diseña un coche
El coche en cuestión: Dos ruedas, dos contrapesos y un terreno espantoso
El 'coche' en cuestión: Dos ruedas, dos contrapesos y un terreno espantoso
Visto en Neoteo: Algoritmo genético que diseña un coche

Recientemente hemos visto en un portal una implementación muy interesante de un algoritmo genético, con un objetivo: Diseñar el coche más óptimo frente a determinado tipo de terreno. El coche apenas tiene dos ruedas y dos "masas" que actúan como contrapesos. El algoritmo puede controlar el radio y la posición de todos los elementos, lo que le entrega un importante nivel de flexibilidad. Las masas deben estar conectadas por "resortes" cuya constante de amortiguación también puede ser escogida por el algoritmo. Y lo que se puede llamar como "condición arbitraria" es que las masas nunca deben tocar el suelo. El factor de optimización de una solución se determina por la distancia que logra recorrer antes de que una de las masas toque el suelo, y antes de que el tiempo (un valor fijo para retirar las soluciones "atascadas" en el terreno) se acabe.



Al principio es muy gracioso observar algunas de las "soluciones" propuestas por el algoritmo, como por ejemplo ciertos uniciclos que pierden el equilibrio apenas tocan el suelo. Pero si tienen paciencia y lo dejan ejecutarse por algunos minutos notarán cómo el algoritmo se vuelve recurrente con ciertas soluciones que entregan resultados eficientes. Cualquier interesado en ajustar este proceso o en alterarlo puede descargar el código fuente desde el mismo sitio que muestra al algoritmo en funcionamiento. Al principio es frustrante, porque después de unos pocos instantes nosotros podemos pensar en un modelo más eficiente para recorrer el terreno, pero eventualmente el algoritmo puede llegar a una solución optimizada dentro de sus capacidades y limitaciones.


Enlaces relacionados:
Visto en Neoteo: Algoritmo genético que diseña un coche
Algoritmo genético (y código): Haz clic aquí

Technorati Tags:
Tags Blogalaxia: "