Skip to content

maudefish/operator-task-optimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Optimizing Operator-Task Assignments via Linear Programming

A mixed-integer linear programming model for optimizing operator-task-site assignments in an autonomous systems data collection operation.

Problem

Modern autonomous systems depend on large volumes of high-quality training data collected by human operators. The challenge: assign operators to tasks and sites to maximize quality-adjusted data output, subject to:

  • Limited autonomous unit availability
  • Site capacity constraints
  • Minimum staffing requirements per task
  • Varying operator skill levels across different task types

Model

Quality-Scaled Rate

Rather than optimizing raw volume, we define a quality-scaled rate for each operator-task pair:

r_ij = (average volume per hour) × (QA pass rate)

This captures both speed and quality in a single metric.

Decision Variables

x_ijk ∈ {0, 1}

Where x_ijk = 1 if operator i is assigned to task j at site k.

Objective

Maximize total quality-scaled output:

V = Σ_i Σ_j Σ_k r_ij · x_ijk

Constraints

  1. Each operator assigned at most once
  2. Minimum staffing per task type
  3. Maximum capacity per site
  4. Total assignments ≤ available autonomous units

Results

For a sample problem with:

  • 32 operators
  • 21 tasks
  • 6 sites
  • 30 available autonomous units

The solver finds the optimal assignment in <1 second, producing 53+ quality-hours of usable data per 8-hour shift—a 60% improvement over random assignment.

Usage

pip install -r requirements.txt
cd src
python optimize.py

Streamlit Dashboard

cd src
streamlit run Home.py

Files

├── data/
│   ├── input_data.xlsx     # Default operator/task/site data
│   ├── operators.csv       # Operator list
│   ├── tasks.csv           # Tasks and minimum requirements
│   ├── sites.csv           # Sites and capacities
│   └── rates.csv           # Quality-scaled rates r_ij
├── src/
│   ├── Home.py             # Streamlit dashboard
│   ├── dashboard.py        # Dashboard utilities
│   ├── optimize.py         # PuLP optimization script
│   ├── monte_carlo.py      # Monte Carlo simulation
│   ├── generate_mock_data.py  # Synthetic data generator
│   └── pages/
│       ├── 1_Operator_Skills.py
│       ├── 2_Assignment_Matrix.py
│       └── 3_Documentation.py
├── paper_figures/           # Publication-quality plots
├── paper_plots.py           # Plot generation script
└── requirements.txt

Extensions

  • Multi-block assignments: Operators complete multiple task blocks per shift
  • Dynamic re-optimization: Re-run when unit availability changes mid-shift
  • Preference constraints: Accommodate supervisor preferences for specific operators

Author

Kevin P. Rodriguez
December 2025

About

Mixed-integer LP model for operator-task assignment optimization

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors