유전자 알고리즘 교차와 변이
- IT
- 2018. 4. 22. 21:36
■ 유전자 알고리즘 교차
유전자 알고리즘에서 각 개체를 선택하고 난 후 교차를 수행하게 됩니다. 교차의 방법으로는 일점, 복수점, 균일 교차가 있습니다.
일점 교차는 교차하는 기준을 하나로 정하고 그 앞과 뒤에서 어느 쪽 유전자를 받을 것인가를 결정하여 변형시키는 방법입니다.
복수점 교차는 교차 위치가 복수인 방식으로 교차가 이루어지는데 2점 교차, 3점 교수 방법 등 이 있습니다. 각 기준점의 위치는 매 교차마다 랜덤으로 설정하게 됩니다.
여러 교차 방법은 프로그래머가 상황에 맞게 설정하면 됩니다. 1점, 2점 교차는 어렵지 않기때문에 설정 값을 변경해서 결과값을 비교해도 좋을 거 같습니다.
마지막으로 균일 교차는 특정한 마스크를 사용하여 부모세대와 비교하여 자식 세대를 만듭니다.
그리고 교차 단계에서 각 개체들이 교차할 확률을 설정하게 됩니다. 여기서 확률 값은 사용자가 임의로 지정해줄 수 있습니다.
■ 유전자 알고리즘 변이
유전자 알고리즘의 변이 수행(Perform Mutation)은 부모해로부터 자식해로 전달되는 특정한 유전자 정보에 대하여 무작위적 변형을 시도합니다. 전체 해집단에서 배제된 새로운 개체를 발생시키거나 진화과정에서 상실한 특정 유전정보의 재현을 시도하는 조작 방법입니다. 보통 변이률을 설정해서 알고리즘을 수행하는데 1%, 0.5%, 0.1% 확률도 변이를 발생시킵니다. 변이를 발생시키는 이유는 유전 알고리즘의 최적해가 전역 해가 아닌 지역적인 해로 끝나는 것을 막기 위해서 입니다.
마지막으로 유전자 알고리즘를 표현한 흐름도 입니다. 먼저 염색체를 N개로 설정해 전체 해집단을 생성합니다. 그리고 다음 적합도 함수를 설정하여 염색체 각각 적합도를 계산합니다. 그리고 선택, 교차, 변이 단계를 거쳐 알고리즘이 반복됩니다.
유전자 알고리즘의 종료 조건을 설정하는 것도 중요합니다. 목표한 해집단이 나왔을 때 종료할 것인가, 아니면 일정 반복회수를 설정하여 반복회수가 종료 되었을 때 알고리즘을 종료할 것인가는 문제의 성격에 맞게끔 설정해서 하면 되는 부분입니다. 제가 실습할 때는 특정 반복회수를 설정하여 하는 것이 효율적이였던거 같았습니다. 컴퓨터 하드웨어가 부족하지 않는 환경에서는 특정 반복회수를 설정하여 최적해를 찾는 것이 좋다고 판단됩니다. 종료 조건을 설정하는 문제는 크게 어렵지 않습니다. 프로그래밍을 할 때 계속해서 설정 값을 변경하면 되기때문에 어려움이 없었습니다. 그리고 유전 알고리즘 특성상 반복 할때마다 결과 값이 달라지기 때문에 이 점을 고려해서 종료 조건을 설정하면 효율적일 것이라 생각됩니다.
저는 유전자 알고리즘을 공부하면서 느낀 것은 개념적인 부분은 매우 쉽다고 생각했습니다. 전체적으로 본다면 해집단을 설정하고, 적합도 함수를 설정한 후 선택, 교차 , 변이에 대한 부분만 설정하면 된다고 어느 책을 보더라고 설명했기 때문입니다.
그런데 막상 프로그래밍을 하려고 하니 어떻게 시작해야 되는지 알기 어려웠습니다. 일단 책이나 논문에 따라 용어가 통일 되지 않았습니다. 유전자, 개체, 해집단, 염색체 등등 이런 용어에 대한 정리가 먼저 우선시 되어야 합니다.
그리고 프로그래밍을 하는 부분은 해외 유튜브를 보시는 것을 추천합니다. 저는 파이썬으로 실습하면서 공부를 했는데 국내의 유튜브 영상은 크게 도움이 되지 않았습니다. 예시가 있는 문제를 지정해서 똑같이 따라 해보는 것이 가장 큰 도움이 되는 것 같습니다. 앞서 설명했지만 문제를 정확하게 파악하고, 엑셀이나 다른 툴을 사용해서 정리하는 것이 매우 도움이 됩니다.
유전자 알고리즘은 매우 파워풀 하다고 합니다. 많은 논문에서도 활용되어 지고 있고, 향후 전망도 밝다고 볼 수 있습니다. 그러나 유전자 알고리즘에 대한 부정적인 견해도 있습니다. 일단 최적해를 도출해내는 과정이 생략된다는 것입니다. 특정 분야에서는 최적값만 도출해내는 것이 아니라 그 과정을 제대로 인지하는 것이 중요하다고 합니다. 제가 같이 수업 듣는 분은 생산관리 분야에서 전문적인 지식을 가지고 계십니다. 한 기업에서 기술 이사를 맡으시고 있는데 유전자 알고르즘 자체를 매우 회의적으로 생각하셨습니다. 그 이유가 기업의 문제를 해결하는 것은 단순히 결과값을 찾는게 아니라 그 문제가 어떤 시점에서 어떤 이유로 발생하는지를 찾아내는 것이 매우 중요하다고 설명해주셨습니다. 그래서 무조건 유전자 알고리즘이 최고의 방법이며, 최적의 방법이라고 생각하면 매우 위험할 수 있다고 생각합니다.
여러 사회적인 문제나 경영적인 문제에 따라 적절한 방법론을 찾아서 적용하는 눈을 키우는 것이 매우 중요하다고 생각합니다.
'IT' 카테고리의 다른 글
스마트 팩토리 국내 현황 (0) | 2018.04.23 |
---|---|
스마트 팩토리란 무엇인가? (0) | 2018.04.23 |
유전자 알고리즘 진행 단계 (0) | 2018.04.22 |
유전자 알고리즘의 개념 및 역사 (0) | 2018.04.22 |
4차 산업혁명과 일자리 (0) | 2018.04.21 |