Technologies: MATLAB, Gurobi:
Skills & Methodologies: Linear Programming, Stakeholder Interaction
GitHub Repository
During my internship my the first step in schedule creation was corresponging with league officials to better understand their unique scheduling requests. I then created a schedule template (explained in GitHub repo). Next, I wrote new classes of constraints, alter existing constraints, and massage the coefficients of the objective function to best model the specific scheduling problem. The optimization model was created in MATLAB before being handed over to Gurobi to be solved on a SGI UV2000 System running Linux. With a typical model consisting of over 10,000 variables and constraints each of these problems were seldom solved to optimality. Rather I typically let the supercomputer churn on the problem for 1-3 days before interrupting the Gurobi solver and extracting the best current solution. The solution comes in the form of a matrix which was then fed into a macro-enabled Excel spreadsheet which generates an aesthetically pleasing calendar schedule. This schedule was then sent to league officials, along with notes from myself detailing the schedule's strengths and weaknesses. A specific schedule variation may give each team an equal number of weekend home games (a desirable characteristic), but require excessive amounts of travel. My job was simply to bring these tradeoffs to the attention of the league official who then made a decision as to which characteristics they wish to prioritize. I then took these new priorities, updated the model and produced another schedule. A single schedule could go through over a dozen iterations before being ultimately approved by the league for use. It was important to manage the league's expectations and emphasize that satisfying all of their preferences is mathematically impossible. Much of my correspondence with league officials involved helping them understand the tradeoffs between their preferences.