A machine learning system can optimise a black box to approximate some function. Can this black box be extended further to cover multiple machine learning agents and the way they exchange information? In this project, I explore the idea of connecting multiple machine learning agents using a general communication channel, and training them as if they were a single system. I do this by adapting the machine learning techniques of Q-Learning, NeuroEvolution of Augmenting Toplogies, and Cooperative Coevolutionary Genetic Algorithms to work with the idea of multiple communicating agents.