43 size_t trial_generator::get_sample_size(
size_t k) {
44 return min(init_size + 2 * k, num_objects);
47 static size_t count_all(
const trial_generator& tg) {
48 trial_generator dummy = tg;
49 while (dummy.has_next()) dummy.next();
54 trial_generator::trial_generator(
size_t _max_k,
size_t _max_reps,
size_t _init_size,
size_t _num_objects)
57 init_size(_init_size),
58 num_objects(_num_objects),
59 cur_trial(1, 0, get_sample_size(1)),
62 number_of_trials = count_all(*
this);
70 init_size(_init_size),
71 num_objects(_num_objects),
72 cur_trial(_min_k, 0, get_sample_size(_min_k)),
75 number_of_trials = count_all(*
this);
80 return cur_trial.
k <=
max_k;
85 trial result = cur_trial;
102 return number_of_trials;
Data structure representing a trial run of a partitioned clustering algorithm.
bool has_next() const
whether there are trials remaining.
const size_t max_k
maximum k to try
size_t count() const
return iterations so far.
trial next()
return parameters for next trial
const size_t max_reps
max number of repetitions per k
size_t num_trials()
Return total number of trials this will generate.
trial_generator(size_t _max_k, size_t _max_reps, size_t _init_size, size_t _num_objects)
Constructor to generate trials from 1 to max_k.
const size_t num_objects
number of elements in the data set; determines maximum sample size.
This struct represents parameters for a single trial run of kmedoids.