operator01.jpg

안녕하세요? 잘생긴 교주 LGS입니다. =(=^ㅅ^=)=
지난 시간에 Customized GA를 가지고 Sales man을 비키니의 여인과 함께 행복의 나라로 보내주었습니다. ^^
이번 시간에도 GA(Genetic Algorithm 유전자 알고리즘)을 가지고 재밌게 놀아 봅시다요.

자~ 아래 그림을 보시고 이상한 점을 찾아보세요~ 
(노란색 옷의 사람과 파란색 옷의 사람은 서로 전혀 모르는 사이입니다.)

distance.png

파란색 옷의 남자가 이상한? 녀석이죠? ^^;; 왜 이상한 사람인가요? 
보통의 사람 같으면 노란색 옷의 남자에서 멀찍감치 떨어진 곳에서 볼일을 볼겁니다. 그런데 너란 남자는...

한마디로 개개인마다 자유스럽게 사용할 수 있고 침범 당하고 싶지 않은 정도의 적절한 물리적 공간 혹은 영역을 확보하려는 경향이 있는데
이러한 개인의 물리적 공간 혹은 영역을 유식한 말로 '개인공간'이라 한다 이말입습죠.
그런데 저 파란색 옷의 남자가 '개인공간'을 동의 없이 침범했단 말입니다요.
 
위와 같이 개인간의 거리에 대한 학문을 근접학(proxemics) 이라고 합니다. 
아래 내용은 그냥 참고하시구요~ ^^
① 친밀함의 거리 (Intimate Distance)  :    46cm 이하        가족이나 연인처럼 친밀한 유대 관계가 전제되어야 한다.
② 개인적인 거리 (Personal Distance) :   46cm~122cm    격식과 비격식의 경계지점으로 보는 것이 무난하다.
③ 사회적인 거리 (Social Distance)    :   122cm~366cm   사무적인 대화가 많이 이루어지며,  정중한 격식 및 예의가 요구된다.
④ 공적인 거리 (Public Distance)       :   366cm~762cm   연설이나 강의와 같은 특수한 경우에 한정된다.


자~ 지금부터 여러분은 카페 싸장님이 되어 신규 카페 지점을 오픈해야 한다고 합시다.
신규 지점에는 큰 홀이 하나 있는데 테이블을 어떻게 배치할까가 고민입니다. 
어디서 주워 듣기로는 '개인공간'이란 것이 중요하다던데... 즉 테이블 간의 거리를 최대로 떨어트려 놓고 싶다는 거죠~ (상황 이해가시죠?)
상황을 조금 더 재미있게 만들어 보겠습니다.
홀이 정사각형이 아니라 반지름이 10m인 부채꼴이라고 해보죠~ ^^

 LayoutOptim01.png

최적화 문제이므로 GA를 돌리겠습니다요 o(^o^)o
Fitness function을 어떻게 잡으면 좋을까요? 
각각의 테이블에 대해 [한 테이블에서 가장 가까운 테이블까지의 거리]의 합이 최대가 되게하면 되겠네요.
("되게하면 되겠다"는 말을 보니 학생시절 때 유명하셨던 "디기디기" 교수님이 생각나네요 ^^
 교수님이 항상 말 끝마다 "이렇게 하게 되게 되게  되면은~" 을 붙이셔서 별명이 '디기디기' 교수님이 였어요 =(=^ㅅ^=)= )

단 테이블이 부체꼴 안에 들어가야 되므로 부채꼴 바깥의 녀석들에게는 penalty function을 걸겠습니다.
(즉 테이블의 위치가 부채꼴을 넘어가면 도퇴시킵니다.) 
그럼 Fitness function은 아래처럼 될거구요~ (실행 code는 첨부파일을 참조하세요.)

LayoutOptim03.png

자기자신을 제외하고 가장 가까운 테이블까지의 거리를 참조하기 위해 sort 함수를 적용(오름차순 정렬)한 후 2번째 행을 참조 하였습니다.
원점 (0, 0)에서 테이블까지의 거리가 10이 넘어가면 페널티를 주구요~ ^^
code를 이해하시는데 문제 없으시죠?

직접 돌려봅시다요잉. 예를 들어 Table 16개를 놓아야 한다면 자~ 결과를 보시면~ 짠!!
Table들이 골고루 퍼져있는 것을 확인할 수 있습니다.

LayoutOptim02.png  

대충 위의 그림처럼 Table을 배치하시면 되겠습니다요~ 간단하게 싸장님 고민 해결!! o(^o^)o
(global minimum이 아니라 local minimum 같습니다만)

지금은 단순히 카페의 Table의 위치를 optimization 했지만 원자력 발전소, 쓰레기 매립장의 위치를 선정해야한다면?? ^^
회로기판의 칩의 위치를 선정해야 한다면??
위에서 보셨던 비슷한 알고리즘으로 선정할 수 있지 않겠어요?  헤헤


자~ 오늘은 여기까지!!
다음 시간에 뵙겠습니다~ 뿅!!
profile