Algorithmus gesucht (Siehe Problembeschreibung)



  • Namenloser324 schrieb:

    Besten Dank 🙂
    Ich schlag das nun nach, wer noch was weiß, gerne hier posten, gucke mir alles an!

    Das ist allerdings kein bestimmter Algorithmus. Es ist ein ganzes wissenschaftliches Gebiet, das jede Menge Algorithmen zu bieten hat.



  • Habe ich auch bemerkt, gibts irgendwo kurzdarstellungen von gewissen Realisierungen dieses Typs?



  • Ok, das Stichwort Ableitungsfrei hat mich zusammen mit einer Erinnerung an die Arbeit eines Kumpels auf die Idee gebracht Matlab zu verwenden.
    Ich kann mein Pythonskript auch von Matlab aus starten und dann das Ergebnis bzw. den zu optimierenden Wert an einen der Optimierungsalgorithmen übergeben.
    Habt ihr eine Ahnung wie schnell die Teile gute Lösungen berechnen können? Ein Durchlauf dauert leider länger.



  • Namenloser324 schrieb:

    Habe ich auch bemerkt, gibts irgendwo kurzdarstellungen von gewissen Realisierungen dieses Typs?

    Letztendlich führt kein Weg daran vorbei, dass Du Deine Problemstellung mathematisch formalisiert spezifizierst. Wenn Du das hast, dann kannst Du relativ gezielt die einzelnen Zweige der konvexen Optimierung abgrasen und gucken, welche Algorithmen für Dich interessant sind.

    Du hast Dich in Deinem Eingangsbeitrag hier relativ vage zu der zu optimierenden Funktion geäußert. Hast Du Freiheitsgrade in der Formulierung dieser Funktion? Wenn ja, dann kannst Du diese Freiheitsgrade vielleicht nutzen, um die Problemstellung so zu designen, dass Du effiziente Algorithmen nutzen kannst.

    Generell ist es so, dass je weniger Informationen Du über das Problem hast und je schlimmer die zu optimierende Funktion aussieht, desto ineffizienter werden die Algorithmen sein, die Du anwenden kannst.

    Ob Du Matlab nutzt oder etwas anderes ändert daran nichts. Wenn Du Matlab kaum Informationen über Dein Problem gibst, dann wirst Du damit das Problem nicht effizient lösen können. Jenseits davon weiß ich nicht, welche Algorithmen in Matlab realisiert sind.



  • Danke für deinen Beitrag.
    Im Endeffekt habe ich einen Referenzdatensatz y = y(n) und möchte, dass die Abstandsquadratsumme des Ausgangsdatensatzes y_s = y_s(n) meiner Simulation minimiert wird.
    Als Eingangsgrößen, d.h. die Veränderlichen, dienen dabei Paare von Spannungen und Dehnungen, wobei diese voneinander unabhängig variiert werden können (d.h. effektiv zwei Variablen darstellen).

    Prägnant formuliert:
    Die Eingangsvariablen x0, x1, ..., xn sollen derart gewählt werden, dass Summe (y-y_s)^2 minimal wird, wobei die Funktion f(x0,x1,...,xn) mit dem Graphen y_s unbekannt ist. (Mit etwas überlegen könnte man gewisse Charakteristiken von f angeben, y_s ist z.B. gewiss konvex (bis auf kleinste Intervalle die Simulationsbedingt sind))
    Randbedinguen wären dabei:

    0 < const < x0 < x1 ... < xs und 0 < x_s+1 < ... < xn (der erste Teil gilt für die Spannungen, der letzte für die Dehnungen, daher die Trennung)
    Weitere Einschränkungen könnte ich nach etwas experimentieren ageben (etwa, dass die Spannungen aufjedenfall unter einer Upperbound sigma liegen)



  • Gregor schrieb:

    Bashar schrieb:

    Ich würde mal nach ableitungsfreien (weil die Simulation sicher keine bekannte Ableitung hat) nichtlinearen Optimierungsverfahren suchen.

    Sehe ich auch so. Ich denke, das Stichwort, nach dem gesucht werden sollte, ist Convex optimization.

    Ne, das Problem ist mit an Sicherheit grenzender Wahrscheinlichkeit nicht convex.

    @topic
    Für Probleme dieser Art wurden evolutionäre Strategien entworfen. Du benötigst nur ein Fehlermaß, welches dem Abstand der Kurven einen Wert (0 bei exakt identisch, sonst positiv und ansteigend mit steigender Abweichung der Kurven) zuordnet. Als Fehlermaß wäre wahrscheinlich irgendwas wie quadratischer ABstand zwischen den Kurven gut. Aus $Gründen bin ich momentan verpflichtet, die CMA-ES zu empfehlen, solange das Fehlermaß nicht differenzierbar, die variablen aber reellwertig sind.

    Nicolas Hansen ist der Name nachdem man googln muss, der hat auch irgendwo das ultimative matlab script.



  • otze schrieb:

    Ne, das Problem ist mit an Sicherheit grenzender Wahrscheinlichkeit nicht convex.

    Nach dem, was der Threadersteller gesagt hat, bin ich inzwischen auch etwas skeptisch geworden, obwohl er meint, dass seine Funktion f konvex sei. So wie ich das sehe, hat er genau dann ein konvexes Problem, wenn seine Freiheitsgrade x_i die perfekte Lösung zulassen, aber zwei unterschiedliche Wahlen von Parametern niemals zum gleichen Resultat führen.

    Ich habe die Problemstellung am Anfang vielleicht nicht genau genug gelesen.



  • Der Graph den ich nach der Simulation erhalte, und welchen ich an den Versuchsgraphen möglichst angleichen möchte (eben durch finden passender Materialdaten), ist konkav, es handelt sich dabei um typisches metall-plastisches Verhalten, siehe etwa hier:

    de.wikipedia.org/wiki/Zugversuch#mediaviewer/Datei:Spgs-Dehnungs-Kurve_Dehngrenze.svg

    Tut mir leid, hatte konvex und konkav verwechselt.



  • Ok, besten Dank, ultimates Matlabskript trifft es.
    Dieses hier ist es https://www.lri.fr/~hansen/cmaes.m scheinbar (für andere die sowas mal suchen sollten)

    Hatte schon mit fminsearch von matlab rumprobiert, welches nach ~700 Iterationen ein sehr gutes Ergebnis geliefert hat, jedoch kann ich nur noch ~400 durchführen (aus Zeitgründen), hoffe cmes ist schneller.

    Besten Dank!



  • Soo, habe nun mal die cmaes.m ausprobiert (mit den selben naiven Einstellungen wie bei Nutzung von fminsearch) und war leider etwas enttäuschend. Nicht mal annähernd so gut wie die Ergebnisse von fminsearch (schon nach 200 Simulationen erhalte ich dabei ordentliche Ergebnisse).
    Und das bei identischen Parametern. Vielleicht ist mein Problem doch nicht dafür passend. Naja, ich werde nun definitiv fminsearch nehmen, da ich weiß, dass dieses gute Ergebnisse für mein Problem liefert.

    Vielen lieben Dank an alle 🙂


Anmelden zum Antworten