Imagina que quieres resolver un problema específico. Supongamos que quisieras hacer un mueble que te sirva para sentarte cómodamente. Tienes dos opciones posibles (principalmente): pensar un poco y después de darle vueltas a una idea poner manos a la obra, diseñando una silla o sillón que se ajuste a las necesidades del problema a resolver; la otra manera podría ser empezar a construír muebles aleatoriamente descartando aquellos que no sean cómodos para sentarse pero manteniendo las características que ayuden a resolver el problema.

Probablemente la segunda opción les parezca conocida --y quizás a Darwin también-- ya que se ajusta mucho a un modelo usado por la naturaleza: la evolución.

Inspirado en esta manera de resolver problemas surgieron por allá en 1.970 los algoritmos genéticos, una de las líneas más prometedoras de la inteligencia artificial. Como su nombre lo indica, parten de la misma base de la evolución: mutación y selección.

Ahora bien, probablemente piensen que por su naturaleza los algoritmos genéticos son poco usados actualmente o son demasiado especializados. Esto no es necesariamente cierto. Por ejemplo, en 1.999 se concedió la primer patente a un invento no realizado directamente por un humano. La patente era una antena de forma extraña, pero que funciona perfectamente en las condiciones para las que estaba destinada.

Hoy en día podemos encontrar algoritmos evolutivos en muchos lugares, se usan en el diseño de distribución de aguas, en optimización de sistemas de comercio, en el aprendizaje de reglas de lógica difusa y muchos lugares más. De hecho los podemos encontrar hasta en nuestro navegador.

BoxCar 2D es un ejemplo de algoritmo genético que corre dentro de nuestro browser y que usando lógica evolutiva trata de  crear un coche que pueda superar los obstáculos que encuentre en su camino. Es muy entretenido --casi hipnótico-- ver cómo van cambiando los diseños, verlos tropezar e ir mejorando poco a poco. Uno puede ver cómo a veces los vehículos no avanzan (varias veces mi coche evolucionó a no tener ruedas) y su diseño es descartado casi de inmediato, mientras que otras características benéficas se van manteniendo.

Obviamente el diseño basado en este tipo de algoritmos tiene sus limitaciones. El nivel de mejora está relacionado con el número de pruebas que se haga y es necesario hacer muchas para llegar a un diseño óptimo. Aún así, sus posibilidades son muchas. Podríamos imaginar, por ejemplo, computadoras que usando este tipo de algoritmos pudieran mejorar su propio diseño o robots capaces de evolucionar para ser mejores en sus tareas específicas.

Quizás los algoritmos evolutivos parezcan salidos de la ciencia ficción, pero pueden estar seguros de que --de alguna manera-- son más viejos de lo que pensamos.