• Keine Ergebnisse gefunden

Zur Auswertung einer Wahrscheinlichkeitsfunktion sind folgende Informationen erforderlich:

• die innere Funktion f und dessen verfügbare Ableitungen

• die unsicheren Parameterξ sowie deren Verteilung

Hinsichtlich der in Abschnitt 8 vorgestellten Verbesserungen sollte das Framework darüber hinaus hinsichtlich folgender Aspekte konfigurierbar sein:

• zu berechnende Ableitungen der Wahrscheinlichkeitsfunktion

• Integrationsmethode

• zu verwendendes Verfahren zur Startwertbestimmung durch Ergebnisverwertung Die Integrationsmethode hängt eng mit der Verteilung der unsicheren Parameterξ zusam-men: Für eine Integration über dünne Gitter sind für jede Klasse von Wahrscheinlichkeitsvertei-lungen die besonders aussagekräftigen Integrationspunkte zu bestimmen und auf deren Basis die Gewichtung festzulegen. Aus diesem Grund ist zur Nutzung des Softwareframeworks zu-nächst ein Objekt, das Verteilung und Konfiguration der Integrationsmethode enthält, zu erstel-len und dies dem eigentlichen Konstruktor der Wahrscheinlichkeitsfunktion zu übergeben. Für den in der Praxis am häufigsten auftretenden Fall der mehrdimensionalen Normalverteilung

10.3 Konfigurierbarkeit

1 mu = [1.0, 2.0, 3.0]

2 sigma = [0.2, 0.3, 0.4]

3 cor = [[1.0, 0.8, 0.5], [0.8, 1.0, 0.7], [0.5, 0.7, 1.0]]

4 mvnd = Mvnd(mu, sigma, cor)

Quelltextbeispiel 1: Definition der Wahrscheinlichkeitsverteilung

steht bereits eine Klasse bereit, von der ein für das Framework geeignetes Objekt entsprechend Quelltextbeispiel 1 erstellt werden kann.

Bei Erstellung des Wahrscheinlichkeitsobjektes werden zur späteren geschwindigkeitsopti-mierten Auswertung eine Reihe von Aspekten vorkonfiguriert. Aus diesem Grund ist neben der Übergabe der Klasse, die den Simulator beinhaltet, auch eine Angabe erforderlich, ob und wel-che Ableitungen Objekte dieser Klasse zur Verfügung stellen. Bei der Programmierung in Py-thon wird entsprechend des Duck-Typing-Konzepts auf die explizite Definition vonInterfaces verzichtet. Von Klassen, die die Verbindung zum Simulator herstellen oder die erforderlichen Berechnungen selbst vornehmen, wird verlangt, instanzierbar zu sein, und sie müssen eine Methode mit dem Namenget_upper_limit(u, xi)enthalten.2Letztere Methode muss ein NumPy-Array implementieren, in dessen erstem Feld sich der Funktionswert, in den folgenden die ersten Ableitungen der inneren Funktion nachuundξ und schließlich die zweiten Ablei-tungen zeilenweise gestapelt befinden. Eine solche Klasse wird im Rahmen des Quelltextes als Blackbox bezeichnet, da es für das Software-Framework ohne Bedeutung ist, was tatsächlich innerhalb der Klasse an Berechnungen durchgeführt wird, sofern sie die zuvor beschriebenen Anforderungen erfüllt. Quelltextbeispiel 2 enthält eine mögliche Implementation.

Für die Bestimmung der Startwerte mittels Ergebnisverwertung sind weitere Angaben erfor-derlich: Zunächst die Angabe, ob die Wahrscheinlichkeitsfunktion nur einmal isoliert auszu-werten ist, wie es im Rahmen der Berechnung des Schlüsselindikators zur Anzeige in Leitwar-ten oft der Fall ist, oder ob eine Vielzahl aufeinanderfolgender Auswertungen vorgenommen wird, wie sie typischerweise beim Lösen von Optimierungsproblemen oder bei unveränderten unsicheren Parametern bei veränderten Umweltbedingungen in Leitwarten auftreten. Hiervon ist abhängig, ob die Startwertbestimmung in Abhängigkeit der äußeren Nebenbedingungen oder in Abhängigkeit der bereits ausgewerteten Tupel durchgeführt wird.

Das Objekt zur Auswertung einer Wahrscheinlichkeitsfunktion lässt sich entsprechend Quell-textbeispiel 3 erstellen. Die für die Auswertung der inneren Funktion f verantwortliche

Black-2Die Variablexi bezeichnet hier und im Folgenden den Vektor der unsicheren Parameterξ.

1 class BlackBox():

2 def get_upper_limit(u, xi):

3 f = Simulator.calculate_f(u, xi)

4 gradient = Simulator.calculate_gradient(u, xi)

5 hessian = Simulator.calculate_hessian(u, xi)

6 return numpy.hstack((f, gradient, hessian.flatten()))

Quelltextbeispiel 2: Anbindung eines Simulators. Die vom Simulator aufgerufenen Funktionen sollten in Zeile 3 ein Skalar, in Zeile 4 ein eindimensionales NumPy-Array und in Zeile 5 ein zweidimensionales NumPy-Array zurückgeben. Die Län-ge jeder Dimension sollte hierbei der Summe aus der Anzahl der Umwelt-bedingungen und der Anzahl der unsicheren Parameter entsprechen.

boxklasse BlackBox und das die Verteilungsfunktion der unsicheren Parameter enthaltende Objektmvndwerden als Parameter übergeben. Im Beispiel wird davon ausgegangen, dass die

BlackBox-Klasse die ersten Ableitungen zurückgibt und von der Wahrscheinlichkeitsfunktion somit auch die ersten Ableitungen verfügbar sind.

1 import docce

2 cc = docce.ChanceConstraint(BlackBox, mvnd, docce.FIRST_DERIVATIVE)

Quelltextbeispiel 3: Erstellung eines Objektes zur Auswertung von Wahrscheinlichkeitsfunk-tionen

Um für ein gegebenesu, welchesmEinträge enthält, die Wahrscheinlichkeitsfunktion aus-zuwerten und die zugehörigen Ableitungen zu bestimmen, stehen die im Quelltextbeispiel 4 aufgeführten drei Methoden desChanceConstraint-Objektes zur Verfügung.

1 cc.get_probability(u)

2 cc.get_first_derivative(u)

3 cc.get_second_derivative(u)

Quelltextbeispiel 4: Auswertung der Wahrscheinlichkeitsfunktion. Mit den aufgeführten Funk-tionen lassen sich von einem ChanceConstraint-Objekt (hier cc) die Wahrscheinlichkeit des Einhaltens der hinterlegten Bedingung sowie de-ren erste und zweite Ableitungen in Abhängigkeit der Umweltbedingun-genuberechnen.

10.3 Konfigurierbarkeit

Die erste Methode get_probability(u) gibt ein Skalar zurück, welches der gesuchten Wahrscheinlichkeit entspricht. Die zweite Methodeget_first_derivative(u)gibt ein NumPy-Array der Längem, in dem sich die ersten Ableitungen der Wahrscheinlichkeitsfunktion nach u befinden. Die letzte Methodeget_second_derivative(u) gibt einm×m-NumPy-Array zurück, welches die zweiten Ableitungen der Wahrscheinlichkeitsfunktion als Hessematrix an-geordnet enthält.

Das entwickelte Software-Framework ist in Standardoptimierungs- und -simulationssoftware über die entsprechenden Schnittstellen vergleichsweise einfach einbindbar und steht unter ei-ner freien Lizenz zur Verfügung.3 Eine beispielhafte Einbindung in die Modellierungsumge-bung für ProzesssystementwicklungMOSAIC4(Zerry 2008) ist bereits durch Müller u. a. (2015) vorgenommen worden.

Hiermit ist die Beschreibung des Softwareframeworks abgeschlossen. Im folgenden Abschnitt wird dieses verwendet, um die zuvor entwickelten algorithmischen Verbesserungen der Aus-wertung von Wahrscheinlichkeitsfunktionen an einer Reihe von Fallstudien zu untersuchen.

3Abrufbar unterhttps://github.com/seppwerk/docce. An dieser Stelle liegt auch die Dokumentation zur Nutzung des Software-Frameworks vor.

4Abrufbar unterhttp://www.mosaic-modeling.de

11 Numerische Untersuchungen

Zur Untersuchung der Auswirkungen der Effekte der algorithmischen Anpassungen werden die verschiedenen Verfahren in mehreren Fallstudien erprobt. Diese bestehen aus bekannten Optimierungsproblemen aus der Literatur, die so erweitert werden, dass es sich um Optimie-rungsprobleme mit Wahrscheinlichkeitsnebenbedingungen handelt.

11.1 Methodik

In den vorangegangenen Abschnitten wurden folgende Verbesserungsmöglichkeiten der ex-pliziten Berechnung von Wahrscheinlichkeitsnebenbedingungen vorgestellt beziehungsweise entwickelt:

1. Numerische Berechnung der zweiten Ableitung der Wahrscheinlichkeitsfunktion (Ab-schnitt 8.1)

2. Integration über dünn besetzte Matrizen (Abschnitt 8.2)

3. Ergebnisverwertung zur Startwerterzeugung für Nullstellenbestimmung (Abschnitt 8.3.1) 4. Halley-Verfahren zur Nullstellenbestimmung (Abschnitt 8.3.2)

5. Nebenläufigkeit (Abschnitt 9)

Die Anwendung der Integration über dünn besetzte Matrizen wurde nicht im Rahmen die-ser Arbeit entwickelt, ist allerdings bereits umfangreich von Geletu u. a. 2011 und Klöppel u. a.

2011 evaluiert worden. Aus diesem Grund werden die dadurch zu erreichenden Geschwindig-keitsgewinne in dieser Arbeit nicht näher analysiert, sondern den dortigen Ergebnissen folgend grundsätzlich dünne Gitter zur Erzeugung der Tupel von äußeren unsicheren Parametern ver-wendet.

Die verbleibenden algorithmischen Verbesserungen werden im Folgenden im Rahmen von drei Fallstudien auf ihre praktischen Auswirkungen evaluiert. Grundsätzlich lassen sich zwei Anwendungsfälle, in denen Wahrscheinlichkeitsfunktionen auszuwerten sind, unterscheiden:

• einmalige Auswertung mit einem Vektor von Umweltbedingungen

• mehrfache Auswertung mit unterschiedlichen Vektoren von Umweltbedingungen bei un-veränderten unsicheren Parametern

Die einmalige Auswertung einer Wahrscheinlichkeitsfunktion tritt in Fällen auf, in denen sich die unsicheren Parameter und/oder deren Verteilung häufig ändern. In der Versuchsum-gebung im ersten Teil der Arbeit trat eine Änderung der unsicheren Parameter stets auf, wenn eine Dosieraufgabe erledigt war: Setzten sich vor Beendigung der ersten Dosieraufgabe die unsicheren Parameter aus prognostizierter Zeit und Menge derersten, zweiten und dritten Do-sieraufgabe zusammen, so bestanden diese nach Abschluss dieser DoDo-sieraufgabe aus prognos-tizierter Zeit und Menge derzweiten, dritten und viertenDosieraufgabe. Bei Änderung der un-sicheren Parameter ist es nicht mehr möglich, die Ergebnisverwertung in Orientierung an den Werten der bisherigen Umweltbedingungen durchzuführen; in diesem Fall ist es sinnvoll, die Ergebnisse der im Rahmen einer Auswertung bereits berechneten inneren Tupelξ+ für die Ergebnisverwertung zu nutzen.

Die mehrfache Auswertung einer Wahrscheinlichkeitsfunktion stellt den Regelfall im Rah-men der Lösung von OptimierungsprobleRah-men dar: Um die optimale Lösung zu finden, wird für eine Vielzahl von Umweltbedingungen die Wahrscheinlichkeitsfunktion ausgewertet, oh-ne dass die unsicheren Parameter geändert werden. Sowohl bei der Aktualisierung der Wahr-scheinlichkeiten durch eine neue Reglereinstellung als auch im üblichen Optimierungsfall kann die Ergebnisverwertung auf Basis der Ergebnisse der bisher ausgewerteten Umweltbedingun-gen erfolUmweltbedingun-gen. Im Optimierungsszenario kommt hinzu, dass potentiell weniger Optimierungs-schritte erforderlich sind, wenn die zweite Ableitung der Wahrscheinlichkeitsfunktionen zur Verfügung steht.

Für die erste Fallstudie wird nur der erste Anwendungsfall ausgewertet, für die zwei wei-teren Fallstudien werden beide Anwendungsfälle jeweils separat behandelt. Innerhalb jedes Anwendungsfalls in jeder Fallstudie werden sämtliche Kombinationen, die sich aus den ver-schiedenen für den jeweiligen Anwendungsfall relevanten algorithmischen Verbesserungen ergeben, untersucht. Für die einmalige Auswertung einer Wahrscheinlichkeitsfunktion sind dies die Ergebnisverwertung und die Methode zur Nullstellenbestimmung. Hieraus ergeben