int main(int argc, char **argv) { parameters.handleArgs(argc,argv,"settings/defaults-swarming.settings"); parameters.afterSetting(); rng_t rng; rng.seed(parameters.randSeed()); // rand() used in random_shuffle() srand(parameters.randSeed()); // set up the (initial) swarming pattern and do the experiment if (parameters.swarming_pattern() == "NETWORK") { graph_swarming_pattern swp; swp.inheritParametersFrom(parameters); const unsigned nr = swp.n_rooms(); swp.fixed.set_size(nr); swp.n = graph_swarming_pattern::network_t(nr); construct_network(swp.n,swp,rng); int fixed = (swp.n_individuals() - swp.n_mobile()); int fpr = fixed / nr; for (int i = 0; i < nr; ++i) { swp.fixed[i] = fpr; fixed -= fpr; } if (fixed > 0) swp.fixed[0] += fixed; swarm_selection_indicator<graph_swarming_pattern,rng_t,ParamsClass> sind(rng); do_experiment(swp,sind,rng); } else if (parameters.swarming_pattern() == "STATIC_LATTICE") { static_lattice_swarming_pattern swp; swp.inheritParametersFrom(parameters); swp.initialize(rng); static_lattice_swarm_selection_indicator<rng_t,ParamsClass> sind(rng); do_experiment(swp,sind,rng); } else if (parameters.swarming_pattern() == "DYNAMIC_LATTICE") { dynamic_lattice_swarming_pattern dsp; dsp.inheritParametersFrom(parameters); dynamic_lattice_swarm_selection_indicator<rng_t,ParamsClass> sind(rng); do_experiment(dsp,sind,rng); } }
void setup() override { construct_network(opts()); }