¿La programación genética actualmente es capaz de evolucionar un tipo de algoritmo de búsqueda a otro? Por ejemplo, cualquier experimento que alguna vez haya creado/mutado BubbleSort de QuickSort (vea http://en.wikipedia.org/wiki/Sorting_algorithm)Algoritmos genéticos de programación y búsqueda
Respuesta
No conozco ninguno, y la dirección particular que está sugiriendo en su ejemplo parece improbable; tomaría una especie de función de aptitud perversa, ya que el ordenamiento de burbujas es en la mayoría de las medidas peor que en el orden rápido. No es inconcebible que esto pueda suceder, pero en general una vez que tienes un algoritmo bien entendido, ya está bastante en forma; ir a otro probablemente requiera pasar por algunas decisiones peores.
Estar atrapado en los mínimos locales no es un problema desconocido para la mayoría de las estrategias de búsqueda.
Charlie, curioso, ¿cómo criarías la próxima generación? Parece que no entiendo el hecho de cruzar el género
Eso realmente es una especie de problema clave. Recuerde que en el núcleo, un GA progresa haciendo muchos cambios aleatorios y buscando uno que sea "mejor" por la función de aptitud física. El mismo problema ocurre en la evolución biológica: puedes evolucionar de un pez a un pájaro, pero cualquier cosa que te lleve mucho más cerca de las aves se ahogará antes de que se reproduzca. –
Otro buen ejemplo es el panda: es muy adecuado para dos cosas: comer bambú y ser lindo. El tranquilo nicho del bosque de bambú está desapareciendo, por lo que están en peligro. Por otro lado, podría ser que "ser lindo" es la característica que garantiza la supervivencia continua. –
No hay ninguna razón por la que GP no pueda evolucionar, p. cualquier tipo de algoritmo. No estoy seguro de que realmente tenga sentido pensar en evolucionar uno "hacia" el otro. GP simplemente desarrollará un programa que se acerca cada vez más a una función de acondicionamiento físico que usted defina.
Si su función de acondicionamiento físico solo tiene en cuenta la corrección de clasificación (y suponiendo que tiene los componentes adecuados para su GP), podría evolucionar tanto BubbleSort como QuickSort. Si también incluye la eficiencia como una medida de la aptitud, entonces eso podría influir en cuál de estos se determinaría como una mejor solución.
Puede sembrar el GP con p. Ej. QuickSort y si tuvieras una función de acondicionamiento físico adecuada, con el tiempo podría surgir BubbleSort, pero podría aparecer con cualquier otra cosa que sea más adecuada que QuickSort.
Ahora el tiempo que tarda el motor GP de hacer esta evolución es otra cuestión ...
Es posible que desee ver en la obra de W. Daniel Hillis de los años 80. Pasó una gran cantidad de tiempo creando redes de clasificación mediante programación genética. Si bien estaba más interesado en resolver el problema de clasificar una cantidad constante de objetos (las redes de clasificación de 16 objetos habían sido un gran problema académico durante casi una década), sería una buena idea familiarizarse con su trabajo si realmente interesado en algoritmos de clasificación genética.
En la evolución de un algoritmo para ordenar una lista de longitud arbitraria, es posible que también desee familiarizarse con el concepto de coevolución. He construido un sistema coevolutivo antes de que el punto fuera tener un algoritmo genético que desarrollara algoritmos de clasificación, mientras que otro GA desarrolla listas de números sin clasificar. La idoneidad del clasificador es su precisión (más una bonificación para menos comparaciones si es 100% exacto) y la idoneidad del generador de listas es la cantidad de errores que los algoritmos de ordenación hacen al clasificar su lista.
Para responder a su pregunta específica de si la burbuja se ha desarrollado alguna vez de rápida, tendría que decir que la pondría seriamente en duda, a menos que la función de aptitud del programador fuera a la vez muy específica y desacertada. Sí, la burbuja es muy simple, así que tal vez un médico de cabecera cuya función de acondicionamiento físico era la precisión más el tamaño del programa eventualmente encontraría burbujas. Sin embargo, ¿por qué un programador seleccionaría el tamaño en lugar del número de comparaciones como una función de aptitud física cuando es el último el que determina el tiempo de ejecución?
Al preguntar si GP puede evolucionar un algoritmo a otro, me pregunto si está completamente seguro de qué GP es. Idealmente, cada cromosoma único define un tipo único. Una población de 200 cromosomas representa 200 algoritmos diferentes. Sí, rápido y burbuja puede estar allí en alguna parte, pero también lo son otros 198 métodos, posiblemente sin nombre.
- 1. Algoritmos genéticos
- 2. Uso de algoritmos genéticos para redes neuronales
- 3. ¿Cuál es la diferencia entre los algoritmos genéticos y evolutivos?
- 4. ¿Cuáles son las diferencias reales entre los algoritmos genéticos y los algoritmos evolutivos?
- 5. ¿Cómo configuro las restricciones de algoritmos genéticos de Matlab?
- 6. ¿Qué biblioteca/bibliotecas de Java para Algoritmos Genéticos?
- 7. ¿Qué es el "Hola mundo"? de algoritmos genéticos bueno para?
- 8. Cuándo usar Algoritmos genéticos vs. cuándo usar redes neuronales?
- 9. algoritmos de balanceo de carga y programación
- 10. Algoritmos de cadena de búsqueda
- 11. Algoritmos de búsqueda de cadenas
- 12. ¿Cuáles son las diferencias entre los algoritmos genéticos y las estrategias de evolución?
- 13. ¿Cómo se representa un cronograma para el problema de la tabla de tiempo en algoritmos genéticos?
- 14. ¡Divide y conquista, programación dinámica y algoritmos codiciosos!
- 15. Algoritmos de clasificación/relevancia de búsqueda
- 16. Algoritmos de búsqueda de subcadenas (gran haystack, aguja pequeña)
- 17. Complejidad de algoritmos de diferentes paradigmas de programación
- 18. Algoritmos de estrategia de construcción de ciudades
- 19. ¿Qué algoritmos de programación utiliza el kernel de Linux?
- 20. ¿Cómo puedo aprender algoritmos para concursos de programación?
- 21. ¿Cómo se escriben algoritmos de programación dinámica eficientes en Haskell?
- 22. Algoritmos y estructuras de datos
- 23. Programación genética en C++, ¿sugerencias de la biblioteca?
- 24. ¿Hay algún código de programación genética escrito R
- 25. simetría 3D algoritmo de búsqueda
- 26. Aplicaciones de Kruskal y algoritmos de Prim
- 27. Algoritmos de similitud de cadenas?
- 28. estructuras de datos y algoritmos e-books
- 29. Paquetes de clasificación ordinal y algoritmos
- 30. ¿Dónde puedo aprender cómo combinar algoritmos y estructuras de datos?
es posible que desee echar un vistazo a esta pregunta para una discusión sobre lo que la programación genética puede o no hacer -> http: // stackoverflow.com/questions/5732917/code-generation-by-genetic-algorithms – JohnIdol