GALib-Parallel
Header-only C++ library for parallel evolutionary algorithms
Loading...
Searching...
No Matches
Algorithm.h
Go to the documentation of this file.
1#ifndef ALGORITHM_H
2#define ALGORITHM_H
3
4#pragma once
5
6#include "core/Population.h"
8#include "utils/FileLogger.h"
9#include <memory>
10
11namespace galib {
12
21 template <typename GeneType>
22 class Algorithm {
23 protected:
24 std::unique_ptr<utils::ConsoleLogger<GeneType>> console_logger_m;
25 std::unique_ptr<utils::FileLogger<GeneType>> file_logger_m;
26
32 void notifyLoggers(std::size_t gen, const Population<GeneType>& pop) {
33 if (console_logger_m) {
34 console_logger_m->log(gen, pop);
35 }
36 if (file_logger_m) {
37 file_logger_m->log(gen, pop);
38 }
39 }
40
41 public:
42 virtual ~Algorithm() = default;
43
53 virtual void run(Population<GeneType>& population) = 0;
54
59 virtual void enableConsoleLogging(const std::size_t interval) {
60 console_logger_m = std::make_unique<utils::ConsoleLogger<GeneType>>(interval);
61 }
62
68 virtual void enableFileLogging(const std::string& path, std::size_t interval) {
69 file_logger_m = std::make_unique<utils::FileLogger<GeneType>>(path, interval);
70 }
71
75 virtual void enableLogging(const std::string&) {}
76 };
77
78} // namespace galib
79
80#endif // ALGORITHM_H
Abstract base class for all optimization algorithms.
Definition Algorithm.h:22
std::unique_ptr< utils::ConsoleLogger< GeneType > > console_logger_m
Definition Algorithm.h:24
std::unique_ptr< utils::FileLogger< GeneType > > file_logger_m
Definition Algorithm.h:25
void notifyLoggers(std::size_t gen, const Population< GeneType > &pop)
Notifies all active loggers to record the current state.
Definition Algorithm.h:32
virtual void enableLogging(const std::string &)
Placeholder for generic logging configuration.
Definition Algorithm.h:75
virtual ~Algorithm()=default
virtual void enableConsoleLogging(const std::size_t interval)
Enables logging of progress to the standard output.
Definition Algorithm.h:59
virtual void run(Population< GeneType > &population)=0
Executes the optimization process on the given population.
virtual void enableFileLogging(const std::string &path, std::size_t interval)
Enables logging of population snapshots to a CSV file.
Definition Algorithm.h:68
A container for a group of individuals in the genetic algorithm.
Definition Population.h:24