AForge.NET FRAMEWORK : 유전알고리즘을 C#으로

2012. 3. 9. 21:00IT, Smart Life



AForge.NET Framework

유전 알고리즘(Genetic Algorithm)을 C#으로 구현해보려고 하는데, 3년전이나 지금이나 C#으로 된 유전 알고리즘 코드는 C++ 코드에 비해서 많지 않은 것 같습니다. C#을 지원하는 플랫폼들은 더 많아졌는데 말이죠. 예전에 MATLAB으로 짠 코드를 C#으로 바꿔보려고 했던 기억도 있고 해서, 이번에 다시 검색을 해봤더니, AForge.NET Framework 라는 것이 있네요.






AForge.NET is an open source C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, fuzzy logic, machine learning, robotics, etc.



  홈페이지 메인의 설명에 따르면, 'AForge.NET은 컴퓨터 비전과 인공지능 분야의 개발자들과 연구자들을 위해 구상된 오픈 소스 C# 프레임워크'라는 군요. 이미지 프로세싱, 뉴럴 네트워크, 유전 알고리즘, 퍼지 로직, 머쉰 러닝, 로보틱스... 어디서 많이 들어본, 그리고 제가 좋아하는 단어들만 다 들어있는 것 같습니다.ㅎㅎ


  본 Framework가 어떻게 응용이 되었나, 쓸만한가 싶어서 검색해보니, AForge.NET Framework를 이용해서 C# 프로그래밍을 하신 분들이 많이 계셨습니다. 아쉽게도 대부분은 영상과 증강현실 쪽으로 많이 적용하셨고, 유전 알고리즘 쪽으로 이용하신 분들은 많지 않은 것 같습니다만... ㅜ_ㅜ


            [ AForge.NET Framework 적용 사례 ]




다운로드 및 설치 

유용하게 잘 쓰고 있는 것을 알았으니, 어떤 것인지 나도 한번 써보자~
다운로드 및 소스 확인 고고!!





홈페이지에서 DOWNLOAD를 클릭하여 AForge.NET Framework를 다운 받자


  포스팅 현재, AForge.NET Framework 버전은 2.2.4이며, 다운로드 및 설치는 4가지 다운로드 링크 중, 상위 두 가지링크를 통해 진행하실 수 있습니다. 설치는 'Next'신공으로 손쉽게 ^_^*






클릭 들어 간다~ 쭉~쭉~쭉쭉~ 쭉~쭉~쭉쭉~ ㅋㅋㅋ





설치 폴더 내용 확인 

  설치가 무난하게 잘 이뤄졌다면, C드라이브 내부의 'Program Files' 안에 [ AForge.NET ]폴더가 생성되었음을 확인할 수 있을 것입니다. 아래 그림처럼, C:\Program Files\AForge.NET\Framework\Sources 폴더 내부를 살펴보시면, Framework 중에 유전 알고리즘을 다루고 있는 'Genetic'폴더가 있습니다.








  Genetic 폴더를 열어보니, 제법 익숙하고 반가운 단어들이 많이 보이네요~
  Chromosome, Fitness Function, Properties, Selection Algorithm....

  Genetic 솔루션을 실행시켜보겠습니다.




  References에 'AForge'와 'AForge.Math'가 있다는 것을 주목합시다.
  이 파일들은 C:\Program Files
Forge.NET\Framework\Release\ 에 있고, 소스 또한 C:\Program Files\AForge.NET\Framework\Sources\Math\ 에 있으니, 내용을 확인해봅시다.

  이로써, AForge.NET Framework의 'Genetic' 부분(유전 알고리즘)을 사용하거나, 소스코드를 들여다 볼 수 있는 준비가 다 되었습니다!!

 
AForge.Genetic.dll : C#코드의 이해와 활용 

  이 프레임워크를 활용하기 위해서는, Framework 설치 이후에, 새 프로젝트 창을 열고, 참조(References)에 AForge.Genetic.dll 을 추가한 다음, 마음껏 함수를 써주시면 되겠습니다.

  다만, 안에 어떤 함수가 있는지를 잘 알고, 또 그 함수가 내부에서 어떻게 처리를 하는지 알아야 자기 입맛에 맞게 쓸 수 있을 것 같습니다. 저도 결국은 제가 짠 코드를 C#으로 변환하는 것이 목적이기 때문에, 본 코드를 그대로 사용하기 보다는, 조금씩 수정해서 사용해야 할 것 같습니다.
  참고로, Visual Studio Team Edition/Professional Edition 사용하고 계신분들은 프로젝트 폴더 위에서 우클릭하셔서 [ View Class Diagram ] 기능을 이용하시면, 좀더 빨리 프로그램 구조를 이해하실 수 있습니다. (클래스 다이어그램이 완벽하게 나오진 않습니다 ㅎㅎ)

  그래도, 대충 훓어보니, 메소드명만 봐도 많은 공을 기울인 작품이라는 생각이 들어요~ 주석도 충실합니다. 유전 알고리즘을 C#으로 구현하고 싶으신 분들께 유익한 코드가 될 것 같습니다. : )