competitive_silo (faber_neuroevolution v1.2.4)

View Source

Competitive Silo - Opponent archives, Elo ratings, matchmaking.

Part of the Liquid Conglomerate v2 architecture. The Competitive Silo manages: Opponent archive maintenance and selection Elo rating system for skill tracking Matchmaking based on skill levels Arms race detection and mitigation Strategy diversity monitoring

Time Constant

τ = 15 (medium-fast adaptation for competitive dynamics)

Cross-Silo Signals

Outgoing: competitive_pressure to task: Competitive intensity level strategy_diversity_need to cultural: Need for strategy variety arms_race_active to resource: Arms race intensity coalition_competition to social: Inter-coalition rivalry

Incoming: fitness_pressure from task: Fitness selection pressure strategy_innovation from cultural: Strategic novelty rate resource_level from ecological: Resource availability coalition_structure from social: Coalition organization level

Summary

Functions

add_to_archive(Pid, IndividualId, NetworkBinary)

-spec add_to_archive(pid(), term(), binary()) -> ok | {error, term()}.

apply_actuators(Actuators, State)

collect_sensors(State)

compute_reward(State)

emit_cross_silo_signals(State)

get_archive_stats(Pid)

-spec get_archive_stats(pid()) -> map().

get_elo(Pid, IndividualId)

-spec get_elo(pid(), term()) -> {ok, float()} | not_found.

get_params(Pid)

-spec get_params(pid()) -> map().

get_silo_type()

get_state(Pid)

-spec get_state(pid()) -> map().

get_time_constant()

handle_call(Request, From, State)

handle_cast(Msg, State)

handle_cross_silo_signals(Signals, State)

handle_info(Info, State)

init(Config)

init_silo(Config)

record_match(Pid, PlayerId, OpponentId, Result, EloChange)

-spec record_match(pid(), term(), term(), win | loss | draw, float()) -> ok.

reset(Pid)

-spec reset(pid()) -> ok.

select_opponent(Pid, PlayerId)

-spec select_opponent(pid(), term()) -> {ok, term()} | no_opponents.

start_link()

-spec start_link() -> {ok, pid()} | ignore | {error, term()}.

start_link(Config)

-spec start_link(map()) -> {ok, pid()} | ignore | {error, term()}.

terminate(Reason, State)

update_elo(Pid, PlayerId, OpponentId, Result)

-spec update_elo(pid(), term(), term(), win | loss | draw) -> {ok, float(), float()}.