37 py::class_<Class> vary(m, name.data() );
40 Class variation(p, ss, d);
42 .def(
"mutate", &Class::mutate, py::return_value_policy::automatic)
43 .def(
"cross", &Class::cross, py::return_value_policy::automatic)
44 .def(
"vary_pop", [](Class &self,
47 if (individuals.size() != params.
pop_size) {
48 string msg =
"Individual vector has different number of "
49 "individuals than pop_size. When calling "
50 "variation, they should be the same. popsize is "+
52 "individuals is "+
to_string(individuals.size());
54 throw std::runtime_error(msg);
59 pop.init(individuals, params);
61 vector<br::Pop::Individual<PT>> pool;
64 for (
int island = 0; island < params.
num_islands; ++island)
68 vector<size_t> parents = pop.get_island_indexes(island);
72 pop.add_offspring_indexes(island);
74 self.vary(pop, island, parents);
77 vector<size_t> indices = pop.get_island_indexes(island);
78 int start = indices.size()/2;
79 for (
unsigned i = start; i<indices.size(); ++i)
82 pool.push_back(pop[indices.at(i)]);