The first module was in charge to find a "plan" which is a list of objectives such as drop a package, pick a package or visit a homebase. We used a mix of greedy knapsack and brute force traveling salesman algorithm. This plan is recomputed each time a new event occur (such as a new robot appearing, someone pick a package we wanted, ...).
The second module, try to infer when we are in a deadlock situation, that is we dont progress in our plan, and in such case do random things for a while.
The last module, is based on a pattern engine that looks locally around our robot, to either survive, kill, ...
We used a cache for the distance, that used a wave propagation kind algorithm. This algo allow to know fastly, for some privileged points (such as homebase, or destination delivery point ...) the distance from this privilege points to any other point in the map. This allow to compute fastly the shortest path.