ver2 업데이트 내역
1. 업무강도 누적 기록
2. 개인별 감독 시간표 조회
ver3 업데이트 내역
1. 보직수가 5개 이상일 때 오류 수정
2. 개인별 시간표 PDF 저장기능
3. 배정불가 고사장 관련 오류 수정
4. 감독배정이 완료된 경우에도 [감독배정시작] 버튼을 누르면
기존 배정을 삭제 하고 새로 배정이 되도록 함.
5. [감독배정초기화] 버튼을 눌러도 기족의 배정불가 표시 "x" 는 유지되도록함.
앞으로 업데이트 계획
1. 특정교사를 특정시간 특정보직으로 고정하기
파일다운로드
[기존파일]
[최신파일]
신규교사 시절 '남궁고사' 라는 유치한 이름의 프로그램을 만들었습니다. 지금 돌아봐도 고사 감독을 편성하는 것은 쉽지 않은 알고리즘인데 무턱대고 만든 프로그램이라 부족한 점이 많았습니다. 업무를 위해 만든 제 첫 프로그램이라 애착도 많이 가고 언젠가 개선해야지 하는 마음은 먹고 있었는데 어느 덧 만 10년이란 세월이 흘렀습니다. 시간 참 빠릅니다.
'남궁고사' 10 주년을 맞이하여 프로그램을 현재 학교 시스템에 맞게 전면 수정했습니다. 고사 기간 중에도 여러 업무가 있기에 이를 고려하여 고사 기간 중 선생님들의 업무가 고르게 배정되도록 했습니다.
처음에는 '(구버전)남궁고사' 의 코드를 조금만 수정해 볼까 생각했었는데 지금 보니 너무나 엉망진창인 코드들이라 완전 제로베이스에서 만들기로 했습니다. 시간표를 배정하는 작업은 연립방정식의 해를 구해가는 과정입니다. 모든 해의 가능성을 탐색해 나가는 과정은 보통 2의 800제곱 (약241자리의 수, 1억이 9자리의 수니 엄청나게 큰수입니다.) 가지의 경우의 수가 나오기 때문에 전체의 해를 탐색해서 최적의 경우를 산출하는 것은 불가능합니다.
그래서 효율적으로 해를 탐색해가는 알고리즘을 생각해야 하는데 이런 특수한 조건을 만족하는 해를 구할 수 있는 여러 라이브러리들이 이미 많이 공개되어 있습니다. 그 중 하나가 구글에서 개발한 ortools 라이브러리입니다. 그래서 이 라이브러리를 사용해서 파이썬으로 프로그램을 만들어 볼까 했는데 어떤 과정을 거쳐서 해를 찾아가는지에 대한 알고리즘을 알 수 없는채 결과 값만 구한다는 것이 싫어 직접 만들어 봤습니다. (파이썬을 잘 못다루는 이유도 있었습니다.)
해를 탐색하기 위한 알고리즘의 주요 아이디어는 아래와 같습니다.
예를 들어 5명의 교사(남궁연, 노세봉, 초록빠 ,우림해,영민해) 가 있다고 합시다.
여기서 A부터 N까지의 변수는 0(감독배정안함) 또는 1(감독배정)이 될 수 있지만 각각의 변수들이 1이 될 수 있는 확률은 다릅니다. 그래서 1이될 확률이 높은 변수부터 차례로 시간을 배정하도록 했습니다. 무작위성을 이용했던 (구버전)남궁고사에 비해 굉장히 효율적으로 해를 찾아갑니다.
10년 전 프로그램에 비해 추가한 기능은 정감독 부감독외에도 여러 보직을 고려할 수 있도록 한 점입니다. 보직별로 업무강도를 매칭해서 선생님들의 고사기간 중의 감독 업무량이 적절히 분산될 수 있도록 했습니다.
도움말
1. 기본정보 입력
[주의] 고사날짜는 날짜양식으로 ( ex. 4/24 ) 입력해야 합니다.
[주의] 고사실명에는 대괄호 특수문자([,]) 가 들어가면 안됩니다. (ex 복도[앞] )
ver2 부터는 감독교사정보에 이전시험까지의 누적 업무강도를 입력할 수 있습니다. 감독교사 편성시 이 업무강도를 고려하여 동일한 조건이라면 누적 업무강도가 낮은 선생님께 이번 시험의 업무강도가 높은 보직을 배정합니다.
이를 아래와 같이 응용해 볼 수도 있습니다.
예를들어 학교에 '케빈더브라위너' 라는 원어민선생님이 계시고 정감독에 배정할 수 없는 경우라면 아래와 같이 누적 업무강도를 높게 설정해 두면 낮은 업무강도의 보직이 배정됩니다.
2. 필요 교사수 입력
배정감독수정보시트 에 필요한 감독수를 넣습니다. 보통 1을 넣을 것으로 예상되는데, 필요하면 2 이상 배정해도 됩니다.
3. 못들어가는 시간 및 고사실 입력
못들어가는 고사실은 x 로 입력합니다.
혹시 꼭 배정해야하는 시간이 있다면 1을 미리 입력해 놓아도 됩니다.
** 미배정이 생기지 않도록 프로그램이 배정을 자동조절하는데 이 과정에서 1로 미리 입력했더라도 감독 배정이 변경될 수 있습니다. 이 부분 수정하도록 하겠습니다. 오류 알려주신 박준암 선생님 감사합니다
4. 배정할 시간 입력
배정할시간은 직접 입력할 수도 있고, [자동으로 배정할 시간 채우기] 버튼을 눌러 균등하게 배정할 수도 있습니다.
5. 감독배정
감독배정 시작 버튼을 누르면 자동으로 감독, 보직, 고사실을 배정합니다.
감독배정이 끝난 후, 교체가 필요하면 교체할 셀을 차례로 선택(ctrl 누른 상태로 차례로 클릭) 한 후 변경버튼(단축키 shift + ctrl + c) 을 누르면 두 셀의 값이 교체됩니다.
6. 감독표 작성
마지막으로 [감독표 작성] 버튼을 누르면 감독표가 완성됩니다.
개인시간표 출력가능하도록 했습니다.
전교사의 개인별 시간표를 일괄 출력할 수 있습니다.
고사관련글
https://namgungyeon.tistory.com/73
https://namgungyeon.tistory.com/28
수능 감독 교사 자동편성 프로그램 (tistory.com)
'시험감독편성프로그램(남궁고사)' 카테고리의 다른 글
남궁고사 - 중 고등학교 시험 감독표 자동 편성 프로그램 (30) | 2022.03.15 |
---|