열심히 알고리즘도 찾는 중인데 우선 유전 알고리즘이라는걸 찾아서 정리해봤다.
책에 나온 내용은 거의 400 ~500쪽이라서 대략 어떠한 알고리즘인지만 이해했고
더 조사해서 우리 프로젝트에 적합한지 확인해봐야겠다.
유전알고리즘
100개의 초기 염색체 집단을 만들고 다음과 같이 해보자. |
1. 각 염색체게 문제를 푸는데 얼마나 적당한가를 검사하고 그에 상응하는 적응도를 부여한다. |
2. 현재 집단에서 두 개를 선택한다. 선택되는 확률은 적응도에 비례한다. 이런 선택 방법은 흔히 룰렛 선택이라고 한다. |
3. 두 염색체의 비트들 중에서 임의의 비트를 선택하여 교차 확률로 교차시킨다. |
4. 선택된 염색체의 비트들을 돌연변이 확률로 뒤집는다. |
5. 100개의 새로운 염색체가 생길 때까지 2, 3, 4단계를 반복한다. |
교차 – 선택된 두 염색체가 새로운 자식 염색체를 만들기 위해서 그들의 비트를 서로 바꾸는 것
돌연변이 – 염색체에서 어떤비트가 뒤집어지는 것을 말한다. 즉, 0은 1이 되고 1이 0이 되는 것을 말한다. 돌연변이는 매우 희박하게 일어난다. 0.001의 확률로 일어난다.
갼략한 시나리오 |
- 염색체 집단에서 염색체를 염색체를 선택할 때마다 교차를 적용해야 하는지를 검사해야 한다. 교차 과정이 끝난 자식 염색체들은 돌연변이 적용 여부를 검사한다. 즉, 자식 염색체의 각 비트들에 대해서 돌연변이 확률로 돌연변이를 적용한다. |
상세 시나리오 |
1. 초기 염색체 집단을 임의로 생성합니다. 2. 인공 신경망을 훈련시키고 에러에 따라서 적응도를 부여한다. 인공 신경망이 커질수록 적응도를 삭감하는 것도 좋다. 이렇게 하면 적은 수의 뉴런과 연결을 가진 인공 신경망을 얻을 수 있다. 3. 선택 방법(적응도 비례 선택 혹은 토너먼트 선택 등)으로 두 개의 염색체를 선택한다. 선택된 염색체들은 부모가 된다. 4. 교차 연산자를 적용한다. 5. 돌연변시 연산자를 적용한다. 6. 새로운 집단이 원하는 크기의 다다를 때까지 3~5단꼐를 반복한다. 7. 만족스러운 인공 신경망을 얻을 때까지 2단계로 돌아간다. |
실시간 진화 – 게임이 실행되는 동안 악당들을 진화시킬 수 있는 간단한 테크닉
(악당들의 풀을 관리한다.)
시나리오 |
1. 게임에서 필요한 개체는 이 풀에서 만들어진다. 2. 게임에서 개체가 사라지는 즉시 새로운 개체가 게임으로 투입된다. 3. 즉, 게임에서 사라진 개체보다 적응도가 높은 개체를 선택하여(퓰에 있는 최소 적응도보다 낮으면 풀에 들어갈 수 없다) 돌연변이를 적용한 다음 그것을 게임에 투입한다. |
참고 - 쉽게 풀어 쓴 인공지능 게임 프로그래밍 (정보문화사)
'프로그래밍 기초 > 자료구조 & 알고리즘' 카테고리의 다른 글
유전알고리즘(2) (0) | 2010.06.21 |
---|---|
영향력 분포도 (0) | 2010.06.10 |
연결리스트를 이용한 이진트리의 순회방법 (0) | 2010.05.14 |
트리의 배열표현 방법 (0) | 2010.05.14 |
큐 만들기 (0) | 2010.05.14 |