[Are Robot Swarms Like Brains?]

Multi-agent systems Robots Neural networks Philosophy Added on 19/02/2016

In my latest paper, I have explored a way of measuring how information moves into and through a robot swarm. Looking at information flow of robot swarms can help us explain why a swarm as a whole behaves in a particular way, given its current environment. I think that there is something more intriguing behind the idea of looking at collective intelligence from the perspective of information though - a swarm's resemblance to the human brain.

What is information flow?

In order to measure information flow in a robot swarm, we can do the following:

1. Attach a value to a piece of information.
For example, if robots collect resources, we can say that the value of information is the value of the resource that the robot can collect using that information, versus the value of resource it would have collected if it used some old information. For example, if a robot previously collected from a gold deposit that gave it 2 grams of gold per visit, and it now learned about a richer deposit that gives 5g per visit, the value of that information is 3.

2. Measure information value of the whole swarm
To get information value of the swarm, we add up information values of all robots in a particular time interval. For example, if we have 4 robots:

  • Robot A previously collected from a gold deposit that gave 2g of gold per visit but now found a deposit that gives 5g. IA = 5 - 2 = 3
  • Robot B found the same deposit as Robot A but was previously resting (that is, it had no information at all), IB=5-0 = 5
  • Robot C also found the same deposit and was persuaded by Robot B to collect gold from it, even though Robot C previously collected from a deposit that gave 7g per visit. IC = 5 - 7= -2
  • Robot D did not find any new deposits and continues collecting from the same one: ID = 0

The information value of the swarm is I = 3 + 5 - 2 + 0 = 6.

3. Get information flow
Information flow is simply the swarm's information value, measured over time. It can look something like this:

A simple information flow example

We can see that there are large positive peaks at the beginning of the task, when robots keep discovering new deposits.

Information flow in a changing environment

In the paper, we used the information flow measure to see if a swarm responds to a changing environment properly. Imagine that there are two gold deposits, one of which gives more gold per visit than another. Also imagine that every 2 hours, it is a different deposit that returns more gold (for example, because the gold deposits have irregular structures). We would like our swarm to somehow know which deposit is currently the best and to concentrate most of its work on the richer deposit, until the change occurs again.

A "healthy", swarm information flow, that is, flow of a swarm that is always able to choose a better deposit, looks something like this:

Information flow of a responsive swarm

Every two hours, that is, every time the gains from the deposits are swapped, some robots find out about the richer deposit and persuade their team mates to collect from it. This creates regular positive peaks in the information value of the swarm.

However, there are some robot behaviours that prevent the swarm from doing this. For example, information can spread so quickly that all the robots concentrate on the best deposit at the same time, meaning that the swarm stops monitoring the rest of the environment. When looking at the information flow, we can see a small amount of positive peaks at the beginning of an experiment, after which the information value is always 0, as the swarm does not discover any new information:

Information flow of an unresponsive swarm


I think it is interesting to compare the information flow graphs with plots produced by EEG. EEG measures electrical signals of neurons, which are cells in the brain. When a neuron fires a signal, it essentially transfers a piece of information to another neuron, similarly how a robot might transfer a piece of information to its team mate. Scientists often use EEG to measure how a brain reacts to and processes a particular stimulus, for example music or language.

An EEG plot looks like this:

A normal EEG

EEG during brain deathIt reminds me of the information flow graphs of swarms that properly respond to a changing environment.

An EEG plot of brain death looks like the image on the right. When neurons stop firing, the brain and the body no longer function. A similar thing happened to our swarm that stopped responding to the environment (see the information flow plot above).

Another interesting example is comparing the information flow graph to an EEG of an epileptic patient:

EEG during epilepsy

During epilepsy, neurons fire more rapidly than is normal and send each other signals that they normally wouldn't. This negatively affects the way in which the brain and the whole body function.

Sometimes, information in a swarm can also travel too quickly, for example because robots are too sensitive to new information, or because they spontaneously abandon good deposits. This can, for example, prevent a swarm from making a decision about which deposit to forage from, causing it to perform poorly. The information flow of such a swarm looks similarly to that of an epileptic brain and shows no regular pattern of activity:

Information flow of an indecisive swarm

Swarm intelligence

So can we say that in some way, robot swarms behave like brains? Can a swarm be understood as a form of a disembodied, fluid "brain" that moves around and dissolves into the world while performing a given function (like collecting gold)?

I think on some level, swarms (of robots or animals) and brains are similar. More precisely, that brains are simply swarms of neurons bound together physically and electrically. What we perceive as "intelligence" is in fact a "swarm intelligence". It is certainly true that intelligent behaviour seen in animals has no single "module" that is responsible for the "intelligent" decisions. Instead, decisions are made as a result of the interplay between the nervous system and the rest of the body. They are always decisions of a collective, rather than an individual unit.

For me, in a way, studying insect and robot swarms helps us understand what makes our minds come to be.

{Please enable JavaScript in order to post comments}

Lots of Robots at IROS in Germany

I have just returned from the IROS conference that took place in Hamburg, Germany. The conference name stands for Intelligent Robots and Systems and it was a huge event full of talks and exhibitions about robotics. While the atmosphere was very professional, the spirit of Oktoberfest, a traditional German celebration of beer and German culture that happens between September and October, managed to blend in very well.

Have I Met an Android?

I was browsing game discussion forums on Steam and came across a post that did not make much sense. Have I talked to an AI?

How will artificial life impact the future?

In 2013, I was a part of the TRUCE workshop at the Alife conference. The workshop brought together scientists and creative writers in order to create a cool book full of stories about A-life (artificial life) and artificial intelligence and about how it will impact our society in the future. As I am very interested in swarm robotics, sci-fi games and movies and generally how the future will look like when robots run around and are part of our everyday lives, I jumped at the opportunity to cooperate on the project.


The main purpose of pyCreeper is to wrap tens of lines of python code, required to produce graphs that look good for a publication, into functions. It takes away your need to understand various quirks of matplotlib and gives you back ready-to-use and well-documented code.

Novelty detection with robots using the Grow-When-Required Neural Network

The Grow-When-Required Neural Network implementation in simulated robot experiments using the ARGoS robot simulator.

Fast Data Analysis Using C++ and Python

C++ code that processes data and makes it available to Python, significantly improving the execution speed.