In my quest to build a system that can coordinate multiple robots to execute complex tasks, one of the most important building blocks is the task assignment algorithm.
We can state the basic premise as: Given a dependency graph of tasks and a set of agents that have a set of abilities, how do we assign tasks to agents such that we can minimize metrics such as completion time, cost, and energy consumption?
We must also acknowledge that for this system to be useful, it needs some further capabilities.
We will tackle these as we go along, but first, the initial problem…
Since we assume there is some travel time between tasks, we can see this is a variation of the traveling salesman problem. Specifically, it is the multi traveling salesman problem. Or if we want to get very specific it is also called the task assignment problem. Fortunately, there is a lot of literature on this topic, unfortunately, most of it is not very accessible. A paper summarizing most key findings is here (Sorry for the paywall): A comprehensive survey on the Multiple Traveling Salesman Problem: Applications, approaches and taxonomy.
To be continued…