Fill priority: Each filled section gets a 1000× priority bonus, ensuring all sections are assigned before preferences are optimized.
Peak slot limits: No more than 15% of sections in any single peak time slot, and no more than 65% in peak hours overall.
Worst-off guarantee: The optimizer lifts the worst-off instructor's average satisfaction using a configurable weight.
Time compensation: Instructors with below-average course scores get a boost to their time-slot preference weight.
Locked edits: Manual assignment changes are preserved when re-running the optimizer.
Three phases: Phase 1 assigns courses, Phase 2 assigns time slots, Phase 3 assigns rooms.