work on step 6

This commit is contained in:
SowinskiBraeden committed 2022-04-28 13:06:42 -07:00
1 parent e82b39d0b7
commit dc4b28ae4c
2 files changed
+29 -10

No files matched your search

+28 -8
View File
@@ -176,11 +176,13 @@ def generateScheduleV3(students: list, courses: dict, blockClassLimit: int=40, s
for request in (request for request in student["requests"] if not request["alt"] and request["CrsNo"] not in ["XAT--12A-S", "XAT--12B-S"]):
course = request["CrsNo"]
getAvailableCourse = True
isAlt = False
while getAvailableCourse:
if course in emptyClasses:
# if course exists, get first available class
for cname in emptyClasses[course]:
if cname in selectedCourses:
if isAlt: emptyClasses[course][cname]["expectedLen"] += 1
if len(selectedCourses[cname]["students"]) < emptyClasses[course][cname]["expectedLen"]:
# Class exists with room for student
selectedCourses[cname]["students"].append({
@@ -195,7 +197,8 @@ def generateScheduleV3(students: list, courses: dict, blockClassLimit: int=40, s
if len(alternates) > 0:
# Use alternate
course = alternates[0]["CrsNo"]
alternates.remove(course)
alternates.remove(alternates[0])
isAlt = True
break
else:
# Force break loop, ignore and let an admin
@@ -218,7 +221,8 @@ def generateScheduleV3(students: list, courses: dict, blockClassLimit: int=40, s
if len(alternates) > 0:
# Use alternate
course = alternates[0]["CrsNo"]
alternates.remove(course)
alternates.remove(alternates[0])
isAlt = True
else:
# Force break loop, ignore and let an admin
# handle options to solve for missing class
@@ -333,12 +337,28 @@ def generateScheduleV3(students: list, courses: dict, blockClassLimit: int=40, s
# Step 6 - Evaluate, move students to fix
for student in students:
blocksLen = []
for block in student["schedule"]:
blocksLen.append(len(student["schedule"][block]))
# If there is a cross over...
if len(student["schedule"][block]) > 1:
pass
blocks = [student["schedule"][block] for block in student["schedule"]]
count, conflicts = 0, True
while conflicts:
count = sum(1 for b in blocks if len(b)==1)
print(blocks)
print(count)
if count < student["expectedClasses"]:
# Attempt to fix
index = blocks.index(max(blocks))
for i in range(len(blocks[index])):
break
elif count == student["expectedClasses"]:
conflicts = False
elif count > student["expectedClasses"]:
print("Impossible error")
break
break # for debug
return running
+1 -2
View File
@@ -51,7 +51,6 @@ def getSampleStudents(data_dir: str, log: bool = False) -> list[dict]:
"Description": row["Description"],
"alt": alternate
})
if row["CrsNo"] in ["XAT--12A-S", "XAT--12B-S"]: mockStudents[student["studentIndex"]]["expectedClasses"] -= 1
else:
newStudent = {
"Pupil #": row["Pupil #"],
@@ -76,9 +75,9 @@ def getSampleStudents(data_dir: str, log: bool = False) -> list[dict]:
"remainingAlts": [],
"studentIndex": len(mockStudents)
}
if row["CrsNo"] in ["XAT--12A-S", "XAT--12B-S"]: mockStudents[student["studentIndex"]]["expectedClasses"] -= 1
mockStudents.append(newStudent)
if row["CrsNo"] in ["XAT--12A-S", "XAT--12B-S"]: mockStudents[student["studentIndex"]]["expectedClasses"] -= 1
if log:
with open("./output/students.json", "w") as outfile:
json.dump(mockStudents, outfile, indent=2)