43 if (interval_m == 0 || (gen % interval_m != 0 && gen != 0)) {
47 std::filesystem::path p(path_m);
48 if (!header_written_m) {
49 if (p.has_parent_path()) {
50 std::filesystem::create_directories(p.parent_path());
55 if (!header_written_m) {
56 file.open(path_m, std::ios::out);
58 file <<
"generation,individual_idx,fitness";
59 for (std::size_t j = 0; j < pop.
getNumGenes(); ++j) {
60 file <<
",gene_" << j;
62 file <<
",genotype\n";
63 header_written_m =
true;
66 file.open(path_m, std::ios::app);
69 if (!file.is_open()) {
73 for (std::size_t i = 0; i < pop.
size(); ++i) {
74 const auto& genotype = pop[i].getGenotype();
75 file << gen <<
"," << i <<
"," << pop[i].getFitness();
77 for (
const auto& gene : genotype) {
82 for (std::size_t j = 0; j < genotype.size(); ++j) {
83 file << genotype[j] << (j == genotype.size() - 1 ?
"" :
";");