* Bug #13422 fixed - Genetic algorithms were not logging the min and max properly 96/14596/10
Michael BAUDIN [Fri, 30 May 2014 14:35:52 +0000 (16:35 +0200)]
Change-Id: I7913d351c42d4575cf0c94ec960bf9f7a728fedd

scilab/CHANGES_5.5.X
scilab/modules/genetic_algorithms/macros/optim_nsga.sci
scilab/modules/genetic_algorithms/tests/nonreg_tests/bug_8415.dia.ref

index fc287f3..d93536a 100644 (file)
@@ -122,6 +122,8 @@ Scilab Bug Fixes
 * Bug #13421 fixed - Callback functions for genetic algorithms were missing.
                      Now the user can set functions to stop iterations and access the population.
 
+* Bug #13422 fixed - Genetic algorithms did not log the minimum and maximum values properly.
+
 * Bug #13424 fixed - crossover_ga_binary algorithm was not the classical point crossover one.
                      Also fixed the usage of binary length.
 
index 419d13f..ed0e320 100644 (file)
@@ -221,7 +221,7 @@ function [pop_opt, fobj_pop_opt, pop_init, fobj_pop_init] = optim_nsga(ga_f, pop
         [Pop, FObj_Pop, Efficiency, MO_FObj_Pop] = selection_func(Pop, Indiv1, Indiv2, FObj_Pop, FObj_Indiv1, FObj_Indiv2, ...
         MO_FObj_Pop, MO_FObj_Indiv1, MO_FObj_Indiv2, param);
         if (Log) then
-            stop = output_func(i, nb_generation, Pop, FObj_Pop, param);
+            stop = output_func(i, nb_generation, Pop, MO_FObj_Pop, param);
             if stop then
                 break
             end
index d43025b..cc39fcc 100644 (file)
@@ -53,13 +53,13 @@ assert_checkequal(size(fobj_pop_opt), size(fobj_pop_init));
 optim_nsga(list(deb_2, 1, 9), PopSize, NbGen, Proba_mut, Proba_cross, Log, ga_params);
 optim_nsga: Initialization of the population
 optim_nsga: iteration 1 / 4 
-    min / max value found = -138.000000 / -57.000000
+    min / max value found = 0.001301 / 2.440339
 optim_nsga: iteration 2 / 4 
-    min / max value found = -69.000000 / -30.000000
+    min / max value found = 0.015645 / 0.948523
 optim_nsga: iteration 3 / 4 
-    min / max value found = -33.000000 / -16.000000
+    min / max value found = 0.093593 / 0.695988
 optim_nsga: iteration 4 / 4 
-    min / max value found = -26.000000 / -10.000000
+    min / max value found = 0.112577 / 0.665168
 assert_checkequal(length(pop_opt), length(pop_init));
 assert_checkequal(size(fobj_pop_opt), size(fobj_pop_init));
 [pop_opt, fobj_pop_opt, pop_init, fobj_pop_init] = ..