Was ist der beste Weg, um eine simplex zur Verwendung in einer Nelder-Mead-Simplex-Suche von einem Benutzer ‚erraten‘ Vertex zu initialisieren?Die Wahl der anfängliche simplex im Nelder-Mead-Optimierungsalgorithmus
Antwort
Ich bin mir nicht sicher, ob es eine beste Möglichkeit gibt, die erste Simplex in der Nelder-Mead-Methode zu wählen, aber das Folgende ist, was in der gängigen Praxis getan wird.
Der Bau des anfänglichen simplex S
von Erzeugung n+1
Eckpunkten erhalten x0,..,xn
um das, was man „erraten“ Vertex xin
in einem N
dimensionalen Raum ist ein Benutzer aufrufen. Die häufigste Wahl ist
x0=xin
und die verbleibenden Vertices n
werden dann erzeugt, so dass
xj=x0+hj*ej
wo ej
ist der Einheitsvektor der j
-te Achse in R^n
zu koordinieren und hj
ein Schritt- ist Größe in Richtung ej
.
hj = 0.05 if (x0)j is non-zero
hj = 0.00025 if (x0)j=0
mit (x0) j die j-te Komponente von x0. Beachten Sie, dass dies die Wahl in Matlabs fminsearch Routine ist, die auf dem Nelder-Mead-Schema basiert.
Sie können einige weiteren Informationen in
findenIch denke, es keine allgemeine Regel ist am besten, die anfängliche simplex der Nelder-Mead-Optimierung zu bestimmen, da diese zumindest eine vage Kenntnis von der Antwort erforderlich Oberfläche.
Es kann jedoch eine vernünftige Politik sein, die Punkte so einzustellen, dass der simplex nahezu den gesamten möglichen Bereich abdeckt. Der Algorithmus von Nelder-Mead schrumpft automatisch um den Simplex und nähert sich dem Optimum. Der praktische Vorteil dieser Richtlinie besteht darin, dass Sie eine bessere Gesamtkenntnis der Antwortfunktion erhalten.
Wir haben einige Tests mit HillStormer ("http://www.berkutec.com") durchgeführt. Dieses Programm erlaubt es, diese Richtlinien auf Testfunctons zu testen, und wir haben festgestellt, dass dies sehr gut funktioniert.
Bitte denken Sie daran, dass die erste simplex-opereation añways eine Reflexion ist. Wenn der Start-Simplex den gesamten erlaubten Bereich abdeckt, wird die Reflexion notwendigerweise einen Punkt außerhalb der Grenzen geben. HillStormer erlaubt jedoch die Verwendung linearer Einschränkungen und kann dieses Problem vermeiden.
Sie können einige weitere Informationen im System-Hilfe HillStormer finden.
B. Kühne
- 1. Tiling Simplex Lärm?
- 2. Wie ist die Zufälligkeit der Perlin/Simplex Noise-Algorithmen?
- 3. Wie Simplex visualisieren?
- 4. Bedingte Wahl der Direktive
- 5. anfängliche Dateierweiterung Set Beim Speichern der Datei
- 6. JAXB Liste der Wahl
- 7. LP Simplex-Algorithmus in C++
- 8. Die effizienteste anfängliche Kapazitätsgröße für StringBuilder?
- 9. MySQLdb anfängliche Verbindung Timeout
- 10. Analytische Normale zu einer Kugel, die mit Simplex Noise
- 11. Angular2 ControlGroup valueÄndert die anfängliche Bindung
- 12. Was ist der 'anfängliche' Wert in CSS?
- 13. ModelChoiceField, die leere Wahl Entfernen
- 14. Ist polymorph die beste Wahl?
- 15. Verwalten der gmap embedded iframe anfängliche Zoomstufe
- 16. Leistung der Wahl vs Randint
- 17. NHibernate: Anfängliche Datenpopulation
- 18. Vollbild BG, divs, die über die anfängliche Landebahn scrollen
- 19. Recyler Ansicht anfängliche Position
- 20. Kamel Java DSL Wahl in einer Wahl
- 21. Excel-Löser (Simplex LP) binäre Einschränkungen
- 22. C/C++ Implementierung von Simplex-Methode
- 23. konnte Simplex Objekt und Variable nicht übereinstimmen?
- 24. Erhalten anfängliche JSON Darstellung Configuration
- 25. Wahl Versionskontrollsystem
- 26. Die Wahl zwischen Strom und Sammlungen API
- 27. Schienen, gem Wahl für die Autorisierung
- 28. Django Vorlagen: die ausführliche Version einer Wahl
- 29. Der Versuch, die Wahl Art in F # verstehen
- 30. Angularjs anfängliche Formularvalidierung mit Direktiven