Skip to content

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.

AERO-PATH mid-mission: three drone routes on a 3D grid with battery levels, the fleet controls, the algorithm buttons and the simulation terminal narrating live.
  1. Fleet size as a question: set the drone count by hand or let it be derived from deliveries and payload.
  2. The baseline beside the hard part: A* and Dijkstra sit next to the cooperative router for comparison.
  3. The simulation terminal narrates the run live, from the visit order to the return leg home.
  4. The battery level flies with the drone, because the battery limit is part of the problem, not a footnote.
A mission in flight, captured in the live app.

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.