OK, here’s another.
I’m not a railway buff or a model railway fiend but I have always enjoyed travelling on the railway. No that’s not the fact, it’s a bit of flannelly introduction to divert you from the true geekiness of the fact.
The fact is: the final year project I chose for my degree (Computing & IT, Surrey, 1996) was an examination of railway timetabling through modelling and simulation.
I think I’m getting the hang of these random things – they’re things that make me go: “Hang on, is that true or have I just made it up?”, the sorts of things that you have to read a couple of times to be sure you’ve got it right.
Yes, I spent large parts of my final year at University creating a software model that simulated the activity of a railway system. To show my appreciation of the importance of abstraction, I created an algebra of train system elements. The first model was the simplest possible operational railway system. It consisted of two stations, a track, a single train and a single passenger. I constructed a timetable for this system by running a simulation of its activity (the passenger getting on and off, the train running from station to station etc) and thereby constructing a starting schedule, empirically. When I spoke to the people at Railtrack about it as part of my initial research, they said, no, that wasn’t the sort of thing that they did to produce their timetables, though it was a fascinating idea, they simply introduced tweaks to timetables that had “always” existed.
I then added complexity to the model in the form of more stations, longer track (broken down into sections), signalling, more trains, more passengers. I had to deal with the difficulties of shared track, over-crowding, staff rotas etc. Running the simulation produced further timetables. The model was implemented in an object-oriented modelling & simulation package ModSim. It was probably the last time I did any serious coding.
I thought it rocked, most other people though it weird, though I still got my 2:1 Plus ça change…