Bardo.AgentManager.SubstrateCPP (Bardo v0.1.0)

View Source

The substrate polls the substrate_cpps (Substrate Coordinate PreProcessor), and then waits for the signals from the substrate_ceps (Substrate Connectivity Expression Producer) process, which tells it what the synaptic weight is between the two neurodes with which the substrate_cpps were called with, and whether the connection between these neurodes is expressed or not.

The substrate_cpp and substrate_cep processes are analogous to the sensors and actuators respectively, but driven and polled by the substrate when it wishes to calculate the synaptic weights and connectivity expression between its various neurodes.

The substrate will forward to its one or more substrate_cpps the coordinates of the two connected neurodes in question, the called substrate_cpp will process those coordinates based on its type and forward the processed vector to the NN. The substrate will then wait for the signals from its one or more substrate_ceps, which will provide it with the various signals which the substrate will then use to set its synaptic weights, connectivity expressions, or even plasticity based synaptic weight updates.

The substrate uses its substrate_cpps and substrate_ceps for every synaptic weight/expression it wishes to set or update. Unlike the sensors and actuators, the substrate_cpps and substrate_ceps do not need to sync up with the cortex because the substrate_cpps are not be triggered by the cortex, and because the signals from substrate_ceps are awaited by the substrate, and since the substrate itself only processes signals once it has received all the sensory signals from the sensors which themselves are triggered by the cortex, the whole system is synchronized.

Summary

Functions

Whenever a SubstrateCPP process is started via the start function this function is called by the new process to initialize.

Receive and handle messages.

The substrate sends the coordinates of the connected neurodes to the substrate_cpps it is connected to. The CPPs process the coordinates. The CPPs forward the processed coordinate vectors to the neurons they are connected to in the NN. The NN processes the coordinate signals.

IOW = Input, Output and Weight. The substrate sends the coordinates of the connected neurodes to the substrate_cpps it is connected to. The CPPs process the coordinates. The CPPs forward the processed coordinate vectors to the neurons they are connected to in the NN. The NN processes the coordinate signals.

Spawns a SubstrateCPP process belonging to the exoself process that spawned it and calls init to initialize.

Terminates substrate_cpp.

This function is called to terminate the process. It performs any necessary cleaning up before exiting with the reason parameter that it was called with.

Functions

init(exoself_pid)

@spec init(pid()) :: no_return()

Whenever a SubstrateCPP process is started via the start function this function is called by the new process to initialize.

init_phase2(pid, exoself_pid, id, cx_pid, substrate_pid, cpp_name, vl, parameters, fanout_pids)

@spec init_phase2(pid(), pid(), any(), pid(), pid(), atom(), integer(), [float()], [
  pid()
]) :: :ok

Initializes substrate_cpp.

loop(exoself_pid)

@spec loop(pid()) :: no_return()

Receive and handle messages.

loop(id, exoself_pid, cx_pid, substrate_pid, cpp_name, vl, parameters, fanout_pids)

Receive and handle messages.

neurode_coordinates(pid, substrate_pid, presynaptic_coords, postsynaptic_coords)

@spec neurode_coordinates(pid(), pid(), [float()], [float()]) :: :ok

The substrate sends the coordinates of the connected neurodes to the substrate_cpps it is connected to. The CPPs process the coordinates. The CPPs forward the processed coordinate vectors to the neurons they are connected to in the NN. The NN processes the coordinate signals.

neurode_coordinates_iow(pid, substrate_pid, presynaptic_coords, postsynaptic_coords, iow)

@spec neurode_coordinates_iow(pid(), pid(), [float()], [float()], [float()]) :: :ok

IOW = Input, Output and Weight. The substrate sends the coordinates of the connected neurodes to the substrate_cpps it is connected to. The CPPs process the coordinates. The CPPs forward the processed coordinate vectors to the neurons they are connected to in the NN. The NN processes the coordinate signals.

start(node, exoself_pid)

@spec start(node(), pid()) :: pid()

Spawns a SubstrateCPP process belonging to the exoself process that spawned it and calls init to initialize.

stop(pid, exoself_pid)

@spec stop(pid(), pid()) :: :ok

Terminates substrate_cpp.

terminate(reason)

@spec terminate(atom()) :: no_return()

This function is called to terminate the process. It performs any necessary cleaning up before exiting with the reason parameter that it was called with.