LineupLab

Authors
Published

December 9, 2025

Project Overview

For our final Computing II project, our team developed NBA Lineup Lab, a decision-support web application designed to help users construct optimal five-player basketball lineups while balancing performance and salary constraints. Using historical NBA player performance data, the system allows users to select, filter, and optimize player lineups under a fixed salary cap.

The purpose of this project was to demonstrate how optimization modeling and interactive software tools can support real-world sports decision-making. Instead of relying on manual trial-and-error when selecting lineups, the system applies mathematical optimization to recommend the strongest possible team given financial limitations.

Industrial Engineering Context

This project is grounded in Industrial Engineering and Operations Research optimization principles, specifically resource allocation under constraints and integer programming. The lineup selection process is formulated as a mixed-integer optimization problem, where each player is either selected or not selected.

In addition, the project includes an organizational budget optimization model that applies linear programming to allocate a fixed budget across stadium operations, staff, and team performance. Together, these models demonstrate how IE techniques can be applied to both personnel selection and strategic budgeting.

Skills Used & Developed

Project Development Process Original Idea & Goal

Our original goal was to create an interactive basketball lineup optimizer that could automatically select the best possible five-player team under a salary cap. We wanted a project that directly connected optimization modeling to a real-world application, and professional sports provided a perfect testbed for constrained decision-making.

A secondary goal was to demonstrate how the same optimization principles could be extended beyond player selection into organizational budgeting and strategic planning.

Data Collection & Preparation

We used a CSV dataset of top NBA players from 2007–2015, which included player names, scaled salaries, performance scores, positions, and star tiers. This dataset was loaded into the system using OpenCSV, where each row was mapped into a structured Java object (PlayerCSV) and then converted into a domain-level Player object.

All processed player data was stored in Java collections and passed directly into both the optimization solver and the Vaadin user interface.

Base Model Design (Lineup Optimization)

The lineup optimizer was formulated as a mixed-integer programming model with the following structure:

Decision Variable

𝑥 𝑖 = 1 x i ​

=1 if player 𝑖 i is selected

𝑥 𝑖 = 0 x i ​

=0 otherwise

Objective

Maximize total team performance based on player performance scores

Constraints

This base model successfully produced optimal five-player lineups under varying salary caps.

Model Evolution & Improvements Interactive Filtering & Human-in-the-Loop Optimization

To improve usability, we added interactive filtering within the Vaadin UI. Users can filter players by:

This allowed users to explore the dataset visually before running the optimizer, creating a human-in-the-loop optimization process.

Performance Simulation

To move beyond pure deterministic optimization, we added a Monte Carlo–style performance simulation. After selecting a lineup, each player’s performance is randomly varied within a range to simulate game-to-game variability. The total projected lineup performance is then calculated and displayed to the user.

This helped demonstrate how stochastic variation affects optimized solutions.

Roadblocks & Challenges

Several technical challenges occurred during development, including:

Each issue required systematic debugging, refinement of project structure, and careful testing to ensure the system remained stable.

Final Results & Performance Testing

The final system consistently produced optimal five-player lineups in milliseconds using the OR-Tools SCIP solver. Users could visually verify results using salary totals and simulated performance scores.

The addition of the organizational budget optimizer allowed users to allocate a $30 million internal budget across multiple departments and observe how spending changes affected overall organizational success. Together, both models demonstrated fast, reliable performance under different scenarios.

Did the Final Project Match Our Expectations?

While the original goal focused solely on lineup optimization, the final project evolved into a full decision-support system. The integration of interactive UI tools, simulation, and organizational budgeting extended the scope far beyond our initial expectations.

The final system became not only an optimizer, but a complete analytical application demonstrating how Industrial Engineering methods can drive data-based decision-making in professional sports.