32 #include "params/DuelingRP.hh"
37 namespace replacement_policy
41 :
Base(
p), replPolicyA(
p.replacement_policy_a),
42 replPolicyB(
p.replacement_policy_b),
43 duelingMonitor(
p.constituency_size,
p.team_size),
47 "All replacement policies must be instantiated");
53 std::shared_ptr<DuelerReplData> casted_replacement_data =
54 std::static_pointer_cast<DuelerReplData>(replacement_data);
63 std::shared_ptr<DuelerReplData> casted_replacement_data =
64 std::static_pointer_cast<DuelerReplData>(replacement_data);
70 Dueling::touch(
const std::shared_ptr<ReplacementData>& replacement_data)
const
72 std::shared_ptr<DuelerReplData> casted_replacement_data =
73 std::static_pointer_cast<DuelerReplData>(replacement_data);
82 std::shared_ptr<DuelerReplData> casted_replacement_data =
83 std::static_pointer_cast<DuelerReplData>(replacement_data);
95 Dueling::reset(
const std::shared_ptr<ReplacementData>& replacement_data)
const
97 std::shared_ptr<DuelerReplData> casted_replacement_data =
98 std::static_pointer_cast<DuelerReplData>(replacement_data);
115 panic_if(candidates.size() !=
params().team_size,
"We currently only "
116 "support team sizes that match the number of replacement candidates");
124 std::static_pointer_cast<DuelerReplData>(
125 candidates[0]->replacementData).get()), team);
133 if ((is_sample && !team) || (!is_sample && !winner)) {
144 for (
auto& candidate : candidates) {
145 std::shared_ptr<DuelerReplData> dueler_repl_data =
146 std::static_pointer_cast<DuelerReplData>(
147 candidate->replacementData);
154 (team != candidate_team),
155 "Not all sampled candidates belong to the same team");
159 dueling_replacement_data.push_back(dueler_repl_data);
160 candidate->replacementData = team_a ? dueler_repl_data->replDataA :
161 dueler_repl_data->replDataB;
169 for (
int i = 0;
i < candidates.size();
i++) {
176 std::shared_ptr<ReplacementData>
182 return std::shared_ptr<DuelerReplData>(replacement_data);
186 : statistics::
Group(parent),
187 ADD_STAT(selectedA,
"Number of times A was selected to victimize"),
188 ADD_STAT(selectedB,
"Number of times B was selected to victimize")