Mathematical Formulation¶
Satisfaculty solves a course scheduling problem using Integer Linear Programming (ILP).
Decision Variables¶
For each combination of course \(c\), room \(r\), and time slot \(t\), we define a binary decision variable:
where \(x_{crt} = 1\) if course \(c\) is assigned to room \(r\) at time slot \(t\).
Constraints¶
Assign All Courses¶
Each course must be assigned exactly once:
No Instructor Overlap¶
An instructor cannot teach two courses at the same time. For each instructor \(i\) and time slot \(t\):
where \(C_i\) is the set of courses taught by instructor \(i\).
No Room Overlap¶
A room cannot host two courses at the same time:
Room Capacity¶
Courses can only be assigned to rooms with sufficient capacity:
Lexicographic Optimization¶
Satisfaculty uses lexicographic optimization to handle multiple objectives in priority order. Given objectives \(f_1, f_2, \ldots, f_n\), the algorithm:
Optimizes \(f_1\) to find optimal value \(f_1^*\)
Adds constraint \(f_1 = f_1^*\) (or within tolerance)
Optimizes \(f_2\) subject to the \(f_1\) constraint
Repeats for remaining objectives
This ensures higher-priority objectives are never compromised for lower-priority ones.