2006년의 한 워크숍을 진행하면서
팀을 짜는데, 모든 팀이 비슷한 조건을 갖도록 잔기술을 썼던 적이 있습니다.
기준은 평균 실력, 평균 연령, 성비 같은 것들을 모두 비슷하게 맞추고
가능한 다른 곳에서 온 사람들이 섞이도록 했는데요. 이게 손으로 대충해도 되지만
문제는 신청을 한 분이 모두 오는 게 아니라, 몇몇 분들이 빠지거나 지각해서
미리 팀을 짜도 헛수고라 빨리빨리 모두 고려해서 좋은 팀 구성을 해야해서
자동화를 해야 했습니다.
그래서 당시에는 학교에 사이트 라이선스가 있어서
ILOG OPL로 정수계획(IP)을
했었는데요. 얼마 전에 창준형이 그 소스를 참고하고 싶어 하셔서
찾았는데 소스가 없어졌더군요. 크흐. 그래서 생각난 김에 한 번 오픈소스 선형계획 툴킷인
GLPK용으로 만들어 봤습니다.
예제는 누구나 쉽게 데이터 성질을 해석할 수 있도록(;;) 소녀시대, 브라운 아이드 걸스, 원더걸스를 모아놓고 수학캠프를 하는 것을 가정하고(;;;)
최대한 다른 그룹끼리 섞이게, 팀 간 평균 나이, 수학실력, 성비는 비슷하게 하도록 하는데,
수학실력은 몰라서 관련이 있을리는 만무하지만 epg 스타정보에서 인기순위로 대충 매기고, 성비는 모두 여자라
제 맘대로 다수를 남자로 바꿨습니다. ^.~
자 그러면 시험삼아 예제 데이터를 한 번 해 볼까요! 팀은 6개로 나누는 것으로 하고, 우선 제대로 돌아가는지 보기
위해 멤버 수만 같게 맞추는 걸 조건으로 해 보면 결과가..
팀 | 구성 | 성비(가상) | 평균 나이 | 평균 EPG 인기 |
A | 제시카 써니 티파니 | 1:2 | 21.0 | 4.33 |
B | 가인 제아 선미 | 2:1 | 22.7 | 2.7 |
C | 태연 윤아 예은 | 2:1 | 20.7 | 5.0 |
D | 수영 서현 선예 | 2:1 | 20.0 | 3.0 |
E | 효연 미료 소희 | 2:1 | 22.0 | 3.0 |
F | 유리 나르샤 유빈 | 3:0 | 23.3 | 3.0 |
팀 안의 인원 수만 맞지, 어느 하나도 비슷하게 흩어진 게 없습니다. 특히 B, C팀은 여러모로 차이가 많이 나서 비슷한 팀구성 목표에 맞지 않고요, A팀은 소녀시대만 있죠. 그럼 앞에서 언급한 4가지 조건 모두를 맞춰서 최적화한 결과는.. (120초 제한으로 풀어서 최적해는 아님)
팀 | 구성 | 성비(가상) | 평균 나이 | 평균 EPG 인기 |
A | 제시카 가인 예은 | 2:1 | 21.7 | 3.7 |
B | 태연 서현 유빈 | 2:1 | 20.7 | 3.7 |
C | 티파니 제아 선미 | 2:1 | 22.0 | 3.7 |
D | 유리 나르샤 소희 | 2:1 | 22.0 | 3.3 |
E | 효연 수영 선예 | 2:1 | 20.7 | 3.3 |
F | 써니 윤아 미료 | 2:1 | 22.7 | 3.3 |
그런대로 비슷비슷한 팀들로 구성이 됐습니다~ 재미있는 수학시간이 될 것 같네요. -ㅇ-;
사실 이 문제 같은 경우에는 결정하는 변수가 모두 정수라서 (정수가 적을수록 쉽게 구할 수 있음) 사실 전수조사에 주먹구구 좀 넣어서 돌리는 거나 큰 차이는 안 납니다만.. 그래도 재미로~ ^.^;;
오~~~ 재미있어요~ 🙂
김재우님: ^_^ 감사합니다~
아.. 몇달전에 이런 비슷한 작업했었는데.. 그냥 대충 해버렸다는, 다 읽고보니 학교에서 배운 내용인데.. ㅡㅜ;.. 덕분에 오래된 미심적은 코드를 꺼내보겠네요.. 감사.~
퍼키님의 블로그는 항상 공부거리가 있어서 좋아요..
비슷하지만 사용하기 더 쉬운 lp_solve라는 오픈소스도 있습니다. ^^;
와우, 예제 네이밍에 최고의 점수를 보냅니다!! ^^