|
|
Optimierung: Entstehung komplexer Parameter verhindern |
|
nixChef |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.01.2014, 17:14
Titel:
|
 |
Harald hat Folgendes geschrieben: |
Ich hatte dir mal einen Vorschlag gemacht und weiß nicht, ob du ihn umgesetzt hast bzw. was wenn dabei herausgekommen ist:
Zitat: |
Berechne doch mal den Fehlervektor (bzw. seine Norm) für den Startvektor und für den optimierten Vektor. |
|
also ich habe es ausprobiert und die Norm des Fehlervektors der "optimierten" Parameter mit der Norm des Fehlervektors der Startparameter verglichen:
Die Norm des Fehlervektors hat sich also deutlich erhöht, die Abweichung ist demnach deutlich angestiegen, was ich auch anhand der "optimierten" Parameter sehen kann.
Gruß
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 12.01.2014, 17:25
Titel:
|
 |
Hallo,
ein Minimalbeispiel sollte lauffähig sein und dieselben Probleme aufweisen.
Die Simulation ist aber schon von A-C abhängig?
Falls nicht, ist es überflüssig, die Simulation innerhalb der Zielfunktion zu machen.
Falls sie von A-C abhängig ist, überprüfe mal, ob innerhalb der Simulation wirklich die richtigen Werte verwendet werden.
Was ist Sim_Modell_V1 denn? Ein Skript? Ein Simulink-Modell? Ein Skript, dass ein Simulink-Modell simuliert? Was ganz anderes?
Mit anonymous functions kannst du evalin-Befehle vermeiden.
Zitat: |
also ich habe es ausprobiert und die Norm des Fehlervektors der "optimierten" Parameter mit der Norm des Fehlervektors der Startparameter verglichen |
Dass der Zielfunktionswert für den optimierten Vektor schlechter ist als für den Startwert, kann an sich nur sein, wenn der Startwert die Nebenbedingungen verletzt hat. Hast du das überprüft?
Grüße,
Harald
|
|
|
nixChef |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.01.2014, 20:22
Titel:
|
 |
|
 |
|
Harald hat Folgendes geschrieben: |
Die Simulation ist aber schon von A-C abhängig?
Falls nicht, ist es überflüssig, die Simulation innerhalb der Zielfunktion zu machen.
Falls sie von A-C abhängig ist, überprüfe mal, ob innerhalb der Simulation wirklich die richtigen Werte verwendet werden.
|
Ja, die Simulation ist von A-C abhängig. Hab die Werteübergabe geprüft, es kommen die richten Werte im Modell an. Der Optimierungsalgo verdreht sie tatsächlich weg von einem guten Ausgangszustand hin zu einem schlechteren.
Zitat: |
Was ist Sim_Modell_V1 denn? Ein Skript? Ein Simulink-Modell? Ein Skript, dass ein Simulink-Modell simuliert? Was ganz anderes?
|
Ein Skript.
Zitat: |
Mit anonymous functions kannst du evalin-Befehle vermeiden.
|
Ah ok. Bietet das Vorteile?
Zitat: |
Dass der Zielfunktionswert für den optimierten Vektor schlechter ist als für den Startwert, kann an sich nur sein, wenn der Startwert die Nebenbedingungen verletzt hat. Hast du das überprüft?
|
Meine Nebenbedingungen sind die untere und obere Grenze meiner Parameter. Der Startvektor verletzt definitiv nicht die Grenzen, das würde der trust-Region-algo auch als Warnung oder sogar fehler ausgeben.
Hast du noch weitere Ideen woran es liegen könnte?
Danke schon einmal![/quote][/code]
Gruß
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 12.01.2014, 20:38
Titel:
|
 |
Hallo,
nein, keine weiteren Ideen.
Die Optimierungsalgorithmen laufen ja in die Richtung des steilsten Abstiegs. Um das weiter zu untersuchen, bräuchte ich wirklich ein nachvollziehbares Beispiel.
Vielleicht kann dir der Technische Support von MathWorks weiterhelfen.
Grüße,
Harald
|
|
|
nixChef |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.01.2014, 21:27
Titel:
|
 |
Ok, trotzdem vielen Dank.
Harald hat Folgendes geschrieben: |
Die Optimierungsalgorithmen laufen ja in die Richtung des steilsten Abstiegs. Um das weiter zu untersuchen, bräuchte ich wirklich ein nachvollziehbares Beispiel.
|
Wie würdest du das untersuchen? Dann schau ich mir das noch an.
Gruß nixChef
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 12.01.2014, 22:36
Titel:
|
 |
Hallo,
von vorne bis hinten durchgehen.
Schauen, an welchen Stellen die Zielfunktion ausgewertet wird, und was dabei herauskommt.
Läuft der Algorithmus von Anfang an in die falsche Richtung oder erst später?
Oder hast du am Ende etwas anderes übersehen, so dass der Algorithmus an sich das richtige tut? Es fällt mir nämlich nach wie vor schwer zu glauben, dass der Algorithmus überhaupt in die falsche Richtung läuft.
Eine weitere Möglichkeit wäre, norm(fehler) mit fmincon zu minimieren anstatt lsqnonlin zu verwenden. Ich erwarte da normal zwar keine besseren Ergebnisse, aber versuchen kann man's ja mal.
Noch zu evalin: es ist unübersichtlich und schwierig zu debuggen - siehe diverse Threads zum Thema.
Ah, eine Frage natürlich noch: was ist die Statusmeldung von lsqnonlin bzw. was ist die exitflag?
Grüße,
Harald
|
|
|
nixChef |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2014, 01:04
Titel:
|
 |
Harald hat Folgendes geschrieben: |
Ah, eine Frage natürlich noch: was ist die Statusmeldung von lsqnonlin bzw. was ist die exitflag?
|
Was genau meinst du mit Statusmeldung? Als exitflag wird 3 ausgegeben, nicht 1, was wünschenswert wäre.
Ich muss das alles nochmals kontrollieren, das was ich bisher jedenfalls sehe ist, dass er von einer besseren zu einer schlechteren Lösung läuft. Hab mir auch schon den kompletten Parameterverlauf jedes einzelnen Parameters, d.h. den Wert in jedem Iterationsschritt, plotten lassen. Nahezu alle Parameter werden von Anfang verschlechtert. Der ein oder andere bleibt erst noch ein wenig konstant eher er schlechter wird.
Gruß
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.01.2014, 10:09
Titel:
|
 |
Hallo,
Statusmeldung = das, was im Command Window als Meldung ausgegeben wird. Hat sich aber mit exitflag erledigt.
Setze TolFun in den Optionen mal auf 1e-16.
Ich habe dieses Verhalten so noch nie gesehen und daher leider keine Erklärung dafür.
In Erweiterung meiner Idee mit fmincon: man könnte natürlich statt fmincon auch patternsearch oder ga darauf loslassen.
Eine Frage noch: die Simulation ist schon deterministisch, d.h. enthält keine zufallsbasierten Elemente?
Grüße,
Harald
|
|
|
nixChef |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2014, 12:21
Titel:
|
 |
Harald hat Folgendes geschrieben: |
Ich habe dieses Verhalten so noch nie gesehen und daher leider keine Erklärung dafür.
|
ich auch nicht, ABER: ich hab das Problem entdeckt!!!
Unglaublich, die kleinen versteckten Fehler sind die schwersten:
Der komplexen Vektor den mein Modell ausgibt, war ein Zeilenvektor. Meine Daten liegen als Spaltenvektor vor, also hab ich den komplexen Vektor transponiert, allerdings ohne Punkt vor dem Hochkomma! Damit sind komplex konjugierte Werte im transponierten Vektor aufgetaucht und damit hat es nicht mehr funktinioniert. Habs nun behoben und damit funktioniert auch die Optimierung.
Vielleicht noch eine Ergänzung, der Fehlervektor sollte dabei als Matrix, in der eine Spalten den Fehler im Realteil und die andere den Fehler im Imaginärteil enthält, oder als zusammgengefahrener Vektor aufgebaut werden:
oder
Danke nochmal für deine Unterstützung!
viele Grüße
nixChef
|
|
|
|
Gehe zu Seite Zurück 1, 2
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|