How to Build Emergent Software Systems (Tutorial)

Emergent software systems take a reward signal, an environment signal, and a collection of possible behavioural compositions implementing the system logic in a variety of ways, to learn in real-time how to best assemble a system to maximise reward. This reduces the burden of complexity in systems building by making human programmers responsible only for developing potential building blocks while the system determines how best to use them in its deployment conditions – with no architectural models or training regimes. Instead of adaptation being a special capability, emergent systems treat adaptation as continuous self-assembly, where a system is constantly reviewing its own behavioural composition to find alternative building blocks which better suit the currently perceived environment.