lc_l1_controller (faber_neuroevolution v1.2.4)
View SourceL1 Hyperparameter Controller for Liquid Conglomerate Silos.
Part of the Liquid Conglomerate v2 architecture. This module implements the L1 tactical layer that learns to tune L0's hyperparameters based on L0's performance metrics.
Architecture
L1 is itself a TWEANN that: - Observes L0 performance over τ_L1 time windows - Outputs adjustments (deltas) to L0's hyperparameters - Evolves slower than L0 to provide a stable adaptation platform
Hyperparameters Tuned (by Silo)
Resource Silo: - memory_high_threshold, pressure_smoothing_alpha
Task Silo: - mutation_rate_min/max, topology_mutation_boost, exploitation_vs_exploration - archive_threshold_min/max, archive_diversity_weight, archive_recency_decay
Distribution Silo: - migration_cooldown_ms, load_imbalance_threshold
Learning Mechanism
L1 learns through meta-evolution: 1. Population of L1 TWEANNs (5-10 individuals) 2. Each L1 variant manages L0 for N τ_L1 cycles 3. Fitness = how well L0 performed under that hyperparameter regime 4. Selection + mutation + crossover produces next generation
Usage
%% Create L1 controller for a silo Config = #{ silo_type => resource, morphology_module => resource_l0_morphology, tau_l1 => 30000, % 30 seconds l0_hyperparameters => resource_l0_morphology:l0_hyperparameters() }, {ok, Pid} = lc_l1_controller:start_link(Config),
%% Update with L0 performance (called every τ_L0) lc_l1_controller:observe_l0_performance(Pid, L0Metrics),
%% Get current hyperparameter adjustments for L0 Deltas = lc_l1_controller:get_hyperparameter_deltas(Pid),
Summary
Functions
Apply deltas to base hyperparameters (utility function).
Get current absolute hyperparameters for L0.
Get current hyperparameter adjustment deltas.
Observe L0 performance metrics.
Set L1's own hyperparameters (from L2).
Start L1 controller with configuration.
Functions
Apply deltas to base hyperparameters (utility function).
Get current absolute hyperparameters for L0.
Get current hyperparameter adjustment deltas.
Returns map of {hyperparameter_name => delta_value}
Observe L0 performance metrics.
Called every τ_L0 with L0's performance metrics (reward, sensors, etc.)
Set L1's own hyperparameters (from L2).
Start L1 controller with configuration.