12 #include <boost/archive/text_oarchive.hpp> 28 std::vector<agent> current_population;
29 std::vector<agent> new_population;
30 std::vector<double> population_fitness;
32 int selection()
const;
33 void init_population();
34 void select_population();
35 void crossover_population();
36 void mutate_population();
39 template <
typename Fitness>
40 void run(Fitness fitness);
43 template <
typename Fitness>
47 double best_value = 0;
51 fitness->run(i, params.
nb_iterations, current_population, population_fitness);
52 auto it = std::max_element(population_fitness.begin(), population_fitness.end());
55 std::cout <<
"ga iter: " 61 int best_index = std::distance(population_fitness.begin(), it);
62 best_agent = current_population[best_index];
63 std::ofstream ofs(
"best_agent.txt");
64 boost::archive::text_oarchive oa(ofs);
68 crossover_population();
70 std::swap(current_population, new_population);
71 current_population[0] = best_agent;
72 std::sort(population_fitness.begin(), population_fitness.end(), std::greater<double>());
int nb_iterations
Definition: ga.hpp:24
int tournament_size
Definition: ga.hpp:22
double mutation_rate
Definition: ga.hpp:20
int population_size
Definition: ga.hpp:23
double crossover_rate
Definition: ga.hpp:21
ga(const parameters ¶ms, const agent::parameters &agent_params)
Definition: ga.cpp:4
void run(Fitness fitness)
Definition: ga.hpp:44