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

Optimierung eines Smart-Home

 

tporsi
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.06.09
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 06.06.2014, 13:36     Titel: Optimierung eines Smart-Home
  Antworten mit Zitat      
Hallo an alle,
ich hab da mal ein etwas längeres Problem:

Ich habe ein Simulink-Modell eines kleinen Smart-Home. Darin sind die Elemente PV-Anlage, Elektroauto, Bezug aus dem Netz, ein Speicher und ein Mini-BHKW.

In dem Modell kann ich die Größe der PV-Anlage (installierte Leistung), die Größe des Speichers (Energie und Leistung) und die Größe des Mini-BHKWs (installierte Leistung) variieren.

Das Modell gibt mir folgende Dinge aus

1.) wurde mein Elektroauto vollständig geladen (true/false)
2.) Unterschied zwischen gewünschtem Bezug aus dem Netz (vorher von mir definiert) und tatsächlichem Bezug als Fehlerkurve/Vektor im Sekundentakt
3.) Unterschied zwischen theoretischer PV-Leistung und im Smart-Home genutzter PV-Leistung auch als Fehlerkurve/Vektor im Sekundentakt

Ich möchte nun die Elemente Speicher und Mini-BHKW so minimieren, dass 2.) immer 0 ist, also der Bezug aus dem Netz wie vorgegeben passiert und 3.) auch minimieren, sodass ich möglichst keine PV-Leistung abregele.

Meine Eingaben sind für das Modell folgende:
Code:

    alpha1 = 1;     %Faktor für die Leistung des Speichers (bei alpha1 = 1 => 10kW)
    alpha2 = 1;     %Faktor für die Leistung vom Mini-BHKW (bei alpha2 = 1 => 10 kW)
    alpha3 = 50;    %Faktor für die Energie des Speichers (bei alpha3 = 50 => 50 kWh)
    alpha4 = 1;     %Faktor für die Leistung der PV (bei alpha4 = 1 => 10 kW)

    sim('Smart_Home')
 

Und die Ausgaben:

Auto geladen (0 oder 1)
Fehler_Netzbezug (Kurve im Sekundentakt)
Fehler_PV (Kurve im Sekundentakt)

Meine Idee ist jetzt, jeweils die Summe der Quadrate der beiden Kurven zu minimieren und dabei die Randbedingung 'Auto_geladen = true' einzuhalten. Wobei das Ergebnis dann das Minimum für alpha1, alpha2 und alpha3 wäre.

Da ich keine Ahnung von Optimierung habe und das erst recht in Matlab nicht, wollte ich mal fragen, ob ich hier ein sehr kompliziertes Problem habe und ob ihr mir helfen könnt?

Vielen Dank

Tobias
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.06.2014, 13:51     Titel:
  Antworten mit Zitat      
Hallo,

schau dir mal fmincon an.

Am problematischsten würde ich sehen, dass du mit (nur) 3 veränderlichen Parametern eine Kurve in Einklang mit der Sollkurve bringen möchtest. Das kann eigentlich nur klappen, wenn sich im wesentlichen das Simulink-Modell "darum kümmert" und nur sicherzustellen ist, dass die Anlage das überhaupt erfüllen kann.

Grüße,
Harald
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: 06.06.2014, 13:57     Titel:
  Antworten mit Zitat      
Durch fmincon werde ich mich direkt mal durcharbeiten.

Ein Beispiel zu dem Hinweis mit den Kurven. Wenn ich einen riesigen Speicher einsetze (z.B. mit 1000 kWh und 100 kW) dann kommt raus, dass ich keine Probleme habe, da die Kurven eingehalten werden. Wenn ich allerdings einen kleinen Speicher habe (10 kWh, 10 kW), dann wird Mittags die PV-Leistung eingesenkt und dafür am Abend der Netzbezug verändert. Das passiert aber alles im Simulink-Modell. Ich bekomm am Ende die Fehlerkurve angezeigt.

Aber wie gesagt, ich guck jetzt erst mal fmincon durch.

Danke
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: 06.06.2014, 19:48     Titel:
  Antworten mit Zitat      
Also ich habe jetzt folgende Funktion als Vereinfachung erstellt:

Code:

function [out] = Wert(eins,zwei)
X=[eins zwei];
set_param('Optim_Test/Constant', 'Value', num2str(X(1)));
set_param('Optim_Test/Constant1', 'Value', num2str(X(2)));
sim('Optim_Test')
out=Ergebnis.Data(1,1);
 


wobei die Constanten nur multipliziert werden und dann der Absolutwert gebildet wird. Bei einer Minimierung muss also 0 0 rauskommen. Händisch klappt das auch wunderbar.

Wenn ich jetzt diese Funktion folgendermaßen aufrufe:

Code:

fmincon(@Wert, [1;0], [], [], [], [], [-2;-2], [2;2]);
 


dann sagt er mir immer:

Code:

Error using Wert (line 2)
Not enough input arguments.

Error in fmincon (line 635)
      initVals.f = feval(funfcn{3},X,varargin{:});

Error in Minimumstest (line 1)
fmincon(@Wert, [1;0], [], [], [], [], [-2;-2], [2;2]);

Caused by:
    Failure in initial user-supplied objective function evaluation. FMINCON cannot continue.
 


Ich finde auch nach längerem probieren meinen Fehler nicht. Ich denke, ich bin mit diesem Beispiel schon dicht an meinem eigentlichen Problem dran, sodass der Rest dann klappen könnte.

Danke Smile
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: 06.06.2014, 20:06     Titel:
  Antworten mit Zitat      
okay, nachdem ich die function leicht angepasst habe

Code:

function [out] = Wert(x)
X=[x(1) x(2)];
set_param('Optim_Test/Constant', 'Value', num2str(X(1)));
set_param('Optim_Test/Constant1', 'Value', num2str(X(2)));
sim('Optim_Test')
out=Ergebnis.Data(1,1);
 


läuft es durch. Auch, wenn ich [0;0] noch nicht als Ergebnis bekomme Rolling Eyes
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.06.2014, 20:13     Titel:
  Antworten mit Zitat      
Hallo,

um dir damit helfen zu können, wäre das Modell hilfreich.

Grüße,
Harald
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: 06.06.2014, 20:15     Titel:
  Antworten mit Zitat      
wie gesagt, ein sehr einfaches Modell. Und ohne dieses Modell läuft es wunderbar. Also wenn ich die Gleichung in Matlab direkt programmiere. Nur hilft mir das ja leider nicht, da ich mein Modell ja in Simulink erstellt habe.

Ne Idee, wo der Fehler liegt?

Optim_Test.slx
 Beschreibung:

Download
 Dateiname:  Optim_Test.slx
 Dateigröße:  12.1 KB
 Heruntergeladen:  342 mal
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: 06.06.2014, 22:23     Titel:
  Antworten mit Zitat      
Der Fehler lag in den constants. Da hab ich bei der Übergabe noch irgendwie geschlafen. Läuft jetzt alles.

Vielen Dank für die Unterstützung Very Happy
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.