Current section

Files

Jump to
macula_neuroevolution include lc_social_events.hrl
Raw

include/lc_social_events.hrl

%%%-------------------------------------------------------------------
%%% @doc Behavioral event definitions for Social Silo (τ=25).
%%%
%%% Events related to reputation, coalitions, and social networks.
%%%
%%% @end
%%%-------------------------------------------------------------------
-ifndef(LC_SOCIAL_EVENTS_HRL).
-define(LC_SOCIAL_EVENTS_HRL, true).
-include("lc_events_common.hrl").
%%% ============================================================================
%%% Reputation Events
%%% ============================================================================
-record(reputation_changed, {
meta :: #lc_event_meta{},
individual_id :: individual_id(),
population_id :: population_id(),
reputation_before :: float(),
reputation_after :: float(),
change_cause :: cooperation | defection | achievement | punishment,
witnesses :: [individual_id()]
}).
%%% ============================================================================
%%% Coalition Events
%%% ============================================================================
-record(coalition_formed, {
meta :: #lc_event_meta{},
coalition_id :: binary(),
founder_ids :: [individual_id()],
population_id :: population_id(),
formation_reason :: defense | resource | breeding,
initial_strength :: float()
}).
-record(coalition_dissolved, {
meta :: #lc_event_meta{},
coalition_id :: binary(),
population_id :: population_id(),
dissolution_reason :: success | failure | conflict | attrition,
duration_generations :: non_neg_integer(),
final_members :: [individual_id()]
}).
-record(coalition_member_joined, {
meta :: #lc_event_meta{},
coalition_id :: binary(),
individual_id :: individual_id(),
membership_type :: full | associate | candidate,
coalition_size_after :: non_neg_integer()
}).
-record(coalition_member_expelled, {
meta :: #lc_event_meta{},
coalition_id :: binary(),
individual_id :: individual_id(),
expulsion_reason :: defection | underperformance | conflict,
coalition_size_after :: non_neg_integer()
}).
%%% ============================================================================
%%% Mentoring Events
%%% ============================================================================
-record(mentoring_started, {
meta :: #lc_event_meta{},
mentor_id :: individual_id(),
mentee_id :: individual_id(),
mentoring_type :: skill | strategy | general,
expected_duration :: non_neg_integer() | indefinite
}).
-record(mentoring_ended, {
meta :: #lc_event_meta{},
mentor_id :: individual_id(),
mentee_id :: individual_id(),
outcome :: success | failure | interrupted,
duration_generations :: non_neg_integer(),
mentee_improvement :: float()
}).
%%% ============================================================================
%%% Network Events
%%% ============================================================================
-record(social_network_updated, {
meta :: #lc_event_meta{},
population_id :: population_id(),
connections_added :: non_neg_integer(),
connections_removed :: non_neg_integer(),
network_density :: float(),
clustering_coefficient :: float()
}).
-record(trust_established, {
meta :: #lc_event_meta{},
individual_a_id :: individual_id(),
individual_b_id :: individual_id(),
trust_level :: float(),
trust_basis :: cooperation | kinship | reputation
}).
-record(betrayal_detected, {
meta :: #lc_event_meta{},
betrayer_id :: individual_id(),
victim_id :: individual_id(),
betrayal_type :: defection | deception | abandonment,
trust_before :: float(),
trust_after :: float()
}).
%%% ============================================================================
%%% Type Exports
%%% ============================================================================
-type social_event() :: #reputation_changed{} |
#coalition_formed{} | #coalition_dissolved{} |
#coalition_member_joined{} | #coalition_member_expelled{} |
#mentoring_started{} | #mentoring_ended{} |
#social_network_updated{} | #trust_established{} |
#betrayal_detected{}.
-endif. %% LC_SOCIAL_EVENTS_HRL