* Bug 13014 refixed - Genetic_algorithms: update 'Efficiency' inner variable 26/19526/1
Paul Bignier [Wed, 8 Nov 2017 15:49:36 +0000 (16:49 +0100)]
 * Originally fixed by https://codereview.scilab.org/#/c/13003
 * https://codereview.scilab.org/#/c/14585 canceled the fix!

Change-Id: I1a4e9f0d76c6190198ad4c5dc0376dced101a632

scilab/CHANGES.md
scilab/modules/genetic_algorithms/macros/optim_ga.sci
scilab/modules/genetic_algorithms/tests/unit_tests/optim_ga.dia.ref

index fd4e14d..fada18e 100644 (file)
@@ -393,7 +393,8 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#12372](http://bugzilla.scilab.org/show_bug.cgi?id=12372): The `mode` function was poorly documented.
 * [#12771](http://bugzilla.scilab.org/show_bug.cgi?id=12771): xcosPalGenerateAllIcons help example was broken.
 * [#12792](http://bugzilla.scilab.org/show_bug.cgi?id=12792): `save(filename, "undefinedVariable")` created an empty useless file.
-* [#12862](http://bugzilla.scilab.org/show_bug.cgi?id=12862): `intsplin` no longer integrated the imaginary part of given ordinates. 
+* [#12862](http://bugzilla.scilab.org/show_bug.cgi?id=12862): `intsplin` no longer integrated the imaginary part of given ordinates.
+* [#13014](http://bugzilla.scilab.org/show_bug.cgi?id=13014): `optim_ga`: update the Efficiency inner variable.
 * [#13592](http://bugzilla.scilab.org/show_bug.cgi?id=13592): In an axes in a uicontrol frame, setting a `legend` interactively might not follow the mouse accurately.
 * [#13900](http://bugzilla.scilab.org/show_bug.cgi?id=13900): `nanmin` and `nanmax` were useless duplicates of `min` and `max`
 * [#13979](http://bugzilla.scilab.org/show_bug.cgi?id=13979): A variable whose name is longer than 24 characters could not be cleared.
index 9a88707..033fd91 100644 (file)
@@ -145,7 +145,7 @@ function [pop_opt, fobj_pop_opt, pop_init, fobj_pop_init] = optim_ga(ga_f, pop_s
         //
         // Recombination
         //
-        [Pop, FObj_Pop] = selection_func(Pop, Indiv1, Indiv2, FObj_Pop, FObj_Indiv1, FObj_Indiv2, [], [], [], param);
+        [Pop, FObj_Pop, Efficiency] = selection_func(Pop, Indiv1, Indiv2, FObj_Pop, FObj_Indiv1, FObj_Indiv2, [], [], [], param);
 
         // Callback for plotting / printing intermediate results or stopping the algorithm
         if (Log) then
index 75cbe69..974c1ba 100644 (file)
@@ -55,23 +55,23 @@ optim_ga(f, PopSize, NbGen, Proba_mut, Proba_cross, Log, ga_params);
 optim_ga: iteration 1 / 10 
     min / max value found = 0.001391 / 0.995046
 optim_ga: iteration 2 / 10 
-    min / max value found = 0.000341 / 0.177816
+    min / max value found = 0.000206 / 0.191417
 optim_ga: iteration 3 / 10 
-    min / max value found = 0.000133 / 0.044825
+    min / max value found = 0.000126 / 0.048784
 optim_ga: iteration 4 / 10 
-    min / max value found = 0.000002 / 0.010889
+    min / max value found = 0.000118 / 0.011398
 optim_ga: iteration 5 / 10 
-    min / max value found = 0.000002 / 0.001507
+    min / max value found = 0.000046 / 0.001167
 optim_ga: iteration 6 / 10 
-    min / max value found = 0.000002 / 0.000310
+    min / max value found = 0.000034 / 0.000284
 optim_ga: iteration 7 / 10 
-    min / max value found = 0.000001 / 0.000089
+    min / max value found = 0.000004 / 0.000114
 optim_ga: iteration 8 / 10 
-    min / max value found = 0.000000 / 0.000014
+    min / max value found = 0.000001 / 0.000036
 optim_ga: iteration 9 / 10 
-    min / max value found = 0.000000 / 0.000003
+    min / max value found = 0.000000 / 0.000010
 optim_ga: iteration 10 / 10 
-    min / max value found = 0.000000 / 0.000001
+    min / max value found = 0.000000 / 0.000003
 assert_checkequal(length(pop_opt), length(pop_init));
 assert_checkequal(size(fobj_pop_opt), size(fobj_pop_init));
 // Customizing the init function, which computes the initial population.
@@ -106,23 +106,23 @@ optim_ga(f, PopSize, NbGen, Proba_mut, Proba_cross, Log, ga_params);
 optim_ga: iteration 1 / 10 
     min / max value found = 0.010016 / 0.928237
 optim_ga: iteration 2 / 10 
-    min / max value found = 0.001402 / 0.198423
+    min / max value found = 0.006862 / 0.161421
 optim_ga: iteration 3 / 10 
-    min / max value found = 0.000809 / 0.045008
+    min / max value found = 0.001781 / 0.037628
 optim_ga: iteration 4 / 10 
-    min / max value found = 0.000053 / 0.013969
+    min / max value found = 0.000544 / 0.011567
 optim_ga: iteration 5 / 10 
-    min / max value found = 0.000053 / 0.003974
+    min / max value found = 0.000039 / 0.003271
 optim_ga: iteration 6 / 10 
-    min / max value found = 0.000040 / 0.000922
+    min / max value found = 0.000039 / 0.001117
 optim_ga: iteration 7 / 10 
-    min / max value found = 0.000005 / 0.000240
+    min / max value found = 0.000005 / 0.000307
 optim_ga: iteration 8 / 10 
-    min / max value found = 0.000001 / 0.000057
+    min / max value found = 0.000001 / 0.000092
 optim_ga: iteration 9 / 10 
-    min / max value found = 0.000000 / 0.000020
+    min / max value found = 0.000000 / 0.000034
 optim_ga: iteration 10 / 10 
-    min / max value found = 0.000000 / 0.000007
+    min / max value found = 0.000000 / 0.000010
 assert_checkequal(length(pop_opt), length(pop_init));
 assert_checkequal(size(fobj_pop_opt), size(fobj_pop_init));
 // Passing a list to the optim_ga function, where the first element of the list is
@@ -143,22 +143,22 @@ myobjfun = list(f, a1, a2);
 optim_ga: iteration 1 / 10 
     min / max value found = 7.339791 / 29.150584
 optim_ga: iteration 2 / 10 
-    min / max value found = 7.054037 / 12.127766
+    min / max value found = 7.199192 / 11.923950
 optim_ga: iteration 3 / 10 
-    min / max value found = 7.048084 / 9.120917
+    min / max value found = 7.199192 / 8.613638
 optim_ga: iteration 4 / 10 
-    min / max value found = 7.025101 / 7.630176
+    min / max value found = 7.106121 / 7.425043
 optim_ga: iteration 5 / 10 
-    min / max value found = 7.007453 / 7.191936
+    min / max value found = 7.026332 / 7.199192
 optim_ga: iteration 6 / 10 
-    min / max value found = 7.005699 / 7.054037
+    min / max value found = 7.002293 / 7.078284
 optim_ga: iteration 7 / 10 
-    min / max value found = 7.000896 / 7.020325
+    min / max value found = 7.002293 / 7.032606
 optim_ga: iteration 8 / 10 
-    min / max value found = 7.000375 / 7.007070
+    min / max value found = 7.000564 / 7.012589
 optim_ga: iteration 9 / 10 
-    min / max value found = 7.000156 / 7.002255
+    min / max value found = 7.000280 / 7.004547
 optim_ga: iteration 10 / 10 
-    min / max value found = 7.000112 / 7.000828
+    min / max value found = 7.000039 / 7.001819
 assert_checkequal(length(pop_opt), length(pop_init));
 assert_checkequal(size(fobj_pop_opt), size(fobj_pop_init));