Current section

Files

Jump to
macula_neuroevolution include lc_ecological_events.hrl
Raw

include/lc_ecological_events.hrl

%%%-------------------------------------------------------------------
%%% @doc Behavioral event definitions for Ecological Silo (τ=50).
%%%
%%% Events related to niches, environmental stress, and carrying capacity.
%%%
%%% @end
%%%-------------------------------------------------------------------
-ifndef(LC_ECOLOGICAL_EVENTS_HRL).
-define(LC_ECOLOGICAL_EVENTS_HRL, true).
-include("lc_events_common.hrl").
%%% ============================================================================
%%% Niche Events
%%% ============================================================================
-record(niche_occupied, {
meta :: #lc_event_meta{},
niche_id :: binary(),
occupant_id :: individual_id(),
population_id :: population_id(),
niche_fitness_range :: {float(), float()},
competition_level :: float()
}).
-record(niche_vacated, {
meta :: #lc_event_meta{},
niche_id :: binary(),
vacating_id :: individual_id() | undefined,
population_id :: population_id(),
vacation_reason :: extinction | migration | outcompeted
}).
%%% ============================================================================
%%% Stress Events
%%% ============================================================================
-record(stress_applied, {
meta :: #lc_event_meta{},
population_id :: population_id(),
stress_type :: resource | environmental | competitive | random,
stress_intensity :: float(),
affected_individuals :: non_neg_integer(),
expected_duration :: non_neg_integer() | indefinite
}).
-record(stress_relieved, {
meta :: #lc_event_meta{},
population_id :: population_id(),
stress_type :: resource | environmental | competitive | random,
previous_intensity :: float(),
relief_cause :: adaptation | environment_change | intervention
}).
%%% ============================================================================
%%% Capacity Events
%%% ============================================================================
-record(carrying_capacity_changed, {
meta :: #lc_event_meta{},
population_id :: population_id(),
capacity_before :: non_neg_integer(),
capacity_after :: non_neg_integer(),
change_cause :: resource_availability | environmental | policy
}).
%%% ============================================================================
%%% Resource Events
%%% ============================================================================
-record(resource_scarcity_detected, {
meta :: #lc_event_meta{},
population_id :: population_id(),
resource_type :: compute | memory | evaluation_time,
availability :: float(),
threshold :: float(),
affected_ratio :: float()
}).
-record(resource_abundance_detected, {
meta :: #lc_event_meta{},
population_id :: population_id(),
resource_type :: compute | memory | evaluation_time,
availability :: float(),
surplus_ratio :: float()
}).
%%% ============================================================================
%%% Risk Events
%%% ============================================================================
-record(extinction_risk_elevated, {
meta :: #lc_event_meta{},
species_id :: species_id(),
population_id :: population_id(),
risk_level :: float(),
risk_factors :: [atom()],
population_size :: non_neg_integer()
}).
-record(ecosystem_disrupted, {
meta :: #lc_event_meta{},
population_id :: population_id(),
disruption_type :: catastrophe | invasion | collapse,
disruption_severity :: float(),
species_affected :: non_neg_integer(),
recovery_estimate_generations :: non_neg_integer()
}).
%%% ============================================================================
%%% Type Exports
%%% ============================================================================
-type ecological_event() :: #niche_occupied{} | #niche_vacated{} |
#stress_applied{} | #stress_relieved{} |
#carrying_capacity_changed{} |
#resource_scarcity_detected{} | #resource_abundance_detected{} |
#extinction_risk_elevated{} | #ecosystem_disrupted{}.
-endif. %% LC_ECOLOGICAL_EVENTS_HRL