Skip to content

Kennlinien (PML)

Werte aus Kennlinien auswerten

Für Kennlinien stehen die folgenden Funktionen zur Verfügung.

BasistypFunktionArgumenteBeschreibung
Char1D.getYFromXy-Wert zu einem x-Wert aus einem Char1D
Char1D.getXFromYx-Wert zu einem y-Wert aus einem Char1D
Char1D.generatePiecewiseAbsstückweise lineare Funktion für eine Optimierung aus einem Char1D
Char1D.generatePiecewiseRelabsolute stückweise lineare Funktion für eine Optimierung aus einem relativen Char1D
Char1D.getXMaxMaximaler X- Wert aus einem Char1D
Char1D.getXMinMinimaler X-Wert aus einem Char1D
Char1D.getYMaxMaximaler Y-Wert aus einem Char1D
Char1D.getYMinMinimaler Y-Wert aus einem Char1D

Mithilfe des Typs Char1D können Werte aus Kennlinien interpoliert und abgerufen werden. Der Kennlinienabruf wird den algebraischen Gleichungen zugeordnet. Deshalb können Sie nicht mit linear optimierbaren Variablen arbeiten.

Erzeugen Sie ein Primitiv mit dem Datentyp characteristic1d. Dieses Primitiv stellt eine Wertetabelle für eine X-Achse und eine Y-Achse dar (siehe folgende Abbildung).

Beim Anlegen eines solchen Primitivs legen Sie fest, welches Primitiv mit der X-Achse und welches Primitiv mit der Y-Achse verbunden wird. Fügen Sie das characteristic1d-Primitiv in ein geeignetes Formular (typische Eingabedaten) ein. Das erzeugte Grundgerüst einer Wertetabelle besitzt die Tabellenköpfe mit dem Namen der integrierten Primitive. Verknüpfen Sie eine Variable mit dem Typ Char1D mit dem angelegten Primitiv. Sie können in der Wertetabelle Werte anlegen und entfernen. Mit der getYFromX-Funktion und der getXFromY-Funktion werden die gesuchten Werte aus der Tabelle linear interpoliert und abgerufen. Die Befehle werden in folgender Form verwendet:

begin declaration

Char1D Variablenname („/Local/Allgemein/…“);

end declaration

begin step

Variablenname.getYFromX (X) ; /*Der zugehörige y-Wert vom x-Wert wird abgefragt
oder */
Variablenname.getXFromY (Y) ; /*Der zugehörige x-Wert vom Y-Wert wird abgefragt */

end step

Kennlinie als stückweise lineare Funktion auswerten

Wenn linear optimierbare Variablen in der Kennlinie (Typ Char1D) einer Energieumwandlung, z. B. elektrischer in thermische Leistung in der Power-to-Heat-Komponente, vorkommen, wird aus den Kennlinien eine stückweise lineare Funktion als MILP-Gleichung gebildet. Die Einträge der X-Achse müssen streng monoton wachsend sein. Die stückweise lineare Funktion können Sie beim Optimieren als Näherung für kompliziertere nichtlineare Funktionen oder Funktionen, bei denen nur diskrete Werte vorliegen, nutzen, zum Beispiel die Investitionskosten von Kesseln in Abhängigkeit von der Nennleistung. Der Aufruf dieser Funktionen unterscheidet sich bei absoluten und relativen Werten.

Absolute Werte

Hat das Char1D absolute Werte, rufen Sie die stückweise lineare Funktion mit generatePiecewiseAbs auf. Der Funktionsaufruf erfolgt mittels zweier Inputs, die jeweils lineare Optimierungsvariablen oder einfache lineare Variablen sein können. Der erste Input ist der Wert der Abszisse. Der zweite Input ist der Funktionswert des ersten Inputs für die stückweise linearisierte Näherung. Im Gegensatz zu getXFromY und getYFromX können X und Y variabel sein und erst in der Optimierung bestimmt werden.

begin step

/* Beispiel */

Variablenname.generatePiecewiseAbs (X,Y) ; /* Y = f(X) mit f, die aus dem Char1D erzeugte stückweise lineare Funktion */

target Y; /* minimiere Y*/

end step

Relative Werte

Um aus einem relativen Char1D absolute Funktionswerte zu erzeugen, wird generatePiecewiseRel mit sieben Inputs benötigt. Die ersten drei Inputs können in der Optimierung bestimmt werden. Die letzten vier müssen algebraische Variablen (Koeffizienten) sein, und sie müssen vor der Optimierungsrechnung schon bestimmt sein.
Der erste und der zweite Input sind wie bei generatePiecewiseAbs der absolute X-Wert und dessen absoluter stückweise linearisierter Funktionswert. Um von der relativen Darstellung zur absoluten zu gelangen, wird der Divisor der Relativierung der Abszisse, der durch den dritten Input dargestellt wird, benötigt. Der dritte Input darf nicht negativ sein. Als untere und obere Schranke des dritten Inputs werden der vierte und fünfte Input benutzt. Dabei kann die Nichtnegativität des dritten Inputs mit einem nicht negativen Wert des vierten Inputs garantiert werden. Weiterhin muss eine linearisierte Beziehung zwischen den Divisoren der Relativierung angegeben werden. Deshalb entspricht der sechste Input dem Schnittpunkt mit der Ordinate bei der linearen Beziehung und der siebte Input dessen Anstieg.

begin step

/* Beispiel */

X_A_min = 0;
X_A_max = 3000;
Y^ (0) _A = 0;
dY_A/dX_A = 1.111111;

Variablenname.generatePiecewiseRel (X, Y, X_A, X_A_min, X_A_max, Y^(0) _A, dY_A/dX_A );
/* Y ~ f(X/X_A) * (dY_A/dX_A * X_A + Y^(0) _A) mit f, die aus dem Char1D erzeugte relative stückweise lineare Funktion
X_A_min <= X_A_max */

target Y; // minimiere Y

end step

An den Anfang scrollen