Übung zur Entwicklung eines Fuzzy-Reglers unter Verwendung der SCRUM-Entwicklungsmethode
Aufgabe 1
Der bisherige Entwicklungsstand entbehrt beim Ausgangs-Fuzzyset einer fertigen
Methode zur Berechnung des Schwerpunktes der durch bestimmte Regelaktivierungen
entstehenden Flächen in den Fuzzygrößen.
Beim Entwickeln einer Formel zur Berechnung des Schwerpunktes kann es leicht zu
Fehlern kommen.
- Formulieren Sie eine Test-Unit für die Klasse Ausgangs-Fuzzyset, die es ermöglicht die
- Richtigkeit der durch sie bestimmten Schwerpunkte zu überprüfen.
- Probieren Sie die Scrum-Methode im kleinen Maßstab aus.
- Die Rolle des Product owners übernimmt diese Aufgabenstellung dementsprechend konkret in folgender Form:
|
Angaben des Product owners
- User story 1: Es ist möglich ein Ausgangs-Fuzzyset zu erzeugen. (definition of done: über Test-main-Methode)
- User story 2: Es ist möglich, den Schwerpunkt der i-ten Fuzzy-Größe eines Fuzzy-Ausgangssets aufgrund eines vorgegebenen Aktivierungsgrades zu berechnen, auch wenn diese nicht symmetrisch ist (nicht äquidistanter Abstand der Maxima). (definition of done: über Test-main-Methode)
|
Mögliche Tasks:
- Erstellen der Hilfs-Methode zur Bestimmung der Schnittpunkte der Aktivierungsgeraden mit einem asymmetrischen Dreieck als Fuzzy-Größe.
- Erstellen der Hilfs-Methode zur Bestimmung des Schwerpunktes eines rchtwinkligen Dreiecks, dessen Basis auf der X-Achse liegt durch Übergabe seiner Höhe und der auf der X-Achse liegenden Endpunkte.
- ...
|
fuzzy_java2.zip - Musterlösung zu Aufgabe 1.
Aufgabe 2
- Bitte nur nach vollständiger erfolgreicher Bearbeitung der ersten Aufgabe beginnen!
|
Bei der Darstellung der Klassen EingangsFuzzySet und AusgangsFuzzySet sollte u.a. klar werden,
wie wichtig es ist, sich den genauen Anwendungsfall so plastisch wie möglich zu verdeutlichen,
um zu einer schlanken möglichst wenig komplexen und mit möglichst wenigem Overhead belasteten
Implementierung zu finden.
So wurde beispielsweise erkannt, dass die Formulierung von Fuzzy-Größen als Objekte zu
sehr viel Overhead führen würden und wenig zielführend sind, wenn ihre Verwendung auch
im ersten Moment nahe liegt.
Wenden Sie nun Ihr Augenmerk auf die Formulierung der Fuzzy-Regeln und eng damit verbunden
auf die übergeordnete Klasse FuzzyRegler.
Entwickeln Sie eine möglichst einfache Datenstruktur zur Repräsentation der Fuzzyregeln.
Beachten Sie hierbei:
- Ein Fuzzy-Regler kann nicht nur mehrere Fuzzy-Eingangssets haben, sondern auch mehrere Fuzzy-Ausgangssets.
- Jedoch läßt sich gerade hier eine Reduktion der Komplexität erreichen, indem man bei einem Fuzzy-Ausgangsset pro Regler bleibt und einfach mehrere Regler formuliert, wenn es mehrere Ausgänge gibt.
- Beachten Sie desweiteren, dass es im Allgemeinen zwar UND und ODER Verknüpfungen von Fuzzy-Eingangsgrößen bei den Fuzzy-Regeln gibt, aber die Behandlung der UND-Verknüpfung in der Regel ausreicht, indem man einfach Regeln zuläßt, die nur einen Eingang berücksichtigen und auf den gleichen Ausgang einwirken dürfen.
- Somit reicht es in den Regeln n=1..k Eingangsgrößen zu berücksichtigen, die UND-verknüpft werden, wobei n==1 ein Sonderfall ist, bei dem nichts da ist, was mit der einen Eingangsgröße UND-verknüpft werden kann.
|
Wie bekommt man die Regeln in das Regel-Objekt hinein? - Formulieren Sie auch eine
entsprechende Set-Methode.
Setzen Sie abschließend mit dem funktionierenden Stand Ihrer Software das "Lüfterbeispiel"
aus der vorletzten Lehrveranstaltung um und überprüfen Sie das Ergebnis.
Gehen Sie so vor, dass Sie in der Musterlösung der C-Funktion das durch Ihren Code ersetzen,
was bei Ihnen bereits funktioniert.