Rewrite. Currently segfaults

This commit is contained in:
2025-09-07 16:42:06 -05:00
parent 905ca1e43a
commit bed933055e
5 changed files with 131 additions and 327 deletions

View File

@@ -35,8 +35,8 @@ void mutate(Array<float> &arr_to_mutate) {
void crossover(const Array<Array<float>*> parents, const Array<Array<float> *> out_children) {
for (int i = 0; i < len; i++) {
(*out_children._data[0])[i] = i < len/2 ? (*parents._data[0])[i] : (*parents._data[1])[i];
(*out_children._data[1])[i] = i < len/2 ? (*parents._data[1])[i] : (*parents._data[0])[i];
(*out_children.data[0])[i] = i < len/2 ? (*parents.data[0])[i] : (*parents.data[1])[i];
(*out_children.data[1])[i] = i < len/2 ? (*parents.data[1])[i] : (*parents.data[0])[i];
}
}
@@ -47,8 +47,8 @@ float fitness(const Array<float> &cell) {
float sum = 0;
float product = 1;
for (int i = 0; i < cell.len; i++) {
sum += cell._data[i];
product *= cell._data[i];
sum += cell.data[i];
product *= cell.data[i];
}
return abs(sum - target_sum) + abs(product - target_product);
}
@@ -62,8 +62,6 @@ int main(int argc, char **argv) {
.test_all = true,
.test_chance = 0.0, // doesn't matter
.enable_crossover = true,
.enable_crossover_mutation = true,
.crossover_mutation_chance = 0.6f,
.crossover_parent_num = 2,
.crossover_parent_stride = 1,
.crossover_children_num = 2,