본문 바로가기

genetic programming

유전 알고리즘(Genetic Algorithm) 유전 알고리즘이란? 유전 알고리즘(Genetic Algorithm)은 자연세계의 진화과정에 기초한 계산 모델로서 존 홀랜드(John Holland)에 의해서 1975년에 개발된 전역 최적화 기법으로, 최적화 문제를 해결하는 기법의 하나이다. 생물의 진화를 모방한 진화 연산의 대표적인 기법으로, 실제 진화의 과정에서 많은 부분을 차용하였으며, 변이(돌연변이), 교배 연산 등이 존재한다. 또한 세대, 인구 등의 용어도 문제 풀이 과정에서 사용된다. 출처 : 위키백과 유전 알고리즘은 선택(Selection), 변이(Mutation), 교차(Crossover)기법을 사용할 수 있다. 선택(Selection)한 세대에서 다음 세대로 전해지는 해의 후보가 되는 해들을 선택한다. 선택 방법에는 균등 비례 룰렛 휠 선.. 더보기
A Genetic Programming Approach to Automated Software Repair A Genetic Programming Approach to Automated Software Repair 0. Abstract 유전 프로그래밍(genetic programming)은 유전 프로그래밍은 기존 C 프로그램에서 버그를 수정하기 위한 프로그램 분석 방법과 결합된다. Fitness는 수리(repair)할 버그를 실행하는 negative test case와 프로그램 요구사항을 인코드(encode)한 positive test case를 사용해서 정의된다. 성공적인 수리가 발견되었으면, 구조적으로 다른 알고리듬과 델타 디버깅 방법(delta debugging methods)은 사이즈를 최소화한다. GP 기술에서 다수의 변형은 아래의 것들을 성공하는데 기여한다:1. 유전 연산자는 negative tes.. 더보기
마이크로소프트 준 플레이어 오류와 자동수정하는 방법에 대해 알아보자 마이크로소프트 준 미디어 플레이어(Microsoft Zune media players) 오류와 자동수정하는 방법에 대해 알아보자. 2008년 12월31일에 마이크로소프트 준 미디어 플레이어에서 오류가 발생했다. 그 이유는 아래의 코드에 문제가 있었기 때문이다. void zunebug(int days) { int year = 1980; while (days > 365) { if (days > 366){ days -= 366; year += 1; } else { } } else { eays -= 365; year += 1; } } printf("current year is %d\n", year); } 이 예제의 목적은, negative test case는 무한루프가 발생하는 inputs 366(1980년)과.. 더보기