Class: Saulabs::TrueSkill::Factors::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/saulabs/trueskill/factors/base.rb

Direct Known Subclasses

GreaterThan, Likelihood, Prior, WeightedSum, Within

Instance Method Summary collapse

Constructor Details

#initializeBase

Returns a new instance of Base.



10
11
12
13
14
15
# File 'lib/saulabs/trueskill/factors/base.rb', line 10

def initialize
  @messages = []
  @bindings = {}
  @variables = []
  @priors = []
end

Instance Method Details

#bind(variable) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/saulabs/trueskill/factors/base.rb', line 41

def bind(variable)
  message = Gauss::Distribution.new
  @messages << message
  @bindings[message] = variable
  @variables << variable
  return message
end

#log_normalizationObject



25
26
27
# File 'lib/saulabs/trueskill/factors/base.rb', line 25

def log_normalization
  raise "Abstract method Factors::Base#log_normalization called"
end

#message_countObject



21
22
23
# File 'lib/saulabs/trueskill/factors/base.rb', line 21

def message_count
  @messages.size
end

#reset_marginalsObject



29
30
31
# File 'lib/saulabs/trueskill/factors/base.rb', line 29

def reset_marginals
  @bindings.values.each { |var| var.replace(Gauss::Distribution.new) }
end

#send_message_at(idx) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/saulabs/trueskill/factors/base.rb', line 33

def send_message_at(idx)
  message = @messages[idx]
  variable = @variables[idx]
  log_z = Gauss::Distribution.log_product_normalization(message, variable)
  variable.replace(message * variable)
  return log_z
end

#update_message_at(index) ⇒ Object



17
18
19
# File 'lib/saulabs/trueskill/factors/base.rb', line 17

def update_message_at(index)
  raise "Abstract method Factors::Base#update_message_at(index) called"
end