Esta última unidad tratará sobre una herramienta de programación que ha ido tomando terreno en los últimos años
debido a las posibilidades que ofrece, los algoritmos genéticos. Lo interesante será entender cómo, mediante estas
herramientas, se puede dotar a los programas de Processing de comportamientos basados en las respuestas biológicas,
en este caso, más ligados a las teorías de evolución y genética.
En términos generales, los algoritmos genéticos son algoritmos de búsqueda inspirados en procesos de selección
natural con base en la teoría de la evolución de Darwin.
Se puede decir que estos algoritmos establecen una analogía entre el conjunto de soluciones de un problema (todas
las posibles formas de resolverlo) y el conjunto de individuos de una población (de qué forma o cuál de esos individuos
pueden aportar a la resolución del problema).
Estos algoritmos se aplican en problemas de optimización y se comportan de un modo muy eficaz en resoluciones de
dificultad alta. Sin embargo, el uso de estos algoritmos en procesamiento de imagen y comportamientos de sistemas
generativos son de suma utilidad y puede generar un valor agregado al desarrollo final de una posible obra digital.
Según el texto de Pazos et al. (2007), los fundamentos de los algoritmos genéticos se encuentran detrás de la idea de
que la naturaleza utiliza potentes medios para impulsar la evolución satisfactoria de los distintos tipos de organismos.
Los organismos que son poco aptos para un determinado ambiente mueren, en tanto que los que están bien adaptados
para vivir, se reproducen. Ocasionalmente, se producen mutaciones al azar, y aunque la mayor parte de estas,
implican el pronto deceso del individuo mutado, algunos dan como resultado nuevas y satisfactorias especies. Así, los
algoritmos genéticos se encuentran dentro de las llamadas técnicas de Computación Evolutiva.
Los algoritmos genéticos trabajan sobre poblaciones de individuos que representan soluciones a un problema. Para
ello, utilizan las operaciones de selección, cruce y mutación, propias de la genética. De esta manera, mediante estos
individuos, se codifican diferentes soluciones al problema, inicialmente aleatorias. Luego, los individuos se agrupan
en una población y se van combinando entre sí, de forma que a medida que pasan las generaciones, se van ajustando
más a la solución final. Los individuos de una generación genética compiten entre sí para ofrecer la mejor solución al
problema que se está tratando de resolver.
Para entender los procedimientos y nociones en los que se basan los algoritmos genéticos, se comenzará por estudiar
y entender las nociones básicas que propone la teoría de la evolución.