21 #include "../common/exception.hpp"
22 #include "../common/version.hpp"
23 #include "../framework/packer.hpp"
31 : gamma_(gamma), s_(assume_unrewarded) {
32 if (gamma < 0 || 1 < gamma) {
39 std::vector<double>& weights)
const {
46 const size_t n = arms.size();
49 double total_weight = 0;
50 for (
size_t i = 0; i < n; ++i) {
52 weights.push_back(weight);
53 total_weight += weight;
55 for (
size_t i = 0; i < n; ++i) {
56 weights[i] = (1.0 -
gamma_) * weights[i] / total_weight +
gamma_ * n;
67 std::vector<double> weights;
82 const std::string& arm_id,
85 size_t i = std::find(arms.begin(), arms.end(), arm_id) - arms.begin();
86 if (i >= arms.size()) {
89 std::vector<double> weights;
92 reward * weights[i] *
gamma_ / arms.size());
storage::version get_version() const
std::string select_arm(const std::string &player_id)
int select_by_weights(const std::vector< double > &weights, mtrand &rand)
bool reset(const std::string &player_id)
arm_info_map get_arm_info(const std::string &player_id) const
bool register_reward(const std::string &player_id, const std::string &arm_id, double reward)
bool register_reward(const std::string &player_id, const std::string &arm_id, double reward)
bool put_diff(const diff_t &diff)
#define JUBATUS_EXCEPTION(e)
exp3(bool assume_unrewarded, double gamma)
bool register_arm(const std::string &arm_id)
jubatus::util::data::unordered_map< std::string, arm_info_map > diff_t
const std::vector< std::string > & get_arm_ids() 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)
void mix(const diff_t &lhs, diff_t &rhs) const
jubatus::util::data::unordered_map< std::string, arm_info > arm_info_map
bool delete_arm(const std::string &arm_id)
void unpack(msgpack::object o)
bool reset(const std::string &player_id)
void get_diff(diff_t &diff) const
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)
void calc_weights_(const std::string &player_id, std::vector< double > &weights) const
jubatus::util::math::random::mtrand rand_
void pack(framework::packer &pk) const