A research paper from a senior-level Artificial Intelligence course, proposing a different decomposition of the personnel tour scheduling problem.
The Problem
Personnel tour scheduling is NP-hard: assign people to time slots under constraints on availability, coverage, and sequence. Standard approaches fold resource and time-slot considerations into a single heuristic, which is efficient but leaves the relative weight of each constraint fixed inside that function.
Approach
The method splits that heuristic in two, one scoring which resource to assign and one scoring when, and alternates between them through mutually recursive search (A to B to A). Graph search with depth-limit pruning keeps the expanded solution space from blowing up exponentially.
Trade-offs
Separating the heuristics costs speed against classic combined solutions. What it buys is control: a planner can retune the priority weighting of individual constraints on selected targets, which a single blended heuristic makes nearly impossible. That makes it suited to scheduling where constraint priorities shift by context, where users need to adjust preferences directly, and where an explainable assignment matters more than the fastest possible solve.
Implemented in Python.
