1 Schwebende Kugel – MATLAB/Simulink SS2007 Inhalt Ende Künstlich Neuronales Netz (KNN) zur Modellierung der magnetischen Flussdichte M. Schneider, A. Lodwich, U. Lehmann, J. Brenig, D. Reinarz
Jan 14, 2016
1Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Künstlich Neuronales Netz (KNN) zur Modellierung der magnetischen Flussdichte
M. Schneider, A. Lodwich, U. Lehmann, J. Brenig, D. Reinarz
2Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Inhalt
• Datenaufbereitung
• Training des KNN
• Test des KNN in MATLAB
• Test des KNN in Simulink
• Test des KNN in Simulink mit Daten aus dem Workspace
• Quellenverzeichnis
• Fragen
3Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Technologieschema Komponenten des Regelkreises
Regelstrecke
PC mit ReglerVerstärker/ Stellglied
Zeilenkamera/Messeinrichtung
4Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Schwebende Kugel im Magnetfeld
5Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Video
6Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Technologieschema (Animation)
7Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Tabelle A2 aus der Diplomarbeit „Schwebende Kugel“ von D. Reinarz (http://stud-in.fh-swf.de/Dirk.Reinarz/)
Einheiten umrechnen!!![mm] [m][mT] [T][V] [V]
8Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
• Tabelle A2 in der Diplomarbeit markieren, kopieren und in Excel einfügen
• Einheiten prüfen und bei Bedarf umrechnen
• Daten auf Vollständigkeit prüfen, evtl. Anfangsbedingungen einfügen
• Daten aufteilen in Trainings-, Validierungs- und Testdaten
• Daten sortieren und speichern
9Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
10Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
11Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Festlegen der Trainings-, Validierungs- und Testdaten!
Tabelle mit allen Daten muss noch in eine für die NN-Toolbox passende Form gebracht werden!
12Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Benötigtes Format:
1. Spalte:Input 1: Spannung U [V]
2. Spalte:Input 2: Position Pos [m]
3. Spalte:Output: Magnetfeld B [T]
-> Tabelle in die benötigte Form bringen ( z. B. Copy and Paste)
●●●
13Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
14Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Aufteilung in verschiedene Einzeltabellen für Training, Validierung und Test auf separaten Arbeitsblättern für die Weiterverarbeitung in MATLAB
Markieren aller Trainingsdaten in der Tabelle
Verknüpfen hat den Vorteil, dass Aktualisierungen mit übernommen werden!!
15Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
4 Arbeitsblätter:
Trainingsdaten
Validierungsdaten
Testdaten
Eingabe- und Ausgabewert des KNN müssen korrespondieren!
Tabelle gesamt
Spalte mit Ust in [V]
Spalte mit Pos in [m]
Spalte mit B in [T]
16Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Für MATLAB werden 6 Matrizen mit den entsprechenden Daten benötigt (z. B. input_train, input_valid, input_test, target_train, target_valid, target_test ).
Insgesamt gibt es 126 Datensätzen! Nach der Aufteilung muss die Summe der Trainings-, Validierungs- und Testdatensätze 126 ergeben!
Daten müssen in MATLAB in die entsprechende Matrix eingelesen werden
17Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Import über MATLAB - Funktion xlsread:
>> input_train = xlsread('Daten_Excel','Trainingsdaten', 'A3:B102');
Die Daten der Felder A3 bis B102 des Arbeitsblattes „Trainingsdaten“ der Exceltabelle Daten_Excel wird als Matrix mit dem Namen input_train eingelesen
ODER:input_train = xlsread(‘Daten_Excel‘, -1);-> Daten, die eingelesen werden sollen, können mit der Maus markiert werden
-> beide Varianten: gleiches Ergebnis
18Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Die NN-Toolbox liest die Daten spaltenweise ein, d. h. die einzelnen Matrizen müssen transponiert werden, so dass pro Inputneuron bzw. Targetneuron eine Zeile entsteht. Hierfür die MATLAB-Funktion transpose nutzen
19Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
20Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Insgesamt gibt es 126 Datensätzen! Nach der Aufteilung muss die Summe der Trainings- (100), Validierungs- (18) und Testdatensätze (8) wieder 126 ergeben!
Matrix mit 2 Zeilen und 100 Spalten
Matrix mit 2 Zeilen und 8 Spalten
Matrix mit 2 Zeilen und 18 Spalten
21Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Datenaufbereitung
Insgesamt gibt es 126 Datensätzen! Nach der Aufteilung muss die Summe der Trainings- (100), Validierungs- (18) und Testdatensätze (8) 126 ergeben
Matrix mit 1 Zeile und 100 Spalten
Matrix mit 1 Zeile und 18 Spalten
Matrix mit 1 Zeile und 8 Spalten
22Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
KNN
• „nntool“ über das „Command Window“ aufrufen
• Die Inputs (3 St.) und Targets (3 St.) aus dem Workspace mit „Import“ in den „Data Manager“ importieren.
• Im „Data Manager“ den Button „New Network“ betätigen, um ein Netzwerk zu erstellen. Dort können der Name, der Network Type, die Input Ranges, das Trainingsverfahren, die Anzahl der Layer, die Anzahl der Neuronen pro Layer und die Aktivierungsfunktion, etc. definiert werden. Der Input-Layer zählt hier nicht als Layer. Bevor das Netz mit „Create“ erstellt wird, kann es über „View“ angeschaut werden. Das ist gerade bei größeren Netzen sinnvoll.
23Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
KNN
• Jetzt im „Data Manager“ das erstellte Netz auswählen und den Button „Train“ betätigen, um die Trainingsparameter einzustellen und die Matrizen mit den Trainings-, Validierungs- und Testdaten auszuwählen.
• Initialisieren Sie vor dem Training die Gewichte.
• Jetzt kann trainiert werden!
• Die Fehlerkurve wird automatisch angezeigt.
• Speichern der Zwischenergebnisse nicht vergessen!
• Evtl. Training mit anderen Parametern wiederholen bzw. Netzarchitektur verändern, wenn die Werte der Fehlerkurven noch zu groß sind (vorher muss das Netz initialisiert werden: entweder auf die gleichen Werte wie beim 1. Trainingsversuch -> Revert Weights oder auf neue Werte -> Initialize Weights)
24Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
KNN
>>nntool
KNN erstellen und KNN trainieren!
Trainingsverfahren:- traingd- traingdm- trainrp- trainlm- etc.(Beschreibung der Trainingsverfahren unter HELP -> NNToolbox -> User Guide)
Nach erfolgreichem Training das KNN in Workspace exportieren für die weitere Bearbeitung.
25Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
KNN
Architektur kann frei gewählt werden zum Beispiel 2 – 4 – 3 – 1
26Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Trainingseinstellungen
27Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Trainingseinstellungen
Spätestens hier die „Input Ranges“ kontrollieren!Input 1 = Ust Welche möglichen Spannungen können auftreten?Input 2 = Pos Welche möglichen Positionen können auftreten? Wurden Sicherheiten eingebaut? Muss das KNN extrapolieren?
Geänderte Werte mitSet Input Range bestätigen
28Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Trainingseinstellungen
Trainingsverfahren kann frei gewählt werdenhier als Beispiel Resilient Backpropagation (trainrp)
29Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Fehlerkurven
2. Beispiel Levenberg-Marquardt backpropagation (trainlm)
30Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in MATLAB Daten aus Excel
• Magnetisches Verhalten
• Abhängigkeit von Spannung
Copy & PasteCopy & Paste
31Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in MATLAB KNN erzeugen
32Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in MATLAB Training
33Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in MATLAB MATLAB Skript
34Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in MATLAB MatLab Skript 2
Spannungen von 3.5 bis 5.5VEntfernungen 2 bis 12cm
35Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in MATLAB Übertragungsfunktion vergleichen
Originaldaten
Gelerntes Verhalten
36Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in Simulink
WICHTIG: Abtastzeiten für die beiden Inputs des KNN abgleichen!(Berechnung)
>>gensim(net,st)
net -- Neural network aus Workspacest -- Sample time (default = 1)
st = -1 to get a continuously sampling network
37Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in Simulink
Ust
d
38Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Simulink
Synchronisation der beiden Blöcke!!! (sehr wichtig!!!)
Welche Spannnungen Ust in [V] dienen als Input für das KNN?
Welche Abstände d in [m] dienen als Input für das KNN?
Die Spannung ist über einen gewissen Zeitraum konstant. Dieser Zeitraum ist abhängig von den möglichen Abständen. Hier in diesem Beispiel: d=[0 0.14] in Schritten von 0,05
29 Schritte von d für die Sample Time
17 Werte für die Spannung U von 0V bis 8V in Schritten von 0,5V 17*29 = 493 Werte als Simulationsdauer
39Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in SimulinkUst [V]
B [T]
d [m]
40Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in Simulink mit Daten aus dem Workspace
Hier den Namen der Matrix eintragen, die die Daten für die Simulation enthält. In diesem Beispiel zur Demonstration die Trainingsdaten. Es kann aber auch eine neue Matrix mit dem gesamten Datensatz zur Simulation erstellt werden.
41Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in Simulink mit Daten aus dem Workspace
Das Simulink-Modell liest den Datensatz zeilenweise ein.
Für das Simulink-Modell muss eine Zeitkomponente in die Matrix eingefügt werden (= 1. Spalte)
42Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Test des KNN in Simulink mit Daten aus dem WorkspaceMagnetische Flussdichte B in [T] Sollwert
Steuerspannung Ust in [V]
Position Pos in [m]
Magnetische Flussdichte B in [T] Istwert
43Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Quellen
• Neural Networks User's Guide (nnet.pdf) aus der MATLAB-Hilfe für die Neural Network Toolbox
• Diplomarbeit „Fuzzy-Lageregelung einer schwebenden Kugel mittels Echtzeitbildverarbeitung“ von Dirk Reinarz, September 1997, http://stud-in.fh-swf.de/Dirk.Reinarz/
• Vorlesungsskript Prof. Lehmann
44Schwebende Kugel – MATLAB/SimulinkSS2007
Inhalt
Ende
Fragen
Vielen Dank für Ihre
Aufmerksamkeit !