WaterMixApplet mit Fuzzy-Control
Wassermischen mit Java...
1. Problembeschreibung
Aufgabe des Applets ist es, Wasser in einem Behälter durch Zuschütten
auf eine Zieltemperatur zu bringen.
Dabei existiert ein großer "Wassercontainer" mit einem Startvolumen
und einer Starttemperatur. Für das Zuschütten werden zwei kleine Behältnisse verwendet.
Darin ist einmal kaltes und im anderen heißes Wasser (Temperaturen frei wählbar).
Die Fuzzy-Logik soll nun anhand der verbleibenden Wassermenge im Container und der
Abweichung der Wassertemperatur vom Zielwert bestimmen, wieviel vom kalten bzw. heißen
Wasser zugeschüttet werden soll.
2. Fuzzy Details
Folgende linguistische Variablen wurden zur Steuerung der Mischlogik verwendet:
- Die Differenz zwischen der aktuellen Wassertemperatur und der Zieltemperatur.
Diese Werte bewegen sich zwischen -50°C und + 50°C.
Auf den Wertebereich sind 4 Fuzzy-Sets aufgeteilt:
Abb.: Temperaturdifferenz in °C
|
- Das verbleibende Wasservolumen. Diese Werte bewegen sich zwischen 0 und 10 Litern.
Auf den Wertebereich sind 3 Fuzzy-Sets aufgeteilt:
Abb.: Verbleibendes Wasservolumen in Liter
|
- Die Füllmenge. Dabei wird die Unterscheidung zwischen dem Hinzuschütten
von kaltem oder warmen Wasser über das Vorzeichen der Auswertung getroffen.
Bei negativen Werten wird kaltes Wasser zugeschüttet, bei positiven warmes Wasser.
Die Werte bewegen sich damit im Bereich von -1 Liter bis +1 Liter.
Für die Auswertung wurde der Wertebereich in 6 Fuzzy-Sets aufgeteilt.
Abb.: Zuschüttmenge in Liter (negativ:=kaltes Wasser)
|
dV/dT |
NB |
NS |
PS |
PB |
ZE |
PM |
PM |
NM |
NM |
PS |
PM |
PS |
NS |
NM |
PB |
PB |
PM |
NM |
NB |
|
3. Applet
4. Implementierung
Der Quellcode der einzelnen Java-Klassen ist hier verfügbar:
5. Autoren
Dieses Applet wurde im Rahmen der Vorlesung "Neuronale Netze"
bei Prof. Jürgen Sauer an der Fachhochschule Regensburg erstellt.
|