Hace unos meses descubrí por casualidad una herramienta impresionante especialmente diseñada para que los amantes del grafismo informático perdamos horas y horas de tiempo.
Kandid
Se trata de un 'framework' de arte genético escrito en Java y con licencia GPL y multiplataforma (Win32 y Linux)
No soy muy entendido en las ramas de la matemática implicadas en este tipo de funciones, pero no hace falta ser catedrático para trabajar con ellas.
Un ejemplo más restringido del tipo de cosas que se pueden hacer con esta aplicación lo tenemos en los plugins
Flame y Qbist de Gimp.
Acotación:
Kandid es un sistema de desarrollo gráfico. Los gráficos, en Kandid, no se dibujan a mano. En su lugar las nuevas formas se generan usando algoritmos genéticos.
Para implementar esto Kandid simula la evolución usando la reproducción sexual y las poblaciones.
Sin embargo el programa no incluye una función de aptitud. Será el usuario quién decida qué imágenes resultan interesantes.
Para simular la evolución Kandid utiliza técnicas de 'crossing over', mutación, y [dinámica de] poblaciones y usa además una base de datos de genes.
Los cálculo de las imagenes está basado expresiones parecidas a Lisp, [e implementa] sistemas de funciones iterativas (IFS), diagramas de autómatas celulares lienales (LCA) y de Voronoi, sistemas de Lindenmayer (L-sistemas), y texturas a capas para POV-ray
La instalación es sencilla y hay dos formas de hacerlo: Puedes bajarte el tarball, abrirlo en tu $HOME (yo lo he metido en un directorio ~/lib donde meto todas estas cosillas) y arrancar el jar bien desde la consola o bien desde un script (y mucho mmás fácil haciendo un icono de escritorio para Gnome o KDE). Al orden sería:
java -Xfuture -Xmx256m -jar /ruta_q_sea/kandid.jar
Donde -XmxNNNm define la cantidad de memoria que quieras asignarle al programa. Este programa no sólo necesita bastante memoria, sino que como es fácil imaginar chupa ciclos de CPU como loco, de todas formas yo lo estoy corriendo en un humilde Duron a 1.300 MHz (eso sí con 764 MB de RAM) y va bastante desahogado como para tener varios Konqueror y Firefox abiertos.
El modo de trabajar es curioso, aunque no le extrañará a quien haya usado Qbist o Flame: Tienes una cuadrícula con uan serie de imágenes que en primer lugar se generan al azar. A partir de ahí puedes seguir un sistema similar al de Gimp y seleccionar la imagen que más te guste (+).
Puedes luego seleccionar qué imágenes no quieres cambiar ([-) y seleccionar el modo de propagación: Reproducción sexual (que en el modo 'mejor imagen' es similar al Qbist o Flame de gimp), poblar las imagenes desechadas con clones de la elegida o generar nuevas imágenes al azar.
Otra opción (flechitas arriba y abajo) consiste en seleccionar dos progenitores que serán los que definan las siguientes generaciones.
Podemos guardar una población para usarla más tarde o incluso intercambiar 'genomas' en la base de datos genética de la página de Kandid
Las imagenes que nos gusten se pueden exportar directamente desde la interfaz (cuadradito con una flechita dentro) a PNG, JPG, SVG, PS o textura de POV-ray y a tamaños predefinidos de 256x256, 512x521 y 1024x1024.
Exportando a formato PNG el fondo queda transparente en muchas de las opciones, ideal para trabajar luego en Gimp.