Files
GeneticAlgo/genetic.cpp
2025-08-09 09:20:08 -05:00

42 lines
937 B
C++

#include "genetic.h"
#include <queue>
#include <vector>
namespace genetic {
template <class T> struct CellEntry {
float score;
T cell;
bool stale;
};
template <class T> struct WorkEntry {
const std::vector<CellEntry<T>> &cur;
std::vector<CellEntry<T>> &next;
int cur_i;
};
// Definitions
template <class T> Stats<T> run(Strategy<T> strat) {
Stats<T> stats;
std::queue<WorkEntry<T>> fitness_queue;
std::vector<CellEntry<T>> cells_a, cells_b;
for (int i = 0; i < strat.num_cells; i++) {
T cell = strat.make_default_cell();
cells_a.push_back({0, cell, true});
cells_b.push_back({0, cell, true});
}
std::vector<CellEntry<T>> &cur_cells = cells_a;
std::vector<CellEntry<T>> &next_cells = cells_b;
for (int i = 0; i < strat.num_generations; i++) {
cur_cells = cur_cells == cells_a ? cells_b : cells_a;
next_cells = cur_cells == cells_a ? cells_b : cells_a;
}
}
} // namespace genetic