lc_morphological_events (faber_neuroevolution v1.2.4)

View Source

Behavioral event constructors for Morphological Silo.

Events related to network complexity, structure, and efficiency. Morphological Silo operates at timescale τ=30.

Summary

Types

generation/0

-type generation() :: non_neg_integer().

individual_id/0

-type individual_id() :: binary().

morphological_event/0

-type morphological_event() ::
          #complexity_measured{meta ::
                                   #lc_event_meta{event_id :: binary(),
                                                  correlation_id :: binary() | undefined,
                                                  causation_id :: binary() | undefined,
                                                  timestamp :: timestamp(),
                                                  version :: pos_integer(),
                                                  emitter :: atom()},
                               individual_id :: individual_id(),
                               neuron_count :: non_neg_integer(),
                               connection_count :: non_neg_integer(),
                               parameter_count :: non_neg_integer(),
                               complexity_score :: float()} |
          #pruning_triggered{meta ::
                                 #lc_event_meta{event_id :: binary(),
                                                correlation_id :: binary() | undefined,
                                                causation_id :: binary() | undefined,
                                                timestamp :: timestamp(),
                                                version :: pos_integer(),
                                                emitter :: atom()},
                             individual_id :: individual_id(),
                             neurons_removed :: non_neg_integer(),
                             connections_removed :: non_neg_integer(),
                             complexity_before :: float(),
                             complexity_after :: float(),
                             fitness_impact :: float(),
                             pruning_criterion :: unused | weak | redundant} |
          #growth_occurred{meta ::
                               #lc_event_meta{event_id :: binary(),
                                              correlation_id :: binary() | undefined,
                                              causation_id :: binary() | undefined,
                                              timestamp :: timestamp(),
                                              version :: pos_integer(),
                                              emitter :: atom()},
                           individual_id :: individual_id(),
                           neurons_added :: non_neg_integer(),
                           connections_added :: non_neg_integer(),
                           growth_trigger :: mutation | development | learning,
                           complexity_before :: float(),
                           complexity_after :: float()} |
          #modularity_detected{meta ::
                                   #lc_event_meta{event_id :: binary(),
                                                  correlation_id :: binary() | undefined,
                                                  causation_id :: binary() | undefined,
                                                  timestamp :: timestamp(),
                                                  version :: pos_integer(),
                                                  emitter :: atom()},
                               individual_id :: individual_id(),
                               module_count :: non_neg_integer(),
                               modularity_score :: float(),
                               module_sizes :: [non_neg_integer()],
                               inter_module_connectivity :: float()} |
          #efficiency_improved{meta ::
                                   #lc_event_meta{event_id :: binary(),
                                                  correlation_id :: binary() | undefined,
                                                  causation_id :: binary() | undefined,
                                                  timestamp :: timestamp(),
                                                  version :: pos_integer(),
                                                  emitter :: atom()},
                               individual_id :: individual_id(),
                               fitness_before :: float(),
                               fitness_after :: float(),
                               complexity_before :: float(),
                               complexity_after :: float(),
                               efficiency_ratio_before :: float(),
                               efficiency_ratio_after :: float()} |
          #bloat_detected{meta ::
                              #lc_event_meta{event_id :: binary(),
                                             correlation_id :: binary() | undefined,
                                             causation_id :: binary() | undefined,
                                             timestamp :: timestamp(),
                                             version :: pos_integer(),
                                             emitter :: atom()},
                          individual_id :: individual_id(),
                          complexity :: float(),
                          fitness :: float(),
                          expected_complexity :: float(),
                          bloat_ratio :: float()} |
          #symmetry_broken{meta ::
                               #lc_event_meta{event_id :: binary(),
                                              correlation_id :: binary() | undefined,
                                              causation_id :: binary() | undefined,
                                              timestamp :: timestamp(),
                                              version :: pos_integer(),
                                              emitter :: atom()},
                           individual_id :: individual_id(),
                           symmetry_before :: float(),
                           symmetry_after :: float(),
                           breaking_cause :: mutation | pruning | growth} |
          #topology_milestone{meta ::
                                  #lc_event_meta{event_id :: binary(),
                                                 correlation_id :: binary() | undefined,
                                                 causation_id :: binary() | undefined,
                                                 timestamp :: timestamp(),
                                                 version :: pos_integer(),
                                                 emitter :: atom()},
                              individual_id :: individual_id(),
                              milestone_type :: first_hidden | multi_layer | recurrent | modular,
                              neuron_count :: non_neg_integer(),
                              connection_count :: non_neg_integer(),
                              generation :: generation()}.

timestamp/0

-type timestamp() :: integer().

Functions

bloat_detected(Data)

-spec bloat_detected(map()) ->
                        #bloat_detected{meta ::
                                            #lc_event_meta{event_id :: binary(),
                                                           correlation_id :: binary() | undefined,
                                                           causation_id :: binary() | undefined,
                                                           timestamp :: timestamp(),
                                                           version :: pos_integer(),
                                                           emitter :: atom()},
                                        individual_id :: individual_id(),
                                        complexity :: float(),
                                        fitness :: float(),
                                        expected_complexity :: float(),
                                        bloat_ratio :: float()}.

complexity_measured(Data)

-spec complexity_measured(map()) ->
                             #complexity_measured{meta ::
                                                      #lc_event_meta{event_id :: binary(),
                                                                     correlation_id ::
                                                                         binary() | undefined,
                                                                     causation_id ::
                                                                         binary() | undefined,
                                                                     timestamp :: timestamp(),
                                                                     version :: pos_integer(),
                                                                     emitter :: atom()},
                                                  individual_id :: individual_id(),
                                                  neuron_count :: non_neg_integer(),
                                                  connection_count :: non_neg_integer(),
                                                  parameter_count :: non_neg_integer(),
                                                  complexity_score :: float()}.

efficiency_improved(Data)

-spec efficiency_improved(map()) ->
                             #efficiency_improved{meta ::
                                                      #lc_event_meta{event_id :: binary(),
                                                                     correlation_id ::
                                                                         binary() | undefined,
                                                                     causation_id ::
                                                                         binary() | undefined,
                                                                     timestamp :: timestamp(),
                                                                     version :: pos_integer(),
                                                                     emitter :: atom()},
                                                  individual_id :: individual_id(),
                                                  fitness_before :: float(),
                                                  fitness_after :: float(),
                                                  complexity_before :: float(),
                                                  complexity_after :: float(),
                                                  efficiency_ratio_before :: float(),
                                                  efficiency_ratio_after :: float()}.

event_to_map(Event)

-spec event_to_map(morphological_event()) -> map().

growth_occurred(Data)

-spec growth_occurred(map()) ->
                         #growth_occurred{meta ::
                                              #lc_event_meta{event_id :: binary(),
                                                             correlation_id :: binary() | undefined,
                                                             causation_id :: binary() | undefined,
                                                             timestamp :: timestamp(),
                                                             version :: pos_integer(),
                                                             emitter :: atom()},
                                          individual_id :: individual_id(),
                                          neurons_added :: non_neg_integer(),
                                          connections_added :: non_neg_integer(),
                                          growth_trigger :: mutation | development | learning,
                                          complexity_before :: float(),
                                          complexity_after :: float()}.

make_meta(Emitter)

-spec make_meta(Emitter :: atom()) ->
                   #lc_event_meta{event_id :: binary(),
                                  correlation_id :: binary() | undefined,
                                  causation_id :: binary() | undefined,
                                  timestamp :: timestamp(),
                                  version :: pos_integer(),
                                  emitter :: atom()}.

make_meta(Emitter, Opts)

-spec make_meta(Emitter :: atom(), Opts :: map()) ->
                   #lc_event_meta{event_id :: binary(),
                                  correlation_id :: binary() | undefined,
                                  causation_id :: binary() | undefined,
                                  timestamp :: timestamp(),
                                  version :: pos_integer(),
                                  emitter :: atom()}.

modularity_detected(Data)

-spec modularity_detected(map()) ->
                             #modularity_detected{meta ::
                                                      #lc_event_meta{event_id :: binary(),
                                                                     correlation_id ::
                                                                         binary() | undefined,
                                                                     causation_id ::
                                                                         binary() | undefined,
                                                                     timestamp :: timestamp(),
                                                                     version :: pos_integer(),
                                                                     emitter :: atom()},
                                                  individual_id :: individual_id(),
                                                  module_count :: non_neg_integer(),
                                                  modularity_score :: float(),
                                                  module_sizes :: [non_neg_integer()],
                                                  inter_module_connectivity :: float()}.

pruning_triggered(Data)

-spec pruning_triggered(map()) ->
                           #pruning_triggered{meta ::
                                                  #lc_event_meta{event_id :: binary(),
                                                                 correlation_id :: binary() | undefined,
                                                                 causation_id :: binary() | undefined,
                                                                 timestamp :: timestamp(),
                                                                 version :: pos_integer(),
                                                                 emitter :: atom()},
                                              individual_id :: individual_id(),
                                              neurons_removed :: non_neg_integer(),
                                              connections_removed :: non_neg_integer(),
                                              complexity_before :: float(),
                                              complexity_after :: float(),
                                              fitness_impact :: float(),
                                              pruning_criterion :: unused | weak | redundant}.

symmetry_broken(Data)

-spec symmetry_broken(map()) ->
                         #symmetry_broken{meta ::
                                              #lc_event_meta{event_id :: binary(),
                                                             correlation_id :: binary() | undefined,
                                                             causation_id :: binary() | undefined,
                                                             timestamp :: timestamp(),
                                                             version :: pos_integer(),
                                                             emitter :: atom()},
                                          individual_id :: individual_id(),
                                          symmetry_before :: float(),
                                          symmetry_after :: float(),
                                          breaking_cause :: mutation | pruning | growth}.

topology_milestone(Data)

-spec topology_milestone(map()) ->
                            #topology_milestone{meta ::
                                                    #lc_event_meta{event_id :: binary(),
                                                                   correlation_id ::
                                                                       binary() | undefined,
                                                                   causation_id :: binary() | undefined,
                                                                   timestamp :: timestamp(),
                                                                   version :: pos_integer(),
                                                                   emitter :: atom()},
                                                individual_id :: individual_id(),
                                                milestone_type ::
                                                    first_hidden | multi_layer | recurrent | modular,
                                                neuron_count :: non_neg_integer(),
                                                connection_count :: non_neg_integer(),
                                                generation :: generation()}.