Nelder Mead



  • Ich würde gerne den Nelder Mead (https://de.wikipedia.org/wiki/Downhill-Simplex-Verfahren) Algorithmus in C++ implementieren.

    Generell habe ich klein Problem, eine funktionsfähige Implementierung anzufertigen, jedoch würde ich gerne eine effiziente und saubere Lösung in C++ anfertigen.

    Und da hänge ich jetzt, grübelnd darüber, wie das Interface aussehen sollte, welche Datenstrukturen zum Einsatz kommen und was ich alles als Template-Parameter nutzen sollte. Man muss dazu sagen, dass ich wenig Erfahrung mit modernem C++ habe.

    Meine ersten Gedanken liefen in die Richtung:
    - Ich möchte sowohl float als auch double unterstützen, also sollte das ein Template-Parameter sein
    - Ich denke die Dimension N sollte ein Template-Parameter vom Type size_t sein
    - std::array für die Punkte?
    - std::function um eine Bewertungsfunktion zu übergeben?
    - Gibt es eine Möglichkeit sicherzustellen, dass N und die Dimension der Bewertungsfunktion auch übereinstimmen?
    - die verschiedenen Koeffizieten als Klassen-Member abspeichern?

    Ich wäre sehr dankbar, wenn mir jemand an manchen Stellen ein paar Tipps geben kann. EIn mögliches Interface wäre auch nett. Falls irgendeine meiner Ideen in eine komplett falsche Richtung gehen sollte, wäre ich auch über eine Belehrung dankbar.



  • - Ich möchte sowohl float als auch double unterstützen, also sollte das ein Template-Parameter sein
    - Ich denke die Dimension N sollte ein Template-Parameter vom Type size_t sein

    Ja.

    std::array für die Punkte?

    Du benutzt array für ne feste Anzahl.

    - std::function um eine Bewertungsfunktion zu übergeben?

    Ja.

    - Gibt es eine Möglichkeit sicherzustellen, dass N und die Dimension der Bewertungsfunktion auch übereinstimmen?

    Du darfst N vergleichen.


Anmelden zum Antworten