4 votos

Algoritmos genéticos

Hay un montón de hablar de los métodos que evolucionan a cambiar(y mejorar), sin embargo, ¿cómo ir sobre la construcción de un modelo de este tipo.

Por ejemplo, si hay un juego de suma cero, entonces, sería de esperar que a partir de una estrategia al azar, el algoritmo funcionará a la estrategia óptima. Decir, para el ejemplo de nim, o juegos similares, es posible escribir un algoritmo que puede averiguar la mejor estrategia de acuerdo con los principios de la evolución?

He encontrado un documento que ofrece un método de nim, ¿alguien puede explicar cuál es el papel que está diciendo o me guía a las referencias que hacen que sea más fácil de entender el papel, y cómo se puede ir sobre la construcción de un algoritmo.

14voto

Darren Puntos 46

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.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X