Program Listing for File bi_tdgraph_allocator.hpp
↰ Return to documentation for file (cosm/ta/bi_tdgraph_allocator.hpp
)
#pragma once
/*******************************************************************************
* Includes
******************************************************************************/
#include <string>
#include "rcppsw/er/client.hpp"
#include "rcppsw/math/rng.hpp"
#include "rcppsw/rcppsw.hpp"
/*******************************************************************************
* Namespaces/Decls
******************************************************************************/
namespace cosm::ta {
class polled_task;
namespace ds {
class bi_tdgraph;
} /* namespace ds */
namespace config {
struct task_alloc_config;
} /* namespace config */
/*******************************************************************************
* Class Definitions
******************************************************************************/
class bi_tdgraph_allocator : public rer::client<bi_tdgraph_allocator> {
public:
static inline const std::string kPolicyRandom = "random";
static inline const std::string kPolicyEplisonGreedy = "epsilon_greedy";
static inline const std::string kPolicyStrictGreedy = "strict_greedy";
static inline const std::string kPolicyStochNBHD1 = "stoch_nbhd1";
static inline const std::string kPolicyUCB1 = "UCB1";
bi_tdgraph_allocator(const config::task_alloc_config* config,
ds::bi_tdgraph* graph,
rmath::rng* rng)
: ER_CLIENT_INIT("cosm.ta.bi_tdgraph_allocator"),
mc_config(config),
m_graph(graph),
m_rng(rng) {}
bi_tdgraph_allocator(const bi_tdgraph_allocator&) = delete;
bi_tdgraph_allocator& operator=(const bi_tdgraph_allocator&) = delete;
polled_task* operator()(const polled_task* current_task,
size_t alloc_count) const;
/* clang-format off */
const config::task_alloc_config* mc_config;
ds::bi_tdgraph* m_graph;
rmath::rng* m_rng;
/* clang-format on */
};
} /* namespace cosm::ta */