|
ThKo26 |
Forum-Century
|
|
Beiträge: 184
|
|
|
|
Anmeldedatum: 21.09.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 11:24
Titel: Minimum einer Funktion
|
|
|
|
|
Hallo zusammen,
ich habe das Thema schon mal angesprochen. Ich versuche es nun sehr ausführlich zu erklären.
Ich besitze eine Matrix X als Eingang (siehe Anhang). Die Matrix besteht aus 10 Spalten und 32 Zeilen. Jede Zeile ergibt ein verschiedene Ergebnisse Matriy Y_norm (siehe Anhang). Die Eergebnis Matrix besteht aus 5 Spalten und 32 Zeilen. Ich hoffe, das ist soweit verständlich.
ich möchte mit fmincon das minimum einer Funktion bestimmen,
f = w1J1(x)+w2J2(x)+w3J3(x)+....
f = Kostenfunktion
w = Gewichtungsfaktor
J = Ergebnis
x = (variablen)der Input zu dem Ergenis
Nun, wie komme ich von X zu Y. Ich habe ein MKS Modell. dieses wird mit 10 Parametern bedatet. Dieses Modell hat jetzt verschiedene Ausgangsgrößen. In diesem Fall 5.
Ich möchte mit der fmincon, die Funktion minimieren und dabei Gewichtungsfaktoren berücksichtigen.
Fragen:
Ich benötige einen Startwert x0. Wa soll ich da als Startwert nehmen?
Welchen Algorithm soll ich nutzen? interior-point, trust region-refelctive,sqp, active-set,?
Oder nutze ich statt fmincon lieber ga ?
Ich benötige dringend Unterstützung, da ich es für meine Abschlussarbeit benötige.
Vielen Dank.
Grüße
Beschreibung: |
|
Download |
Dateiname: |
y_norm.mat |
Dateigröße: |
1.4 KB |
Heruntergeladen: |
527 mal |
Beschreibung: |
|
Download |
Dateiname: |
X.xls |
Dateigröße: |
28 KB |
Heruntergeladen: |
509 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 12:40
Titel:
|
|
Hallo,
was willst du denn eigentlich variieren? X oder w? Wenn du w variieren willst, muss es auch ein Eingang der Zielfunktion sein.
Zitat: |
Ich benötige einen Startwert x0. Wa soll ich da als Startwert nehmen? |
Das musst du wissen. Irgendetwas "vernünftiges".
Zitat: |
Welchen Algorithm soll ich nutzen? interior-point, trust region-refelctive,sqp, active-set,? |
Siehe https://de.mathworks.com/help/optim.....oosing-the-algorithm.html
Zitat: |
Oder nutze ich statt fmincon lieber ga ? |
fmincon macht lokale Optimierung. Man ist also auf eine gutmütige Funktion bzw. einen ausreichend guten Startwert angewiesen.
Wenn das nicht der Fall ist, hilft globale Optimierung. Da würde ich aber erst andere Funktionen statt ga verwenden, siehe
https://de.mathworks.com/help/gads/.....her-solver.html#bu9r6hl-4
Grüße,
Harald
|
|
|
ThKo26 |
Themenstarter
Forum-Century
|
|
Beiträge: 184
|
|
|
|
Anmeldedatum: 21.09.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 12:55
Titel:
|
|
Hallo Harald,
vielen Dank für deine Hilfe.
ich möchte nur w variieren, da für jeden Eingang (X) eine Lösung (Y) exisitiert.
Zielfunktion:
Der Startwert wäre bezieht sich auf den Eingang X und somit benötige ich für jede Spalete einen Startwert. Da habe ich etwas vernüftiges
Insgesamt habe ich jetzt folgendes:
und erhalte folgenden Fehler
Danke.
Grüße
|
|
|
ThKo26 |
Themenstarter
Forum-Century
|
|
Beiträge: 184
|
|
|
|
Anmeldedatum: 21.09.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 13:08
Titel:
|
|
Hallo ,
Die Matrix X (Eingang) hat 10 Parameter.
Der Range von den Parametern 1,2,3,4,6,7,8,9 geht von 0 bis 50
Der Range von dem Parameter 5 geht von 150 bis 300
und der Range von dem Parameter 10 geht von 100 bis 250.
Somit nutze ich den Startwert
Nebenbedinungen:
der Eingang muss immer bei allen J1, J2, J3, J4, J5 gleich bleiben. Es dürfen keine J1 und J2 etc mit unterschiedllichen Eingängen sein.
Ich hoffe, dass ist verständlich.
Danke für die hilfe !!
Grüße
Thomas
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 14:06
Titel:
|
|
|
|
|
Hallo,
was du schreibst, ist für mich recht verwirrend.
Zitat: |
Die Matrix X (Eingang) hat 10 Parameter. |
Was soll es bedeuten, dass eine Matrix Parameter hat??
Zitat: |
Der Range von den Parametern 1,2,3,4,6,7,8,9 geht von 0 bis 50
Der Range von dem Parameter 5 geht von 150 bis 300
und der Range von dem Parameter 10 geht von 100 bis 250. |
Dann setze doch lb und ub entsprechend statt auf die sinnfreien Nullvektoren.
Auch Aeq und beq sind nicht sinnvoll. Wenn du keine linearen Gleichungen hast, dann setze das ebenso wie A und b auf [].
Zitat: |
der Eingang muss immer bei allen J1, J2, J3, J4, J5 gleich bleiben. Es dürfen keine J1 und J2 etc mit unterschiedllichen Eingängen sein. |
Ich habe keine Ahnung, was das bedeuten soll.
Zum vorherigen Beitrag noch:
du brauchst genau eine Zielfunktion.
Wenn du die Gewichte variieren willst, dann müssen diese wie gesagt ein Eingabeargument der Zielfunktion sein. Vor allem aber muss die Zielfunktion von den Gewichten abhängen.
Globale Variablen sind hier unnötig.
https://de.mathworks.com/help/optim.....ing-extra-parameters.html
Grüße,
Harald
|
|
|
ThKo26 |
Themenstarter
Forum-Century
|
|
Beiträge: 184
|
|
|
|
Anmeldedatum: 21.09.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 14:27
Titel:
|
|
|
|
|
Hallo Harald,
Harald hat Folgendes geschrieben: |
Hallo,
was du schreibst, ist für mich recht verwirrend.
|
Die Matrix X hat 10 Spalten und 32 Zeilen. Jede Spalte ist sozusagen ein Parameter und jede Zeile ist ein Run.
Die Matrix Y hat 5 Spalten und 32 Zeilen. Jede Spalte ist eine Ergebnisgröße und jede Zeile ist ein Run.
Nun:
Ich möchte mir jetzt das Minimum ausgeben lassen.
Es darf aber nicht sein, dass für J1 das Ergebnis aus Run 5 genommen wird und für J2 das Ergebnis aus Run 10. Sondern J1 und J2 müssen als Eingang den selben Run haben.
Nun habe ich noch Gewichtungen:
Wenn ich jetzt w1 mit Faktor 2 und w2 mit Faktor 0,3 Gewichte, bekommt J1 mehr Bedeutung. Und nun will ich das Minimum haben.
Ich hoffe, die Erklärung hilft mehr für die Umsetzung in matlab.
Grüße
Harald hat Folgendes geschrieben: |
Dann setze doch lb und ub entsprechend statt auf die sinnfreien Nullvektoren. |
habe ich gemacht.
Beschreibung: |
|
Download |
Dateiname: |
optimization tool.PNG |
Dateigröße: |
47.08 KB |
Heruntergeladen: |
528 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 14:50
Titel:
|
|
Hallo,
und was haben X, die J1, J2, ... und Y nun miteinander zu tun?
Wenn du w1 und w2 anpassen willst, dann müssen diese Eingang der Funktion sein, und lb und ub müssen zwei Elemente haben (für w1 und w2).
Bei Gewichten gibt es oft auch noch Bedingungen, dass z.B. deren Summe 1 oder kleiner 1 sein muss. Das wäre dann eine lineare Nebenbedingung.
Grüße,
Harald
|
|
|
ThKo26 |
Themenstarter
Forum-Century
|
|
Beiträge: 184
|
|
|
|
Anmeldedatum: 21.09.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 15:21
Titel:
|
|
Hallo Harald,
Zitat: |
und was haben X, die J1, J2, ... und Y nun miteinander zu tun? |
Input --> MKS Simulation --> Output.
X = Input ( 32 Runs mit 10 Parametern)
Y = Output ( 32 Runs mit 5 Ergebnissen)
Y wird aufgeteilt in J1,J2,J3,J4 und J5.
z.B. Du nimmst aus der Matrix X Run 5. Mit hilfe des MKS´s bekommst du ein Ergebnis Y (Matrix) für Run 5.
Oh man, das ist mein Denkfehler :O
Genau, diese Nebendeingung will ich mit implementieren, dass die Gewichtung immer die Summe 1 ist.
Ich vesuche mich mal bei der Umsetzung und melde mich sicher
Danke für den Input!
Grüße
Thomas
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 15:59
Titel:
|
|
Hallo,
Zitat: |
Y wird aufgeteilt in J1,J2,J3,J4 und J5. |
Das war eine wichtige Information.
Für die Gewichte ist dann in der Regel auch lb = 0 und ub = 1. Keine Ahnung, wie du da auf deine Bedingungen gekommen bist.
J1, J2 etc. sind dann ja Vektoren, also ist auch die Gewichtung ein Vektor. Was soll daran nun minimiert werden? Die Summe der Quadrate? Das wäre dann eher
lsqnonlin
als
fmincon
. Da die Zielfunktion linear in den Gewichten ist, sogar
lsqlin
.
Grüße,
Harald
|
|
|
ThKo26 |
Themenstarter
Forum-Century
|
|
Beiträge: 184
|
|
|
|
Anmeldedatum: 21.09.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 16:11
Titel:
|
|
Hallo Harald,
ich habe mein Skript angepasst. (global ist noch beürcksichtigt, bekomme sonst einen Fehler, das J1 nicht bekannt ist)
es fehlt noch, dass w1 und w2 zusammen immer 1 geben muss.
jetzt erhalte ich den Fehler
Fehler ist mir bewusst.
Zitat: |
J1, J2 etc. sind dann ja Vektoren, also ist auch die Gewichtung ein Vektor |
richtig, das ist mir bewusst. Ich will aber als fmin nur einen Zahlenwert haben und den Run, der diesen ergibt.
Ich weiß aber nicht, wie ich berücksichtigen kann, dass für jedes J immer der gleiche Run aus X genommen wird.
Meine Vorstellung:
er geht durch jede Zeile und schaut sich die Ergebnisse in Spalte 1 (J1) und Spalte 2 (J2) an. wenn w1 =w2 ergibt kommt für das Minimum eine zahl heraus und es wird mir gleichzeitg angezeigt, welche Run aus der Matrix X dies ergibt. Wenn die w1 und w2 jetzt geändert werden, soll ebenfalls das Minimum von J1+J2 gefunden werden.
Bitte um Hilfe bei der Umsetzung.
Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.01.2018, 19:23
Titel:
|
|
Hallo,
sorry, aber ich werde aus deiner Vorstellung nicht schlau.
Zitat: |
Ich will aber als fmin nur einen Zahlenwert haben und den Run, der diesen ergibt. |
Okay. Also willst du die Zeilennummer variieren? Was soll nun mit w1 und w2 passieren? Sollen diese fest sein oder sollen sie auch variiert werden?
Vor allem, wo sind denn w1 und w2 in der Funktion? Und was haben minRH und RHV mit dem ganzen zu tun?
In jedem Fall sollte die Zielfunktion als Eingabeargument einen Vektor zu variierender Variablen haben.
Zitat: |
es fehlt noch, dass w1 und w2 zusammen immer 1 geben muss. |
Das ist eine lineare Gleichung, kommt also in Aeq und beq.
Grüße,
Harald
|
|
|
ThKo26 |
Themenstarter
Forum-Century
|
|
Beiträge: 184
|
|
|
|
Anmeldedatum: 21.09.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015b
|
|
|
|
|
|
Verfasst am: 25.01.2018, 13:29
Titel:
|
|
Hallo harald,
im Anhang eine Excel- Liste, die mein Vorhaben schildert.
Grüße
Beschreibung: |
|
Download |
Dateiname: |
Ziel.xls |
Dateigröße: |
38 KB |
Heruntergeladen: |
618 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.01.2018, 13:40
Titel:
|
|
Hallo,
das ist jetzt nicht dein Ernst... das hat doch mit einem Optimierungsproblem überhaupt nichts zu tun?! Da reicht die
min
-Funktion.
Grüße,
Harald
|
|
|
ThKo26 |
Themenstarter
Forum-Century
|
|
Beiträge: 184
|
|
|
|
Anmeldedatum: 21.09.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015b
|
|
|
|
|
|
Verfasst am: 25.01.2018, 13:47
Titel:
|
|
Hallo,
warum kompliziert, wenn es auch einfach geht. ....
hm ... danke.
Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.01.2018, 16:19
Titel:
|
|
Hallo,
ich habe leider das Problem jetzt erst verstanden.
Auf meine Nachfrage meintest du ja, dass die Gewichte variiert werden sollen. Das ist aber nicht der Fall, denn du gibst die Gewichte ja vor.
Grüße,
Harald
|
|
|
|
Gehe zu Seite 1, 2, 3 Weiter
|
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.
|
|