lutionary algorithm [@witkowski2014a], that is, agents with high level of fitness are allowed at any point to replicate with mutation in the middle of the running simulation.

This model also builds up on prior work on the effect of self-organized inter-agent communication and cooperative behavior on the performance of agents to solve tasks [@prokopenko2006evolving; @olson2013predator]. Previous research has shown the difficulty of using communication channels [@rasmusen1994games; @mitri2013using] but showed cooperative value of information transfers [@witkowski2016emergence]. This will be complemented by the results from previous information-theoretic analyses of learning systems, which managed to shed light on the role of information flows in learning [@tishby2015deep; @lin2017does; @tishby2011information].

Agents are given a certain energy, that also acts as their fitness. This will be specific to the study cases. Each agent comes with a set of 12 different sensors. The neural network (represented on Figure \[fig:ann\]) takes the information from those sensors as inputs, in order to decide the agent’s actions at every time step. The possible actions amount to the agent’s motion, and in the specific variant shown here, a Prisoner’s Dilemma action (cooperate or defect), as well as two output signals. The architecture is composed of a 12 input, 10 hidden, 5 output, and 10 context neurons connected to the hidden layer (see Figure \[fig:ann\]).

The agents’ motion is controlled by $M_1$ and $M_2$, outputting two Euler rotation angles: $\psi$ for pitch (i.e. elevation) and $\theta$ for yaw (i.e. heading), with floating point values between $0$ and $\pi$. Even though the agents’ speed is fixed, the rotation angles still allow the agent to control its average speed (for example, if $\psi$ is constant and $theta$ equals zero, the agents will continuously loop on a circular trajectory, which results in an almost-zero average speed over 100 steps).

The outputs $S_\text{out}^{(1)}$ and $S_\text{out}^{(2)}$ con