The Explore-Then-Commit Algorithm #
Arm pulled by the ETC algorithm at time n, as a function of the history before n.
For n < K * m, this is arm n % K.
For n = K * m, this is the arm with the highest empirical mean after the exploration phase.
For n > K * m, this is the same arm as at time n - 1.
Equations
- Bandits.ETC.nextArm K m n h = if hn : n < K * m then Learning.RoundRobin.nextAction K n else if hn_eq : n = K * m then argmax (Learning.empMean' n h) else (h ⟨n - 1, ⋯⟩).action
Instances For
The next arm pulled by ETC is chosen in a measurable way.
The Explore-Then-Commit algorithm: deterministic algorithm that chooses the next arm according
to ETC.nextArm.
Equations
- Bandits.etcAlgorithm K m = Learning.detAlgorithm (fun (n : ℕ) (p : Learning.Hist Unit (Fin K) ℝ n × Unit) => Bandits.ETC.nextArm K m n p.1) ⋯
Instances For
Before round K * m, the ETC algorithm behaves like the Round-Robin algorithm.
For n < K * m, the arm pulled at time n is the arm n % K.
The arm pulled at time K * m is the arm with the highest empirical mean after the exploration
phase.
For n ≥ K * m, the arm pulled at time n + 1 is the same as the arm pulled at time n.
For n ≥ K * m, the arm pulled at time n is the same as the arm pulled at time K * m.
At time K * m, the number of pulls of each arm is equal to m.
For n ≥ K * m, the number of pulls of each arm a at time n is equal to m plus
n - K * m if arm a is the best arm after the exploration phase.
If at time K * m the algorithm chooses arm a, then the total reward obtained by pulling
arm a is at least the total reward obtained by pulling the best arm.