Big optimizations and securing code.
[genetic.git] / include / algorithm.h
index 9386607347fa9039a999ebf6b9dbd222ce6499f7..54f51fbda8574d1b12b78db5ee2bbb427d017270 100644 (file)
@@ -79,9 +79,9 @@ namespace genetic {
          */
         Algorithm(
             generator::Generator<_Chromosome>& _generator,
-           _Fitness& _fitness,
-            double crossoverChance,
-            double mutationChance) :
+            _Fitness& _fitness,
+            float crossoverChance,
+            float mutationChance) :
                 generator(_generator),
                 fitness(_fitness),
                 crossover(crossoverChance),
@@ -119,8 +119,8 @@ namespace genetic {
          * \attention Method is currently not in use.
          */
         void showGeneration() {
-            unsigned int generationSize = this->generation.size();
-            unsigned int chromosomeSize = this->generation[0].size();
+            const unsigned int generationSize = this->generation.size();
+            const unsigned int chromosomeSize = this->generation[0].size();
 
             for (unsigned int i = 0; i < generationSize; i++) {
                 cout << "# " << i << ") ";
@@ -135,12 +135,13 @@ namespace genetic {
          * Displays average fitness value of the entire generation.
          */
         void showAvgFitness() {
-            double avg = 0;
-            unsigned int generationSize = this->generation.size();
+            float avg = 0;
+            const unsigned int generationSize = this->generation.size();
+            std::map<string, string> arguments = fitness.getArguments();
 
             for (unsigned int i = 0; i < generationSize; i++) {
                 _Fitness fit(this->generation[i]);
-                fit.parseArguments(fitness.getArguments());
+                fit.parseArguments(arguments);
                 avg += fit.calculate();
             }
             cout << " " << avg / generationSize;
@@ -150,19 +151,20 @@ namespace genetic {
          * Displays best fitness value of the entire generation.
          */
         void showBestFitness() {
-            double best = -100000;
-            unsigned int generationSize = this->generation.size();
+            float best = -100000;
+            const unsigned int generationSize = this->generation.size();
+            std::map<string, string> arguments = fitness.getArguments();
 
             for (unsigned int i = 0; i < generationSize; i++) {
                 _Fitness fit(this->generation[i]);
-                fit.parseArguments(fitness.getArguments());
+                fit.parseArguments(arguments);
 
-                double tmp = fit.calculate();
+                float tmp = fit.calculate();
                 if (tmp > best) {
                     best = tmp;
                 }
             }
-            cout << " " << best << endl;
+            cout << " " << best << "\n";
         }
     };
 }