|
| 1 | +# Exam Center Randomization script |
| 2 | +The goal of this script is to assign exam centers to students. |
| 3 | + |
| 4 | +## Steps |
| 5 | +1. Prepare input files in specified format |
| 6 | +2. Run program and re run if - |
| 7 | + * Any school has students that have not been assigned a center. |
| 8 | + * Distribution across centers is uneven |
| 9 | +3. Perform sanity check of distributed centers |
| 10 | + |
| 11 | +## Allocation Guidelines |
| 12 | + |
| 13 | +- हरेक विद्यालयमा परिक्षार्थीको संख्या र परीक्षा केन्द्रको सिट संख्या लिने |
| 14 | +- हरेक विद्यालय र केन्द्रको गुगल म्यापबाट latitude, longitude निकाली दुरी निकाल्ने आधारको रुपमा प्रयोग गर्ने |
| 15 | +- विद्यालयबाट नजिक पर्ने केन्द्रलाई प्राथमिकता दिनुपर्ने |
| 16 | +- एक विद्यालयको परिक्षार्थी संख्या हेरी सकभर १००, २०० भन्दा बढी परीक्षार्थी एकै केन्द्रमा नपर्ने गरी बाँढ्न पर्ने |
| 17 | +- आफ्नै विद्यालयमा केन्द्र पार्न नहुने |
| 18 | +- दुई विद्यालयका परीक्षार्थीको केन्द्र एक अर्कामा पर्न नहुने, अर्थात् कुनै विद्यालयका परीक्षार्थीको केन्द्र परेको विद्यालयका परीक्षार्थीहरूको केन्द्र अघिल्लो विद्यालयमा पार्न नहुने । |
| 19 | +- एकै स्वामित्व / व्यवस्थापनको भनी पहिचान भएका केन्द्रमा पार्न नहुने |
| 20 | +- विगतमा कुनै विद्यालयको कुनै केन्द्रमा पार्दा समस्या देखिएकोमा केन्द्र नदोहोऱ्याउन नहुने |
| 21 | +- प्रत्येक पटक केन्द्र तोक्ने प्रोग्राम चलाउदा फरक फरक नतिजा आउने गरी ऱ्यान्डमाइज भएको हुनु पर्ने |
| 22 | + |
| 23 | +## Parameters |
| 24 | + |
| 25 | +PREF_DISTANCE_THRESHOLD = 2 # Preferred threshold distance in kilometers, ceters should be within this distance from school if possible |
| 26 | + |
| 27 | +ABS_DISTANCE_THRESHOLD = 7 # Absolute threshold distance in kilometers |
| 28 | + |
| 29 | +MIN_STUDENT_IN_CENTER = 10 # minimum number of students from a school to be assigned to a center under normal circumstances |
| 30 | + |
| 31 | +STRETCH_CAPACITY_FACTOR = 0.02 # how much can center capacity be streched if need arises |
| 32 | + |
| 33 | +PREF_CUTOFF = -4 # Do not allocate students with pref score less than cutoff |
| 34 | + |
| 35 | + |
| 36 | +## Input files |
| 37 | +Files should be tab delimited |
| 38 | + |
| 39 | +### school.tsv |
| 40 | +One entry per school. |
| 41 | + |
| 42 | + scode count name-address lat long |
| 43 | + 27101 1776 काठमाण्डौ मोडेल मा.वि., वागवजार 27.7067463495 85.3188922809 |
| 44 | + 27007 1700 ट्रिनीटी इन्टरनेशनल मा.वि., डिल्लीबजार 27.7038931952 85.3251961353 |
| 45 | + 27045 1278 साउथ वेस्टर्न स्टेट मा.वि., बसुन्धारा 27.7396600173 85.3254532539 |
| 46 | + 27127 1210 क्यापिटल मा.वि., कोटेश्वर 27.673541693 85.3449013829 |
| 47 | + |
| 48 | +### centers.tsv |
| 49 | +One entry per center. cscode should match scode |
| 50 | + |
| 51 | + cscode capacity name address नाम ठेगाना lat long |
| 52 | + 27003 500 NATIONAL SCHOOL OF SCIENCES SECONDARY SCHOOL LAINCHAUR नेशनल स्कुल अफ साइन्सेस मा.वि लैनचौर 27.71933026 85.31413793 |
| 53 | + 27051 500 UNIGLOBE MA VI KAMALADI युनिग्लोब मा.वि कमलादी 27.70792875 85.32068522 |
| 54 | + 27045 568 SOUTH WESTERN ACADEMY SECONDARY SCHOOL BASUNDHARA साउथ वेर्ष्टन एकेडेमी मा.वि. बसुन्धरा 27.74212647 85.33392421 |
| 55 | + |
| 56 | +### prefs.tsv |
| 57 | +Prioritize or deprioritize school and center pair. -ve pref score depriotizes. if pref score is less than `PREF_CUTOFF` center will be excluded from consideration |
| 58 | + |
| 59 | + scode cscode pref reason |
| 60 | + 27xxx 27yyy -5 same management |
| 61 | + 27yyy 27xxx -5 same management |
| 62 | + 27aaa 27bbb -1 last year's center |
| 63 | + |
| 64 | + |
| 65 | +## Output |
| 66 | +Console output contains information about center allocation run. |
| 67 | + |
| 68 | + remaining capacity at center (-ve if stretched capacity is used) |
| 69 | + | |
| 70 | + (-11, '27022'), (-11, '27045'), (-11, '27057') |
| 71 | + | |
| 72 | + center code |
| 73 | + |
| 74 | + Total remaining capacity across all centers: 190 |
| 75 | + Students not assigned: 29 |
| 76 | + |
0 commit comments