satisfaculty¶
Are you a faculty member or administrator trying to create a schedule that obeys tricky constraints and satisfies many objectives? Satisfaculty can help!
satisfaculty is a python package that uses lexicographic mixed-integer linear programming to create academic schedules like the one below:

Installation¶
pip install satisfaculty
Quick Start¶
from satisfaculty import *
scheduler = InstructorScheduler()
scheduler.load_rooms('rooms.csv')
scheduler.load_courses('courses.csv')
scheduler.load_time_slots('time_slots.csv')
# Add constraints (required for a valid schedule)
scheduler.add_constraints([
AssignAllCourses(),
NoInstructorOverlap(),
NoRoomOverlap(),
RoomCapacity(),
ForceRooms(), # You can always manually override!
ForceTimeSlots()
])
objectives = [
MinimizeMinutesAfter('17:00'),
MinimizeClassesBefore("9:00"),
]
scheduler.lexicographic_optimize(objectives)
scheduler.visualize_schedule()
This will output the schedule above.
Example¶
Example data files and a script are available in the example/ directory of the repository.