Connect++ 0.5.0
A fast, readable connection prover for first-order logic.
Loading...
Searching...
No Matches
UCB.hpp
1/*
2
3Copyright © 2023-24 Sean Holden. All rights reserved.
4
5*/
6/*
7
8This file is part of Connect++.
9
10Connect++ is free software: you can redistribute it and/or modify it
11under the terms of the GNU General Public License as published by the
12Free Software Foundation, either version 3 of the License, or (at your
13option) any later version.
14
15Connect++ is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
18more details.
19
20You should have received a copy of the GNU General Public License along
21with Connect++. If not, see <https://www.gnu.org/licenses/>.
22
23*/
24
25#ifndef UCB_HPP
26#define UCB_HPP
27
28#include <iostream>
29#include <vector>
30#include <math.h>
31
32#include "Parameters.hpp"
33
34#include <boost/random/mersenne_twister.hpp>
35#include <boost/random/discrete_distribution.hpp>
36
37using std::vector;
38using std::cerr;
39using std::endl;
40using std::ostream;
41
50class UCB {
51private:
58 static boost::random::mt19937 random_generator;
59
68 size_t choice;
69public:
70 UCB() {};
71
72 size_t get_choice();
73
74
78 size_t choose();
82 void reward(double);
83
84 friend ostream& operator<<(ostream&, const UCB&);
85};
86
87#endif
Implementation of the UCB algorithm for multiarmed bandits.
Definition UCB.hpp:50
void reward(double)
Provide reward for the most recent choice.
Definition UCB.cpp:51
size_t choice
Store the last choice made.
Definition UCB.hpp:68
static boost::random::mt19937 random_generator
Random source.
Definition UCB.hpp:58
bool choose_next
Belt-and braces: warn if choose/reward happens in the wrong order.
Definition UCB.hpp:64
size_t choose()
Choose using the current state.
Definition UCB.cpp:42