|
|
Optimization Toolbox: Genetic Algorithm -Parameter bestimmen |
|
Miral30 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.10.2017, 09:11
Titel: Optimization Toolbox: Genetic Algorithm -Parameter bestimmen
|
|
Hallo zusammen,
ich habe folgendes Problem:
an einem Teststand läuft ein Versuch mit 3 Eingangsparameter pro Durchlauf.
Als Ergebnis pro Durchlauf bekomme ich 10 Werte (Massen), die pro Durchlauf möglichst konstant sein sollen. Aus diesen 10 Werten wird ein weiterer Wert berechnet (welcher die Prozessstabilität beschreibt), dieser soll minimal werden.
Jetzt soll über einen genetischen Algorithmus immer der beste Eingangsparametersatz gefunden werden, und sich das Ergebnis so pro Durchlauf immer mehr verbessern.
Kann mir jemand einen Ansatz/Tip für dieses Problem geben?
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.10.2017, 18:09
Titel:
|
|
Hallo,
die Fitnessfunktion muss die Gestalt haben
Genetische Algorithmen sind aber nicht für besondere Effizienz bekannt. patternsearch kann da beispielsweise effizienter sein.
Grüße,
Harald
|
|
|
Miral30 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.10.2017, 07:52
Titel:
|
|
Hallo Harald,
super, vielen Dank für deinen Ansatz. Ich habe nur das Problem, dass die Eingangswerte (für den Teststand) in keinem (für mich) mathematisch beschreibbaren Zusammenhang zu den 10 Massen stehen (es gibt noch sehr viel weitere Parameter, die das Ergebnis beeinflussen).
Patternsearch habe ich mir angeschaut, dort hätte ich aber das gleiche Problem.
Bis jetzt bleibt mir wahrscheinlich nur die Möglichkeit, viele Testläufe zu starten, die erhaltenen Werte in einer Gleichung zu beschreiben (fitten) und diese dann zu minimieren, oder?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 18.10.2017, 19:24
Titel:
|
|
Hallo,
die Idee (ob sie umsetzbar ist, weiß ich nicht) war, dass du den Teststand mit den zu verwendenden Werten ansteuerst - ihm also sagst, welche Kombinationen getestet werden sollen. Ansonsten sehe ich keine Möglichkeit, das als Optimierungsproblem umzusetzen.
Grüße,
Harald
|
|
|
Miral30 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.10.2017, 07:29
Titel:
|
|
Harald, du bist super!
Es funktioniert soweit. Im Moment wird aus den 10 werten (Massen) der varianzkoeffizient bestimmt und minimiert. Als objective-funktion für patternsearch dient dabei der teststand. Wüsstest du einen Ansatz, wie ich erreichen könnte, dass dieser varianzkoeff. bei einer bestimmten Masse minimiert wird?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 21.10.2017, 07:59
Titel:
|
|
Hallo,
Zitat: |
Wüsstest du einen Ansatz, wie ich erreichen könnte, dass dieser varianzkoeff. bei einer bestimmten Masse minimiert wird? |
Ich verstehe die Frage nicht. Du berechnest ja den Varianzkoeffizient aus den Massen. Wenn er minimiert werden soll, dann müssen die Massen angepasst werden. Oder meinst du z.B., dass die Summe der 10 Massen gleich bleiben soll? Das müsstest du dann als Nebenbedingung angeben.
Grüße,
Harald
|
|
|
Miral30 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.10.2017, 13:01
Titel:
|
|
sorry , ich versuche mein Problem verständlicher zu formulieren:
aus drei Eingansparametern (x1, x2, x3) bekomme ich aus dem Teststand nach einem Lauf eine Masse (m). Dieser Lauf (mit den gleichen drei Eingangsparametern) wird dann zur Erhöhung der Genauigkeit und der Sicherstellung der Wiederholbarkeit 10 mal wiederholt. Die 10 Massen eines Eingangsparametersatzes sollen also möglichs konstant sein.
Aus diesen 10 Massen wird dann der Varianzkoeffizient (y) berechnet und durch Patternsearch minimiert. Nun minimiert Patternsearch ja den Koeffizient ohne Berücksichtigung der Masse (m).
Jetzt suche ich eine Möglichkeit, den Koeffizient (y) bei einer bestimmten Masse (m), oder in einem bestimmten Masse-Bereich (m1 bis m2) zu minimieren.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 22.10.2017, 15:02
Titel:
|
|
Hallo,
ja, das ist dann eine Nebenbedingung. Damit du die Messungen nicht wiederholen musst, siehe hier:
https://de.mathworks.com/help/optim.....in-the-same-function.html
Entweder: bei einer bestimmten Masse (m) --> nichtlineare Gleichung
oder: in einem bestimmten Masse-Bereich (m1 bis m2) --> zwei nichtlineare Ungleichungen
Grüße,
Harald
|
|
|
Miral30 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.10.2017, 13:56
Titel:
|
|
Hallo Harald,
vielen Dank für dein Wissen und Geduld!
Ich habe es soweit hinbekommen.
Ein Problem habe ich allerdings noch:
der Teststand ist nicht sehr schnell, für einen Parametersatz (x1, x2, x3) benötigt dieser ca. 10 Minuten.
Gibt es eine Möglichkeit patternsearch "anzuhalten", bis in einer Excel-Datei die Ergebnis-Werte (Varianzkoeffizient und Massen) geschrieben sind, und dann erst weiter laufen zu lassen?
Das Ganze müsste dann nach jeder einzelnen Funktionsevaluation erfolgen.
Ich habe schon versucht mit MaxFunctionEvaluations und MaxIterations zu arbeiten, aber da fängt patternsearch nach erreichen des Abbruchkriteriums ja jedesmal von neuem an.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.10.2017, 15:21
Titel:
|
|
Hallo,
du benötigst die Excel-Tabelle doch vermutlich, um Zielfunktion und die nichtlin. Nebenbedingungsfunktion zu berechnen? Generell etwas folgender Art:
Das "Check for update" kann über
exist
oder
dir
(dann kannst du z.B. auch den Zeitpunkt der letzten Änderung abfragen) erfolgen.
Grüße,
Harald
|
|
|
Miral30 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2017, 08:14
Titel:
|
|
Zitat: |
du benötigst die Excel-Tabelle doch vermutlich, um Zielfunktion und die nichtlin. Nebenbedingungsfunktion zu berechnen?
|
genau. In diese Excel-Datei schreibt die Steuerung des Teststandes die Ergebnisse und liest auch aus dieser die Eingangsparameter.
Ich werde deinen Vorschlag versuchen umzusetzen, danke nochmal!
Aber wo muss ich die pause einfügen, um zu erreichen, dass patternsearch nach einem objective-Funktionsaufruf (Funktionsevaluierung) pausiert um zu warten, ob sich die Excel-Datei geändert hat?
|
|
|
student_VS |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 02.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.04.2018, 10:14
Titel: Umsetzung ga mit patternsearch
|
|
|
|
|
Liebe miral30, lieber Harald!
Ich habe ein ähnliches Problem und bringe leider nicht den ga mit patternsearch zum Laufen und hoffe deshalb auf eure fachmännische Unterstützung und Hilfe. Habe ein Gebäude als RC-Modell abgebildet. Über das Gebäude gibt es Messwerte (Raumtemperatur, Außentemperatur, etc.). Das Gebäude wird als Zustandsraummodell in das Programm implementiert und in weiterer Folge ein Grey Box Modell erstellt. Und im Anschluss die gemessene Raumtemperatur mit der modellsimulierten verglichen.
Abhängig von den Startwerten R und C der Gebäudemodellmatrix kommt als Ergebnis eine bessere oder schlechtere Übereinstimmung.
Deshalb möchte ich die Parameteridentifikation der R und C über den ga mit patternsearch realisieren. Trete hier jdeoch am Stand und komme gar nicht weiter.
Unten meine Idee/ Ansatz, welcher aber leider nicht funktionierit.
y_m soll die Raumtemperatur aus dem Modell sein und y der gemessene Wert.
8 sind die Anzahl der Parameter aus dem Zustandsraummodell (R und C).
Jedoch habe ich schon das Problem dass ich nicht weiß wie ich die y_m aus meinem Modell auswerte, wenn diese Funktionen ja eigentlich ineinander greifen.
Ich wäre euch über jede Hilfestellung sehr dankbar.
LG student_VS
|
|
|
|
|
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 - 2024
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.
|
|