Roth · Joint team and project optimization
Fictional student teams and projects
12 students · 5 available projects · 4 teams · Preference source: synthetic
The complete lexicographic optimum was found. Each student belongs to one team, and each used project has exactly one team. This is Borda-score optimization, with no claim of stability or strategy-proofness.
See the preference inputs · See assignments · Market JSON · Preference JSON · Borda scores · Solver result · Assignment CSV
The preferences we imported
These are ordered lists, best first. They are inputs to the optimization, not inferred from its outcome. The bundled classroom example uses hand-built fictional rankings; no people, surveys, or model calls generated them.
| Student | Projects, best first | Teammates, best first |
|---|---|---|
| Alex | Campus climate dashboard → Student housing survey → Accessible campus transport | Blair → Casey → Emery |
| Blair | Student housing survey → Campus climate dashboard → Food waste reduction | Alex → Casey → Finley |
| Casey | Accessible campus transport → Student housing survey → Library discovery tool | Alex → Blair → Gray |
| Devon | Student housing survey → Food waste reduction → Campus climate dashboard | Emery → Finley → Harper |
| Emery | Food waste reduction → Student housing survey → Library discovery tool | Devon → Finley → Indigo |
| Finley | Campus climate dashboard → Accessible campus transport → Student housing survey | Devon → Emery → Jules |
| Gray | Accessible campus transport → Library discovery tool → Food waste reduction | Harper → Indigo → Kai |
| Harper | Library discovery tool → Accessible campus transport → Campus climate dashboard | Gray → Indigo → Lane |
| Indigo | Food waste reduction → Accessible campus transport → Student housing survey | Gray → Harper → Alex |
| Jules | Food waste reduction → Campus climate dashboard → Library discovery tool | Kai → Lane → Blair |
| Kai | Campus climate dashboard → Food waste reduction → Accessible campus transport | Jules → Lane → Casey |
| Lane | Library discovery tool → Food waste reduction → Student housing survey | Jules → Kai → Devon |
Unlisted options earn zero Borda points and remain unranked; they are available unless explicitly excluded. A submitted empty list is different from a missing submission, which blocks solving.
Explicit hard exclusions (a teammate exclusion from either side prevents the pair):
- Alex: excluded projects: Library discovery tool; incompatible teammates: Lane.
How rankings become the objective
For M available options, rank r earns M − r Borda points. A sole option earns 1. The option count is the full project list or every other student, so submitting a shorter list does not change the points assigned to its first choice.
Project points are divided by 4. The sum of each student's teammate points is divided by 20: the highest peer Borda score times target size minus one. This uses the target size as a fixed reference; it does not average over realized team size, and a larger team can earn more social points.
Student score = 0.5 × normalized project score + 0.5 × normalized teammate score. Both directions of a teammate preference contribute. Scores are declared preference measures, not interpersonal cardinal welfare.
The organizer requests teams of 3, allowing 2–4. First the integer program minimizes total absolute deviation from the target among used teams. It then maximizes total student score while preserving that minimum deviation. Every stage assigns students and projects jointly.
Realized teams and projects
Campus climate dashboard
Alex, Blair, Casey
3 studentsStudent housing survey
Devon, Emery, Finley
3 studentsAccessible campus transport
Gray, Harper, Indigo
3 studentsFood waste reduction
Jules, Kai, Lane
3 studentsUnused projects: Library discovery tool. Total size deviation: 0. Total weighted score: 10.200.
4/12 students get their first-choice project; 11/12 get a top-three project; 12/12 receive at least one ranked teammate. 1 students receive an unranked project.
Matrix cells show ranks (1 is best). Green cells labeled ASSIGNED or TEAM show realized outcomes. A dot means unranked; × means excluded; — is the diagonal. Read teammate rows directionally: Alex's rank of Blair may differ from Blair's rank of Alex.
Project rankings and assignments
| Student ↓ | Campus climate dashboard | Student housing survey | Accessible campus transport | Food waste reduction | Library discovery tool |
|---|---|---|---|---|---|
| Alex | 1ASSIGNED | 2 | 3 | · | × |
| Blair | 2ASSIGNED | 1 | · | 3 | · |
| Casey | ·ASSIGNED | 2 | 1 | · | 3 |
| Devon | 3 | 1ASSIGNED | · | 2 | · |
| Emery | · | 2ASSIGNED | · | 1 | 3 |
| Finley | 1 | 3ASSIGNED | 2 | · | · |
| Gray | · | · | 1ASSIGNED | 3 | 2 |
| Harper | 3 | · | 2ASSIGNED | · | 1 |
| Indigo | · | 3 | 2ASSIGNED | 1 | · |
| Jules | 2 | · | · | 1ASSIGNED | 3 |
| Kai | 1 | · | 3 | 2ASSIGNED | · |
| Lane | · | 3 | · | 2ASSIGNED | 1 |
Teammate rankings and realized teams
| Student ↓ | Alex | Blair | Casey | Devon | Emery | Finley | Gray | Harper | Indigo | Jules | Kai | Lane |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Alex | — | 1TEAM | 2TEAM | · | 3 | · | · | · | · | · | · | × |
| Blair | 1TEAM | — | 2TEAM | · | · | 3 | · | · | · | · | · | · |
| Casey | 1TEAM | 2TEAM | — | · | · | · | 3 | · | · | · | · | · |
| Devon | · | · | · | — | 1TEAM | 2TEAM | · | 3 | · | · | · | · |
| Emery | · | · | · | 1TEAM | — | 2TEAM | · | · | 3 | · | · | · |
| Finley | · | · | · | 1TEAM | 2TEAM | — | · | · | · | 3 | · | · |
| Gray | · | · | · | · | · | · | — | 1TEAM | 2TEAM | · | 3 | · |
| Harper | · | · | · | · | · | · | 1TEAM | — | 2TEAM | · | · | 3 |
| Indigo | 3 | · | · | · | · | · | 1TEAM | 2TEAM | — | · | · | · |
| Jules | · | 3 | · | · | · | · | · | · | · | — | 1TEAM | 2TEAM |
| Kai | · | · | 3 | · | · | · | · | · | · | 1TEAM | — | 2TEAM |
| Lane | × | · | · | 3 | · | · | · | · | · | 1TEAM | 2TEAM | — |
Each student's score
| Student | Project | Project rank | Project Borda | Teammate Borda | Combined |
|---|---|---|---|---|---|
| Alex | Campus climate dashboard | 1 | 4 | 19 | 0.975 |
| Blair | Campus climate dashboard | 2 | 3 | 19 | 0.850 |
| Casey | Campus climate dashboard | Unranked | 0 | 19 | 0.475 |
| Devon | Student housing survey | 1 | 4 | 19 | 0.975 |
| Emery | Student housing survey | 2 | 3 | 19 | 0.850 |
| Finley | Student housing survey | 3 | 2 | 19 | 0.725 |
| Gray | Accessible campus transport | 1 | 4 | 19 | 0.975 |
| Harper | Accessible campus transport | 2 | 3 | 19 | 0.850 |
| Indigo | Accessible campus transport | 2 | 3 | 19 | 0.850 |
| Jules | Food waste reduction | 1 | 4 | 19 | 0.975 |
| Kai | Food waste reduction | 2 | 3 | 19 | 0.850 |
| Lane | Food waste reduction | 2 | 3 | 19 | 0.850 |
Reproduce this result
From this report directory, solve its frozen input files into a new output directory:
roth teams solve market.json --preferences preferences.json --output rerun
From a source checkout, install the optional solver with python -m pip install -e '.[teams]'. Solver: HiGHS via scipy.optimize.milp · SciPy 1.17.1.
| Phase | Status | Relative MIP gap |
|---|---|---|
| team_size | Optimal | 0.0 |
| preferences | Optimal | 0.0 |
The input snapshot, scores, assignments, solver bounds, and statuses are saved alongside this page. Existing output directories are never overwritten. Equal-score assignments may differ across solver versions.
Input SHA-256: d68058d5d1c8ae6db375d0ce91f94116969cb6b348d9980d31a420025eda55f7
Organizer report: contains everyone's private preference rankings.