lc_temporal_events (faber_neuroevolution v1.2.4)
View SourceBehavioral event constructors for Temporal Silo.
Events related to timing, episodes, and learning rate adaptation. Temporal Silo operates at timescale τ=10 (fastest adaptation).
Summary
Types
-type generation() :: non_neg_integer().
-type individual_id() :: binary().
-type population_id() :: binary().
-type temporal_event() :: #episode_started{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(), episode_number :: non_neg_integer(), expected_duration_ms :: non_neg_integer() | undefined, generation :: generation()} | #episode_completed{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(), episode_number :: non_neg_integer(), duration_ms :: non_neg_integer(), outcome :: success | failure | timeout | early_termination, fitness_delta :: float(), steps_taken :: non_neg_integer()} | #timing_adjusted{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(), previous_timeout_ms :: non_neg_integer(), new_timeout_ms :: non_neg_integer(), adjustment_reason :: convergence | stagnation | resource_pressure} | #learning_rate_adapted{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(), previous_rate :: float(), new_rate :: float(), adaptation_reason :: stagnation | breakthrough | scheduled | convergence, generation :: generation()} | #patience_exhausted{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(), generations_waited :: non_neg_integer(), best_fitness :: float(), action_taken :: terminate | reset | diversify} | #convergence_detected{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(), fitness_variance :: float(), generations_stable :: non_neg_integer(), generation :: generation()} | #timeout_threshold_reached{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(), elapsed_ms :: non_neg_integer(), threshold_ms :: non_neg_integer(), action :: terminate | extend | warn}.
-type timestamp() :: integer().
Functions
-spec convergence_detected(map()) -> #convergence_detected{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(), fitness_variance :: float(), generations_stable :: non_neg_integer(), generation :: generation()}.
-spec episode_completed(map()) -> #episode_completed{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(), episode_number :: non_neg_integer(), duration_ms :: non_neg_integer(), outcome :: success | failure | timeout | early_termination, fitness_delta :: float(), steps_taken :: non_neg_integer()}.
-spec episode_started(map()) -> #episode_started{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(), episode_number :: non_neg_integer(), expected_duration_ms :: non_neg_integer() | undefined, generation :: generation()}.
-spec event_to_map(temporal_event()) -> map().
-spec learning_rate_adapted(map()) -> #learning_rate_adapted{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(), previous_rate :: float(), new_rate :: float(), adaptation_reason :: stagnation | breakthrough | scheduled | convergence, generation :: generation()}.
-spec patience_exhausted(map()) -> #patience_exhausted{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(), generations_waited :: non_neg_integer(), best_fitness :: float(), action_taken :: terminate | reset | diversify}.
-spec timeout_threshold_reached(map()) -> #timeout_threshold_reached{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(), elapsed_ms :: non_neg_integer(), threshold_ms :: non_neg_integer(), action :: terminate | extend | warn}.
-spec timing_adjusted(map()) -> #timing_adjusted{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(), previous_timeout_ms :: non_neg_integer(), new_timeout_ms :: non_neg_integer(), adjustment_reason :: convergence | stagnation | resource_pressure}.