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.



7
8
9
10
11
12
# File 'lib/saulabs/trueskill/factors/base.rb', line 7

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

Instance Method Details

#bind(variable) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/saulabs/trueskill/factors/base.rb', line 38

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

#log_normalizationObject



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

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

#message_countObject



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

def message_count
  @messages.size
end

#reset_marginalsObject



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

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

#send_message_at(idx) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/saulabs/trueskill/factors/base.rb', line 30

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



14
15
16
# File 'lib/saulabs/trueskill/factors/base.rb', line 14

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