Class: ClassicBandit::Arm

Inherits:
Object
  • Object
show all
Defined in:
lib/classic_bandit/arm.rb

Overview

Represents an arm in a multi-armed bandit problem. Each arm maintains its own trial counts and success counts, which are used by various bandit algorithms to make decisions.

Examples:

Create a new arm

arm = ClassicBandit::Arm.new(id: 1, name: "banner_a")
arm.trials  #=> 0
arm.successes #=> 0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, name: nil, trials: 0, successes: 0) ⇒ Arm

Returns a new instance of Arm.



16
17
18
19
20
21
# File 'lib/classic_bandit/arm.rb', line 16

def initialize(id:, name: nil, trials: 0, successes: 0)
  @id = id
  @name = name || id.to_s
  @trials = trials
  @successes = successes
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



13
14
15
# File 'lib/classic_bandit/arm.rb', line 13

def id
  @id
end

#nameObject (readonly)

Returns the value of attribute name.



13
14
15
# File 'lib/classic_bandit/arm.rb', line 13

def name
  @name
end

#successesObject

Returns the value of attribute successes.



14
15
16
# File 'lib/classic_bandit/arm.rb', line 14

def successes
  @successes
end

#trialsObject

Returns the value of attribute trials.



14
15
16
# File 'lib/classic_bandit/arm.rb', line 14

def trials
  @trials
end

Instance Method Details

#mean_rewardFloat

Calculate mean reward (success rate) for this arm

Returns:

  • (Float)

    Mean reward (0.0 if no trials)



25
26
27
28
29
# File 'lib/classic_bandit/arm.rb', line 25

def mean_reward
  return 0.0 if @trials.zero?

  @successes.to_f / @trials
end