Ok, vamos a ver ahora un breve ejemplo acerca de como funcionan los algoritmos
genéticos, es una noción importante cuando hablamos de adaptación y MBA
Acá tenemos el AG que viene con la biblioteca de modelos de NetLogo
y en este caso particular, vamos a hablar de la interfaz en primer lugar
La idea es que estamos tratando de desarrollar una solución muy simple,
estamos tratando de desarrollar una solución donde todos los números, los
genes se encuentran prendidos en este sistema
y lo que sucede cuando lo corremos es que vemos algunos que están en color negro y
otros en blanco y a lo largo del tiempo todos se vuelven blancos y esto nos está
diciendo cuan buena es la solución poblacional; en un AG esencialmente lo que
hacemos es crear un conjunto aleatorio de soluciones y evaluamos cuan buenas son
para resolver el problema, y entonces seleccionamos algunas soluciones para que
se transfieran a la generación siguiente, puede que haya alguna pequeña mutación
puede que haya algún "crossing over" en algunas de las soluciones
y lo hacemos viendo cual de las soluciones se adaptan mejor
tenemos entonces un nuevo conjunto de población y repetimos el proceso una y
otra vez
estos patrones que se ven aquí, nos muestran como se adaptan los individuos a
lo largo del tiempo y cuan diferentes son las soluciones entre sí a lo largo del
tiempo
inicialmente las diferentes bajan, la diversidad decrece, debido a que las
soluciones se vuelven más similares entre sí, que es lo que queremos
aquí podemos controlar cuan grande es nuestra población de soluciones
aquí controlamos cuan a menudo tomamos dos soluciones, las partimos al medio y las
recombinamos para crear dos soluciones diferentes, esto se llama la función cross
muchas veces cruzamos un gran porcentaje de la población, como un 70% en AG
podemos aplicar mutaciones y lo que hace es operar y cambiar algunos bits en una y
otra solución, para poder introducir alguna novedad en el sistema
si miramos el código, la rutina "setup" crea las soluciones para cada tortuga
y la rutina "go" es muy simple, dice que
si el ajuste, en este caso es igual a al ancho del mundo, en otras palabras todos
los estados están ahora prendidos y frenados, de otra forma crean una nueva
generación y actualizan la pantalla, la actualización de la pantalla sólo hace
coincidir los 0 y 1 con los colores blanco y negro
pero qué hace la creación de la nueva generación? esta es la parte dura del
código, lo que hace es
encuentre los individuos para el cross over
lo hace para cada uno de estos individuos
selecciona al azar los padres y al hacerlo al seleccionar 3 de ellos, escoge al azar
de toda la población y escoge aquel con el máximo ajuste, esto se llama la selección
del torneo, tenemos un código para hacer el cross over, los cruzamos y así creamos
dos hijos con patrones similares pero cruzados con los padres
copiamos estos clones, con la copia del resto de la población y hacemos que la
vieja generación muera y luego hacemos los cálculos
y luego hacemos las mutaciones
esta es una descripción simple de lo que sucede en un AG y ustedes pueden ver como
podemos resolver problemas muy simples los viejos problemas, pero podría ser que
querramos maximizar mi riqueza, dados todas estas acciones en las que quiero
invertir
o podría ser que quiera escoger cual información quiero dispersar en Twitter
para maximizar el alcance que quiero
todos estos son problemas que uno puede construir potencialmente en un AG
o podría ser que como en el ejemplo del que hablamos la semana pasada, que
querramos hacer coincidir los valores de entrada, coincidir los parámetros del
modelo base para minimizar las diferencias entre las salidas y los verdaderos valores
del mundo real
todos son ejemplos donde se usaron AG en el pasado