유전자 개선(컴퓨터 과학)
Genetic improvement (computer science)컴퓨터 소프트웨어 개발에서, 유전적 개선은 최적화 및 머신러닝 기법, 특히 기존 소프트웨어를 개선하기 위한 유전자 프로그래밍과 같은 검색 기반 소프트웨어 엔지니어링 기법을 이용하는 것이다.[1][2] 개선된 프로그램은 원본과 동일하게 행동할 필요가 없다.예를 들어 자동 버그 수정은 버그 동작을 줄이거나 제거하여 프로그램 코드를 개선한다.[3]다른 경우에는 개선된 소프트웨어가 이전 버전과 동일하게 동작해야 하지만, 예를 들어, 더 빨리 실행되거나,[4] 메모리를 덜 사용하거나,[5] 에너지를[6] 덜 사용하거나, 다른 유형의 컴퓨터에서 실행되기 때문에 더 낫다.[7]예를 들어, GI는 새로운 소프트웨어가 원래의 프로그램에 대해 여전히 원하는 것을 할 수 있고 현재 더 나은지 확인하기 위해 시험 입력에 대해 새 소프트웨어와 구형 소프트웨어를 모두 실행하고 그들의 출력물과 성능을 비교함으로써 새로운 돌연변이 버전의 행동을 주로 검증한다는 점에서 공식적인 프로그램 번역과는 다르다.
유전적 개선은 여러 버전의 프로그램을 만드는 데 사용될 수 있으며, 각각은 특정 용도 또는 특정 컴퓨터에 더 적합하도록 맞춤화된다.
유전적 개선은 다목적 최적화와 함께 다차원적 소프트웨어 개선을 고려하거나 GI에게 그들이 제공하는 답변의 품질에 대해 속도를 교환하는 프로그램을 진화하도록 요구하는 것과 같은 몇 가지 목표 사이의 절충을 고려하는 데 사용될 수 있다.물론 더 빠르고 더 나은 답을 주는 프로그램을 찾는 것이 가능할 수도 있다.
대부분 유전적 개선은 일반적으로 프로그램의 소스 코드를 작게 변경하거나 편집(변종이라고도 함)하지만 때때로 조합 코드, 바이트 코드[8] 또는 바이너리 기계 코드로 돌연변이가 만들어지기도 한다.[9]
참조
- ^ Langdon, William B. (2015). Genetically Improved Software. Handbook of Genetic Programming Applications. pp. 181–220. doi:10.1007/978-3-319-20883-1_8. ISBN 978-3-319-20882-4.
- ^ Justyna Petke and Saemundur O. Haraldsson and Mark Harman and William B. Langdon and David R. White and John R. Woodward (2018). "Genetic Improvement of Software: a Comprehensive Survey" (PDF). IEEE Transactions on Evolutionary Computation. 22 (3): 415–432. doi:10.1109/TEVC.2017.2693219. hdl:1893/25358.
- ^ Weimer, Westley; et al. (2010). "Automatic program repair with evolutionary computation". Communications of the ACM. 53 (5): 109. CiteSeerX 10.1.1.170.188. doi:10.1145/1735223.1735249.
- ^ Langdon, William B.; Harman, Mark (2015). "Optimizing Existing Software With Genetic Programming". IEEE Transactions on Evolutionary Computation. 19: 118–135. doi:10.1109/TEVC.2013.2281544.
- ^ Wu, Fan; Weimer, Westley; Harman, Mark; Jia, Yue; Krinke, Jens (2015). Deep Parameter Optimisation. Proceedings of the 2015 on Genetic and Evolutionary Computation Conference - GECCO '15. pp. 1375–1382. doi:10.1145/2739480.2754648. ISBN 9781450334723.
- ^ Bruce, Bobby R.; Petke, Justyna; Harman, Mark (2015). Reducing Energy Consumption Using Genetic Improvement. Proceedings of the 2015 Genetic and Evolutionary Computation Conference - GECCO '15. pp. 1327–1334. doi:10.1145/2739480.2754752. ISBN 9781450334723.
- ^ Langdon, William B.; Harman, Mark (2014). Genetically Improved CUDA C++ Software. EuroGP 2014. Lecture Notes in Computer Science. Vol. 8599. pp. 87–99. doi:10.1007/978-3-662-44303-3_8. ISBN 978-3-662-44302-6.
- ^ Orlov, Michael; Sipper, Moshe (2011). "Flight of the FINCH Through the Java Wilderness". IEEE Transactions on Evolutionary Computation. 15 (2): 166–182. CiteSeerX 10.1.1.298.6272. doi:10.1109/TEVC.2010.2052622.
- ^ Schulte, Eric M.; Weimer, Westley; Forrest, Stephanie (2015). Repairing COTS Router Firmware without Access to Source Code or Test Suites. Proceedings of the Companion Publication of the 2015 on Genetic and Evolutionary Computation Conference - GECCO Companion '15. pp. 847–854. doi:10.1145/2739482.2768427. ISBN 9781450334884.
외부 링크
- 개방형 PhD 튜토리얼 http://phdopen.mimuw.edu.pl/index.php?page=z15w1(SBSE 및 CIT도 다루지만 세 가지 주제 중 마지막은 소프트웨어의 유전적 개선이다.)
- 유전자 개선에 관한 국제 워크숍: http://www.geneticimprovementofsoftware.com 웹 페이지에는 GI 커뮤니티 페이지 http://geneticimprovementofsoftware.com/learn/about이 포함되어 있다.