Problem Statement:
Nyaradzo Funeral Assurance needed to efficiently allocate 40 funeral buses across six Zimbabwean cities to serve 400,000 policyholders, 10% of whom had bus coverage. With monthly claim rates varying (0.1%–10%), the challenge was to minimize costs while ensuring reliable service—especially since external bus hires cost nearly double internal operations ($100 vs. $50 base rate + $1.5/km).

Approach & Model Link to heading

I built a linear programming optimization model in Python to:

  1. Simulate demand based on:
    • Geographic policyholder distribution (Harare (45%), Bulawayo (30%), Gweru (5%), Mutare (10%), Victoria Falls (5%), Masvingo (5%))
    • There are 40 buses available, which are spread out as [15, 8, 5, 5, 2, 5] with respect to the cities.
    • Claim rate sensitivity (tested 0.1%–10%)
    • 20% of the clients are willing to reschedule their burial dates should there be a clash.
  2. Optimize allocation using scipy.optimize.linprog, minimizing costs while meeting demand constraints.
  3. Analyze trade-offs between cost and service level across scenarios.

Key Insights & Business Impact Link to heading

  • Cost Savings: Identified optimal allocations (e.g., [0, 40, 0, 0, 0, 0] for 1% claim rates) that could save ~$370K annually versus ad-hoc distribution.
  • Service Resilience: Maintained >95% service levels up to 0.5% claim rates, dropping to ~80% at 1%—highlighting the need for flexible rescheduling incentives.
  • Geographic Strategy: Recommended pooling buses between proximate cities (e.g., Gweru-Bulawayo) during peak demand.

Why It Matters Link to heading

This project demonstrates how operations research can transform logistical challenges into data-driven strategies. By quantifying trade-offs between cost and service quality, Nyaradzo could make informed decisions about resource allocation, partnerships, and policy adjustments.

Github Link

Tools Used: Python (NumPy, SciPy), Linear Programming, Simulation