Class: Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Coupling

Inherits:
Object
  • Object
show all
Includes:
Constants
Defined in:
lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb

Constant Summary

Constants included from Constants

Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::BANDS, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::BAND_INFO, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::COGNITIVE_STATES, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::COUPLING_BOOST, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::COUPLING_DECAY, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::COUPLING_FLOOR, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::DEFAULT_POWER, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::DOMINANT_THRESHOLD, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::MAX_COUPLINGS, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::MAX_HISTORY, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::MAX_OSCILLATORS, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::PHASE_INCREMENT, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::POWER_DECAY, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::POWER_FLOOR, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::POWER_LABELS, Legion::Extensions::Agentic::Homeostasis::NeuralOscillation::Helpers::Constants::SYNC_THRESHOLD

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(oscillator_a:, oscillator_b:, band:, strength: COUPLING_BOOST) ⇒ Coupling

Returns a new instance of Coupling.



15
16
17
18
19
20
21
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 15

def initialize(oscillator_a:, oscillator_b:, band:, strength: COUPLING_BOOST)
  @oscillator_a = oscillator_a
  @oscillator_b = oscillator_b
  @band         = band
  @strength     = strength.to_f.clamp(0.0, 1.0)
  @created_at   = Time.now.utc
end

Instance Attribute Details

#bandObject (readonly)

Returns the value of attribute band.



12
13
14
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 12

def band
  @band
end

#oscillator_aObject (readonly)

Returns the value of attribute oscillator_a.



12
13
14
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 12

def oscillator_a
  @oscillator_a
end

#oscillator_bObject (readonly)

Returns the value of attribute oscillator_b.



12
13
14
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 12

def oscillator_b
  @oscillator_b
end

#strengthObject

Returns the value of attribute strength.



13
14
15
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 13

def strength
  @strength
end

Instance Method Details

#decayObject



31
32
33
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 31

def decay
  @strength = [@strength - COUPLING_DECAY, 0.0].max
end

#involves?(oscillator_id) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 43

def involves?(oscillator_id)
  [@oscillator_a, @oscillator_b].include?(oscillator_id)
end

#keyObject



23
24
25
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 23

def key
  [[@oscillator_a, @oscillator_b].sort, @band].flatten
end

#partner_of(oscillator_id) ⇒ Object



47
48
49
50
51
52
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 47

def partner_of(oscillator_id)
  return @oscillator_b if @oscillator_a == oscillator_id
  return @oscillator_a if @oscillator_b == oscillator_id

  nil
end

#strengthen(amount = COUPLING_BOOST) ⇒ Object



27
28
29
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 27

def strengthen(amount = COUPLING_BOOST)
  @strength = [@strength + amount, 1.0].min
end

#synchronized?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 39

def synchronized?
  @strength >= SYNC_THRESHOLD
end

#to_hObject



54
55
56
57
58
59
60
61
62
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 54

def to_h
  {
    oscillator_a: @oscillator_a,
    oscillator_b: @oscillator_b,
    band:         @band,
    strength:     @strength.round(4),
    synchronized: synchronized?
  }
end

#weak?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/legion/extensions/agentic/homeostasis/neural_oscillation/helpers/coupling.rb', line 35

def weak?
  @strength <= COUPLING_FLOOR
end