Train driver scheduling is the problem of finding an assignment of drivers to cover all train vehicle work, such that cost is minimized while all constraints are satis¯ed. Relieving of drivers happens mostly at train stops; in many cases the train will stop for several minutes, giving rise to a window of relief opportunities (WRO), but current industry practice is to consider relieving only at the time the train arrives at the station. This thesis studies an extension of the train driver scheduling problem to exploit relieving drivers within WROs at times other than the arrival. While extending the problem in this way may lead to a more expressive model, and better solutions, it also gives rise to problem sizes too large for existing scheduling methods.\ud \ud Two different approaches to solve the problem of driver scheduling with WROs are presented. In the first, relief opportunities inside WROs are evaluated in terms of their role in generating solutions unavailable to the relief-on-arrival formulation. Heuristics based on this evaluation result in instance sizes that are manageable with current generate-and-select (GaS) methods. Experiments produce new best-known solutions for some real-life instances of the problem.\ud \ud The second approach is a hybridized system that generates an initial solution using GaS on a relief-on-arrival formulation, which is fed into a local search method running on a full WRO model. This method is then extended by allowing infeasible solutions to be considered during the search. A novel way of costing infeasible solutions is introduced, where the cost of an infeasible solution is derived from a repaired, feasible version of that solution. This strategy is embedded in a local search framework that alternates between exploration of feasible and infeasible regions, where infeasibility arises from complex moves that remove undesirable structural features in the current feasible solution.\u
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.