Bardo.PopulationManager.Morphology behaviour (Bardo v0.1.0)

View Source

Defines generic morphology behavior. The list of morphologies defines the list of sensors and actuators available to the NNs in a population. Since the morphology defines the sensors and actuators of the NN system, this list effectively defines the problem or simulation to which the evolving population of NN systems will be applied, and for what purpose the agents will be evolved. The sensors/actuators/scape are a separate part from the NN itself, all specified through the morphology module.

Summary

Callbacks

Defines the behavior for morphology modules.

Functions

The get_actuators starts the population off with the NN based agents using all available actuators from the start.

The get_init_actuators starts the population off with the NN based agents using just a single actuator, exploring other available actuators within the morphology as it evolves.

The get_init_sensors starts the population off with the NN based agents using just a single sensor, exploring other available sensors within the morphology as it evolves.

The get_init_substrate_ceps starts the population off with the NN based agents using just a single substrate_cep, exploring other available substrate_ceps within the morphology as it evolves.

The get_init_substrate_cpps starts the population off with the NN based agents using just a single substrate_cpp, exploring other available substrate_cpps within the morphology as it evolves.

The get_sensors starts the population off with the NN based agents using all available sensors from the start.

The get_substrate_ceps starts the population off with the NN based agents using substrate_ceps determined by the Plasticity.

The get_substrate_cpps starts the population off with the NN based agents using substrate_cpps determined by Dimensions and Plasticity. Substrate CPPs: x cartesian: The cartesian cpp simply forwards to the NN the appended coordinates of the two connected neurodes. Because each neurode has a coordinate specified by a list of length: Dimension, the vector specifying the two appended coordinates will have vl = Dimensions 2. For example: [X1,Y1,Z1,X2,Y2,Z2] will have a vector length of dimension: vl = 32 = 6. x centripetal_distances: This cpp uses the Cartesian coordinates of the two neurodes to calculate the Cartesian distance of neurode_1 to the center of the substrate located at the origin, and the Cartesian distance of neurode_2 to the center of the substrate. It then fans out to the NN the vector of length 2, composed of the two distances. x cartesian_distance: This cpp calculates the Cartesian distance between the two neurodes, forwarding the resulting vector of length 1 to the NN. x cartesian_CoordDiffs: This cpp calculates the difference between each coordinate element of the two neurodes, and thus for this cpp, the vl = Dimensions. x cartesian_GaussedCoordDiffs: Exactly the same as the above cpp, but each of the values is first sent through the Gaussian function before it is entered into the vector. x polar: This cpp converts the Cartesian coordinates to polar coordinates. This can only be done if the substrate is 2d. x spherical: This cpp converts the Cartesian coordinates to the spherical coordinates. This can only be done if the substrate is 3d.

Callbacks

actuators()

@callback actuators() :: [Bardo.Models.actuator()]

sensors()

@callback sensors() :: [Bardo.Models.sensor()]

Defines the behavior for morphology modules.

Functions

get_actuators(mod)

@spec get_actuators(atom()) :: [Bardo.Models.actuator()]

The get_actuators starts the population off with the NN based agents using all available actuators from the start.

get_init_actuators(mod)

@spec get_init_actuators(atom()) :: [Bardo.Models.actuator()]

The get_init_actuators starts the population off with the NN based agents using just a single actuator, exploring other available actuators within the morphology as it evolves.

get_init_sensors(mod)

@spec get_init_sensors(atom()) :: [Bardo.Models.sensor()]

The get_init_sensors starts the population off with the NN based agents using just a single sensor, exploring other available sensors within the morphology as it evolves.

get_init_substrate_ceps(dimensions, plasticity)

@spec get_init_substrate_ceps(integer(), atom()) :: [Bardo.Models.actuator()]

The get_init_substrate_ceps starts the population off with the NN based agents using just a single substrate_cep, exploring other available substrate_ceps within the morphology as it evolves.

get_init_substrate_cpps(dimensions, plasticity)

@spec get_init_substrate_cpps(integer(), atom()) :: [Bardo.Models.sensor()]

The get_init_substrate_cpps starts the population off with the NN based agents using just a single substrate_cpp, exploring other available substrate_cpps within the morphology as it evolves.

get_sensors(mod)

@spec get_sensors(atom()) :: [Bardo.Models.sensor()]

The get_sensors starts the population off with the NN based agents using all available sensors from the start.

get_substrate_ceps(dimensions, plasticity)

@spec get_substrate_ceps(integer(), atom()) :: [Bardo.Models.actuator()]

The get_substrate_ceps starts the population off with the NN based agents using substrate_ceps determined by the Plasticity.

get_substrate_cpps(dimensions, plasticity)

@spec get_substrate_cpps(integer(), atom()) :: [Bardo.Models.sensor()]

The get_substrate_cpps starts the population off with the NN based agents using substrate_cpps determined by Dimensions and Plasticity. Substrate CPPs: x cartesian: The cartesian cpp simply forwards to the NN the appended coordinates of the two connected neurodes. Because each neurode has a coordinate specified by a list of length: Dimension, the vector specifying the two appended coordinates will have vl = Dimensions 2. For example: [X1,Y1,Z1,X2,Y2,Z2] will have a vector length of dimension: vl = 32 = 6. x centripetal_distances: This cpp uses the Cartesian coordinates of the two neurodes to calculate the Cartesian distance of neurode_1 to the center of the substrate located at the origin, and the Cartesian distance of neurode_2 to the center of the substrate. It then fans out to the NN the vector of length 2, composed of the two distances. x cartesian_distance: This cpp calculates the Cartesian distance between the two neurodes, forwarding the resulting vector of length 1 to the NN. x cartesian_CoordDiffs: This cpp calculates the difference between each coordinate element of the two neurodes, and thus for this cpp, the vl = Dimensions. x cartesian_GaussedCoordDiffs: Exactly the same as the above cpp, but each of the values is first sent through the Gaussian function before it is entered into the vector. x polar: This cpp converts the Cartesian coordinates to polar coordinates. This can only be done if the substrate is 2d. x spherical: This cpp converts the Cartesian coordinates to the spherical coordinates. This can only be done if the substrate is 3d.