changeset 9851:15a262f133ae octave-forge

ga: move xtests to demo_ga
author slackydeb
date Sat, 24 Mar 2012 16:35:11 +0000
parents 2786ab9b8f5a
children f7a12f558e7c
files main/ga/devel/demo_ga.m main/ga/inst/ga.m
diffstat 2 files changed, 70 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/main/ga/devel/demo_ga.m	Sat Mar 24 16:34:53 2012 +0000
+++ b/main/ga/devel/demo_ga.m	Sat Mar 24 16:35:11 2012 +0000
@@ -65,3 +65,73 @@
 ## This code shows a more complex objective function
                                 # TODO: convert to demo
 # %!test x = ga (struct ("fitnessfcn", @(x) rastriginsfcn (x(1:2)) + ((x(3) ** 2) - (cos (2 * pi * x(3))) + 1) + (x(4) ** 2), "nvars", 4, "options", gaoptimset ()));
+
+
+## TODO: these should probably become tests (test, not xtest) using a deterministic sequence of random number 
+##
+## simple optimization result checks. Failures here could happen because
+## of non-determinism in the result but if one of these tests always
+## fails for you, plese consider dropping an email to the octave-forge
+## mailing list <octave-dev@lists.sourceforge.net>.
+# %!function f = ff (min)
+# %!  f = @(x) sum ((x(:, 1:(columns (min))) - repmat (min,
+# %!                                                   rows (x), 1)) .** 2, 2);
+# %!function [C, Ceq] = nonlcon (x)
+# %!  C = [];
+# %!  Ceq = [];
+# %!function r = rand_porcelain (interval_min, interval_max, nvars)
+# %!  assert (interval_min < interval_max);
+# %!  r = interval_min + ((interval_max - interval_min) * rand (1, nvars));
+# %!function t = tol (nvars)
+# %!  t = repelems (0.15, [1; nvars]);
+# %!xtest
+# %! nvars = 1;
+# %! minimum = zeros (1, nvars);
+# %! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
+# %!xtest
+# %! nvars = 2;
+# %! minimum = zeros (1, nvars);
+# %! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
+# %!xtest
+# %! nvars = 3;
+# %! minimum = zeros (1, nvars);
+# %! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
+# %!xtest
+# %! nvars = 1;
+# %! minimum = ones (1, nvars);
+# %! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
+# %!xtest
+# %! nvars = 2;
+# %! minimum = ones (1, nvars);
+# %! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
+# %!xtest
+# %! nvars = 3;
+# %! minimum = ones (1, nvars);
+# %! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
+# %!xtest
+# %! nvars = 1;
+# %! interval_min = -10;
+# %! interval_max =  10;
+# %! minimum = - rand_porcelain (interval_min, interval_max, nvars);
+# %! options = gaoptimset ("PopInitRange", 2 .* [interval_min; interval_max],
+# %!                       "CrossoverFraction", 0.2);
+# %! x = ga (ff (minimum), nvars, [], [], [], [], [], [], @nonlcon, options);
+# %! assert (x, minimum, 4 .* tol (nvars));
+# %!xtest
+# %! nvars = 2;
+# %! interval_min = -10;
+# %! interval_max =  10;
+# %! minimum = - rand_porcelain (interval_min, interval_max, nvars);
+# %! options = gaoptimset ("PopInitRange", 2 .* [interval_min; interval_max],
+# %!                       "CrossoverFraction", 0.2);
+# %! x = ga (ff (minimum), nvars, [], [], [], [], [], [], @nonlcon, options);
+# %! assert (x, minimum, 4 .* tol (nvars));
+# %!xtest
+# %! nvars = 3;
+# %! interval_min = -10;
+# %! interval_max =  10;
+# %! minimum = - rand_porcelain (interval_min, interval_max, nvars);
+# %! options = gaoptimset ("PopInitRange", 2 .* [interval_min; interval_max],
+# %!                       "CrossoverFraction", 0.2);
+# %! x = ga (ff (minimum), nvars, [], [], [], [], [], [], @nonlcon, options);
+# %! assert (x, minimum, 4 .* tol (nvars));
--- a/main/ga/inst/ga.m	Sat Mar 24 16:34:53 2012 +0000
+++ b/main/ga/inst/ga.m	Sat Mar 24 16:35:11 2012 +0000
@@ -370,71 +370,3 @@
 %! bad_options = gaoptimset ("UseParallel", "garbage",
 %!                           "Vectorized",  "garbage");
 %! x = ga (f, nvars, [], [], [], [], [], [], @nonlcon, bad_options);
-
-
-## simple optimization result checks. Failures here could happen because
-## of non-determinism in the result but if one of these tests always
-## fails for you, plese consider dropping an email to the octave-forge
-## mailing list <octave-dev@lists.sourceforge.net>.
-%!function f = ff (min)
-%!  f = @(x) sum ((x(:, 1:(columns (min))) - repmat (min,
-%!                                                   rows (x), 1)) .** 2, 2);
-%!function [C, Ceq] = nonlcon (x)
-%!  C = [];
-%!  Ceq = [];
-%!function r = rand_porcelain (interval_min, interval_max, nvars)
-%!  assert (interval_min < interval_max);
-%!  r = interval_min + ((interval_max - interval_min) * rand (1, nvars));
-%!function t = tol (nvars)
-%!  t = repelems (0.15, [1; nvars]);
-%!xtest
-%! nvars = 1;
-%! minimum = zeros (1, nvars);
-%! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
-%!xtest
-%! nvars = 2;
-%! minimum = zeros (1, nvars);
-%! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
-%!xtest
-%! nvars = 3;
-%! minimum = zeros (1, nvars);
-%! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
-%!xtest
-%! nvars = 1;
-%! minimum = ones (1, nvars);
-%! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
-%!xtest
-%! nvars = 2;
-%! minimum = ones (1, nvars);
-%! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
-%!xtest
-%! nvars = 3;
-%! minimum = ones (1, nvars);
-%! assert (ga (ff (minimum), nvars), minimum, tol (nvars));
-%!xtest
-%! nvars = 1;
-%! interval_min = -10;
-%! interval_max =  10;
-%! minimum = - rand_porcelain (interval_min, interval_max, nvars);
-%! options = gaoptimset ("PopInitRange", 2 .* [interval_min; interval_max],
-%!                       "CrossoverFraction", 0.2);
-%! x = ga (ff (minimum), nvars, [], [], [], [], [], [], @nonlcon, options);
-%! assert (x, minimum, 4 .* tol (nvars));
-%!xtest
-%! nvars = 2;
-%! interval_min = -10;
-%! interval_max =  10;
-%! minimum = - rand_porcelain (interval_min, interval_max, nvars);
-%! options = gaoptimset ("PopInitRange", 2 .* [interval_min; interval_max],
-%!                       "CrossoverFraction", 0.2);
-%! x = ga (ff (minimum), nvars, [], [], [], [], [], [], @nonlcon, options);
-%! assert (x, minimum, 4 .* tol (nvars));
-%!xtest
-%! nvars = 3;
-%! interval_min = -10;
-%! interval_max =  10;
-%! minimum = - rand_porcelain (interval_min, interval_max, nvars);
-%! options = gaoptimset ("PopInitRange", 2 .* [interval_min; interval_max],
-%!                       "CrossoverFraction", 0.2);
-%! x = ga (ff (minimum), nvars, [], [], [], [], [], [], @nonlcon, options);
-%! assert (x, minimum, 4 .* tol (nvars));