Skip to content

gautamiedara/Scheduling_Optimization_Using_Gurobi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

NFL Scheduling Optimization Problem for a specific team "Seattles Seahawks" using gurobi

Introduction

The NFL’s league structure is like that of the NHL – the league is split into two conferences: American Football League Conference (AFC) and National Football League Conference (NFC), each of which is split into four divisions (North, South, East, West). Each division has four teams, with a total of 32 franchises in the NFL. The Seattle Seahawks belongs to the NFC West. Each year, there is a 4-week preseason, an 18-week season, followed by the playoffs. Creating the schedule for each team in the 18-week season is a large, complex, and interesting problem. According to NFL.com, it is “one of the hardest and most scrutinized scheduling problems in existence”. One reason for this is that there are around a quadrillion game combination (Amazon, 2021), and the number of possibilities makes the problem computationally intensive. In fact, it takes 12 weeks for the NFL to run this optimization every year using several computers. Additionally, there are thousands of constraints. For example, regulating stadium availability, travel considerations, competitive equity, and internal rules about divisional structure can require formulating hundreds of thousands of constraints and bringing in many sources of data. Additionally, there are many options of objective functions to optimize. Different formulations could be made to maximize value based on viewership, time slot advertisement cost, competitive equity (based on previous results/rankings), minimize travel costs, and more. In practice, the NFL uses optimization to create several viable schedules and manually selects from the generated options. Our team was interested in applications of optimization to scheduling, and the unique demands of this use case intrigued us. Due to the computational, data gathering, and problem size requirements of scheduling for all 32 teams, to make our project viable in the given time, we have limited the scope to schedule for one team: the Seattle Seahawks. Our goal is to research the complex rules used by the NFL and translate them into constraints, and experiment with different formulations using various objective functions. Rather than generating several viable solutions, we aim to generate one schedule that lists which team the Seahawks face each week, which day of the week they play on each week, which of the 18 weeks they will take off as a bye-week, and more.

Problem Statement

Some of the scheduling problems we have seen in class apply integer programming to determine the schedule. The way we approached the design of this schedule applied mixed-integer programming, using a combination of both binary and integer variables. Our goal was to try and incorporate as many actual constraints the NFL experiences as possible to demonstrate the feasibility of applying a mixed integer programming problem. Granted, the design we have used does not allow for certain constraints regarding specific home and away game rules that must be respected during the NFL regular season, and therefore were left out of this project. However, it is import to keep in mind these rules for future iterations and design improvements of this project.

The problem consists of a total of 716 decision variables and 205 constraints. For us to generate a schedule that has 17 games, we have set our objective function to maximize the sum of all days of the week for each week and applied a strict constraint that forces this sum to be equal to 17. Since we have this constraint, we could have also chosen to minimize the objective function; there is no reason why one should be chosen over the other. However, there is a way in Gurobi to set this objective function to any random number, since the end goal is to generate a schedule that meets all the constraints.

NOTE :

Decision Variables, Objective function, Constraints are decribed in the python notebook.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published