New 남궁고사

 신규교사 시절 '남궁고사' 라는 유치한 이름의 프로그램을 만들었습니다. 지금 돌아봐도 고사 감독을 편성하는 것은 쉽지 않은 알고리즘인데 무턱대고 만든 프로그램이라 부족한 점이 많았습니다. 업무를 위해 만든 제 첫 프로그램이라 애착도 많이 가고 언젠가 개선해야지 하는 마음은 먹고 있었는데 어느 덧 만 10년이란 세월이 흘렀습니다. 시간 참 빠릅니다. 

'남궁고사' 10 주년을 맞이하여 프로그램을 현재 학교 시스템에 맞게 전면 수정했습니다. 고사 기간 중에도 여러 업무가 있기에 이를 고려하여 고사 기간 중 선생님들의 업무가 고르게 배정되도록 했습니다.  

10년간의 교직 생활을 돌아보면 참 부끄럽고 후회되는 순간들이 많습니다. 10년후의 저는 지금을 돌아 봤을 때 학생들과 동료 선생님들에게 그리고 스스로에게 조금은 덜 부끄러운 교사가 되고 싶습니다.

처음에는 '(구버전)남궁고사' 의 코드를 조금만 수정해 볼까 생각했었는데 지금 보니 너무나 엉망진창인 코드들이라 완전 제로베이스에서 만들기로 했습니다. 시간표를 배정하는 작업은 연립방정식의 해를 구해가는 과정입니다. 모든 해의 가능성을 탐색해 나가는 과정은 보통 2의 800제곱 (약241자리의 수, 1억이 9자리의 수니 엄청나게 큰수입니다.) 가지의 경우의 수가 나오기 때문에 전체의 해를 탐색해서 최적의 경우를 산출하는 것은 불가능합니다.

그래서 효율적으로 해를 탐색해가는 알고리즘을 생각해야 하는데 이런 특수한 조건을 만족하는 해를 구할 수 있는 여러 라이브러리들이 이미 많이 공개되어 있습니다. 그 중 하나가 구글에서 개발한 ortools 라이브러리입니다. 그래서 이 라이브러리를 사용해서 파이썬으로 프로그램을 만들어 볼까 했는데 어떤 과정을 거쳐서 해를 찾아가는지에 대한 알고리즘을 알 수 없는채 결과 값만 구한다는 것이 싫어 직접 만들어 봤습니다. (파이썬을 잘 못다루는 이유도 있었습니다.)

해를 탐색하기 위한 알고리즘의 주요 아이디어는 아래와 같습니다.
예를 들어 5명의 교사(남궁연, 노세봉, 초록빠 ,우림해,영민해) 가 있다고 합시다.

초록빠는 육아로 바쁘다

여기서 A부터 N까지의 변수는 0(감독배정안함)  또는 1(감독배정)이 될 수 있지만 각각의 변수들이 1이 될 수 있는 확률은 다릅니다. 그래서 1이될 확률이 높은 변수부터 차례로 시간을 배정하도록 했습니다. 이제 굉장히 빠른시간에 해를 찾아냅니다.

10년 전 프로그램에 비해 추가한 기능은 정감독 부감독외에도 여러 보직을 고려할 수 있도록 한 점입니다. 보직별로 업무강도를 매칭해서 선생님들의 고사기간 중의 감독 업무량의 형평성이 있도록 했습니다. 

위 표의 보직명과 업무강도는 수정가능합니다. 그러므로 학교현장 뿐만 아니라 다른 여러 상황에서도 사용할 수 있습니다.





파일다운로드


New남궁고사ver1(배포용).xlsm

1.73MB

도움말
1. 기본정보 입력
날짜는 날짜양식으로 ( ex. 4/24 ) 입력해야 합니다.

2. 필요 교사수 입력
배정감독수정보시트 에 필요한 감독수를 넣습니다. 보통 1을 넣을 것으로 예상되는데, 필요하면 2 이상 배정해도 됩니다.


3. 못들어가는 시간 및 고사실 입력
못들어가는 고사실은 x 로 입력합니다. 혹시 꼭 배정해야하는 시간이 있다면 1을 미리 입력해 놓아도 됩니다.
** 미배정이 생기지 않도록 프로그램이 배정을 자동조절하는데 이 과정에서 1로 미리 입력했더라도 감독 배정이 변경될 수 있습니다. 이 부분 수정하도록 하겠습니다. 오류 알려주신 박준암 선생님 감사합니다

이렇게 하면 '노세봉' 교사는 4월25일 2교시와 3교시는 무조건 감독이 배정됩니다.

4. 배정할 시간 입력

배정할시간은 직접 입력할 수도 있고, [자동으로 배정할 시간 채우기] 버튼을 눌러 균등하게 배정할 수도 있습니다.

배정할시간합과 총필요시간합이 일치해야 됩니다.

5. 감독배정
감독배정 시작 버튼을 누르면 자동으로 감독, 보직, 고사실을 배정합니다.

제가 만들긴 했지만 훌륭합니다.


감독배정이 끝난 후, 교체가 필요하면 교체할 셀을 차례로 선택(ctrl 누른 상태로 차례로 클릭) 한 후 변경버튼(단축키  shift + ctrl + c) 을 누르면 두 셀의 값이 교체됩니다.

단축키도 있어요

6. 감독표 작성
마지막으로 [감독표 작성] 버튼을 누르면 감독표가 완성됩니다.


기타 고사관련글
https://namgungyeon.tistory.com/28


고등학교 고사 개선 프로그램 (응시번호, 고사장 출석부, 개인 시험 시간표 자동 제작)

최신 파일 다운로드 https://namgungyeon.tistory.com/category/%EA%B3%A0%EC%82%AC%EA%B0%9C%EC%84%A0%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8 2015 교육과정 이후 그리고 고교학점제 체제에서는 학생들의 반 편성을 예전 처럼 단순

namgungyeon.tistory.com


댓글

이 블로그의 인기 게시물

시험 감독 시간표를 자동으로 짜는 프로그램

고등학교 반배정 프로그램 (feat. 고교학점제)