cne.hpp
Go to the documentation of this file.
1 
16 #ifndef MLPACK_CORE_OPTIMIZERS_CNE_CNE_HPP
17 #define MLPACK_CORE_OPTIMIZERS_CNE_CNE_HPP
18 
19 #include <mlpack/prereqs.hpp>
20 
21 namespace mlpack {
22 namespace optimization {
23 
74 class CNE
75 {
76  public:
98  CNE(const size_t populationSize = 500,
99  const size_t maxGenerations = 5000,
100  const double mutationProb = 0.1,
101  const double mutationSize = 0.02,
102  const double selectPercent = 0.2,
103  const double tolerance = 1e-5,
104  const double objectiveChange = 1e-5);
105 
116  template<typename DecomposableFunctionType>
117  double Optimize(DecomposableFunctionType& function, arma::mat& iterate);
118 
120  size_t PopulationSize() const { return populationSize; }
122  size_t& PopulationSize() { return populationSize; }
123 
125  size_t MaxGenerations() const { return maxGenerations; }
127  size_t& MaxGenerations() { return maxGenerations; }
128 
130  double MutationProbability() const { return mutationProb; }
132  double& MutationProbability() { return mutationProb; }
133 
135  double MutationSize() const { return mutationSize; }
137  double& MutationSize() { return mutationSize; }
138 
140  double SelectionPercentage() const { return selectPercent; }
142  double& SelectionPercentage() { return selectPercent; }
143 
145  double Tolerance() const { return tolerance; }
147  double& Tolerance() { return tolerance; }
148 
150  double ObjectiveChange() const { return objectiveChange; }
152  double& ObjectiveChange() { return objectiveChange; }
153 
154  private:
156  void Reproduce();
157 
159  void Mutate();
160 
173  void Crossover(const size_t mom,
174  const size_t dad,
175  const size_t dropout1,
176  const size_t dropout2);
177 
179  arma::cube population;
180 
182  arma::vec fitnessValues;
183 
185  arma::uvec index;
186 
188  size_t populationSize;
189 
191  size_t maxGenerations;
192 
194  double mutationProb;
195 
197  double mutationSize;
198 
200  double selectPercent;
201 
203  double tolerance;
204 
206  double objectiveChange;
207 
209  size_t numElite;
210 
212  size_t elements;
213 };
214 
215 } // namespace optimization
216 } // namespace mlpack
217 
218 // Include implementation.
219 #include "cne_impl.hpp"
220 
221 #endif
double Tolerance() const
Get the final objective value.
Definition: cne.hpp:145
.hpp
Definition: add_to_po.hpp:21
The core includes that mlpack expects; standard C++ includes and Armadillo.
double MutationSize() const
Get the mutation size.
Definition: cne.hpp:135
Conventional Neural Evolution (CNE) is a class of evolutionary algorithms focused on dealing with fix...
Definition: cne.hpp:74
double & Tolerance()
Modify the final objective value.
Definition: cne.hpp:147
size_t PopulationSize() const
Get the population size.
Definition: cne.hpp:120
size_t & PopulationSize()
Modify the population size.
Definition: cne.hpp:122
double & SelectionPercentage()
Modify the selection percentage.
Definition: cne.hpp:142
CNE(const size_t populationSize=500, const size_t maxGenerations=5000, const double mutationProb=0.1, const double mutationSize=0.02, const double selectPercent=0.2, const double tolerance=1e-5, const double objectiveChange=1e-5)
Constructor for the CNE optimizer.
double Optimize(DecomposableFunctionType &function, arma::mat &iterate)
Optimize the given function using CNE.
double & MutationProbability()
Modify the mutation probability.
Definition: cne.hpp:132
double SelectionPercentage() const
Get the selection percentage.
Definition: cne.hpp:140
size_t MaxGenerations() const
Get maximum number of generations.
Definition: cne.hpp:125
double & MutationSize()
Modify the mutation size.
Definition: cne.hpp:137
double & ObjectiveChange()
Modify the termination criteria of change in fitness value.
Definition: cne.hpp:152
size_t & MaxGenerations()
Modify maximum number of generations.
Definition: cne.hpp:127
double ObjectiveChange() const
Get the change in fitness history between generations.
Definition: cne.hpp:150
double MutationProbability() const
Get the mutation probability.
Definition: cne.hpp:130