Graduate Visit Scheduler
Mixed integer optimization-based scheduler for visitor-faculty meetings at department recruitment events. Created by Alex Dowling and Jeff Kantor at the University of Notre Dame.
Motivation
Many graduate programs host recruitment visits where prospective students meet faculty one-on-one or in small groups. Building schedules by hand is difficult because preferences, availability, group limits, room/building constraints, and break/travel windows all interact.
This project packages the scheduling workflow used for graduate recruitment at Notre Dame CBE as an open-source Python tool. Under the hood, it builds and solves a mixed-integer linear program (MILP) in Pyomo.
Workflow
The scheduler takes three input files:
Faculty catalog YAML (faculty metadata, areas, status, building/room).
Run configuration YAML (building slots, break slots, availability constraints, weights).
Visitor preferences CSV (ranked faculty choices and research area interests).
Outputs include:
Optimized visitor-faculty assignments.
Faculty-view and visitor-view schedule plots.
Optional DOCX exports of individualized visitor schedules.
Scheduling Example
The documentation includes a realistic worked example with 10 visitors, 6 faculty, two buildings (ABC and XYZ), three topic areas (Energy, Bio, Theory), and several faculty scheduling conflicts.
Visitor-view schedule:

Faculty-view schedule:

How to interpret these schedules:
ABCandXYZare building abbreviations from the run config. The box color (blue versus green) also indicates the building.In visitor-view plots, labels are
Faculty (Building)for multi-building schedules and justFacultyfor single-building schedules. Blank slots indicate breaks or travel windows.In faculty-view plots, the number in parentheses next to each faculty name is that faculty member’s total number of scheduled meetings. Single-building schedules omit the redundant building name.
Full setup, model details, and solver outputs are documented in Quickstart and Mathematical Formulation.
Contents
- Installation
- Quickstart
- Building Movement and Staggered Starts
- Advanced Customization
- API Reference
SchedulerModeMovementPolicySolverFacultyStatusSolutionResultSolutionSetcompute_min_travel_lags()load_faculty_catalog()load_run_config()build_times_by_building()scheduler_from_configs()export_visitor_docx()- Preferred Single-Solution Workflow
- Visitor-Specific Hard Constraints
- Top-N Review Helper
- Core Model API
- Config API
- Export API
- Data API
- Mathematical Formulation
- Releasing to PyPI