3D simulation · fleet optimization
Drone Simulation
- Role
- Author: research, algorithms and implementation
- Period
- Dissertation 2023, developed since
The problem
Given a set of drone deliveries: what is the smallest fleet that can complete them safely within battery and payload limits, and how do you route it through 3D airspace without collisions?
Context & constraints
- It started as a final-year research project at Northumbria University; today it's a full 3D rewrite.
Discovery
Final-year academic research (First Class Honours).
- Classic A* and Dijkstra find shorter individual paths, but they fly the drones through each other, which is precisely what motivates a cooperative, multi-agent pathfinder.
Architecture
A three-stage pipeline, each stage solving a different well-known sub-problem: K-Means groups deliveries spatially, Ant Colony Optimization orders the visits as a Travelling Salesperson problem (15 ants, 50 iterations), and Cooperative A* searches a space-time state (row, column, altitude, time) against a shared reservation table.
Process
The first version was a custom React.js platform; it's since been rewritten in full 3D on Three.js with react-three-fiber, with all five algorithms written from scratch in plain JavaScript, no libraries.
Design decisions
- Make an opaque algorithm legible: plan, animate and narrate the whole mission live in a simulation terminal.
- A multi-agent router is invisible; showing it cluster, route and return to reload is the only way a viewer can actually understand it.
- Show the baseline so the hard part is visible: A* and Dijkstra implemented alongside the cooperative pathfinder.
- Watching the baseline crash the drones into each other explains why the multi-agent variant exists better than any prose.
- Cooperative A* over space-time, with vertex and edge reservations and asymmetric move costs (flat flight 1, climbing 2, descending 0.5).
- It's the only way two drones can't swap through each other, and flying over a building pays off only when it beats waiting.
The solution
An interactive 3D simulation: drop delivery targets on a city grid, set a fleet size or let the app derive it from range and payload, then watch the fleet plan collision-free routes, return to base to reload and fly home, narrated live.

- Fleet size as a question: set the drone count by hand or let it be derived from deliveries and payload.
- The baseline beside the hard part: A* and Dijkstra sit next to the cooperative router for comparison.
- The simulation terminal narrates the run live, from the visit order to the return leg home.
- The battery level flies with the drone, because the battery limit is part of the problem, not a footnote.
Reflection
Scope-honest by design: a single-page app, no backend, no tests beyond the toolchain's default. It's here to show how I break a hard problem down: decomposing it into sub-problems, picking the right tool for each, and making the result visible.