27.10.2014 Aufrufe

Zeitreihenanalyse natürlicher Systeme mit neuronalen Netzen und ...

Zeitreihenanalyse natürlicher Systeme mit neuronalen Netzen und ...

Zeitreihenanalyse natürlicher Systeme mit neuronalen Netzen und ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

erreichen, wird <strong>mit</strong> Funktionenpointern gearbeitet, die in den unteren Hierarchieschichten auf NULL<br />

zeigen <strong>und</strong> in den höheren Schichten auf die entsprechende Tcl/Tk-Routine gesetzt werden.<br />

Ein ähnlicher Hierarchieaufbau <strong>und</strong> deren Bruch ist bei dem Programmteil zur Verwaltung des<br />

Netzwerkes angewendet worden. Allerdings liegt hier eine Hierarchie von Klassen in folgender<br />

Reihenfolge vor: Die Basisklasse DSNStructure beinhaltet die Netzwerkstruktur sowie deren File-I/O.<br />

DSNAlgor stellt die Schnittstelle zu den Algorithmen <strong>und</strong> Daten zur Verfügung, kann Knoteninhalte<br />

konstruieren, löschen, speichern <strong>und</strong> laden <strong>und</strong> Berechnungen durchführen (Run durchs Netzwerk).<br />

DSNManipulation erweitert den statischen Teil des Netzwerkes durch konstruktive Methoden:<br />

Einfügen <strong>und</strong> Löschen von Knoten <strong>und</strong> Verbindungen. Durch DSNGraph wird die Sichtbarkeit des<br />

Netzwerkes <strong>und</strong> dessen Animation zu Verfügung gestellt. Es enthält die Aktion des Netzwerkes an die<br />

Oberfläche durch die Tcl/Tk-Schnittstelle. Durch das Zwischenmodul DSNCommand werden Reaktionen<br />

auf die Benutzeraktionen bearbeitet. DSNWindows letztendlich, die oberste Klasse, ist die Schnittstelle<br />

zwischen den Oberflächenvents (von Tk geliefert) <strong>und</strong> dem Netzwerk. Diese Klassenhierarchie zur<br />

Netzwerkverwaltung macht ca. 20% des gesamten Codes des DSN aus.<br />

DSNStructure kann auch ohne die oberen Schichten allein bestehen. Es wäre z.B. möglich, ein Netz<br />

zu konstruieren <strong>und</strong> dieses ohne Oberfläche im Batchbetrieb innerhalb von DSNStructure laufen zu<br />

lassen. Es könnte daher als nicht sichtbares Subnetz (komplexer Algorithmus) dienen, das als eine<br />

Funktionseinheit in ein anderes Netz eingebettet wird. In diesem Fall werden die Funktionen, die auf die<br />

Oberfläche zugreifen nicht aktiviert. Dieses wird dadurch erreicht, daß diese Funktionen in<br />

DSNStructure als virtuelle 20 Funktionen leer deklariert sind. Das Überschreiben dieser Funktionen<br />

durch die Klassen in den höheren Schichten findet in diesem Fall nicht statt.<br />

Die Netzwerkstruktur in DSNStructure baut sich aus vielen Nodes <strong>und</strong> Conections auf, die<br />

jeweils als eigene Klasse definiert sind <strong>und</strong> in Listen gespeichert werden. Die Einzelelemente enthalten<br />

Zeiger auf die <strong>mit</strong> ihnen im Netz verb<strong>und</strong>enen Elemente. Im Prinzip kann <strong>mit</strong> dieser Struktur jeder<br />

Graph aufgebaut werden. Die Klasse DSNManipulation überprüft aber jede Benutzeraktion <strong>und</strong><br />

garantiert, daß bzgl. des Datenflusses keine unsinnigen Netze konstruiert werden. Nur Inputknoten <strong>mit</strong><br />

Outputknoten <strong>und</strong> kompatible Datentypen können verknüpft werden. Andernfalls gibt es eine<br />

Fehlermeldung <strong>und</strong> die Aktion wird ignoriert.<br />

Jeder Knoten enthält eine int-Variable, die die ID des Knotentyps angibt <strong>und</strong> einen void-Pointer, der<br />

entsprechend der ID interpretiert wird (type-casting). Da alle Knoten dieselben Basisfunktionen<br />

enthalten (durch VarList definiert), kann durch ein identisches C-Makro auf alle Knoten über ein<br />

CASE-Label nach ID selektiert zugegriffen werden.<br />

20 Die Funktionsweise von explizit virtuell definierten Funktionen läßt sich nachträglich ändern.<br />

16

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!