21 #include "../common/exception.hpp"
28 : assume_unrewarded_(assume_unrewarded) {
38 for (table_t::iterator iter =
unmixed_.begin();
41 as.insert(std::make_pair(arm_id, a0));
48 for (summation_storage::table_t::iterator iter = t.begin();
49 iter != t.end(); ++iter) {
55 const std::vector<std::string>& arm_ids,
56 const std::string& player_id) {
57 summation_storage::table_t::iterator iter = t.find(player_id);
58 if (iter != t.end()) {
62 const arm_info a0 = {0, 0.0};
63 for (
size_t i = 0; i < arm_ids.size(); ++i) {
64 as.insert(std::make_pair(arm_ids[i], a0));
69 const std::vector<std::string>& arm_ids,
70 const std::string& player_id,
71 const std::string& arm_id) {
72 arm_info_map& as = get_arm_info_map_(t, arm_ids, player_id);
73 arm_info_map::iterator iter = as.find(arm_id);
74 if (iter == as.end()) {
76 "arm_id is not registered: " + arm_id));
83 delete_arm_(
mixed_, arm_id);
86 std::vector<std::string>::iterator iter =
96 const std::string& player_id,
97 const std::string& arm_id) {
106 const std::string& player_id,
107 const std::string& arm_id,
120 const std::string& player_id,
121 const std::string& arm_id) {
122 summation_storage::table_t::const_iterator iter = t.find(player_id);
123 if (iter == t.end()) {
128 arm_info_map::const_iterator jter = as.find(arm_id);
129 if (jter == as.end()) {
130 const arm_info a0 = {0, 0.0};
138 const std::string& player_id,
139 const std::string& arm_id)
const {
150 const std::string& player_id,
151 const std::string& arm_id)
const {
160 const std::string& player_id)
const {
163 for (std::vector<std::string>::const_iterator iter =
arm_ids_.begin();
165 result.insert(std::make_pair(*iter,
get_arm_info(player_id, *iter)));
182 for (table_t::const_iterator iter = lhs.begin();
183 iter != lhs.end(); ++iter) {
186 for (arm_info_map::const_iterator jter = as1.begin();
187 jter != as1.end(); ++jter) {
197 bool result1 =
mixed_.erase(player_id) > 0;
198 bool result2 =
unmixed_.erase(player_id) > 0;
199 return result1 || result2;
bool reset(const std::string &player_id)
bandit_base::diff_t table_t
bool register_reward(const std::string &player_id, const std::string &arm_id, double reward)
std::vector< std::string > arm_ids_
#define JUBATUS_EXCEPTION(e)
const bool assume_unrewarded_
double get_expectation(const std::string &player_id, const std::string &arm_id) const
void notify_selected(const std::string &player_id, const std::string &arm_id)
void get_diff(table_t &diff) const
bool register_arm(const std::string &arm_id)
bool put_diff(const table_t &diff)
jubatus::util::data::unordered_map< std::string, arm_info > arm_info_map
static void mix(const table_t &lhs, table_t &rhs)
arm_info get_arm_info(const std::string &player_id, const std::string &arm_id) const
arm_info_map get_arm_info_map(const std::string &player_id) const
bool delete_arm(const std::string &arm_id)
summation_storage(bool assume_unrewarded)