From: <sla...@us...> - 2012-03-24 16:35:17
|
Revision: 10037 http://octave.svn.sourceforge.net/octave/?rev=10037&view=rev Author: slackydeb Date: 2012-03-24 16:35:11 +0000 (Sat, 24 Mar 2012) Log Message: ----------- ga: move xtests to demo_ga Modified Paths: -------------- trunk/octave-forge/main/ga/devel/demo_ga.m trunk/octave-forge/main/ga/inst/ga.m Modified: trunk/octave-forge/main/ga/devel/demo_ga.m =================================================================== --- trunk/octave-forge/main/ga/devel/demo_ga.m 2012-03-24 16:34:53 UTC (rev 10036) +++ trunk/octave-forge/main/ga/devel/demo_ga.m 2012-03-24 16:35:11 UTC (rev 10037) @@ -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 <oct...@li...>. +# %!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)); Modified: trunk/octave-forge/main/ga/inst/ga.m =================================================================== --- trunk/octave-forge/main/ga/inst/ga.m 2012-03-24 16:34:53 UTC (rev 10036) +++ trunk/octave-forge/main/ga/inst/ga.m 2012-03-24 16:35:11 UTC (rev 10037) @@ -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 <oct...@li...>. -%!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)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |