34 #ifndef RGROUP_EVEN_SAMPLE_H
35 #define RGROUP_EVEN_SAMPLE_H
38 #ifdef RDK_USE_BOOST_SERIALIZATION
39 #include <boost/serialization/set.hpp>
57 boost::uint64_t m_numPermutationsProcessed;
59 std::vector<boost::int64_t> used_count;
60 std::vector<std::vector<boost::uint64_t>> var_used;
61 std::vector<std::vector<boost::uint64_t>> pair_used;
62 std::vector<std::vector<boost::uint64_t>> pair_counts;
63 std::set<boost::uint64_t> selected;
66 boost::uint64_t M, a, b;
67 boost::uint64_t nslack, min_nslack;
68 boost::uint64_t rejected_period, rejected_unique;
69 boost::uint64_t rejected_slack_condition, rejected_bb_sampling_condition;
74 m_numPermutationsProcessed(),
88 rejected_slack_condition(),
89 rejected_bb_sampling_condition() {}
93 m_numPermutationsProcessed(rhs.m_numPermutationsProcessed),
94 used_count(rhs.used_count),
95 var_used(rhs.var_used),
96 pair_used(rhs.pair_used),
97 pair_counts(rhs.pair_counts),
98 selected(rhs.selected),
104 min_nslack(rhs.min_nslack),
105 rejected_period(rhs.rejected_period),
106 rejected_unique(rhs.rejected_unique),
107 rejected_slack_condition(rhs.rejected_slack_condition),
108 rejected_bb_sampling_condition(rhs.rejected_bb_sampling_condition) {}
110 virtual const char *
type()
const {
return "EvenSamplePairsStrategy"; }
140 return m_numPermutationsProcessed;
143 virtual operator bool()
const {
return true; }
149 std::string stats()
const;
152 friend class boost::serialization::access;
156 for (boost::int64_t j = m_permutationSizes.size() - 1; j >= 0; j--) {
157 m_permutation[j] = seed % m_permutationSizes[j];
158 seed /= m_permutationSizes[j];
160 return m_permutation;
163 bool try_add(boost::uint64_t seed);
166 #ifdef RDK_USE_BOOST_SERIALIZATION
167 template <
class Archive>
168 void serialize(Archive &ar,
const unsigned int ) {
170 ar &boost::serialization::base_object<EnumerationStrategyBase>(*
this);
171 ar &m_numPermutationsProcessed;
188 ar &rejected_slack_condition;
189 ar &rejected_bb_sampling_condition;