WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

umgekehrte Optimierung

 

tporsi
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.06.09
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 11.06.2014, 01:14     Titel: umgekehrte Optimierung
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2014, 08:20     Titel:
  Antworten mit Zitat      
fmincon falls die Nebenbedingungen nichtlinear sind. Ansonsten geht auch lsqlin.

viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
tporsi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.06.09
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 11.06.2014, 11:47     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2014, 14:05     Titel:
  Antworten mit Zitat      
Code:


x0 = [-1 0 0];
x = fmincon(@fun,x0,[],[],[],[],[],[],@mycon);

function f = fun(x)

f = sum(x);


function [c,ceq] = mycon(x)

c = -1;
ceq = norm(x) - 1;


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
Private Nachricht senden Benutzer-Profile anzeigen
 
tporsi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.06.09
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 11.06.2014, 16:23     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2014, 08:02     Titel:
  Antworten mit Zitat      
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:

f(x,y,z) = ||P_{soll} - P_{sim}(x,y,z)||_2 = 0

Ich würde in dem Fall allerdings noch numerische Ungenauigkeiten zulassen, also:

f(x,y,z) = ||P_{soll} - P_{sim}(x,y,z)||_2 < \epsilon

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.