Economic Silo Guide

View Source

What is the Economic Silo?

The Economic Silo is the resource allocation controller in the Liquid Conglomerate architecture. It manages computation budgets, energy economics, trade between individuals, and creates efficiency pressure so that networks must be cost-effective - not just fit.

Think of the Economic Silo as a central bank and marketplace combined. It allocates computational budgets, tracks energy consumption, facilitates trade between individuals, collects taxes, and redistributes wealth. Without it, all individuals receive equal resources regardless of promise, leading to massive waste.

The Economic Silo solves two fundamental problems in neuroevolution:

  1. Cost Awareness: Training should respect real-world budget constraints
  2. Efficiency Pressure: Better fitness/cost ratio should be rewarded

Architecture Overview

Economic Silo Architecture

The Economic Silo operates as a three-level hierarchical controller:

LevelNameRoleTime Constant
L0ReactiveAllocate budgets, charge energy, execute tradesPer operation
L1TacticalAdjust allocations based on efficiencyPer generation
L2StrategicLearn optimal economic policies (future)Across runs

Key Principle: Efficiency Matters

The Economic Silo operates on the principle that fitness alone isn't enough:

  • Cost-effective solutions are better than expensive ones
  • Budget pressure drives innovation in efficiency
  • Trade enables specialization (networks can share capabilities)
  • Redistribution prevents wealth concentration

How It Works

Sensors (Inputs)

The Economic Silo observes 12 sensors describing economic dynamics:

SensorRangeDescription
computation_budget_remaining[0, 1]Available compute / total budget
budget_trend[-1, 1]Direction of budget change
energy_level[0, 1]Current energy reserves
energy_income[0, 1]Energy gain rate
energy_expenditure[0, 1]Energy spend rate
trade_volume[0, 1]Amount of trading activity
market_price_fitness[0, 1]Cost of fitness improvement
trade_balance[-1, 1]Net trade position
wealth_gini_coefficient[0, 1]Wealth inequality
debt_level[0, 1]Population debt
fitness_per_cost[0, 1]Efficiency ratio
scarcity_index[0, 1]Resource scarcity level

Actuators (Outputs)

The Economic Silo controls 10 parameters governing economic behavior:

ActuatorRangeDefaultDescription
computation_allocation_strategy[0.0, 1.0]0.5Equal vs fitness-proportional
budget_per_individual[0.1, 10.0]1.0Compute units per individual
energy_tax_rate[0.0, 0.3]0.1Tax on energy income
wealth_redistribution_rate[0.0, 0.5]0.1Redistribution from rich to poor
trade_incentive[0.0, 0.5]0.2Bonus for trading
bankruptcy_threshold[0.0, 0.3]0.05When to declare bankruptcy
investment_horizon[1, 20]5Generations for ROI calculation
resource_discovery_bonus[0.0, 0.5]0.1Bonus for finding resources
inflation_control[0.0, 0.1]0.02Control fitness inflation
debt_penalty[0.0, 0.2]0.05Fitness penalty for debt

Budget Flow & Economic Cycle

Budget Flow

The economic cycle operates as follows:

1. Budget Allocation

%% Each individual receives budget based on strategy
{ok, Budget} = economic_silo:allocate_budget(EconPid, IndividualId),
%% Strategy 0.0 = equal allocation
%% Strategy 1.0 = fitness-proportional allocation

2. Energy Consumption

%% Charge energy during evaluation
ok = economic_silo:charge_energy(EconPid, IndividualId, EvaluationCost),
%% Tracks cost_incurred for efficiency calculation

3. Trade Execution

%% Individuals can trade resources
ok = economic_silo:execute_trade(EconPid, BuyerId, SellerId, Amount),
%% Enables specialization and comparative advantage

4. Taxation

%% Collect taxes on energy income
ok = economic_silo:collect_taxes(EconPid),
%% Funds redistribution pool

5. Redistribution

%% Redistribute from wealthy to poor
ok = economic_silo:redistribute_wealth(EconPid),
%% Reduces inequality, prevents runaway concentration

The Control Loop

  1. Per Operation: Allocate budgets, charge energy, execute trades
  2. Per Generation: Collect taxes, redistribute wealth, update prices
  3. Per Update Cycle: Collect sensors, adjust actuators via TWEANN
  4. Emit Events: Publish economic events to event bus

Integration with the Neuroevolution Engine

Economic Silo Dataflow

Wiring Diagram

The Economic Silo integrates with evaluation and other silos:

Data Sources:

  • evaluation_engine - Fitness per cost, resource usage
  • morphological_silo - Network complexity costs
  • temporal_silo - Evaluation time (affects cost)

Data Consumers:

  • evaluation_engine - Budget allocations, efficiency requirements
  • temporal_silo - Budget constraints on evaluation time
  • morphological_silo - Efficiency requirements for network size
  • neuroevolution_events - Event bus for monitoring

Cross-Silo Interactions

The Economic Silo exchanges signals with other silos:

Signals Sent: | Signal | To | Description | |--------|-----|-------------| | economic_pressure | Task | High pressure = need simpler solutions | | budget_available | Temporal | Budget constrains evaluation time | | efficiency_requirement | Morphological | Efficiency targets for network size |

Signals Received: | Signal | From | Effect | |--------|------|--------| | resource_level | Ecological | Resources affect available budget | | complexity_cost | Morphological | Network size affects energy cost | | episode_efficiency | Temporal | Efficiency information for pricing |

Engine Integration Points

%% Start Economic Silo
{ok, _} = economic_silo:start_link(#economic_config{
    enabled = true,
    initial_energy = 100.0,
    initial_budget = 1.0,
    enable_trade = true,
    enable_taxation = true,
    emit_events = true
}),

%% Before evaluation: allocate budget
{ok, Budget} = economic_silo:allocate_budget(EconPid, IndividualId),

%% During evaluation: track costs
economic_silo:charge_energy(EconPid, IndividualId, StepCost),

%% End of generation: economic cycle
economic_silo:collect_taxes(EconPid),
economic_silo:redistribute_wealth(EconPid).

Training Velocity Impact

MetricWithout Economic SiloWith Economic Silo
Compute efficiency1.0x2-4x
Cost per fitnessUntrackedOptimized
Resource wasteHighLow
Deployment readinessVariableCost-aware

The Economic Silo provides significant cost optimization by creating selection pressure for efficient solutions.

Practical Examples

Example 1: Budget-Proportional Allocation

%% Scenario: Some individuals are more promising
%% allocation_strategy = 0.8 (fitness-proportional)

%% High-fitness individual gets more budget:
%% fitness=0.9 -> budget=1.8x average

%% Low-fitness individual gets less:
%% fitness=0.1 -> budget=0.2x average

%% Result: Promising individuals get more evaluation time

Example 2: Trade Enables Specialization

%% Scenario: Agent A is good at exploration, Agent B at exploitation
%% They can trade capabilities

ok = economic_silo:execute_trade(EconPid, AgentA, AgentB, 50.0),

%% Trade event emitted:
{trade_completed, #{
    buyer_id => AgentA,
    seller_id => AgentB,
    amount => 50.0,
    price => 500.0
}}

%% Result: Both benefit from comparative advantage

Example 3: Wealth Redistribution Reduces Inequality

%% Scenario: High Gini coefficient (0.8 = very unequal)
%% wealth_redistribution_rate = 0.1

%% Before: Agent A wealth=1000, Agent B wealth=10
%% After: Agent A wealth=901, Agent B wealth=109

%% Event:
{wealth_redistributed, #{
    rate => 0.1,
    total_transferred => 99.0
}}

%% Result: Poor agents can still compete

Tuning Guide

Key Parameters

ParameterWhen to IncreaseWhen to Decrease
budget_per_individualRich compute environmentCost-constrained
computation_allocation_strategyWant to focus on promisingWant exploration
energy_tax_rateHigh inequalityLow activity
wealth_redistribution_rateExtreme inequalityNeed competition
trade_incentiveWant specializationPrefer independence
debt_penaltyRunaway debtToo conservative

Common Pitfalls

  1. Budget too low: Good individuals don't have time to show potential

    • Symptom: All fitnesses converge to same low value
    • Fix: Increase budget_per_individual to 2.0+
  2. No trade: Missing specialization benefits

    • Symptom: All individuals evolve same strategies
    • Fix: Increase trade_incentive to 0.3+
  3. High inequality: Poor individuals can't compete

    • Symptom: Same few individuals always win
    • Fix: Increase wealth_redistribution_rate to 0.2+
  4. No cost pressure: Bloated, inefficient networks

    • Symptom: Networks grow without bound
    • Fix: Lower budget_per_individual, increase debt_penalty

Debugging Tips

%% Get individual account
Account = economic_silo:get_account(EconPid, IndividualId),
io:format("Energy: ~.2f~n", [Account#individual_account.energy]),
io:format("Debt: ~.2f~n", [Account#individual_account.debt]),
io:format("Efficiency: ~.3f~n", [
    Account#individual_account.fitness_earned /
    max(1.0, Account#individual_account.cost_incurred)
]),

%% Get overall economic state
State = economic_silo:get_state(EconPid),
io:format("Market price: ~.2f~n", [State#economic_state.market_price]),
io:format("Total tax collected: ~.2f~n", [State#economic_state.total_tax_collected]),
io:format("Bankruptcies: ~p~n", [State#economic_state.bankruptcies]).

Events Reference

The Economic Silo emits events on significant actions:

EventTriggerKey Payload
budget_allocatedCompute assignedindividual_id, amount
budget_exhaustedRan out of computeindividual_id, needed, available
trade_completedExchange occurredbuyer_id, seller_id, amount, price
bankruptcy_declaredOut of resourcesindividual_id, debt, assets
wealth_redistributedTransfer occurredrate, total_transferred
energy_taxedTax collectedrate, total_collected
investment_maturedROI realizedinvestor_id, investment, return
resource_discoveredNew resource foundindividual_id, resource_type, amount

Example Event Payload:

{trade_completed, #{
    silo => economic,
    timestamp => 1703318400000,
    generation => 42,
    payload => #{
        trade_id => <<"trade_12345">>,
        buyer_id => <<"agent_a">>,
        seller_id => <<"agent_b">>,
        quantity => 50.0,
        price => 500.0
    }
}}

L0 Hyperparameters (L1-Tuned)

ParameterRangeDefaultDescription
initial_energy[10, 1000]100Starting energy per individual
initial_budget[0.1, 10.0]1.0Starting compute budget
enable_tradebooltrueAllow trade between individuals
enable_taxationbooltrueCollect energy taxes
max_debt[0, 1000]100Maximum allowed debt
market_price_base[1, 100]10Base market price

L1 Hyperparameters (L2-Tuned)

ParameterRangeDefaultDescription
budget_pressure[0.0, 1.0]0.5Urgency of budget constraints
efficiency_emphasis[0.0, 1.0]0.5Weight on efficiency vs fitness
trade_encouragement[0.0, 1.0]0.5How much to encourage trade
redistribution_level[0.0, 1.0]0.5Degree of wealth redistribution

Configuration Examples

Cost-Constrained Cloud Training

#economic_config{
    enabled = true,
    initial_energy = 50.0,         % Limited
    initial_budget = 0.5,          % Tight
    enable_trade = true,
    enable_taxation = true,
    emit_events = true
}.

%% With actuators:
%% budget_per_individual = 0.3
%% debt_penalty = 0.15 (aggressive)
%% efficiency emphasized

Research/Exploration Mode

#economic_config{
    enabled = true,
    initial_energy = 1000.0,       % Abundant
    initial_budget = 5.0,          % Generous
    enable_trade = false,          % Independent evolution
    enable_taxation = false,       % No redistribution
    emit_events = true
}.

%% Let evolution explore freely without cost pressure

Multi-Agent Marketplace

#economic_config{
    enabled = true,
    initial_energy = 200.0,
    initial_budget = 2.0,
    enable_trade = true,            % Critical
    enable_taxation = true,
    emit_events = true
}.

%% With actuators:
%% trade_incentive = 0.4 (high)
%% wealth_redistribution_rate = 0.15
%% Enable specialization through trade

Source Code Reference

ModulePurposeLocation
economic_silo.erlMain gen_serversrc/silos/economic_silo/
economic_silo_sensors.erlSensor collection (12)Same
economic_silo_actuators.erlActuator application (10)Same
economic_silo.hrlRecord definitionsSame
lc_cross_silo.erlCross-silo signalssrc/silos/

Further Reading

References

Evolutionary Economics

  • Potts, J. (2000). "The New Evolutionary Microeconomics: Complexity, Competence and Adaptive Behaviour." Edward Elgar Publishing.

Resource Allocation in Distributed Systems

  • Buyya, R., et al. (2002). "Economic Models for Resource Management and Scheduling in Grid Computing." Concurrency and Computation: Practice and Experience.

Multi-Agent Economies

  • Varian, H.R. (2014). "Intermediate Microeconomics: A Modern Approach." W.W. Norton.
  • Arthur, W.B. (1994). "Increasing Returns and Path Dependence in the Economy." University of Michigan Press.