lc_communication_events (faber_neuroevolution v1.2.4)

View Source

Behavioral event constructors for Communication Silo.

Events related to signaling, vocabulary, and coordination. Communication Silo operates at timescale τ=55.

Summary

Types

communication_event/0

-type communication_event() ::
          #signal_emitted{meta ::
                              #lc_event_meta{event_id :: binary(),
                                             correlation_id :: binary() | undefined,
                                             causation_id :: binary() | undefined,
                                             timestamp :: timestamp(),
                                             version :: pos_integer(),
                                             emitter :: atom()},
                          sender_id :: individual_id(),
                          signal_id :: binary(),
                          signal_content :: term(),
                          intended_receivers :: [individual_id()] | broadcast,
                          honesty :: honest | deceptive} |
          #signal_received{meta ::
                               #lc_event_meta{event_id :: binary(),
                                              correlation_id :: binary() | undefined,
                                              causation_id :: binary() | undefined,
                                              timestamp :: timestamp(),
                                              version :: pos_integer(),
                                              emitter :: atom()},
                           receiver_id :: individual_id(),
                           sender_id :: individual_id(),
                           signal_id :: binary(),
                           interpretation :: correct | incorrect | ambiguous} |
          #signal_interpreted{meta ::
                                  #lc_event_meta{event_id :: binary(),
                                                 correlation_id :: binary() | undefined,
                                                 causation_id :: binary() | undefined,
                                                 timestamp :: timestamp(),
                                                 version :: pos_integer(),
                                                 emitter :: atom()},
                              interpreter_id :: individual_id(),
                              signal_id :: binary(),
                              intended_meaning :: term(),
                              interpreted_meaning :: term(),
                              accuracy :: float()} |
          #vocabulary_expanded{meta ::
                                   #lc_event_meta{event_id :: binary(),
                                                  correlation_id :: binary() | undefined,
                                                  causation_id :: binary() | undefined,
                                                  timestamp :: timestamp(),
                                                  version :: pos_integer(),
                                                  emitter :: atom()},
                               population_id :: population_id(),
                               new_signal_id :: binary(),
                               signal_meaning :: term(),
                               inventor_id :: individual_id(),
                               vocabulary_size_after :: non_neg_integer()} |
          #vocabulary_contracted{meta ::
                                     #lc_event_meta{event_id :: binary(),
                                                    correlation_id :: binary() | undefined,
                                                    causation_id :: binary() | undefined,
                                                    timestamp :: timestamp(),
                                                    version :: pos_integer(),
                                                    emitter :: atom()},
                                 population_id :: population_id(),
                                 removed_signal_id :: binary(),
                                 removal_reason :: obsolescence | ambiguity | replacement,
                                 vocabulary_size_after :: non_neg_integer()} |
          #dialect_formed{meta ::
                              #lc_event_meta{event_id :: binary(),
                                             correlation_id :: binary() | undefined,
                                             causation_id :: binary() | undefined,
                                             timestamp :: timestamp(),
                                             version :: pos_integer(),
                                             emitter :: atom()},
                          dialect_id :: binary(),
                          population_id :: population_id(),
                          speaker_ids :: [individual_id()],
                          unique_signals :: non_neg_integer(),
                          formation_cause :: isolation | drift | innovation} |
          #dialect_merged{meta ::
                              #lc_event_meta{event_id :: binary(),
                                             correlation_id :: binary() | undefined,
                                             causation_id :: binary() | undefined,
                                             timestamp :: timestamp(),
                                             version :: pos_integer(),
                                             emitter :: atom()},
                          dialect_a_id :: binary(),
                          dialect_b_id :: binary(),
                          merged_dialect_id :: binary(),
                          merge_cause :: contact | migration | normalization} |
          #coordination_achieved{meta ::
                                     #lc_event_meta{event_id :: binary(),
                                                    correlation_id :: binary() | undefined,
                                                    causation_id :: binary() | undefined,
                                                    timestamp :: timestamp(),
                                                    version :: pos_integer(),
                                                    emitter :: atom()},
                                 coordination_id :: binary(),
                                 participant_ids :: [individual_id()],
                                 coordination_type :: synchronization | division_of_labor | joint_action,
                                 success_level :: float(),
                                 communication_rounds :: non_neg_integer()} |
          #deception_detected{meta ::
                                  #lc_event_meta{event_id :: binary(),
                                                 correlation_id :: binary() | undefined,
                                                 causation_id :: binary() | undefined,
                                                 timestamp :: timestamp(),
                                                 version :: pos_integer(),
                                                 emitter :: atom()},
                              deceiver_id :: individual_id(),
                              detector_id :: individual_id(),
                              signal_id :: binary(),
                              deception_type :: false_alarm | concealment | manipulation,
                              detection_confidence :: float()}.

individual_id/0

-type individual_id() :: binary().

population_id/0

-type population_id() :: binary().

timestamp/0

-type timestamp() :: integer().

Functions

coordination_achieved(Data)

-spec coordination_achieved(map()) ->
                               #coordination_achieved{meta ::
                                                          #lc_event_meta{event_id :: binary(),
                                                                         correlation_id ::
                                                                             binary() | undefined,
                                                                         causation_id ::
                                                                             binary() | undefined,
                                                                         timestamp :: timestamp(),
                                                                         version :: pos_integer(),
                                                                         emitter :: atom()},
                                                      coordination_id :: binary(),
                                                      participant_ids :: [individual_id()],
                                                      coordination_type ::
                                                          synchronization | division_of_labor |
                                                          joint_action,
                                                      success_level :: float(),
                                                      communication_rounds :: non_neg_integer()}.

deception_detected(Data)

-spec deception_detected(map()) ->
                            #deception_detected{meta ::
                                                    #lc_event_meta{event_id :: binary(),
                                                                   correlation_id ::
                                                                       binary() | undefined,
                                                                   causation_id :: binary() | undefined,
                                                                   timestamp :: timestamp(),
                                                                   version :: pos_integer(),
                                                                   emitter :: atom()},
                                                deceiver_id :: individual_id(),
                                                detector_id :: individual_id(),
                                                signal_id :: binary(),
                                                deception_type ::
                                                    false_alarm | concealment | manipulation,
                                                detection_confidence :: float()}.

dialect_formed(Data)

-spec dialect_formed(map()) ->
                        #dialect_formed{meta ::
                                            #lc_event_meta{event_id :: binary(),
                                                           correlation_id :: binary() | undefined,
                                                           causation_id :: binary() | undefined,
                                                           timestamp :: timestamp(),
                                                           version :: pos_integer(),
                                                           emitter :: atom()},
                                        dialect_id :: binary(),
                                        population_id :: population_id(),
                                        speaker_ids :: [individual_id()],
                                        unique_signals :: non_neg_integer(),
                                        formation_cause :: isolation | drift | innovation}.

dialect_merged(Data)

-spec dialect_merged(map()) ->
                        #dialect_merged{meta ::
                                            #lc_event_meta{event_id :: binary(),
                                                           correlation_id :: binary() | undefined,
                                                           causation_id :: binary() | undefined,
                                                           timestamp :: timestamp(),
                                                           version :: pos_integer(),
                                                           emitter :: atom()},
                                        dialect_a_id :: binary(),
                                        dialect_b_id :: binary(),
                                        merged_dialect_id :: binary(),
                                        merge_cause :: contact | migration | normalization}.

event_to_map(Event)

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

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()}.

signal_emitted(Data)

-spec signal_emitted(map()) ->
                        #signal_emitted{meta ::
                                            #lc_event_meta{event_id :: binary(),
                                                           correlation_id :: binary() | undefined,
                                                           causation_id :: binary() | undefined,
                                                           timestamp :: timestamp(),
                                                           version :: pos_integer(),
                                                           emitter :: atom()},
                                        sender_id :: individual_id(),
                                        signal_id :: binary(),
                                        signal_content :: term(),
                                        intended_receivers :: [individual_id()] | broadcast,
                                        honesty :: honest | deceptive}.

signal_interpreted(Data)

-spec signal_interpreted(map()) ->
                            #signal_interpreted{meta ::
                                                    #lc_event_meta{event_id :: binary(),
                                                                   correlation_id ::
                                                                       binary() | undefined,
                                                                   causation_id :: binary() | undefined,
                                                                   timestamp :: timestamp(),
                                                                   version :: pos_integer(),
                                                                   emitter :: atom()},
                                                interpreter_id :: individual_id(),
                                                signal_id :: binary(),
                                                intended_meaning :: term(),
                                                interpreted_meaning :: term(),
                                                accuracy :: float()}.

signal_received(Data)

-spec signal_received(map()) ->
                         #signal_received{meta ::
                                              #lc_event_meta{event_id :: binary(),
                                                             correlation_id :: binary() | undefined,
                                                             causation_id :: binary() | undefined,
                                                             timestamp :: timestamp(),
                                                             version :: pos_integer(),
                                                             emitter :: atom()},
                                          receiver_id :: individual_id(),
                                          sender_id :: individual_id(),
                                          signal_id :: binary(),
                                          interpretation :: correct | incorrect | ambiguous}.

vocabulary_contracted(Data)

-spec vocabulary_contracted(map()) ->
                               #vocabulary_contracted{meta ::
                                                          #lc_event_meta{event_id :: binary(),
                                                                         correlation_id ::
                                                                             binary() | undefined,
                                                                         causation_id ::
                                                                             binary() | undefined,
                                                                         timestamp :: timestamp(),
                                                                         version :: pos_integer(),
                                                                         emitter :: atom()},
                                                      population_id :: population_id(),
                                                      removed_signal_id :: binary(),
                                                      removal_reason ::
                                                          obsolescence | ambiguity | replacement,
                                                      vocabulary_size_after :: non_neg_integer()}.

vocabulary_expanded(Data)

-spec vocabulary_expanded(map()) ->
                             #vocabulary_expanded{meta ::
                                                      #lc_event_meta{event_id :: binary(),
                                                                     correlation_id ::
                                                                         binary() | undefined,
                                                                     causation_id ::
                                                                         binary() | undefined,
                                                                     timestamp :: timestamp(),
                                                                     version :: pos_integer(),
                                                                     emitter :: atom()},
                                                  population_id :: population_id(),
                                                  new_signal_id :: binary(),
                                                  signal_meaning :: term(),
                                                  inventor_id :: individual_id(),
                                                  vocabulary_size_after :: non_neg_integer()}.