La más básica de la evolución del algoritmo es, probablemente, un binario codificado algoritmo genético.
Su bastante simple de entender.
Digamos que usted está buscando para averiguar cuál es el valor máximo de un 4 bits del número binario. Sí, una pregunta tonta sus obvio, pero hace que sea más fácil de seguir que el uso de un juego de nim o un montón de otras cosas
En primer lugar, crear una población de soluciones al azar, por ejemplo
0001
0010
0000
1110
0111
1001
a continuación, habría que ejecutar a través de una simulación que se encuentra en el fitness de cada individuo. Básicamente la evaluación de cada solución para ver lo bueno que es. En este caso la simple suma de los valores binarios.
0001 = 1
0010 = 2
0000 = 0
1110 = 14
0111 = 7
1001 = 9
Así que aquí el más fuerte de los individuos son los 3 últimos
A continuación deberá seleccionar el más fuerte a través de algún proceso de selección. Hay muchos diferentes para los distintos estilos de problemas de la más básica es el elitismo que es, básicamente, elegir el mejor. Estos serán utilizados para la cría para obtener la siguiente población
así que vamos a elegir
1110 1001 y
para empezar
con estos ahora vamos a hacer el cruce. De nuevo, hay muchas técnicas diferentes para problemas diferentes codificaciones pero para ello simplemente vamos a dividirlos en 2 partes y les pegan juntos de nuevo.
así que podemos elegir un lugar elegido al azar en el 2 individuos por simplicidad permite recoger a split en el medio
los padres
1110 -> 11 | 10
1001 -> 10 | 01
a continuación, el intercambio de conseguir 2 nuevos individuos
la descendencia
1101
1010
ahora vamos a hacer esto un par de veces más para obtener una nueva población. De nuevo por la simplicidad permite que la población del mismo tamaño.
los padres
1001 -> 10 | 01
0111 -> 01 | 11
la descendencia
1011
0101
los padres
1110 -> 11 | 10
0111 -> 01 | 11
la descendencia
1111
0110
así que nuestra nueva población es
1101
1010
1011
0101
1111
0110
la siguiente parte es la mutación aleatoria. Básicamente cambia algo al azar. Tiene una baja frecuencia de ocurrencia, pero que es esencial para hacer una efectiva estrategia evolutiva.
así que vamos a escoger el 4 de individuos de bits más alta.
así que el 4 de individuo es 0101. el más alto bit es 0, así que acaba de cambiar a un 1.
así que el 4 de individuo es ahora 1101 y la población se convierte en
1101
1010
1011
1101
1111
0110
la etapa final en el bucle de los criterios de parada. De nuevo un montón de maneras de hacer esto, dependiendo de lo que estás haciendo. Una manera simple es tener un criterio de detención cuando el fitness de un individuo es lo suficientemente fuerte. Así que todo lo que hacemos es volver a evaluar la aptitud de cada individuo
1101 = 13
1010 = 10
1011 = 11
1101 = 13
1111 = 15
0110 = 6
así que nuestro fuerte individual por casualidad (honestamente fue por casualidad) ha alcanzado el valor máximo de un 4 bits del número binario. Nuestros criterios de parada podría haber sido para llegar a algún número o superior. Importante a tener en cuenta es el promedio de la aptitud de la población en la 2ª generación es mucho mayor que el 1er.
Si no conseguimos los criterios de parada íbamos a continuar el bucle de seleccionar -> crossover-> mutar -> evaluación -> verificación de criterios de parada.
No tengo idea de si esto responde tu pregunta, pero esto es lo básico de un algoritmo evolutivo como usted puede conseguir allí son un montón de diferentes problema de la codificación, métodos de selección, cruce de los métodos, la mutación de los métodos y criterios de parada. Más allá de que es multiobjective optimización donde múltiples objetivos están tratando de resolver. Que es bastante donde el campo es ahora. Estos algoritmos son bastante malos si se puede modelar la situación lo suficientemente bien como para encontrar una solución. Ellos son muy buenos en la búsqueda de una solución cuando se sabe lo que una buena solución es, pero no cómo llegar allí. Ellos son increíblemente costosas computacionalmente.
Si quieres saber más iniciarse en los fundamentos de los algoritmos genéticos son los más simples y más fáciles de entender estrategias evolutivas. como dijo su forma de aprendizaje de máquina y entra en ciencias de la computación aunque un número de matemáticos que se han ocupado del tema.