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.
quelle
Synthetische Testfälle wie die Rosenbrock-Funktion haben den Vorteil, dass es bereits vergleichbare Literatur gibt und die Community ein Gespür dafür hat, wie sich gute Methoden bei solchen Testfällen verhalten. Wenn jeder seinen eigenen Testfall verwenden würde, wäre es viel schwieriger, einen Konsens darüber zu erzielen, welche Methoden funktionieren und welche nicht.
quelle
(Ich hoffe, es gibt keine Einwände gegen meine Annäherung an das Ende dieser Diskussion. Ich bin neu hier, also lass es mich wissen, wenn ich übertreten habe!)
Testfunktionen für evolutionäre Algorithmen sind jetzt viel komplizierter als noch vor zwei oder drei Jahren, wie die Suiten zeigen, die bei Konferenzen wie dem (jüngsten) Kongress für evolutionäre Berechnungen 2015 zum Einsatz kamen. Sehen:
http://www.cec2015.org/
Diese Testsuiten enthalten jetzt Funktionen mit mehreren nichtlinearen Wechselwirkungen zwischen Variablen. Die Anzahl der Variablen kann bis zu 1000 betragen, was in naher Zukunft wahrscheinlich zunehmen wird.
Eine weitere Innovation aus jüngster Zeit ist der "Black Box Optimization Competition". Sehen: http://bbcomp.ini.rub.de/
Ein Algorithmus kann den Wert f (x) für einen Punkt x abfragen, erhält jedoch keine Gradienteninformation und kann insbesondere keine Annahmen über die analytische Form der Zielfunktion treffen.
In gewissem Sinne ist dies möglicherweise näher an dem, was Sie als "echtes Problem" bezeichnet haben, aber in einer organisierten, objektiven Umgebung.
quelle
Sie können das Beste aus beiden Welten haben. NIST hat eine Reihe von Problemen mit Minimierern, wie das Anpassen dieses Polinoms 10. Grades , mit erwarteten Ergebnissen und Unsicherheiten. Es ist natürlich schwieriger zu beweisen, dass diese Werte die tatsächlich beste Lösung sind oder dass es andere lokale Minima gibt und welche Eigenschaften sie haben, als mit einem kontrollierten mathematischen Ausdruck.
quelle