Replace algorithm used in "best list" search.

Although efficient in terms of evaluations, "NelderMeadTransform" fails for
some higher-dimensional test functions.
This commit is contained in:
Gilles Sadowski 2021-09-01 03:43:05 +02:00
parent f44cae3985
commit b222580737
4 changed files with 70 additions and 43 deletions

View File

@ -531,7 +531,7 @@ public class SimplexOptimizer extends MultivariateOptimizer {
goalType, goalType,
new InitialGuess(init), new InitialGuess(init),
simplex, simplex,
new NelderMeadTransform()); new MultiDirectionalTransform());
} }
/** /**

View File

@ -30,28 +30,37 @@
# #
# Caveat: Some tests are commented out (cf. JIRA: MATH-1552). # Caveat: Some tests are commented out (cf. JIRA: MATH-1552).
# #
PARABOLA, 8, 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 900, true PARABOLA, 8, 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 1600, true
PARABOLA, 16, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, 20, 40, 5e-4, 5200, true PARABOLA, 16, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, 20, 40, 5e-4, 6000, true
ROSENBROCK, 2, 1 1, 0.9, 1.1, 1e-4, 160, true ROSENBROCK, 2, 1 1, 0.9, 1.1, 2e-3, 11000, true
ROSENBROCK, 4, 1 1 1 1, 0.9, 1.1, 1e-4, 500, true ROSENBROCK, 4, 1 1 1 1, 0.9, 1.1, 3e-3, 40000, true
ROSENBROCK, 8, 1 1 1 1 1 1 1 1, 0.9, 1.1, 2e-4, 2200, true ROSENBROCK, 8, 1 1 1 1 1 1 1 1, 0.9, 1.1, 3e-3, 130000, true
ROSENBROCK, 16, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 3e-1, 9000, true ROSENBROCK, 16, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 5e-2, 400000, true
POWELL, 4, 0 0 0 0, 4, 5, 4e-3, 400, true POWELL, 4, 0 0 0 0, 4, 5, 5e-2, 12000, true
POWELL, 8, 0 0 0 0 0 0 0 0, 4, 5, 2e-2, 1760, true POWELL, 8, 0 0 0 0 0 0 0 0, 4, 5, 6e-2, 53000, true
CIGAR, 2, 0 0, 2, 3, 5e-5, 150, true CIGAR, 2, 0 0, 2, 3, 5e-5, 200, true
SPHERE, 2, 0 0, 2, 3, 5e-4, 110, true CIGAR, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 5e-5, 3300, true
ELLI, 2, 0 0, 3, 4, 1e-4, 150, true SPHERE, 2, 0 0, 2, 3, 5e-4, 140, true
TWO_AXES, 2, 0 0, 3, 4, 1e-4, 170, true SPHERE, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 5e-4, 2500, true
CIG_TAB, 2, 0 0, 3, 4, 2e-3, 160, true ELLI, 2, 0 0, 3, 4, 1e-4, 210, true
TABLET, 2, 0 0, 3, 4, 2e-4, 160, true TWO_AXES, 2, 0 0, 3, 4, 1e-4, 240, true
SUM_POW, 2, 0 0, 3, 4, 1e-2, 110, true TWO_AXES, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 1e-4, 4000, true
ACKLEY, 2, 0 0, 2, 4, 1e-6, 170, true CIG_TAB, 2, 0 0, 3, 4, 2e-3, 220, true
RASTRIGIN, 2, 0 0, 6, 10, 5e-5, 130, true CIG_TAB, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 2e-3, 3400, true
GRIEWANK, 2, 0 0, 2, 3, 1e-1, 120, true TABLET, 2, 0 0, 3, 4, 2e-4, 200, true
LEVY, 2, 1 1, 0.9, 1.1, 1e-3, 110, true TABLET, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 2e-4, 3400, true
SCHWEFEL, 2, 420.9687 420.9687, 9, 11, 1, 110, true SUM_POW, 2, 0 0, 3, 4, 1e-2, 150, true
ZAKHAROV, 2, 0 0, 3, 4, 1e-4, 130, true SUM_POW, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 1e-2, 2500, true
PERM, 2, 1 2, 0.9, 1.1, 2e-3, 150, true ACKLEY, 2, 0 0, 2, 4, 1e-6, 250, true
STYBLINSKI_TANG, 2, -2.903534 -2.903534, 1, 2, 1e-4, 120, true ACKLEY, 6, 0 0 0 0 0 0, 2, 4, 1e-6, 1400, true
#RASTRIGIN, 2, 0 0, 6, 10, 5e-5, 170, true
GRIEWANK, 2, 0 0, 2, 3, 1e-1, 140, true
GRIEWANK, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 1e-1, 2200, true
LEVY, 2, 1 1, 0.9, 1.1, 1e-3, 150, true
LEVY, 9, 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 1e-3, 1600, true
SCHWEFEL, 2, 420.9687 420.9687, 9, 11, 1, 150, true
ZAKHAROV, 2, 0 0, 3, 4, 1e-4, 180, true
PERM, 2, 1 2, 0.9, 1.1, 3e-3, 25000, true
STYBLINSKI_TANG, 2, -2.903534 -2.903534, 1, 2, 1e-4, 150, true
#HAPPY_CAT, 2, -1 -1, 2, 3, 1e-4, 500, true #HAPPY_CAT, 2, -1 -1, 2, 3, 1e-4, 500, true
#SALOMON, 2, 0 0, 2, 3, 1e-4, 500, true #SALOMON, 2, 0 0, 2, 3, 1e-4, 500, true

Can't render this file because it contains an unexpected character in line 6 and column 8.

View File

@ -30,37 +30,46 @@
# #
# Caveat: Some tests are commented out (cf. JIRA: MATH-1552). # Caveat: Some tests are commented out (cf. JIRA: MATH-1552).
# #
PARABOLA, 8, 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 1500, false PARABOLA, 8, 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 1550, false
PARABOLA, 8, 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 2600, true PARABOLA, 8, 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 2600, true
PARABOLA, 16, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 5800, false PARABOLA, 16, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 5800, false
PARABOLA, 16, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 10000, true PARABOLA, 16, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 10000, true
ROSENBROCK, 2, 1 1, 0.9, 1.1, 3e-3, 11000, false ROSENBROCK, 2, 1 1, 0.9, 1.1, 3e-3, 11000, false
ROSENBROCK, 2, 1 1, 0.9, 1.1, 3e-3, 500, true ROSENBROCK, 2, 1 1, 0.9, 1.1, 3e-3, 12000, true
ROSENBROCK, 4, 1 1 1 1, 0.9, 1.1, 3e-3, 31000, false ROSENBROCK, 4, 1 1 1 1, 0.9, 1.1, 3e-3, 46000, false
ROSENBROCK, 4, 1 1 1 1, 0.9, 1.1, 3e-3, 1900, true ROSENBROCK, 4, 1 1 1 1, 0.9, 1.1, 3e-3, 33000, true
ROSENBROCK, 8, 1 1 1 1 1 1 1 1, 0.9, 1.1, 4e-3, 115000, false ROSENBROCK, 8, 1 1 1 1 1 1 1 1, 0.9, 1.1, 4e-3, 115000, false
ROSENBROCK, 8, 1 1 1 1 1 1 1 1, 0.9, 1.1, 3e-3, 8100, true ROSENBROCK, 8, 1 1 1 1 1 1 1 1, 0.9, 1.1, 3e-3, 130000, true
ROSENBROCK, 16, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 2e-1, 420000, false ROSENBROCK, 16, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 2e-1, 460000, false
ROSENBROCK, 16, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 3e-1, 30000, true ROSENBROCK, 16, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 3e-1, 420000, true
POWELL, 4, 0 0 0 0, 4, 5, 5e-2, 11700, false, target/debug__, 0 1 LAST 0 POWELL, 4, 0 0 0 0, 4, 5, 5e-2, 11700, false
POWELL, 4, 0 0 0 0, 4, 5, 4e-3, 1900, true POWELL, 4, 0 0 0 0, 4, 5, 5e-2, 14000, true
POWELL, 8, 0 0 0 0 0 0 0 0, 4, 5, 7e-2, 46000, false POWELL, 8, 0 0 0 0 0 0 0 0, 4, 5, 7e-2, 46000, false
POWELL, 8, 0 0 0 0 0 0 0 0, 4, 5, 4e-2, 9000, true POWELL, 8, 0 0 0 0 0 0 0 0, 4, 5, 7e-2, 45000, true
CIGAR, 2, 0 0, 2, 3, 5e-5, 160, false CIGAR, 2, 0 0, 2, 3, 5e-5, 160, false
CIGAR, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 5e-5, 3100, false
SPHERE, 2, 0 0, 2, 3, 5e-4, 120, false SPHERE, 2, 0 0, 2, 3, 5e-4, 120, false
SPHERE, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 5e-4, 2260, false
ELLI, 2, 0 0, 3, 4, 1e-4, 150, false ELLI, 2, 0 0, 3, 4, 1e-4, 150, false
TWO_AXES, 2, 0 0, 3, 4, 1e-4, 180, false TWO_AXES, 2, 0 0, 3, 4, 1e-4, 200, false
TWO_AXES, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 1e-4, 3700, false
CIG_TAB, 2, 0 0, 3, 4, 1e-3, 170, false CIG_TAB, 2, 0 0, 3, 4, 1e-3, 170, false
TABLET, 2, 0 0, 3, 4, 2e-4, 150, false CIG_TAB, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 1e-3, 3300, false
TABLET, 2, 0 0, 3, 4, 2e-4, 160, false
TABLET, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 2e-4, 3100, false
SUM_POW, 2, 0 0, 3, 4, 1e-2, 120, false SUM_POW, 2, 0 0, 3, 4, 1e-2, 120, false
SUM_POW, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 1e-2, 2200, false
ACKLEY, 2, 0 0, 2, 4, 1e-6, 220, false ACKLEY, 2, 0 0, 2, 4, 1e-6, 220, false
RASTRIGIN, 2, 0 0, 6, 10, 1e-3, 160, false ACKLEY, 6, 0 0 0 0 0 0, 2, 4, 1e-6, 1400, false
GRIEWANK, 2, 0 0, 2, 3, 1e-1, 110, false RASTRIGIN, 2, 0 0, 6, 10, 1e-3, 180, false
GRIEWANK, 2, 0 0, 2, 3, 1e-1, 120, false
GRIEWANK, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 1e-1, 2000, false
LEVY, 2, 1 1, 0.9, 1.1, 1e-3, 120, false LEVY, 2, 1 1, 0.9, 1.1, 1e-3, 120, false
SCHWEFEL, 2, 420.9687 420.9687, 9, 11, 1, 120, false LEVY, 9, 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 1e-3, 1400, false
SCHWEFEL, 2, 420.9687 420.9687, 9, 11, 1, 130, false
ZAKHAROV, 2, 0 0, 3, 4, 1e-4, 130, false ZAKHAROV, 2, 0 0, 3, 4, 1e-4, 130, false
PERM, 2, 1 2, 0.9, 1.1, 2e-3, 24000, false PERM, 2, 1 2, 0.9, 1.1, 2e-3, 24000, false
PERM, 2, 1 2, 0.9, 1.1, 2e-3, 430, true PERM, 2, 1 2, 0.9, 1.1, 2e-3, 24100, true
STYBLINSKI_TANG, 2, -2.903534 -2.903534, 1, 2, 1e-4, 120, false STYBLINSKI_TANG, 2, -2.903534 -2.903534, 1, 2, 1e-4, 120, false
#HAPPY_CAT, 2, -1 -1, 2, 3, 1e-4, 50, false #HAPPY_CAT, 2, -1 -1, 2, 3, 1e-4, 50, false
#SALOMON, 2, 0 0, 2, 3, 1e-4, 50, false #SALOMON, 2, 0 0, 2, 3, 1e-4, 50, false

Can't render this file because it contains an unexpected character in line 6 and column 8.

View File

@ -34,21 +34,30 @@ PARABOLA, 8, 0 0 0 0 0 0 0 0, 20, 40, 1e-4, 700, false
PARABOLA, 16, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, 20, 40, 5e-4, 3600, false PARABOLA, 16, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0, 20, 40, 5e-4, 3600, false
ROSENBROCK, 2, 1 1, 0.9, 1.1, 1e-4, 110, false ROSENBROCK, 2, 1 1, 0.9, 1.1, 1e-4, 110, false
ROSENBROCK, 4, 1 1 1 1, 0.9, 1.1, 1e-4, 400, false ROSENBROCK, 4, 1 1 1 1, 0.9, 1.1, 1e-4, 400, false
ROSENBROCK, 8, 1 1 1 1 1 1 1 1, 0.9, 1.1, 3e-4, 2200, false ROSENBROCK, 8, 1 1 1 1 1 1 1 1, 0.9, 1.1, 5e-4, 2200, false
ROSENBROCK, 16, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 5e-1, 7500, false ROSENBROCK, 16, 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 5e-1, 7600, false
POWELL, 4, 0 0 0 0, 4, 5, 5e-3, 290, false POWELL, 4, 0 0 0 0, 4, 5, 5e-3, 290, false
POWELL, 8, 0 0 0 0 0 0 0 0, 4, 5, 3e-2, 1300, false POWELL, 8, 0 0 0 0 0 0 0 0, 4, 5, 3e-2, 1300, false
CIGAR, 2, 0 0, 2, 3, 5e-5, 100, false CIGAR, 2, 0 0, 2, 3, 5e-5, 100, false
CIGAR, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 5e-5, 2200, false
SPHERE, 2, 0 0, 2, 3, 5e-4, 80, false SPHERE, 2, 0 0, 2, 3, 5e-4, 80, false
SPHERE, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 5e-4, 1100, false
ELLI, 2, 0 0, 3, 4, 1e-4, 350, false ELLI, 2, 0 0, 3, 4, 1e-4, 350, false
TWO_AXES, 2, 0 0, 3, 4, 1e-4, 120, false TWO_AXES, 2, 0 0, 3, 4, 1e-4, 120, false
#TWO_AXES, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 1e-4, 120, false
CIG_TAB, 2, 0 0, 3, 4, 1e-3, 100, false CIG_TAB, 2, 0 0, 3, 4, 1e-3, 100, false
#CIG_TAB, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 1e-3, 100, false
TABLET, 2, 0 0, 3, 4, 2e-4, 100, false TABLET, 2, 0 0, 3, 4, 2e-4, 100, false
TABLET, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 2e-4, 3000, false
SUM_POW, 2, 0 0, 3, 4, 1e-2, 75, false SUM_POW, 2, 0 0, 3, 4, 1e-2, 75, false
#SUM_POW, 11, 0 0 0 0 0 0 0 0 0 0 0, 3, 4, 1e-2, 75, false
ACKLEY, 2, 0 0, 2, 4, 1e-6, 145, false ACKLEY, 2, 0 0, 2, 4, 1e-6, 145, false
ACKLEY, 6, 0 0 0 0 0 0, 2, 4, 1e-6, 660, false
RASTRIGIN, 2, 0 0, 6, 10, 5e-5, 105, false RASTRIGIN, 2, 0 0, 6, 10, 5e-5, 105, false
GRIEWANK, 2, 0 0, 2, 3, 1e-1, 75, false GRIEWANK, 2, 0 0, 2, 3, 1e-1, 80, false
GRIEWANK, 11, 0 0 0 0 0 0 0 0 0 0 0, 2, 3, 1e-1, 1200, false
LEVY, 2, 1 1, 0.9, 1.1, 1e-3, 75, false LEVY, 2, 1 1, 0.9, 1.1, 1e-3, 75, false
LEVY, 9, 1 1 1 1 1 1 1 1 1, 0.9, 1.1, 1e-3, 900, false
SCHWEFEL, 2, 420.9687 420.9687, 9, 11, 1, 85, false SCHWEFEL, 2, 420.9687 420.9687, 9, 11, 1, 85, false
ZAKHAROV, 2, 0 0, 3, 4, 1e-4, 85, false ZAKHAROV, 2, 0 0, 3, 4, 1e-4, 85, false
PERM, 2, 1 2, 0.9, 1.1, 2e-3, 110, false PERM, 2, 1 2, 0.9, 1.1, 2e-3, 110, false

Can't render this file because it contains an unexpected character in line 6 and column 8.