OpenNN
Open-source neural networks library
Loading...
Searching...
No Matches
genetic_algorithm.h
Go to the documentation of this file.
1// OpenNN: Open Neural Networks Library
2// www.opennn.net
3//
4// G E N E T I C A L G O R I T H M C L A S S H E A D E R
5//
6// Artificial Intelligence Techniques SL
7// artelnics@artelnics.com
8
9#pragma once
10
11#include "inputs_selection.h"
12
13namespace opennn
14{
15
18{
19
20public:
21
24 Index get_individuals_number() const { return population.rows(); }
25
26 Index get_genes_number() const { return original_input_variable_indices.size(); }
27
30
31 Index get_minimum_inputs_number() const override { return minimum_inputs_number; }
32 Index get_maximum_inputs_number() const override { return maximum_inputs_number; }
33
34 void set_minimum_inputs_number(const Index new_minimum) { minimum_inputs_number = new_minimum; }
36 void set_maximum_inputs_number(const Index);
37
39 void set_individuals_number(const Index new_individuals_number = 4);
40
41 void set_initialization_method(string method) { initialization_method = move(method); }
42
43 void set_mutation_rate(const float rate) { mutation_rate = clamp(rate, 0.0f, 1.0f); }
44
45 void set_elitism_size(const Index size) { elitism_size = clamp<Index>(size, 0, get_individuals_number()); }
46
50
52 void from_JSON(const JsonDocument&) override;
53
55 void to_JSON(JsonWriter&) const override;
56
57private:
58
59 void initialize_population();
60 void initialize_population_random();
61 void initialize_population_correlations();
62 void evaluate_population();
63 void assign_fitness();
64 void perform_selection();
65 VectorB crossover(const VectorB&, const VectorB&);
66 void perform_crossover();
67 void perform_mutation();
68 vector<Index> get_selected_indices() const;
69 void configure_neural_network_inputs(NeuralNetwork*, Dataset*, Index);
70
71 Tensor<VectorR, 1> individual_parameters;
72
73 vector<Index> original_input_variable_indices;
74 vector<Index> original_target_variable_indices;
75
76 MatrixB population;
77
78 VectorR training_errors;
79
80 VectorR validation_errors;
81
82 VectorR fitness;
83
84 VectorB selected;
85
86 Index minimum_inputs_number = 1;
87 Index maximum_inputs_number;
88
89 float mutation_rate;
90
91 Index elitism_size;
92
93 string initialization_method;
94};
95
96}
Abstract base class for OpenNN datasets, owning samples, variables, and metadata.
Definition dataset.h:61
void set_mutation_rate(const float rate)
Definition genetic_algorithm.h:43
InputsSelectionResults perform_input_selection() override
Runs the genetic algorithm until the stopping criterion is met.
Index get_individuals_number() const
Definition genetic_algorithm.h:24
Index get_maximum_inputs_number() const override
Returns the maximum number of input variables that the algorithm may select.
Definition genetic_algorithm.h:32
void set_minimum_inputs_number(const Index new_minimum)
Definition genetic_algorithm.h:34
Index get_genes_number() const
Definition genetic_algorithm.h:26
void set_initialization_method(string method)
Definition genetic_algorithm.h:41
void to_JSON(JsonWriter &) const override
Writes algorithm configuration to a JSON writer.
void set_individuals_number(const Index new_individuals_number=4)
Sets the size of the population evolved by the algorithm.
void from_JSON(const JsonDocument &) override
Loads algorithm configuration from a JSON document.
void set_maximum_inputs_number(const Index)
Sets the upper bound on the number of selected inputs.
void set_elitism_size(const Index size)
Definition genetic_algorithm.h:45
Index get_minimum_inputs_number() const override
Returns the minimum number of input variables that the algorithm may select.
Definition genetic_algorithm.h:31
void set_default()
Restores default population size, mutation rate, elitism and other parameters.
GeneticAlgorithm(TrainingStrategy *=nullptr)
Constructs the algorithm bound to an optional training strategy.
InputsSelection(TrainingStrategy *=nullptr)
Constructs the algorithm bound to an optional training strategy.
Definition json.h:72
Definition json.h:85
Container of layers forming a feed-forward neural network, with parameter storage and I/O.
Definition neural_network.h:20
High-level orchestrator pairing a Loss with an Optimizer for a network/dataset.
Definition training_strategy.h:24
Definition adaptive_moment_estimation.h:14
Matrix< float, Dynamic, 1 > VectorR
Definition pch.h:181
Matrix< bool, Dynamic, 1 > VectorB
Definition pch.h:183
Matrix< bool, Dynamic, Dynamic, Layout > MatrixB
Definition pch.h:179
Aggregated results of an inputs selection run including optimal inputs and error histories.
Definition inputs_selection.h:112