2010-12-13 23 views
6

Actualmente estoy trabajando en un StringEvolver y no estoy muy seguro acerca de un término específico que puede ser utilizado en el gas.sólo el x% superior para la selección de un algoritmo genético

En los algoritmos genéticos, elitismo se refiere a ese subconjunto de la población que son ascendidos a la siguiente generación directa; ¿correcto?

¿Pero hay un término específico para usar solo, por ejemplo, el 75% de la población actual para la selección, el cruce y el proceso de mutación en lugar de utilizar a toda la población? Básicamente, ¿cómo se llama esa tasa x%?

Lo que quiero decir es que en lugar de utilizar toda la población por ejemplo, un proceso de selección de la ruleta, yo sólo uso la parte superior de x% (es decir, sólo se reproducen entre los mejores x% de la población)


La razón por la que pregunto es porque he notado mejoras significativas en el rendimiento (convergencia más rápida) al usar, por ejemplo, el 10-25% de la población para los procesos de selección, cruce y mutación para avanzar la generación en lugar de utilizar el población.

Respuesta

3

una estrategia de selección ingenua en la que sólo tiene que descartar los candidatos más débiles a veces se llama Selección truncamiento. Para muchos problemas conduce a una convergencia prematura, aunque he encontrado que funciona bastante bien para el problema del Viajero Vendedor.

Parece que tienes una estrategia de dos fases, primero usando la selección de truncamiento para eliminar los candidatos débiles y luego aplicando una estrategia más sofisticada (¿rueda de la ruleta?) Para finalizar la selección.

En lugar de eliminar completamente la posibilidad de que los candidatos débiles sobrevivan, sería mejor elegir una estrategia de selección que le permita ajustar esa probabilidad. Por ejemplo, con la selección de torneos puede ajustar el umbral para determinar qué tan probable es que un candidato débil sobreviva en lugar de uno más fuerte.

+0

+1 Sí, eso es básicamente lo que estaba buscando. ¡Aclamaciones! –

1

Parece que sólo estamos hablando de una metodología de selección específica. Usted podría hacer más o menos lo mismo escalando su función de acondicionamiento físico para aumentar a tasas más altas en lugar de linealmente.

Dicho esto, me gustaría cuidado y no tirar las partes inferiores de la población cada vez. Para los más pequeños de GA Esto le permitirá a converger más rápidamente, pero para los problemas del mundo real esto a menudo le hebra en mínimos locales, degradando la calidad de sus soluciones.

Dicho esto, no es un término llamado aniquilación. Esto es cuando arrojas el X% inferior de tu población antes del cruce y la mutación. Esto generalmente no se hace en cada generación. Por lo general, se iniciará con una población intratablemente grande con el fin de cubrir un mayor espacio de búsqueda y luego diezmar después de generaciones X, como GA de frecuencia hacen sus mayores ganancias en los primeros 100 gens o menos. Luego procedes con la población más pequeña y fácil de manejar.

Espero que esto ayude.

1

No hay un término específico para restringir la selección a los elementos x% superiores, es solo uno de los factores que debe establecer al implementar una estrategia de selección.

Puede obtener una convergencia más rápida en algunos casos restringiendo esa cifra x%, pero sugiero probar con cadenas de diferente longitud y ver cómo esto afecta la convergencia. He hecho esto antes (vea los proyectos this y this, ambos en cadenas en evolución), y si hace que el conjunto de genes sea demasiado pequeño al seleccionar individuos, la probabilidad de quedarse atascado puede dispararse en relación con la longitud de la cadena, siendo la razón que estás comprometiendo seriamente la diversidad.

Cuestiones relacionadas