Can a World Cup schedule be fairer without making anyone worse off?
Before the knockout rounds, every team plays three group-stage matches. The cities assigned to those games determine how far each team travels. I rebuilt FIFA’s schedule from public data and asked how much fairer it could be without sending the burden somewhere else.
TOR → LAX → SEA
SEA → VAN → SEA
The schedule looked reasonable until I followed each team.
The official schedule keeps many matches within the same region, so the average looks reasonable. Team by team, the picture changes. Bosnia and Herzegovina crosses the continent, while Egypt stays in the Pacific Northwest. A random draw determined their opponents. The schedule determined their cities.
That separation made the problem useful. I was not trying to change who played whom. I wanted to know how much travel could be removed from the worst itinerary without making anyone else travel farther.
The real choice was what FIFA would be allowed to change.
An optimization model searches through many valid schedules and picks the one that best meets a goal. Before that search could begin, I had to decide what FIFA would actually be willing to move. I tested two versions. The first keeps every match date and kickoff time fixed, then changes only the stadium. The second can move a match to another venue, date, and time that FIFA had already published.
the stadium assigned to a match
match dates and times, host rules, stadium workload
10.2% lower worst itinerary, 29.6% lower total, no team worse off
the venue, date, and time assigned to a match
tournament round, simultaneous final games, host rules, and rest
17.5% lower worst itinerary, 33.2% lower total, no team worse off
team travel = venue 1→2 + venue 2→3A team’s travel comes from the journey between consecutive venues. It is not the sum of three isolated match assignments.
1. reduce the worst trip → 2. reduce total travelFirst find the lowest possible ceiling for the worst-traveling team. Hold that ceiling in place, then minimize total travel.
I used Gurobi, software built to search large optimization problems, to find candidate schedules. Then I rebuilt each result outside Gurobi and calculated every travel total again with the same code used for FIFA’s schedule.
There is no single best schedule. The recommendation depends on the rules.
With kickoff times fixed, Model 1A reduces the worst itinerary from 5,058 km to 4,544 km. If FIFA can move the venue, date, and kickoff time together, Model 1B reaches 4,174 km and lowers total travel from 98,814 km to 65,986 km. Both are proven optimal. Under each set of rules, the solver established that no better schedule exists. Neither solution makes any team travel farther.
This version brings the worst itinerary to 4,174 km (-17.5%) and total travel to 65,986 km (-33.2%). No team travels farther than it does in FIFA’s schedule.
Keep the “no team worse off” guardrail. Use Model 1A when kickoff times are fixed. Use Model 1B when FIFA can move fixtures among its published venue, date, and time combinations.
allowed match moves
The mistakes changed the answer.
Several early ideas did not survive scrutiny. I kept the corrections in the project log because they explain why the final models look the way they do.
The first model allowed a move that could not happen in real life
I had allowed a match to move to another stadium while keeping its original kickoff time. That could create a stadium and time pairing FIFA never published, so I split the work into two models with consistent rules.
My first fairness score was measuring each schedule differently
Each schedule was being judged against its own scale. That was like measuring one route in miles and another in kilometres. I replaced those moving scales with fixed physical units before comparing results.
A two-metre disagreement was small enough to ignore and important enough not to
My independent calculation differed from the model by 0.002 km. The number was tiny, but tracing it led me to tighten the solver settings and treat the external calculation as the final authority.
sometimes the useful answer is no
These two requirements cannot both be met. In optimization, “infeasible” does not mean the software failed. It means the model proved that no schedule can satisfy all of the rules at once. I then relaxed the travel guardrail and asked how much extra travel might be unavoidable. That follow-up found a valid schedule but could not prove how close it was to the best possible one, so the honest answer is a range: more than 0 km and no more than 420 km.
Travel is not the only measure of fairness.
I also tracked the Competitive Neutrality Index, or CNI. It compares what each team brings into a match, including recent travel, rest, altitude changes, and eastward time-zone shifts. Model 1B improves travel but raises the average CNI from 1.812 to 2.119. I did not ask the model to optimize this score, so I treat the change as a warning to report rather than proof that one schedule is fair in every sense.
What I learned
The hardest parts were not the lines of Gurobi code. They were deciding which changes were legitimate, defining what “fairer” should protect, and knowing when a result had earned a strong claim.
The model starts with permission, not algebra.
Models 1A and 1B lead to different recommendations because they give FIFA different permissions. A precise boundary was more useful than a stronger solution to the wrong question.
Fairness needs a promise.
A lower maximum or total is not automatically fair. Either can move the burden to someone else. The “no team worse off” rule turned fairness from a slogan into a condition I could check.
Verification belongs inside the method.
The most useful errors appeared when I recalculated results outside the solver. Independent scoring, retained failed runs, and careful proof labels changed how much confidence I placed in the answer.
I started with a scheduling problem. I finished with a better understanding of how to make quantitative recommendations that people can inspect, challenge, and defend.