Es scheint zwei Hauptarten von Testfunktionen für nicht abgeleitete Optimierer zu geben:
- Einzeiler wie die Rosenbrock-Funktion ff. mit Startpunkten
- Sätze von realen Datenpunkten mit einem Interpolator
Kann man etwa 10d Rosenbrock mit echten 10d Problemen vergleichen?
Man kann auf verschiedene Arten vergleichen: die Struktur lokaler Minima beschreiben
oder Optimierer ABC auf Rosenbrock und auf einige reale Probleme ausführen;
aber beide scheinen schwierig zu sein.
(Vielleicht sind Theoretiker und Experimentatoren nur zwei ganz unterschiedliche Kulturen, also bitte ich um eine Chimäre?)
Siehe auch:
- scicomp.SE Frage: Wo kann man gute Datensätze / Testprobleme zum Testen von Algorithmen / Routinen erhalten?
- Hooker: "Heuristiktests: Wir haben alles falsch" ist bissig: "Die Betonung des Wettbewerbs ... sagt uns, welche Algorithmen besser sind, aber nicht warum."
(Hinzugefügt im September 2014):
Die folgende Grafik vergleicht 3 DFO-Algorithmen mit 14 Testfunktionen in 8d von 10 zufälligen Startpunkten: BOBYQA PRAXIS SBPLX von NLOpt
14 N-dimensionale Testfunktionen, Python unter gist.github von diesem Matlab von A. Hedar × 10 gleichmäßig zufällige Startpunkte im Begrenzungsrahmen jeder Funktion.
Auf Ackley zum Beispiel zeigt die obere Reihe, dass SBPLX am besten und PRAXIS schrecklich ist; Auf Schwefel zeigt das untere rechte Feld, dass SBPLX am 5. zufälligen Startpunkt ein Minimum findet.
Insgesamt ist BOBYQA bei 1, PRAXIS bei 5 und SBPLX (~ Nelder-Mead mit Neustart) bei 7 von 13 Testfunktionen am besten, mit Powersum als Ergebnis. YMMV! Insbesondere sagt Johnson: "Ich rate Ihnen, bei der globalen Optimierung keine Funktionswerte (ftol) oder Parametertoleranzen (xtol) zu verwenden."
Fazit: Setzen Sie nicht Ihr gesamtes Geld auf ein Pferd oder eine Testfunktion.