Virtual creatures, also referred to as blobs, are endowed with significant morphological flexibility (as elaborated in the Gene section). To bestow these entities with the capability to manipulate their bodies and sense their surroundings, they are equipped with a neural system. This intricate neural network granting blobs both sensory and motor capabilities. You can find the implementation and documentation here.
The design of a neural network, particularly for controlling our adaptable and evolving virtual blobs, hinges on two pivotal characteristics: structural flexibility and inheritability. These twin pillars shape our entire approach, distinguishing our system from more traditional neural network structures.
Blobs vary in size and function, and as a result, they differ in their sensory and motor requirements. For instance, a simpler blob might have just two blocks and one joint, while a more complex one might possess numerous blocks and joints. Hence, the neural network must be flexible, scaling according to the blob's individual requirements.
The architecture must accommodate varying input lengths (sensors) and provide outputs (motors) of differing lengths accordingly. This dynamic architecture is pivotal for blobs to adequately interact with their environment regardless of their size.
Leveraging structures like RNN, LSTM, or Transformer can achieve such flexibility. These architectures are adept at managing sequential data of variable lengths.
Given that our system is driven by genetic algorithms, the neural network must be robust against genetic mutations since the neural network will mutate in both structure and weight. In particular:
See detailed information about mutation stratigies here.
Emulating the decentralized intelligence seen in real-world cephalopods like octopuses, the "Octopus Net" seeks to solve the dual challenges of inheritability and structural flexibility. This neural architecture, crafted specifically for our blobs, ensures adaptability without compromising integrity.
The architecture comprises a Central Brain (CB) positioned at the root block, paired with numerous Peripheral Neural Units (PNU) present in all other blocks. The functional dynamics of the Octopus Net are categorized into Inward Propagation and Outward Propagation phases.
See detailed explaination of Octpous Net here.
To interact with and respond to their environment, blobs are equipped with sensors and muscles. The data generated by active sensors and the signals that can regulate muscles are termed as neural signals. Within our simulation, three distinct neural signals have been implemented: BrainSignal, InwardNNInputSignal, and OutwardNNInputSignal. More details can be found in the documentation.
In the neural architecture of our blobs, muscles are operational during the Outward Propagation process, while sensors play a role in both inward and outward propagations.
Signals for Inward Propagation (InwardNNInputSignal):
For the Outward Propagation via the PNU's OutwardNN, the input signals remain identicle with those of the InwardNN, except that the outputs from children are replaced with those from the parent. This is because the outward propagation follows a top-down approach.
Additionally, the OutwardNN of the PNU not only relays general commands meant for the child nodes but also outputs signals governing the joint motor. Each OutwardNN solely produces two control signals: the joint motor's target position and its target velocity. These two outputs determine the joint motor's force and direction.
Signals for Central Brain (CB), or BrainSignal: