Developmental Silo Guide

View Source

The Developmental Silo manages ontogeny - how individuals develop over their lifetime. Instead of networks being born fully formed, they grow through stages, experience critical periods, and can undergo metamorphosis. This mirrors biological development.

Overview

Traditional neuroevolution treats networks as static entities. The Developmental Silo introduces lifetime dynamics:

  • Developmental stages - Progress from embryonic to adult to senescent
  • Plasticity decay - Learning capacity decreases with age
  • Critical periods - Time-limited windows for specific learning
  • Metamorphosis - Radical structural reorganization
  • Canalization - Traits become increasingly stable

Developmental Silo Architecture

Why Developmental Dynamics?

Static NetworksDevelopmental Networks
Fixed at birthGrow and mature
Uniform learning rateAge-appropriate plasticity
No critical periodsFocused learning windows
Cannot radically adaptMetamorphosis enables transformation
Brittle to deployment changeLifetime adaptation

Architecture

The Developmental Silo uses TWEANN controllers at three levels:

LevelTime ConstantControls
L2 StrategicMany runsOptimal developmental programs for task classes
L1 TacticalPer generationAdapt parameters to individual progress
L0 ReactivePer operationProcess aging, plasticity, stages

Sensors (10 inputs)

The L0 controller receives 10 developmental measurements:

SensorRangeDescription
developmental_stage[0.0, 1.0]Progress through development (0=birth, 1=mature)
maturation_level[0.0, 1.0]Physiological maturity
plasticity_level[0.0, 1.0]Current learning capacity
plasticity_trend[-1.0, 1.0]Direction of plasticity change
critical_period_active[0.0, 1.0]Intensity of active critical period
canalization_strength[0.0, 1.0]Resistance to perturbation
heterochrony_index[0.0, 1.0]Timing variation from population mean
metamorphosis_proximity[0.0, 1.0]Distance to metamorphosis threshold
developmental_noise[0.0, 1.0]Random variation in development
developmental_fitness[0.0, 1.0]Fitness relative to developmental stage

Actuators (8 outputs)

The controller adjusts 8 developmental parameters:

ActuatorRangeDefaultEffect
growth_rate[0.0, 0.2]0.05Speed of structural growth
maturation_speed[0.0, 0.1]0.02Speed of physiological maturation
critical_period_duration[1, 20]5Generations critical period lasts
plasticity_decay_rate[0.0, 0.2]0.05How fast plasticity decreases
initial_plasticity[0.5, 1.0]0.9Plasticity at birth
developmental_noise_level[0.0, 0.3]0.1Stochasticity in development
metamorphosis_trigger[0.5, 0.95]0.8Threshold for metamorphosis
metamorphosis_severity[0.0, 1.0]0.5How drastic metamorphosis is

Developmental Dynamics

Developmental Dynamics

Developmental Stages

Individuals progress through five life stages:

StageDurationPlasticityCharacteristics
Embryonic5 gen0.9-1.0High growth, sensory critical periods
Juvenile15 gen0.7-0.9Sensory/motor critical periods
Adolescent20 gen0.4-0.7Cognitive/social critical periods
Adult40 gen0.2-0.4Stable, low plasticity
Senescent20 gen0.1-0.2Minimal plasticity, reduced mutation

Each stage has:

  • Different mutation rate modifiers
  • Available critical period types
  • Appropriate plasticity ranges

Plasticity Decay

Plasticity decreases with age, following exponential decay:

plasticity(t+1) = plasticity(t) * (1 - decay_rate)
Young NetworksOld Networks
High plasticity (0.9)Low plasticity (0.1)
Fast learningSlow learning
Unstable behaviorStable behavior
High variabilityCanalized traits

The min_plasticity floor (typically 0.1) prevents complete rigidity.

Critical Periods

Critical periods are time-limited windows where learning is enhanced:

Period TypeStageEffect
SensoryEmbryonic, Juvenile2x learning rate for sensory processing
MotorJuvenile2x learning rate for motor control
CognitiveAdolescent2x learning rate for reasoning
SocialAdolescent2x learning rate for social behavior

During critical period:

effective_learning_rate = base_learning_rate * 2.0

Critical periods:

  • Open automatically based on stage
  • Close after critical_period_duration generations
  • Cannot be reopened once closed
  • Record what learning was acquired

Metamorphosis

Metamorphosis allows radical transformation:

%% Metamorphosis resets plasticity and reduces canalization
new_plasticity = initial_plasticity * severity + old_plasticity * (1 - severity)
new_canalization = old_canalization * (1 - severity)
Before MetamorphosisAfter Metamorphosis
Low plasticity (0.2)High plasticity (0.7)
High canalization (0.8)Low canalization (0.2)
Stable but rigidFlexible and adaptable

Metamorphosis triggers:

  • Maturation progress exceeds metamorphosis_trigger threshold
  • Maximum 3 metamorphoses per lifetime (max_metamorphoses)
  • 20% probability when conditions met

Canalization

Canalization measures resistance to perturbation:

Low CanalizationHigh Canalization
High variabilityStable traits
Easy to modifyDifficult to change
Exploratory behaviorExploitative behavior

Canalization increases with age and successful behavior, but metamorphosis resets it.

Heterochrony

Heterochrony measures developmental timing relative to population:

  • Precocious (early developers) - Mature faster, reach adult stage sooner
  • Delayed (late developers) - Extended juvenile/adolescent periods

The heterochrony_index sensor tracks this:

z_score = abs(individual_age - population_mean_age) / population_std_age
heterochrony_index = clamp(z_score / 4.0 + 0.5, 0.0, 1.0)

Integration with Other Silos

Developmental Dataflow

Outgoing Signals

SignalTo SiloTrigger
maturity_distributionTaskAverage population maturity
plasticity_availableCulturalAverage plasticity level
metamorphosis_rateEcologicalMetamorphoses per generation
growth_stageMorphologicalCurrent developmental stage
critical_timingTemporalCritical period activity

Incoming Signals

SignalFrom SiloEffect
stress_levelEcologicalStress > 0.7 accelerates maturation
learning_opportunityCulturalOpportunity > 0.5 extends critical periods
resource_scarcityResourceScarcity > 0.6 accelerates growth
social_mentoringSocialMentoring affects critical period learning

Signal Examples

%% Receive stress from ecological silo
handle_cast({cross_silo, stress_level, Stress}, State) when Stress > 0.7 ->
    %% High stress accelerates maturation
    NewSpeed = State#developmental_state.maturation_speed * 1.5,
    {noreply, State#developmental_state{maturation_speed = min(0.1, NewSpeed)}};

%% Send plasticity signal to cultural silo
signal_plasticity_available(Pid) ->
    IndStates = maps:values(State#developmental_state.individual_states),
    Plasticities = [I#individual_dev_state.plasticity || I <- IndStates],
    AvgPlasticity = lists:sum(Plasticities) / length(Plasticities),
    clamp(AvgPlasticity, 0.0, 1.0).

Events Emitted

EventPayloadTrigger
development_stage_changed{individual_id, old_stage, new_stage}Stage transition
critical_period_opened{individual_id, period_type, duration}Period began
critical_period_closed{individual_id, period_type, learning_acquired}Period ended
plasticity_decreased{individual_id, old_level, new_level}Plasticity decayed
maturation_completed{individual_id, final_structure, age}Fully mature
metamorphosis_triggered{individual_id, severity, new_plasticity}Radical change
developmental_milestone{individual_id, milestone, age}Key achievement
canalization_established{individual_id, trait, stability}Trait fixed

Practical Examples

Example 1: Fast-Maturing Population

Configure for rapid development and short critical periods:

Config = #{
    growth_rate => 0.15,                 % Fast structural growth
    maturation_speed => 0.08,            % Fast physiological maturation
    critical_period_duration => 3,        % Short learning windows
    plasticity_decay_rate => 0.12,        % Fast plasticity loss
    initial_plasticity => 0.95            % High starting plasticity
}.

Expected outcomes:

  • Quick convergence to adult behavior
  • Less lifetime adaptation
  • Efficient for stable deployment environments

Example 2: Extended Learning

Configure for prolonged development and extended learning:

Config = #{
    growth_rate => 0.03,                 % Slow structural growth
    maturation_speed => 0.01,            % Slow maturation
    critical_period_duration => 15,       % Long learning windows
    plasticity_decay_rate => 0.02,        % Slow plasticity loss
    initial_plasticity => 0.9,
    metamorphosis_trigger => 0.9,         % High metamorphosis threshold
    metamorphosis_severity => 0.7         % Strong metamorphosis effect
}.

Expected outcomes:

  • Extended learning periods
  • High lifetime adaptation
  • Better for changing deployment environments

Example 3: Deployment Adaptation

For networks that need to adapt in deployment:

Config = #{
    plasticity_decay_rate => 0.01,        % Very slow decay
    initial_plasticity => 0.8,
    metamorphosis_trigger => 0.5,         % Easy to trigger metamorphosis
    metamorphosis_severity => 0.4,        % Moderate reset
    developmental_noise_level => 0.15     % Some stochasticity
}.

Expected outcomes:

  • Networks retain learning capacity in deployment
  • Can adapt to environment-specific conditions
  • Metamorphosis available for major adaptation

Tuning Guide

Trade-offs

GoalSettings
Fast trainingHigh decay rate, short critical periods
RobustnessLow decay rate, extended critical periods
StabilityHigh canalization, low metamorphosis
FlexibilityLow canalization, high metamorphosis

Common Issues

ProblemLikely CauseFix
Networks don't matureLow maturation speedIncrease maturation_speed
No learning after juvenilePlasticity too lowLower plasticity_decay_rate
Critical periods ineffectiveToo shortIncrease critical_period_duration
Stuck in local optimaHigh canalizationEnable metamorphosis, reduce trigger threshold
Too much variationHigh developmental noiseLower developmental_noise_level
DefaultConfig = #{
    growth_rate => 0.05,
    maturation_speed => 0.02,
    critical_period_duration => 5,
    plasticity_decay_rate => 0.05,
    initial_plasticity => 0.9,
    developmental_noise_level => 0.1,
    metamorphosis_trigger => 0.8,
    metamorphosis_severity => 0.5
}.

Control Loop

The Developmental Silo executes per generation:

  1. Advance individual ages - Increment age counter
  2. Apply plasticity decay - Reduce plasticity based on decay rate
  3. Check stage transitions - Move to next stage if conditions met
  4. Open/close critical periods - Manage time-limited learning windows
  5. Check metamorphosis triggers - Initiate radical transformation if threshold met
  6. Update canalization levels - Track trait stability
  7. Emit developmental events - Notify other systems
  8. Send cross-silo signals - Update dependent silos

Configuration Reference

Full Configuration Record

-record(developmental_config, {
    %% Enable/disable
    enabled = true :: boolean(),

    %% Stage configuration
    num_stages = 5 :: pos_integer(),
    stage_definitions :: [developmental_stage()],

    %% Plasticity
    min_plasticity = 0.1 :: float(),
    max_plasticity = 1.0 :: float(),

    %% Critical periods
    enable_critical_periods = true :: boolean(),
    available_period_types = [sensory, motor, cognitive, social] :: [atom()],

    %% Metamorphosis
    enable_metamorphosis = true :: boolean(),
    max_metamorphoses = 3 :: pos_integer(),

    %% Event emission
    emit_events = true :: boolean()
}).

API Functions

%% Start the developmental silo
developmental_silo:start_link(Config)

%% Register a new individual
developmental_silo:register_individual(Pid, IndividualId)

%% Advance an individual's age
{ok, NewAge} = developmental_silo:advance_age(Pid, IndividualId)

%% Get plasticity level
Plasticity = developmental_silo:get_plasticity(Pid, IndividualId)

%% Open a critical period
ok = developmental_silo:open_critical_period(Pid, IndividualId, sensory)

%% Close a critical period
ok = developmental_silo:close_critical_period(Pid, IndividualId, sensory)

%% Trigger metamorphosis
ok = developmental_silo:trigger_metamorphosis(Pid, IndividualId)

%% Get individual developmental state
IndState = developmental_silo:get_individual_state(Pid, IndividualId)

%% Enable/disable silo
developmental_silo:enable(Pid)
developmental_silo:disable(Pid)

Source Code Reference

Core implementation files:

FilePurpose
src/lc_silos/developmental_silo.erlMain silo gen_server
src/lc_silos/developmental_silo_sensors.erlL0 sensor implementation
src/lc_silos/developmental_silo_actuators.erlL0 actuator implementation
src/lc_silos/developmental_silo.hrlRecord definitions

References

  • PLAN_DEVELOPMENTAL_SILO.md - Full specification
  • "Developmental Plasticity and Evolution" - West-Eberhard
  • "Critical Periods in Development" - Knudsen
  • "Metamorphosis: Postembryonic Reprogramming" - Shi

See Also