From 5a45bb0a7fbd231b0c7f8535dd02d989afbe3167 Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Tue, 1 Mar 2022 20:44:21 -0800 Subject: [PATCH] update v1 teachers --- test/courses.py | 214 +++++++++++++++++++++++++++--------------------- test/test.js | 24 +++--- test/tinker.py | 45 ++++++---- 3 files changed, 162 insertions(+), 121 deletions(-) diff --git a/test/courses.py b/test/courses.py index 620f972..b687160 100644 --- a/test/courses.py +++ b/test/courses.py @@ -1,195 +1,219 @@ courses = { - "cl1": { - "name": "class1", - "code": "cl1", + "P-CL": { + "name": "Pre-Calculus", + "code": "P-CL", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl2": { - "name": "class2", - "code": "cl2", + "CL": { + "name": "Calculus", + "code": "CL", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl3": { - "name": "class3", - "code": "cl3", + "EN-CW": { + "name": "English: Creative Writing", + "code": "EN-CW", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl4": { - "name": "class4", - "code": "cl4", + "EN-LS": { + "name": "English: Literary Studies", + "code": "EN-LS", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl5": { - "name": "class5", - "code": "cl5", + "EN-C": { + "name": "English: Compisition", + "code": "EN-C", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl6": { - "name": "class6", - "code": "cl6", + "S-J": { + "name": "Social Justice", + "code": "S-J", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl7": { - "name": "class7", - "code": "cl7", + "S-H": { + "name": "History", + "code": "S-H", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl8": { - "name": "class8", - "code": "cl8", + "S-P": { + "name": "Psychology", + "code": "S-P", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl9": { - "name": "class9", - "code": "cl9", + "SC-P": { + "name": "Physics", + "code": "SC-P", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl10": { - "name": "class10", - "code": "cl10", + "SC-B": { + "name": "Biology", + "code": "SC-B", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl11": { - "name": "class11", - "code": "cl11", + "SC-C": { + "name": "Chemistry", + "code": "SC-C", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl12": { - "name": "class12", + "SC-ES": { + "name": "SC-ES", "code": "cl12", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl13": { - "name": "class13", - "code": "cl13", + "M": { + "name": "Music", + "code": "Ms", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl14": { - "name": "class14", - "code": "cl14", + "CH": { + "name": "Choir", + "code": "CH", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl15": { - "name": "class15", - "code": "cl15", + "DN": { + "name": "Dance", + "code": "DN", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl16": { - "name": "class16", - "code": "cl16", + "CS": { + "name": "Computer Science", + "code": "CS", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl17": { - "name": "class17", - "code": "cl17", + "GD": { + "name": "Game Development", + "code": "GD", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl18": { - "name": "class18", - "code": "cl18", + "WW": { + "name": "Woodwork", + "code": "WW", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl19": { - "name": "class19", - "code": "cl19", + "MW": { + "name": "MetwalWork", + "code": "MW", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl20": { - "name": "class20", - "code": "cl20", + "M-WP": { + "name": "Math: Workplace", + "code": "M-WP", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl21": { - "name": "class21", - "code": "cl21", + "M-F": { + "name": "Math: Foundations", + "code": "M-F", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl22": { - "name": "class22", - "code": "cl22", + "BN": { + "name": "Band", + "code": "BN", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl23": { - "name": "class23", - "code": "cl23", + "TH": { + "name": "Theatre", + "code": "TH", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 }, - "cl24": { - "name": "class24", - "code": "cl24", + "VD-P": { + "name": "Video Production", + "code": "VD-P", "credits": 4, "gradelevel": 11, "totalrequests": 0, - "studentindexes": [] + "studentindexes": [], + "teachers": 3 } } diff --git a/test/test.js b/test/test.js index f672ec4..dffad42 100644 --- a/test/test.js +++ b/test/test.js @@ -4,18 +4,18 @@ let students = require('./students.json'); // console.table(schedule) // Display first semester -console.table(schedule.block1) -console.table(schedule.block2) -console.table(schedule.block3) -console.table(schedule.block4) +// console.table(schedule.block1) +// console.table(schedule.block2) +// console.table(schedule.block3) +// console.table(schedule.block4) -// Display second semester -console.table(schedule.block5) -console.table(schedule.block6) -console.table(schedule.block7) -console.table(schedule.block8) +// // Display second semester +// console.table(schedule.block5) +// console.table(schedule.block6) +// console.table(schedule.block7) +// console.table(schedule.block8) // Display each students schedule -// for (let i = 0; i < students.length; i++) { -// console.table(students[i].schedule) -// } +for (let i = 0; i < students.length; i++) { + console.table(students[i].schedule) +} diff --git a/test/tinker.py b/test/tinker.py index c6209b9..b29aa55 100644 --- a/test/tinker.py +++ b/test/tinker.py @@ -50,7 +50,7 @@ running: { # Error 2: No more room in schedule for another class # 400 by default -studentsNum = 1000 +studentsNum = 500 err1, err2, = 0,0 minReq, classCap, blockClassLimit = 18, 30, 18 @@ -88,14 +88,16 @@ def generateScheduleV1(): # If class is allowed to run if currentCourse in activeCourses: blockIndex = 1 + courseNum = 1 getFreeBlock = True while getFreeBlock: block = f"block{blockIndex}" - if currentCourse in running[block]: + cname = f"{courses[currentCourse]['name']}-{courseNum}" + if cname in running[block]: if student["schedule"][block] == "": # Add student to class - if len(running[block][currentCourse]["students"]) < classCap: - running[block][currentCourse]["students"].append(student["name"]) - student["schedule"][block] = courses[currentCourse]["name"] + if len(running[block][cname]["students"]) < classCap: + running[block][cname]["students"].append(student["name"]) + student["schedule"][block] = cname getFreeBlock = False else: # Find next available class or create new one if blockIndex == 8: # No available classes @@ -104,7 +106,6 @@ def generateScheduleV1(): # How to solve? # print(f"\nError 1: No more available classes for student {student['name']}") - err1 += 1 generate = False else: if alternateIndex <= (len(student["requests"]) - 1): @@ -115,7 +116,12 @@ def generateScheduleV1(): err1 += 1 generate = False getFreeBlock = False - else: blockIndex += 1 + else: + if (courses[currentCourse]["teachers"] - courseNum) > 0: + courseNum += 1 + else: + blockIndex += 1 + courseNum = 1 else: if blockIndex == 8: # No available classes if len(student["requests"]) == 8: @@ -134,7 +140,9 @@ def generateScheduleV1(): err1 += 1 generate = False getFreeBlock = False - else: blockIndex += 1 + else: + blockIndex += 1 + courseNum = 1 else: if blockIndex == 8: # Class does not exists @@ -142,28 +150,37 @@ def generateScheduleV1(): blockNum = 1 while True: newBlock = f"block{blockNum}" - if currentCourse not in running[newBlock] and len(running[newBlock]) < blockClassLimit: + if cname not in running[newBlock] and len(running[newBlock]) < blockClassLimit: if student["schedule"][newBlock] == "": # Add student to class - running[newBlock][currentCourse] = { + running[newBlock][cname] = { "name": courses[currentCourse]["name"], "students": [student["name"]] } - student["schedule"][newBlock] = courses[currentCourse]["name"] + student["schedule"][newBlock] = cname break else: if blockNum == 8: # All student classes have been filled break - else: blockNum += 1 + else: + blockNum += 1 + courseNum = 1 else: if blockNum == 8: # No room in school for more classes # print(f"\nError 2: No more room in school for another class") err2 += 1 break - else: blockNum += 1 + else: + if (courses[currentCourse]["teachers"] - courseNum) > 0: + courseNum += 1 + else: + blockNum += 1 + courseNum = 1 break - else: blockIndex += 1 + else: + blockIndex += 1 + courseNum = 1 break elif currentCourse not in activeCourses: if len(student["requests"]) == 8: