As part of a personal project, I developed a simple excel-based tool that computes statistics for an M/M/c queue. While there exist a ton of excel-based queuing models out there, I found that not many had the ability to handle computation when the number of servers was very large. The tool I developed uses a recursion-based formula using blocking probabilities.
Tool download link: mmcQueue.xlsm
Meanwhile, If you’d like to be able to play with Queuing theory online, here’s a neat website that lets you do that. MMC Online Calculator
Python is arguably one of the best tools out there for programming. Its clean syntax and expansive library makes it a joy for us pseudo-programmers (what I call Operations Research students).
If you’re an absolute beginner to python, I recommend Codeacademy.
Here’s a beginner’s tutorial to installing Python on your machine.
Once you’ve installed python and have got the hang of basic syntaxes, I’d recommend that you understand how packages work. If you’re attempting to write a piece of code to perform a complicated function, chances are that there exists an in-built function within an existing Python package that does this for you. To this end, familiarize yourself with pip. Here’s a neat introduction to pip. Once you have pip, installing any package becomes an extremely simple task and you’ll be well on your way towards programming glory.
If you work in a science-y circle, chances are that you’ve heard about Julia. If you haven’t, well now is as good a time as any to learn about it. In the words of the creators of Julia,
We want a language that’s open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that’s homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled.
Given all of this awesomeness, imagine taking it one step further from an Operations Research point of view. JuMP (“Julia for Mathematical Programming”) is a project by Miles Lubin and Ian Dunning at MIT to create a common tool for formulating optimization problems. JuMP is still in developmental stages, but is already bringing a refreshing change in the way Optimization Code is written – with a single formulation, a problem can be tested on a variety of different solving tools. While JuMP is not the first optimization tool to support multiple solvers, it is definitely one of the most actively maintained and easiest to use.
Here’s an introductory document to Julia that I wrote (in collaboration with a classmate as a part of a class project): Intro to Julia
Once you’ve got that done, go right ahead and get started with JuMP!
I come across people talking about CPLEX so often. I almost always make it a point to stop and tell them about Gurobi’s existence. Gurobi was developed by people who worked at creating CPLEX and as a result, performs as well, if not better, as CPLEX. The main clincher for me with Gurobi is the fact that you don’t have to jump through hoops to obtain a licence like you do for CPLEX. Gurobi is free for academic-use and works extremely well with Python, Java and Julia. Gurobi also has arguably cleaner syntax, especially when it comes to building constraints that makes our life easier.
Take a moment, download and install Gurobi: Link