|
|
Optimierung von zwei (Ziel-)Funktionen mit zwei Unbekannten |
|
Maveric_1993 |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.06.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.06.2019, 11:29
Titel: Optimierung von zwei (Ziel-)Funktionen mit zwei Unbekannten
|
|
Hallo,
ich bin noch sehr neu im Thema "MatLab", habe aber zu meinem Lösungsproblem keine für mich verständliche Antwort in der MatLab Documentation, in MathWorks oder in diesem Forum hier gefunden.
Folgendes Problem stellt sich mir derzeit:
Funktion A ist von den unbekannten Variablen x und y abhängig.
Funktion B ist ebenfalls von den unbekannten Variablen x und y abhängig.
x und y haben einen definierten Bereich, in dem diese einen sinnvollen Wert darstellen.
Die Funktionen A und B sollen so lange mithilfe der Variablen x und y optimiert werden, bis die Funktionen den Wert A_Ziel und B_Ziel annehmen.
Im Grunde würde sich die Lösung meines Problems als die Schnittpunkte von zwei 3D-Plots (je eines für Funktion A und B) in Abhängigkeit von x und y graphisch zeigen lassen.
Ich bin mir sicher, dass es eine Lösung hierfür gibt - benötige nur den richtigen Denkanstoß! Danke!
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 10.06.2019, 11:45
Titel:
|
|
Hallo,
mein Vorschlag wäre
lsqcurvefit
.
Wenn du das schon versucht hast, bitte konkrete Fragen dazu stellen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Maveric_1993 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.06.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.06.2019, 13:09
Titel: Optimierung von zwei (Ziel-)Funktionen mit zwei Unbekannten
|
|
Die Frage ist, wie ich einen Wert für x und y errechnen kann, unter der Prämisse, dass die beiden Funktion A und B erfüllt sind.
lsqcurvefit habe ich tatsächlich noch nicht versucht. Bei einem Blick in die Syntax wird mir jedoch nicht klar, wie mir lsqcurvefit weiterhelfen sollte.
x = lsqcurvefit(fun,x0,xdata,ydata)
Zwar kann ich die Werte für x und y als "xdata" und "ydata" definieren. Ich habe jedoch nicht nur eine Zielfunktion (hier "fun"), sondern zwei Funktionen, die erfüllt sein müssen ("A" und "B").
Um es etwas konkreter anhand von Zahlen zu machen:
Dabei sollen die Werte von x und y so gewählt werden, dass A den Wert 0.10 und B den Wert 0.02 annimmt.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 10.06.2019, 14:02
Titel:
|
|
Hallo,
Zitat: |
Zwar kann ich die Werte für x und y als "xdata" und "ydata" definieren. |
Keine gute Idee. xdata ist dein x und y, ydata sind die Sollwerte von A und B.
Zitat: |
Ich habe jedoch nicht nur eine Zielfunktion (hier "fun"), sondern zwei Funktionen, die erfüllt sein müssen ("A" und "B"). |
Die beiden Funktionswerte zu einem Vektor zusammenfassen, und es passt. Die Abweichung zu den Sollwerte wird dann minimiert, und wenn es eine Lösung der Gleichung gibt, dann ist dieses Minimum 0.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Maveric_1993 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.06.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.06.2019, 17:09
Titel:
|
|
Zuerst einmal vielen Dank, Harald. Grundsätzlich verstanden.
Nur verstehe ich noch nicht, wie ich xdata als x UND y gleichzeitig definieren kann. Denn sowohl x als auch y ist ja ein eigener Vektor.
Ähnlich ist es auch bei ydata.
Kannst Du mir die Befüllung der Funktion an obigen Beispiel für x, y und A_Soll, B_Soll erläutern?
Die Funktionswerte zu einem Vektor zusammenzufassen bekomme ich hin.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 11.06.2019, 17:40
Titel:
|
|
Hallo,
mir ist bewusst geworden, dass lsqnonlin geeigneter ist.
Die Funktion muss so aussehen:
und dann
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Maveric_1993 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.06.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.06.2019, 08:43
Titel:
|
|
Mein Code sieht nun folgendermaßen aus:
Die Funktion habe ich wie von Dir vorgeschlagen definiert:
Leider erhalte ich noch kein Ergebnis, sondern eine Fehlermeldung:
Wie kann ich den Fehler beheben, der ja offensichtlich aus der Funktion heraus entsteht?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 12.06.2019, 17:27
Titel:
|
|
Hallo,
die Berechungen von A und B müssen in myfun rein. Ich hatte das nur nicht dorthin kopiert.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Maveric_1993 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 10.06.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.06.2019, 14:48
Titel:
|
|
Vielen, vielen Dank. Das hat so funktioniert!
|
|
|
|
|
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.
|
|