Class: Legion::Extensions::Agentic::Homeostasis::Neuromodulation::Helpers::ModulatorSystem
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Homeostasis::Neuromodulation::Helpers::ModulatorSystem
show all
- Includes:
- Constants
- Defined in:
- lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb
Constant Summary
Constants included
from Constants
Constants::BASELINE_DRIFT, Constants::DEFAULT_LEVEL, Constants::LEVEL_CEILING, Constants::LEVEL_FLOOR, Constants::MAX_EVENTS, Constants::MODULATION_ALPHA, Constants::MODULATORS, Constants::OPTIMAL_RANGES, Constants::STATE_LABELS
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of ModulatorSystem.
14
15
16
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 14
def initialize
@modulators = MODULATORS.to_h { |name| [name, Modulator.new(name)] }
end
|
Instance Attribute Details
#modulators ⇒ Object
Returns the value of attribute modulators.
12
13
14
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 12
def modulators
@modulators
end
|
Instance Method Details
#all_levels ⇒ Object
37
38
39
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 37
def all_levels
@modulators.transform_values(&:level)
end
|
#arousal_level ⇒ Object
69
70
71
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 69
def arousal_level
@modulators[:norepinephrine].level
end
|
#attention_precision ⇒ Object
51
52
53
54
55
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 51
def attention_precision
ne = @modulators[:norepinephrine].level
ach = @modulators[:acetylcholine].level
clamp((ne * 0.5) + (ach * 0.5))
end
|
#balance_score ⇒ Object
84
85
86
87
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 84
def balance_score
in_range = @modulators.values.count(&:optimal?)
in_range.to_f / @modulators.size
end
|
#boost(name, amount, reason: nil) ⇒ Object
18
19
20
21
22
23
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 18
def boost(name, amount, reason: nil)
validate_name!(name)
result = @modulators[name].boost(amount, reason: reason)
apply_interactions(name)
result
end
|
#composite_influences ⇒ Object
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 73
def composite_influences
{
learning_rate_modifier: learning_rate_modifier.round(4),
attention_precision: attention_precision.round(4),
exploration_bias: exploration_bias.round(4),
patience_factor: patience_factor.round(4),
memory_encoding_strength: memory_encoding_strength.round(4),
arousal_level: arousal_level.round(4)
}
end
|
#exploration_bias ⇒ Object
57
58
59
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 57
def exploration_bias
@modulators[:dopamine].level
end
|
#learning_rate_modifier ⇒ Object
45
46
47
48
49
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 45
def learning_rate_modifier
da = @modulators[:dopamine].level
ach = @modulators[:acetylcholine].level
clamp((da * 0.6) + (ach * 0.4))
end
|
#level(name) ⇒ Object
32
33
34
35
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 32
def level(name)
validate_name!(name)
@modulators[name].level
end
|
#memory_encoding_strength ⇒ Object
65
66
67
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 65
def memory_encoding_strength
@modulators[:acetylcholine].level
end
|
#patience_factor ⇒ Object
61
62
63
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 61
def patience_factor
@modulators[:serotonin].level
end
|
#suppress(name, amount, reason: nil) ⇒ Object
25
26
27
28
29
30
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 25
def suppress(name, amount, reason: nil)
validate_name!(name)
result = @modulators[name].suppress(amount, reason: reason)
apply_interactions(name)
result
end
|
#tick ⇒ Object
41
42
43
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 41
def tick
@modulators.each_value(&:drift_to_baseline)
end
|
#to_h ⇒ Object
89
90
91
92
93
94
95
|
# File 'lib/legion/extensions/agentic/homeostasis/neuromodulation/helpers/modulator_system.rb', line 89
def to_h
{
modulators: @modulators.transform_values(&:to_h),
influences: composite_influences,
balance: balance_score.round(4)
}
end
|