An ideal bus route would offer highly predictable inter-bus arrival times to travellers, in particular, overcoming the well-known ‘bus bunching’ phenomenon – “I waited ages then three came together!”. There are many sources of variability in journey times such as traffic conditions, the impact of traffic lights, and interference between buses themselves, e.g., queueing at bus stops, changing lanes, or crossing junctions, however, bus bunching is particularly related to the time taken for passenger boarding and offloading. To address this issue, this project will explore how machine learning, especially reinforcement learning, might be used to schedule bus journeys in order to improve reliability and avoid bunching in a realistic model of an urban environment featuring multi-route bus corridors with shared stops.