Session

Feeding Millions Has No Right Answer, So Python Finds Them All!

Point: Show how Python discovers the entire set of optimal trade-off solutions to a multi-objective problem, not just one answer, but the full Pareto front, using a sandwich algorithm built on Scipy and PuLP.
Duration: 30 minutes. References: Solanki, Appino & Cohon (1993) European Journal of Operational Research 68(3); Koenen, Balvert & Fleuren (2023) Tilburg University; PuLP docs; scipy.spatial.ConvexHull.

We built a diet optimizer for the World Food Programme (WFP) that minimizes cost, environmental impact, and nutrient deviation simultaneously for millions of vulnerable people across the world. With three competing objectives, there is no single best diet, there is a whole curve of equally valid answers. We needed to find all of them.

1. The problem with "best" (5 min)
Optimizing for cost alone gives a cheap but nutritionally poor diet. Optimizing for environment gives an expensive one. Both are "optimal", just for different priorities. The real question is: can we map the entire trade-off curve so decision-makers can choose where on it they want to land? This is the Pareto front, and finding it is the problem Python solves.

2. The sandwich idea (10 min)
Finding every Pareto-optimal point by brute force is impossible. The sandwich algorithm solves this elegantly:
- Step 1: solve for each objective independently, these anchor points are the extreme ends of the Pareto front
- Step 2: build two polyhedral approximations that sandwich the true Pareto front: an inner hull (what we know) and an outer bound
- Step 3: find the biggest gap between them, that is where the front is least explored
- Step 4: solve one LP at that gap, add the new point, update both hulls
- Step 5: repeat until the sandwich closes
We will visualize this live: a 2D cost-vs-environment plot with the Pareto front being discovered point by point, iteration by iteration.

3. Python makes it real (10 min)
A minimal standalone demo, purpose-built for this talk, walks through the full algorithm on a small 2-objective food basket problem:
a. scipy.spatial.ConvexHull tracks the inner approximation and gives face normals for free, each normal points to where the gap is largest
b. PuLP solves the weighted LP at each iteration
c. numpy handles the matrix operations for the outer approximation
Clean, self-contained code available on GitHub before the event.

4. What decision-makers get (5 min)
The output is not a single diet, it is a trade-off curve. "With this budget, here is the most nutritious basket achievable. Spend 15% more and you cut carbon emissions by 30%." Python hands the decision back to humans, fully informed. The same pattern applies anywhere competing goals have no single right answer: delivery routing, staffing, infrastructure investment.

Khairul Arifin

Reckon Digital x World Food Programme, Software Engineer (Data Science Focus)

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top