31 py::class_<Class> vary(m, name.data() );
34 Class variation(p, ss, d);
36 .def(
"mutate", &Class::mutate, py::return_value_policy::automatic)
37 .def(
"cross", &Class::cross, py::return_value_policy::automatic)
38 .def(
"vary_pop", [](Class &self,
41 if (individuals.size() != params.
pop_size) {
42 string msg =
"Individual vector has different number of "
43 "individuals than pop_size. When calling "
44 "variation, they should be the same. popsize is "+
46 "individuals is "+
to_string(individuals.size());
48 throw std::runtime_error(msg);
53 pop.init(individuals, params);
55 vector<br::Pop::Individual<PT>> pool;
58 for (
int island = 0; island < params.
num_islands; ++island)
62 vector<size_t> parents = pop.get_island_indexes(island);
66 pop.add_offspring_indexes(island);
68 self.vary(pop, island, parents);
71 vector<size_t> indices = pop.get_island_indexes(island);
72 int start = indices.size()/2;
73 for (
unsigned i = start; i<indices.size(); ++i)
76 pool.push_back(pop[indices.at(i)]);