티스토리 툴바

모든 분야가 그렇겠지만, 훌륭한 스승 밑에서 공부할 수 있다는 것은 축복입니다.

대상이 그 어떤 것이든 체계적으로 공부할 수 있거나, 도와줄수 있는 선임자가 있으면 훨씬 수월한 것 같습니다. 물론 학문의 최전선에 서 있는 사람들은 더 이상 가본 적 없는 길을 개척해 나가야 하지만, 그들의 지식도 그 어떤 기초도 없이 나아가는 것은 아니라고 생각합니다.

유전 알고리즘을 공부할때, 쉽게 공부할 수 있도록 도와주는 참고 도서들을 정리해 보았습니다.

지금 생각해봐도, 유전 알고리즘을 공부하기 시작할때, 체계적으로 공부하지 못하고 인터넷을 돌아다니며 공부했던 것은 효율이 좀 떨어졌던 것 같습니다. 이것이 내가 인터넷을 사용하고 그것을 이용해 공부하는 것에 거부감이 없는 세대임에도 불구하고, 아직까지도 인터넷을 통한 공부보다 한권의 책을 더 선호하는 이유인 것 같기도 합니다.



국내 도서 (TEXT)

국내에서 유전 알고리즘을 다룬 책은 아직 종류가 많지 않습니다.
쉽게 배우는 유전 알고리즘
카테고리 컴퓨터/IT
지은이 문병로 (한빛미디어, 2008년)
상세보기
쉽게 배우는 유전 알고리즘 : 진화적 접근법
개인적으로 좋아하는 IT COOKBOOK (한빛 교재 시리즈)입니다.이다.
한빛미디어에서 나오는 이 시리즈는 책 구성이 깔끔하고, 한눈에 잘 들어오게 되어 있어서,
항상 책을 사서 공부하고 싶은 마음이 들게 만듭니다.

이 책은 굉장히 방대한 '유전 알고리즘'의 세계를 오랜 경험과 통찰력으로 간결하고 함축적으로 다루고 있습니다.
'쉽게 배우는 유전 알고리즘'이라고 되어는 있으나, 수식표현이 많고 간단하게 2~4 페이지로 구성된 각 'Section' 속에도 깊이가 있으므로, 책에 소개된 분야와 이론을 한번에 다 이해하려고 하기 보다는, 꾸준히 옆에 두고 필요한 부분을 책의 내용을 토대로 다른 문헌들을 추가로 찾아가며 공부해 나가는 방법을 추천하고 싶습니다.

책의 문체는 단순히 이론을 설명하는 말투가 아니라, 저자 개인적인 생각과 최근 연구결과를 인용하기도 해서, 저자가 옆에서 가르쳐주는 듯한 느낌을 자주 받았습니다. 또한, 각 챕터(chapter) 마지막의 'Drift' 또한 상당히 재미있으므로, 꼭 읽어보기를 추천합니다.


유전알고리즘과 그 응용(DISKETTE 1장 포함)(제2판)
카테고리 과학
지은이 진강규 (교우사, 2002년)
상세보기
유전 알고리즘을 소개하는데 그치지 않고, 직접 코딩해 볼 수 있도록 친절히 설명해 주고 있습니다.
MATLAB을 기반으로 하여, 예제 코딩을 구성하고 있으며 유전 알고리즘의 핵심 이슈와 개선 사항에 대해 언급하고 있습니다.
개인적으로 '유전 알고리즘을 이용한 스케줄링 기법'을 MATLAB으로 구현하고 있었기에 많은 도움을 받았습니다.
MATLAB을 이용하여 유전 알고리즘을 공부, 응용해보려고 하는 사람에게 강력 추천합니다.


유전 알고리즘
카테고리 컴퓨터/IT
지은이 문병로 (두양사, 2003년)
상세보기
처음에 유전 알고리즘이라는 말이 생소했을 때, 많은 도움을 받은 책입니다.
 









국외 도서 (TEXT)






기타 참고 도서











* 추가 중에 있습니다. 공부하다가 발견한 좋은 책들을 업데이트 할 예정입니다.


저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License

Issac Newton의 'Principia'와 Albert Einstein의 '논문집'


  학문에 뜻이 있는 분들이나 과학/공학을 좋아하는 분들이라면, '좋은 논문'을 쓰고 싶다는 생각을 한번쯤 해보셨을 겁니다. 하지만, 신기하게도 대학이나 대학원에서 좋은 논문을 쓰는 법을 따로 배우는 것은 아닌 것 같습니다. 물론, 시중에 '논문작성법'에 관한 책들도 있고 인터넷 자료들도 있습니다만, 대부분의 사람들이 다른 논문들을 읽어가면서, 논문의 전개 방법과 양식을 배우는 경우가 많은 것 같습니다. '논문 어떻게 써야 되요?'라고 물으면, '써 보면서 배우는 거지, 누가 가르쳐주는게 아니다~'라는 대답이 돌아오기도 합니다. (물론 이런 경험이 없는 '행운아' 분들도 있습니다.)

  아래는 작년에 문득 < '좋은 논문'이란 어떤 것인가? >를 고민하다가 찾아서 갈무리 해놓았던 글입니다.
'HOW-TO-STUDY' 에서 발췌한 '좋은 논문을 위한 10 단계'입니다. 간단명료하지만, 많은 도움이 되었던 것 같습니다.
(실제로, 작년에 논문 진행을 이 단계에 맞춰서 준비해 보았던 기억이 나네요~)

다른 분들께도 혹시 도움이 될까해서 공유합니다. ^_^*




Ten Steps to a Good Research Paper

To write a good research paper, you must be specific about your topic, know what you want to say, and say it effectively. Following these ten steps will help you write a good research paper.


  • Step 1. Choose Your Topic. When choosing a topic, choose one in which you are interested, and for which there is enough information. If your topic is too broad, you will have difficulty completing your paper. "The Effects of Pollution" is too broad because there are so many effects of pollution. "The Effects of Pollution on Geese in the Northeast Section of Duluth, Minnesota" is too narrow. You are not likely to find much information that is this specific. "The Effects of Pollution in Yosemite National Park" is just about right as a topic.

 

  • Step 2. Locate Information. Use information from a variety ofreference sources. These sources include encyclopedias, almanacs, scholarly journals, books, magazines, and newspapers. Find these sources in print form, on CD-ROMS, and on the Internet.

 

  • Step 3. Prepare Bibliography Cards. Prepare bibliography cards to document the sources of information you use when writing your paper. Your library will have style manuals to illustrate how to prepare bibliography cards for various sources of information.

 

  • Step 4. Prepare Note Cards. Use note cards to record notes from each source you use when writing your paper. Number your note cards to keep track of them.

 

  • Step 5. Prepare an Outline. Write an outline for your paper by organizing your notes from the note cards into topics, subtopics, details, and subdetails. Use an organization such as: 
I. (topic)
A. (subtopic)
1. (detail)
a. (subdetail)

  • Step 6. Write A Rough Draft. Use your note cards and outline to write a rough draft of your paper. As you write your draft, use numbered footnotes to credit sources from which you take quotations or major ideas.

 

  • Step 7. Revise Your Rough Draft. Make any changes needed to be sure your ideas are clearly expressed and your writing has accurate spelling and grammar.

 

  • Step 8. Prepare Your Bibliography. At the end of your paper, provide a list of all the sources you used to gather information for the paper. Your bibliography cards will provide this information. List your sources in alphabetical order by the first word on each of your bibliography cards.

 

  • Step 9. Prepare a Title Page and Table of Contents. The title page is the first page of the paper. It should include the title of your paper, your name, and the date on which the paper is due. The table of contents is the second page. It should list the main topics, important subtopics, and the page on which each is introduced in your paper.]

 

  • Step 10. Final Checklist. Before handing in your paper, be sure you can answer "Yes" to each of the following questions.
    • Did I include a title page?
    • Did I include a table of contents?
    • Did I number all pages correctly?
    • Did I provide footnotes for quotations and major sources of information?
    • Did I include a bibliography?
    • Did I keep a second copy for my files?



Following these ten steps will help you write a good research paper.





출처 : HOW-To-Study
http://www.how-to-study.com/study-skills/en/language-arts/17/ten-steps-to-a-good-research-paper/
저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License

SONY | CYBERSHOT | Normal program | Center-weighted average | 1/500sec | F/5.6 | +0.30 EV | 15.8mm | ISO-100 | Flash did not fire | 2006:08:03 16:37:11

가을 2호기의 테스트 비행을 마치고 (2006년 8월 3일)


우주왕복선을 만들어 보신 적 있으세요?

이것은 벌써 옛날 일처럼 느껴지는...
지난 2006년도 한해를 쉼 없이 뛰었던 저와 제 친구들의 '우주왕복선' 축소모형 제작 및 실험에 관한 기록입니다.

그 동안 이 실험을 토대로 새로운 실험을 진행하여 '기술논문'을 써볼 계획이 있었기 때문에, 그렇게 복잡하고 기술적인 변화가 있는 내용이 전혀 아님에도 불구하고 쉽게 공개를 하지 못했었습니다. 또한, 개인적인 아픔이 있는 프로젝트였기 때문에 쉽게 갈무리 하지 못한 이유도 있습니다. 이 프로젝트가 남긴 것이 어떤 것이었든, 더 늦기 전에 본 프로젝트를 뒤돌아 보고 기록을 남기고 싶어 이렇게 글을 씁니다.

다시 말씀드리지만, 본 실험과 관련 동영상, 사진에 관한 저작권은 전적으로 저와 TEAM 'COSMOS'에게 있으며, 무단 복제 및 부분 옮김 또한 불허합니다. 필요하신 내용은 저에게 개인적으로 문의를 해주시고, 내용을 옮기실 때는 전체 내용 및 링크를 활용해 주시면 감사하겠습니다.



우리는 우주왕복선을 만든다! - Team 'COSMOS'의 탄생

 2005년 겨울, 저는 군 복무를 마치고 다음 학기 복학 신청을 해둔 상태로 집에서 소일거리를 하며 시간을 보내고 있었습니다. '제대도 했으니, 복학하면 뭔가 열심히 해야지!'라는 마음과 함께 신나게 놀고 있던 어느날, 아는 후배에게 전화를 받았습니다.

'우주왕복선 축소모형을 만들려고 하는데 같이 해볼래요?.'

 평소, 제가 우주를 좋아하고 위성이나 로켓에 관심이 많은 것을 알고있는 후배의 연락이었습니다. 이렇게 생각해서 연락준 것이 기쁘기도 하고 재밌을 것 같아서, 단번에 '그러겠다'라고 했습니다. 가뜩이나 제대 후에 의욕에 가득차 있는 상황이었던데다, 평소 관심 있었던 우주공학에 관련된 뭔가를 만들어보는 기회를 가진다니, 생각만 해도 너무 재밌을 것 같았습니다.

  이것이 4학년들이 졸업과제로 수행하는 'Capstone Design Project'의 일환으로 진행되는, 연구비와 책임이 따르는 프로젝트라는 알게 된 것은 그로부터 시간이 조금 더 흐른 후였습니다. 후배가 깜빡하고 알려주지 않은 것이 아니라, 자신도 몰랐던 것이었습니다. 그런 상황을 모른채 저와 '짐스키'군, 'M'군, 저에게 연락해줬던 후배 'N'양, 귀여운 막내 'K'이 함께 이 작업을 하겠다고 나서서 한팀이 되었고, 우리는 단순히 우주왕복선을 만들어 볼 수 있겠다는 생각에 들떠만 있었습니다.

  군대를 갓 제대해 머리 속의 모든것이 시원~하게 'Reset' 된 복학생 3학년 3명, 2학년 1명, 1학년 1명의 합집합!!
  Team 'COSMOS'의 탄생이었습니다.


우리가 만든 우주왕복선 축소모형 바닥에 붙인 테스트 패치
최초의 우주왕복선 시험기, 엔터프라이즈(Enterprise) 호의 'Approach and Landing Test'에
 사용했던 패치를 수정하여 만들었다. 태극기와 'KOR' 마크를 붙여넣었으며,  하단의 '가을'은
 우리가 만든 우주왕복선의 이름이다. 우주왕복선의 양단에 적힌 이름은 엔터프라이즈 호의
 테스트 파일럿 이름이며, 이런 전통은 지금까지도 NASA의 미션에 그대로 적용되고 있다.



To be continue.....
저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License

내가 유전 알고리즘을 처음 접하고 나서 관련 연구 결과를 발표하거나, 논문을 쓸 때 가장 어려움을 느꼈던 부분은 유전 알고리즘을 이용해 개발한 프로그램이나 알고리즘의 성능을 '가시적'으로 보여주기가 힘들다는 것이었다. 사람들에게 설명할 때 뿐만 아니라, 나 스스로도 어떠한 기준을 가지고 성능을 평가해야 할지, 객관적인 지표를 마련하기가 어려웠다.

물론, 유전 알고리즘에도 다른 최적화 문제와 마찬가지로 최적화 대상이 되는 최적화 대상함수(reference function)에 해당하는, 적합도 함수(fitness function)가 있기 때문에, fitness function에 의한 적합도 값(fitness value)이 좋을 수록 최적화가 잘 이루어 졌다고 말할 수 있다. 

그러나 연산자들의 확률적 속성상, 유전알고리즘의 성능은 탐색환경에 따라 달라질 수 밖에 없다. 따라서 탐색성능에 영향을 주는 몇가지 요소들을 잘 이해하고 이들의 적절한 선택을 통해서만 좋은 성능을 얻을 수 있다.

※ 다른 최적화 알고리즘들이 그렇듯이 유전 알고리즘도 탐색성능에 영향을 주는 몇 가지 요소들을 가지고 있는데, 이에 관해서는 다음에 정리하기로 한다.   - 코딩법/유전 연산자/ 탐색전략 /제어 파라미터(집단크기, 교배확률, 돌연변이확률) 등

그래서, '어떤 방식이 유전알고리즘의 성능 및 결과를 보여주기에 알맞은가', '어떤 방식으로 유전 알고리즘을 테스트할 수 있는 환경일까'를 고민하다가 De Jong의 5개의 테스트 함수에 대해 알게 되었다.



De Jong의 테스트 함수(De Jong's Test Functions)
  다음의 탐색특성이 내포되도록 사려 깊게 선택
1. 연속 / 불연속
2. 볼록 / 비볼록
3. 저차 / 고차
4. 이차형식 / 비이차형식
5. 단봉 / 다봉
6. 결정적 / 확률적 탐색 특성





저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License
유전 알고리즘의 종류에 대해서 간단하게 정리해 보았다.

그동안 이진 코딩 유전 알고리즘(BCGA)의 대표적인 알고리즘인 단순 유전 알고리즘(GSA)을 주로 사용해 왔고, 실수 코딩 유전 알고리즘(RCGA)을 비롯한 다양한 방법이 있다라는 정도로만 이해하고 넘어갔었지만, 지금 시점에서 유전 알고리즘의 종류와 분류에 대해서 어느정도 정리해야 겠다는 생각을 했다.

유전 알고리즘의 정의 및 관련 역사에 대한 설명은 생략한다.


유전 알고리즘(Genetic Algorithm)

직렬 유전 알고리즘 (Serial Genetic Algorithm)
  하나의 집단에서 모의진화를 일으키고, 발생되는 모든 연산은 단일 프로세서를 통해 직렬로 처리됨
  • 이진 코딩 유전 알고리즘 (Binary-Coded Genetic Algorithm)
단순 유전 알고리즘 (Simple GA)
마이크로 유전 알고리즘 (μ-GA)
하이브리드 유전 알고리즘 (Hybrid GA)

  • 실수 코딩 유전 알고리즘 (Real-Coded GA)
실수 유전 알고리즘 (Value GA)


병렬 유전 알고리즘 (Parallel Genetic Algorithm)
  연산의 일부를 다수의 프로세서가 분담하여 동시에 실행하거나, 다수의 프로세서가 각자 직렬 유전 알고리즘을 독립적으로 실행하고 주기적으로 이들간의 정보를 교환하게 되면 효율개선이 가능함



Reference
- 유전 알고리즘과 그 응용(진강규 / 교우사)



저작자 표시 비영리 변경 금지
Creative Commons License
Creative Commons License