Friday, May 15, 2009

Starting up in Operational Research: What Programming Languages Should I Learn?

A ThinkOR blog reader asked me some questions about getting started as an Operational Research professional. The reader is in his final year studying Mathematical Statistics, and is preparing to get into an OR master's degree upon graduation. I think these might be some common questions about starting up in OR, so I'm publishing my answers here as a mini-series on "Starting up in Operational Research".

Question 1: What programming languages should I learn?
"I'm a bit interested in what programs and programming languages you would recommend to learn? May seem like a silly question, but since we use a few different programs in university, I'd like to focus on the programming languages which are most widely used/accepted. Our main tool at the moment is R, with some Matlab thrown in for Econometrics and larger matrix calculations. Would you consider R a well used tool in OR or is it mainly used in academics but not in real life?"

I think it is not so important as to what language to learn, but to learn the basics of programming well, so that you can pick up any language easily in the future.

The reason I say that is because:
  1. The OR application and software world is very fragmented. There are many different applications, and they seem to like having their own proprietary languages. However, most of them are developing a Graphical User Interface (GUI) for non-programmers, since they are often aimed at business users (that's where the money is). That said, if you want to fully utilize a software's potential, especially in the case of simulation software, you'd better learn its own language, which is usually proprietary. This would require you to pick up a new language.
  2. Most of these proprietary languages are quite low level languages. Therefore, it is important to have a solid foundation in programming. It will help you understand the language and learn it fast.
My undergraduate degree was in Computer Science (CS). I learned quite a few different languages, but did not really get to use them in Operational Research. However, my CS education helped me to pick up the programming languages needed in OR very quickly. Here I will list the main languages that I encountered in OR:
  • VBA
  • SAS
  • R
VBA is the number one, since a lot of models are done in Excel. SAS is probably the most used in business and a required skill by many employers. Matlab is more for researchers, I believe. I haven't seen it used in any commercial setting so far. I do believe R is used in some commercial settings though.

Note: needless to say, these are only my thoughts on the topic. Please feel free to chime in.

Sunday, May 3, 2009

London King's Cross train station platform utilization

In a previous article, Maximizing airport runway & boarding gates utilization at London Heathrow, I talked about the assignment of boarding gates at London Heathrow Terminal 5. They are not assigned until about 40 minutes before departure. I suppose it would only be logical to find the similar approach used on train station platform assignments in London's King's Cross rail station.



As can be seen on the picture above, platforms are assigned only about 15-20 minutes before the train's departure time. They appear to be using a hot platforming system similar to the gates at T5. This has it's advantages and disadvantages though.

It creates a commotion in front of the information board once the platform is finally assigned. Streams of people start to pour away from the information board, which is in the centre of the rail station, making foot traffic rather chaotic. For one train we took, it was so chaotic that the train narrowly managed to depart on time, and it seems likely that delays are sometimes caused. Also, there is always a huge crowd of people waiting in front of the info board at any time, with their pieces of luggage, which again makes foot traffic congested.

Then again, as the crowd of Friday-afternoon-bank-holiday-Monday-weekend travelers pushed to board the KGX to Leeds train, we were met by a team of 8+ ticket checkers who processed us efficiently. These resources only had to be assigned for the 15 minute window between platform announcement and departure. Another possible advantage might be the ability to allow travelers to depart incoming trains before being crowded by outgoing passengers. This suggests the possibility that the platform is known but not announced in order to manage foot traffic, though they are having mixed results given the disadvantages listed above.