En el desarrollo de software informático , la mejora genética es el uso de técnicas de optimización y aprendizaje automático , en particular técnicas de ingeniería de software basadas en búsquedas, como la programación genética, para mejorar el software existente . [1] [2]
El programa mejorado no necesita comportarse de forma idéntica al original. Por ejemplo, la corrección automática de errores mejora el código del programa al reducir o eliminar el comportamiento defectuoso . [3]
En otros casos, el software mejorado debería comportarse de forma idéntica a la versión anterior, pero es mejor porque, por ejemplo: se ejecuta más rápido, [4]
utiliza menos memoria , [5]
utiliza menos energía [6]
o se ejecuta en un tipo diferente de computadora. [7]
La mejora genética se diferencia, por ejemplo, de la traducción formal de programas , en que verifica principalmente el comportamiento de la nueva versión mutante ejecutando tanto el software nuevo como el antiguo en entradas de prueba y comparando su salida y rendimiento para ver si el nuevo software todavía puede hacer lo que se quiere del programa original y ahora es mejor.
La mejora genética se puede utilizar para crear múltiples versiones de programas, cada una diseñada para ser mejor para un uso particular o para una computadora particular.
La mejora genética se puede utilizar con la optimización multiobjetivo para considerar la posibilidad de mejorar el software en múltiples dimensiones o para considerar compensaciones entre varios objetivos, como pedirle a IG que desarrolle programas que equilibren la velocidad con la calidad de las respuestas que brindan. Por supuesto, es posible encontrar programas que sean más rápidos y brinden mejores respuestas.
En general, la mejora genética realiza pequeños cambios o ediciones (también conocidos como mutaciones ) en el código fuente del programa , pero a veces las mutaciones se realizan en código ensamblador , código de bytes [8] o código
binario de máquina . [9]
Referencias
- ^ Langdon, William B. (2015). "Software mejorado genéticamente". Manual de aplicaciones de programación genética . págs. 181–220. doi :10.1007/978-3-319-20883-1_8. ISBN 978-3-319-20882-4.
- ^ Justyna Petke y Saemundur O. Haraldsson y Mark Harman y William B. Langdon y David R. White y John R. Woodward (2018). "Mejora genética del software: un estudio exhaustivo" (PDF) . IEEE Transactions on Evolutionary Computation . 22 (3): 415–432. doi :10.1109/TEVC.2017.2693219. hdl : 1893/25358 . S2CID 30314751.
- ^ Weimer, Westley; et al. (2010). "Reparación automática de programas con computación evolutiva". Comunicaciones de la ACM . 53 (5): 109–116. CiteSeerX 10.1.1.170.188 . doi :10.1145/1735223.1735249. S2CID 7408151.
- ^ Langdon, William B.; Harman, Mark (2015). "Optimización de software existente con programación genética". IEEE Transactions on Evolutionary Computation . 19 : 118–135. doi :10.1109/TEVC.2013.2281544. S2CID 9891830.
- ^ Wu, Fan; Weimer, Westley; Harman, Mark; Jia, Yue; Krinke, Jens (2015). "Optimización de parámetros profundos". Actas de la Conferencia anual de 2015 sobre computación genética y evolutiva . págs. 1375–1382. doi :10.1145/2739480.2754648. ISBN . 9781450334723. Número de identificación del sujeto 17820784.
- ^ Bruce, Bobby R.; Petke, Justyna; Harman, Mark (2015). "Reducción del consumo energético mediante el mejoramiento genético". Actas de la Conferencia Anual de 2015 sobre Computación Genética y Evolutiva . págs. 1327–1334. doi :10.1145/2739480.2754752. ISBN . 9781450334723.S2CID207224618 .
- ^ Langdon, William B.; Harman, Mark (2014). "Software CUDA C++ mejorado genéticamente". Programación genética. Apuntes de clase en informática. Vol. 8599. págs. 87-99. doi :10.1007/978-3-662-44303-3_8. ISBN 978-3-662-44302-6.
- ^ Orlov, Michael; Sipper, Moshe (2011). "El vuelo del FINCH a través del desierto de Java". IEEE Transactions on Evolutionary Computation . 15 (2): 166–182. CiteSeerX 10.1.1.298.6272 . doi :10.1109/TEVC.2010.2052622. S2CID 14616802.
- ^ Schulte, Eric M.; Weimer, Westley; Forrest, Stephanie (2015). "Reparación del firmware de un enrutador COTS sin acceso al código fuente o a los conjuntos de pruebas". Actas de la publicación complementaria de la Conferencia anual de 2015 sobre computación genética y evolutiva . págs. 847–854. doi :10.1145/2739482.2768427. ISBN . 9781450334884. Número de identificación del sujeto 14772346.
Enlaces externos
- Tutorial de doctorado abierto http://phdopen.mimuw.edu.pl/index.php?page=z15w1 (también cubre SBSE y CIT, pero el último de los tres temas es la mejora genética del software).
- Talleres internacionales sobre mejoramiento genético: http://www.geneticimprovementofsoftware.com Las páginas web incluyen páginas de la comunidad GI http://geneticimprovementofsoftware.com/learn/about
Herramientas
- GIN https://github.com/gintool/gin
- Urraca https://github.com/bloa/magpie
- PyGGI https://github.com/coinse/pyggi