|
tporsi |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 15.06.09
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.06.2014, 01:14
Titel: umgekehrte Optimierung
|
 |
Hallo,
ich würde gerne eine Optimierung machen, die ich so leider nicht finde.
Ich habe eine Funktion, die von mehreren Variablen abhängt. Jetzt möchte ich die kleinste Kombination von x,y und z finden, bei der die Vorgabe
f(x,y,z)=0
erfüllt ist. Die Optimierungsfunktionen von Matlab minimieren mir den Funktionswert. Dabei kommt aber nicht unbedingt die kleinste Kombination aus den Eingabewerten raus. Ab einer bestimmten Größe kann jede Variable beliebig groß werden, ohne dass der Funktionswert von 0 abweicht.
Es wäre also die Aufgabe
min x+y+z
Nebenbedingung f(x,y,z)=0
Hat jemand eine Idee, was sich dafür eignen würde?
|
|
|
|
|
Thomas84 |

Forum-Meister
|
 |
Beiträge: 546
|
 |
|
 |
Anmeldedatum: 10.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.06.2014, 08:20
Titel:
|
 |
fmincon falls die Nebenbedingungen nichtlinear sind. Ansonsten geht auch lsqlin.
viele Grüße
Thomas
|
|
|
tporsi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 15.06.09
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.06.2014, 11:47
Titel:
|
 |
Danke für die Antwort. Aber fmincon erfüllt die Nebenbedingung nicht. da hört die Optimierung bei einem lokalen Minimum auf, auch wenn der Funktionswert noch größer 0 ist.
Außerdem habe ich festgestellt, dass es nicht den kleinsten Wert für die Variablen ausgibt. Als Eindimensionales Problem hab ich folgenden gemacht.
Ich habe eine Funktion, die für
0 < x < 1.8
größer 0 ist. danach ist sie genau null.
Wenn ich jetzt als Grenzen lb = 0 und ub = 3 eingebe, gibt mir fmincon bei einem Startwert von 1.4 das Ergebnis 3 aus. Klar kenne ich hier die Grenze selbst, aber bei meinem ursprünglichen Problem kann ich das nicht so sehen.Gibt es eine Möglichkeit, dass ist da doch 1.8 rausbekomme?
|
|
|
Thomas84 |

Forum-Meister
|
 |
Beiträge: 546
|
 |
|
 |
Anmeldedatum: 10.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.06.2014, 14:05
Titel:
|
 |
Ich versteh nicht wie bei deinem 1d Beispiel die nichtlineare Nebenbedingung aussehen soll.
In dem Beispiel oben wird x + y + z unter der Nebenbedingung x^2+y^2+z^2 = 1 minimiert. Du musst nur noch die Nebenbedingung austauschen.
viele Grüße
Thomas
|
|
|
tporsi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 15.06.09
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.06.2014, 16:23
Titel:
|
 |
Danke für das Beispiel.
Leider ist meine Funktion f(x) nicht x+y+z, sondern ein sehr aufwändiges Simulink-Modell, in dem ich Soll- und Ist-Kurven als Ausgabe habe und den Fehler minimieren will. x,y und z sind dabei Faktoren für die Kurven. Ich möchte also rausfinden, bei welchen kleinsten x,y und z die der Fehler zwischen Ist- und Sollkurve immer noch 0 ist.
Ganz konkret geht es darum, rauszufinden, wie groß ein elektrischer Speicher sein muss um einen bestimmten Lastgang mit einer PV-Anlage und einem BHKW zu erfüllen. Ich muss also die PV-Anlage, den Speicher und das BHKW so dimensionieren, dass der Fehler im Lastgang zwischen Soll- und Istwert gleich null ist.
Eingabewerte sind wie gesagt
x,y und z
Ausgabewerte ist die Summe der Fehlerkurve quadriert.
Deshalb suche ich das Minimum von x,y und z für die Bedingung, dass der Ausgabewert immer noch 0 ist.
|
|
|
Thomas84 |

Forum-Meister
|
 |
Beiträge: 546
|
 |
|
 |
Anmeldedatum: 10.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.06.2014, 08:02
Titel:
|
 |
In deinem ersten Beitrag hast du folgendes geschrieben:
Zitat: |
min x+y+z
Nebenbedingung f(x,y,z)=0 |
Ich habe ein Beispiel gepostet, mit f(x,y,z) = x^2+y^2+z^2-1. Vielleicht hat dich die Variablenbezeichnung etwas verwirrt.
Jetzt hast du ein Simulink Modell das dir den Lastgang P_sim(x,y,z) berechnet. Du musst also für die Nebenbedingung etwa folgendes einsetzen:
Ich würde in dem Fall allerdings noch numerische Ungenauigkeiten zulassen, also:
Falls das so stimmt kannst du das Beispiel von mir an dein Problem anpassen. Du musst nur innerhalb der Funktion mycon die Berechnung des Simulink-Modells durchführen.
viele Grüße
Thomas
|
|
|
|
|
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.
|
|