kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Day by Day

(EN google-translate)

(PL google-translate)

Nachfolgend wird chronologisch verzeichnet, welche Inhalte in den Einzellehrveranstaltungen in Informatik-Ergänzungen für den Bachelor Ingenieurwissenschaften der Studienrichtung Mechatronik5 im Wintersemester 2021/22 behandelt wurden.




#1 Dienstag 23.11.2021



Übersicht und Vereinbarungen zur Ausgestaltung des Unterrichts

36_Java -- 1.1) Allgemeines zu Java
78_Processing -- 1.2) Java Processing
30_Informatik3/07_Modifikatoren -- 1.3) Vergleich Java / C++
73_COACH3/09_Algorithmen/03_Evoopt 2.1) Themen im Bereich Softcomputing: Evolutionäre Algorithmen
62_Regelungssysteme/18_Fuzzy -- 2.2) Themen im Bereich Softcomputing: Fuzzy
67_Echtzeitsysteme/08_NeuronaleNetze -- 3.1) Neuronale Netze
79_Deep_Learning -- 3.2) Thema Deep Learning

Selbstorganisierte Karten am Beispiel der Kohonen-Netzwerke

79_Deep_Learning/01_day_by_day
https://de.wikipedia.org/wiki/Selbstorganisierende_Karte
Im Kurs entstandene Quelltexte:
Grafik1.zip
Grafik2.zip
Grafik3.zip
Wichtige Hinweise:

Morgen, 24.11. ist Regelungstechnik in Präsenz in IWZ135



Donnerstag, 25.11. ist Informatik-Ergänzungen online von 8:30 bis 11:45



Ab kommender Woche (KW48) finden die Kurse Informatik-Ergänungen IE und Regelungstechnik RT online statt: RT Mittwochs von 8:30 bis 15:45, IE Donnerstags von 8:30 bis 15:45





#2 Donnerstag 25.11.2021 (online, siehe Moodle)


Teil 1: Beginnen mit Objektorientierter Programmierung

  • Wie schreibt man selber eine Klasse in Processing
  • Methoden, Attribute und ihre Modifikatoren
  • Vererbung und Interfaces

Einführung:

  1. Was bedeutet Objektorientierung?
  2. Paradigmen der Objektorientierung: Wiederverwendbarkeit, Kapselung.
  3. Eine Klasse in Processing schreiben: Vektor mit Attributen, dann auch mit Methoden, Instanziierung.
  4. In Processing sind hinzugefügte Klassen innere Klassen der Klasse mit dem Sketch-Namen.
  5. Modifikatioren
  6. Vererbung
  7. Nochmalige Analyse der LSQ-Implementierung aus der Regelungstechnik-Vorlesung.
  8. Interfaces
78_Processing -- Einführung zu Processing (etwas veraltet)
92_Soundinstallation/03_material/11_Snippets -- Kleine einführende Beispiele zu Processing
30_Informatik3/01_Vom_struct_zur_Klasse/06_Objektabstraktion -- Was heißt Objektorientierung?
30_Informatik3/09_Java/02_GettingStarted -- Java, einfache Datentypen
30_Informatik3/06_Vererbung/01_MesswerteUML -- Einführung von Vererbung
30_Informatik3/07_Modifikatoren -- Vergleich Modifikatoren in C++ und in Java

Beispiele zur Verwendung von Interfaces (Schnittstellen) in Java:

73_COACH3/09_Algorithmen -- Verständnis entwickeln anhand der Konzepte "Integrator" und "Modell" bei einem Simulationssystem
30_Informatik3/15_Rasterlayout/02_interfaces -- komplexes Beispiel
30_Informatik3/07_Modifikatoren -- ergänzende Hinweise zu Modifikatioren

Teil 2: Evolutionäre Algorithmen und ihre Implementierung

73_COACH3/09_Algorithmen/03_Evoopt



#3 Donnerstag 02.12.2021

Thema: Neuronale Netze

  • Es soll die Theorie der neuronalen Netze behandelt werden und im Anschluß zum verstieften Verständnis ein objektorientiertes Programm geschrieben werden, das ein NN repräsentieren kann.
  • Insbesondere soll es Eingangssignale durchpropagieren können und von seiner Größe her (Anzahl der Schichten, Anzahl der Neuronen pro Schicht) über einen Konstruktor frei konfiguriert werden können.
  • Schließlich soll ein Netz gebildet werden, das über genetische Optimierung dazu gebracht werden soll, ein logisches Äquivalenzgatter mit zwei Eingängen zu repräsentieren.

Einführung zu Neuronalen Netzen

67_Echtzeitsysteme/08_NeuronaleNetze
Übung
  • Klären Sie im Plenum alles, was Ihnen noch unklar ist, um die oben umrissene Aufgabe als objektorientiertes Programm mit Processing umzusetzen.
  • Gehen Sie dann in Zweiergruppen an die Arbeit.

aus dem Unterricht: Neuronales Netz mit drei Neuronen, um die Funktionalität eines UND-Gatters abzubilden
public double neuron(double signal1, double w1, double signal2, double w2)
{
     // 1. gewichtete Summe u bilden:
     double u = signal1*w1 + signal2*w2;
     // 2. Übergabe der gewichteten Summe an die Schwellwertfunktion:
     double d = 1.0;
     double out = 1.0/(1.0+Math.exp(-d*u));
     // 3. Rückgabe des Wertes, den die Schwellwertfunktion liefert:
     return out;
}

public double netz(double in0, double in1, double[] ww)
{
     double out10 = neuron(in0, ww[0], in1, ww[1]);
     double out11 = neuron(in0, ww[2], in1, ww[3]);
     double out20 = neuron(out10, ww[4], out11, ww[5]);
     return out20;
}

public void setup()
{
     double[] ww = {1.0, 1.0, 1.0, 1.0,    1.0, 1.0};
     double[][] testpattern = {
                                  {0.0,0.0},
                                  {1.0,0.0},
                                  {0.0,1.0},
                                  {1.0,1.0}
                              };
     double[] sollwerte = {0.0,0.0,0.0,1.0}; //UND-Gatter
     for(int i=0;i<testpattern.length;i++)
     {
           double output = netz(testpattern[i][0],testpattern[i][1],ww);
           println("Input: ["+testpattern[i][0]+"|"+testpattern[i][1]+"] out:"+output+" soll:"+sollwerte[i]);
     }
}

public void draw()
{
}

Code 0-1: aus dem Unterricht: Neuronales Netz mit drei Neuronen, um die Funktionalität eines UND-Gatters abzubilden

Hausaufgabe
  • Überlegen Sie sich eine Fehlerfunktion für obiges Problem
  • Setzen Sie darauf aufbauend einen Optimierer um, so, dass am Ende möglichst gut ein UND-Gatter durch das neuronale Netz abgebildet wird.



#4 Donnerstag 16.12.2021

Thema 1: Fortsetzung OOP, Interfaces / Schnittstellen

Beispiele zur Verwendung von Interfaces (Schnittstellen) in Java:

73_COACH3/09_Algorithmen -- Verständnis entwickeln anhand der Konzepte "Integrator" und "Modell" bei einem Simulationssystem
30_Informatik3/15_Rasterlayout/02_interfaces -- Weiteres Beispiel: Bauteile in einem Programm zur Darstellung elektronischer Schaltungen
...aus dem Unterricht:
Schnittstelle.zip
BluJ-Projekt zu Schnittstellen

Bild 0-1: BluJ-Projekt zu Schnittstellen

Schnittstelle001.zip
Processing-Version zu Schnittstellen

Bild 0-2: Processing-Version zu Schnittstellen

Übung
  • Ergänzen Sie eine weitere Klasse, die die Schnittstelle iDraw implementiert und ein anderes geometrisches Objekt zeichnet.
Schnittstelle002_gebauer.zip
Erweiterungen
Schnittstelle002.zip -- sich farblich ändernde "Christbaumkugel"
Schnittstelle003.zip -- verschiebliche Figuren.
Übung

Ergänzen Sie auch in Schnittstelle003 eine neue geometrische Figur und analysieren Sie das Programm in Ruhe

Thema 2: Fortsetzung Neuronale Netze, Einfache Optimierung eines einfachen Netzes

Grundlage soll das Netz aus drei Neuronen von letzter Woche sein. Die Weiterführung erfolgt in folgenden Schritten:

  1. Entwurf einer Fehlerfunktion
  2. Umsetzung eines einfachen modifizierten Gradientenverfahrens
  3. (perspektivisch auch genetische Optimierung)
Neuron_mit_fehlerberechnung_UND_ok.zip -- studentische Lösung. Achtung: da modifiziertes Gradientenverfahren, führt nicht jeder Durchlauf in ein gutes lokales Minimum der Fehlerfunktion.
Neuron_mit_fehlerberechnung_aequivalenz.zip -- studentische Lösung variiert: Versuch ein Äquivalenzgatter abzubilden. Jedoch scheint dafür das Netz zu klein zu sein.

Thema 3: Fortsetzung Neuronale Netze, Backpropagation als Lernmethode für überwachtes Lernen

Motivation: Grundprinzip ist es, nicht selber ein sinnvolles Verhalten eines Softwaresystems zu programmieren, sondern dieses ein optimales Verhalten selbst erlernen zu lassen. Hier gibt es Unterschiede bei der Lernmethode, im Wesentlichen:

  1. Überwachtes Lernen (Supervised Learning)
  2. Bestärkendes Lernen (Reinforced Learning)
  3. Unüberwachtes Lernen (unsupervised Learning)
https://www.youtube.com/watch?v=V1eYniJ0Rnk -- Reinforced Learning: Gute Strategie bei Atari-Game finden
67_Echtzeitsysteme/08_NeuronaleNetze

Methode für überwachtes Lernen mit gelabelten Lernpattern (vergl. Vorlesung):

67_Echtzeitsysteme/08_NeuronaleNetze/02_Backpropagation -- Theorie des Lernverfahrens Backpropagation
67_Echtzeitsysteme/08_NeuronaleNetze/03_Umsetzung -- Umsetzung des Lernverfahrens Backpropagation



#5 Donnerstag 06.01.2022


Motivation: Grundprinzip ist es, nicht selber ein sinnvolles Verhalten eines Softwaresystems zu programmieren, sondern dieses ein optimales Verhalten selbst erlernen zu lassen. Hier gibt es Unterschiede bei der Lernmethode, im Wesentlichen:

  1. Überwachtes Lernen (Supervised Learning)
  2. Bestärkendes Lernen (Reinforced Learning)
  3. Unüberwachtes Lernen (unsupervised Learning)
https://www.youtube.com/watch?v=V1eYniJ0Rnk -- Reinforced Learning: Gute Strategie bei Atari-Game finden

Die Prüfung wird als E-Test gemeinsam mit Simulations- und Regelungstechnik 2 am Donnerstag 20.01. ab 8:30 in IWZ140 durchgeführt. Siehe auch: Infos auf moodle.

Themen in Informatik-Ergänzungen werden sein (alles auf der Basis von Java/Processing):

  1. Java (OOP Modifikatoren, Schnittstellen, Vererbung, Kapselung, Threads)
  2. Neuronale Netze und Backpropagation
  3. Genetische Algorithmen

Themen heute:

  1. Besprechung des Backpropagation-Verfahrens
  2. E-Test-Aufgaben, u.a. Backpropagation-Verfahren
  3. Objektorientierte Umsetzung eines skalierbaren Neuronalen Netzes
  4. Objektorientierte Umsetzung des Backpropagation-Verfahrens
  5. Lernvorgänge anhand zu lernender einfacher logischer Tabellen

Thema 1: Besprechung des Backpropagation-Verfahrens (Wiederholung)

67_Echtzeitsysteme/08_NeuronaleNetze/02_Backpropagation -- Theorie des Lernverfahrens Backpropagation
67_Echtzeitsysteme/08_NeuronaleNetze/03_Umsetzung -- Umsetzung des Lernverfahrens Backpropagation
Bild zur Erklärung der Backpropagation-Formeln.

Bild 0-3: Bild zur Erklärung der Backpropagation-Formeln.

Thema 2: E-Test-Aufgaben, u.a. Backpropagation-Verfahren

  • Lösen Sie die Aufgaben in InfErg_OHNE.pdf und überprüfen Sie Ihre Lösungen mit InfErg_MIT_LOESUNG.pdf.
  • Beide Dateien finden Sie in einem .zip-File auf Moodle.

Thema 3: Objektorientierte Umsetzung eines skalierbaren Neuronalen Netzes


Beachten Sie: Anders als ein prozedurales Programm, werden bei objektorientierten Strukturen keine festen Abläufe implementiert, sondern Möglichkeiten zur Benutzung.


Objektorientiert mit Java sollen in gemeinsamer Diskussion die Klassen für ein skalierbares Neuronales Netz entworfen und implementiert werden.

Dabei soll von vorn herein auch darauf geschaut werden, ob die Umsetzung später eine leichte Implementierung des Backpropagation-Verfahrens ermöglicht.

  • Die Schichten des Netzes sollen vollständig vernetzt sein.
  • Zunächst soll überlegt werden, was an einem NN in Klassen zusammengefasst werden soll und welche Hierarchische Struktur umgesetzt werden soll.
  • Die Darstellung der Klassenstruktur erzeugt in UML-Syntax innerhalb von BlueJ.
  • Die Entwicklungsstände werden nach ihrer Fertigstellung auf Processing übertragen und so allen zur Verfügung gestellt.
  • Wichtiges Augenmerk kommt der Indizierung der Gewichte zu, da diese beim Backpropagation-Verfahren in richtiger Weise verändert werden müssen.

Projektstand 001: Klasse Neuron implementiert und getestet:

UML-Klassendiagramm der Klasse Neuron in BluJ.

Bild 0-4: UML-Klassendiagramm der Klasse Neuron in BluJ.

NN001_Neuron.zip -- Processing Sketch mit der Klasse Neuron und einem einfachen Test in der setup()-Methode.

Projektstand 002: Klassen Netz und Schicht wurden ergänzt:

UML-Diagramm zu Netz.

Bild 0-5: UML-Diagramm zu Netz.

UML-Diagramm zu Schicht.

Bild 0-6: UML-Diagramm zu Schicht.

NN002_Netz.zip
Vorläufige Endversion, auf die dann gleich die erste Aufgabe aus dem E-Test übertragen wurde:
UML-Diagramm von Netz, jetzt mit get- und set-Methoden für die Gewichte w[][].

Bild 0-7: UML-Diagramm von Netz, jetzt mit get- und set-Methoden für die Gewichte w[][].

NN003_Netz.zip

Thema 4: Objektorientierte Umsetzung des Backpropagation-Verfahrens

Bitte als Hausaufgabe probieren auf der Grundlage von NN003_Netz.zip.

Auf die vorangehende objektorientierte Implementierung eines Neuronalen Netzes aufsetzend, soll nun das Lernverfahren für überwachtes Lernen "Backpropagation" implementiert werden.

Thema 5: Lernvorgänge anhand zu lernender einfacher logischer Tabellen

  • Die nun verfügbare Programmstruktur soll nun benutzt werden, um testweise einfache logische Tabellen von von einem NN erlernen zu lassen.
  • Dabei kann es vorkommen, dass ein Netz zu klein ist, um die gewünschten Informationen zu lernen, oder zu groß, um sie schnell zu erlernen, oder zu viele, oder zu wenige Schichten besitzt.
  • Spielen Sie verschiedene Netztopologien durch, von denen Antivalenz (XOR) mit zwei Eingängen gelernt werden soll.



#6 Donnerstag 13.01.2022

Themen:

  1. Fragen zur Klausur
  2. Fertigstellung eines objektorientierten Systems zur Verwendung neuronaler Netze mit Backpropagation (Themen 4 und 5 von letzter Woche)
  3. Übung: Ermittln einer geeigneten Netztopologie mittels eines evolutionären Algorithmus.
67_Echtzeitsysteme/08_NeuronaleNetze/02_Backpropagation -- Backpropagation.
67_Echtzeitsysteme/08_NeuronaleNetze/03_Umsetzung -- Backpropagation Beispiel.
50_Simulationstechnik/07_Genalgorithmus -- Genetische Optimierung
Übung: Ermittln einer geeigneten Netztopologie mittels eines evolutionären Algorithmus
  • Nicht immer läßt sich ein Netz so belernen, dass es die geforderten Pattern dann erkennen kann.
  • Das Netz kann zu gross, oder zu klein für die geforderte Aufgabe gewählt sein, oder ungünstig in der Struktur.
  • Schreiben Sie einen genetischen Optimierer, der nach einer geeigneten Netztopologie sucht.
  • Die Gene beinhalten dann die Anzahl der Neuronen pro Schicht und mittelbar die Anzahl der Schichten, indem Anzahlen auch Null sein können.
  • Umgesetzt werden soll ein Antivalenzgitter.
  • Machen Sie sich klar, dass zur Bewertung einer Topologie ein Backpropagation Algorithmus eine Instanz des Netzes belernen muss.
  • Da der Lernvorgang von den Anfangsbedingungen (zufällige Belegung des Netzes zu Beginn) abhängt, sollten mehrere Durchgänge an Lernvorgängen pro Test durchgeführt und das beste Ergebnis genommen werden.
  • Überlegen Sie sich ein objektorientiertes Umsetzungskonzept des evolutionären Programmteils unter Verwendung von Schnittstellen, der eine möglichst gute Wiederverwendung dieses Programmteils ermöglicht.

Teil 2: Implementierung des Backpropagation-Algorithmus

Im Unterricht entstandene Teilprojekte:

NN004_Backpropagation.zip -- Lernpattern erzeugt.
NN005_Backpropagation.zip -- Backpropagation implementiert.

Zwischenübung: Kopie erzeugen NN006_Backpropagation und darin das Verfahren testen.

NN006_Backpropagation.zip -- Test des Verfahrens.
Konsolenausgabe des Fehler vor und nach dem Backpropagation-Prozess.

Bild 0-8: Konsolenausgabe des Fehler vor und nach dem Backpropagation-Prozess.

NN007_Evoopt.zip -- Ansatz zur Übung.
NN008_Evoopt.zip -- Aufruf des genetischen Algorithmus ergänzt.
Musterlösung zu Übung: Ermittln einer geeigneten Netztopologie mittels eines evolutionären Algorithmus
NN009_Evoopt.zip -- Processing-Projekt
NN009b.zip -- Variante auf BlueJ übertragen.
Mittels BlueJ dargestellte

Bild 0-9: Mittels BlueJ dargestellte "Uses-Hierarchie" (UML) der Klassen dieses Projektes.

Mittels BlueJ dargestelltes UML-Klassendiagramm der Klasse Evoopt. Man beachte das Objektattribut fehlerklasse vom Typ iFehlerklasse.

Bild 0-10: Mittels BlueJ dargestelltes UML-Klassendiagramm der Klasse Evoopt. Man beachte das Objektattribut fehlerklasse vom Typ iFehlerklasse.

Fragen zur Musterlösung (vergl. auch Konsolenausgabe weiter unten):

  • Es wird sichtbar, dass nicht jede Generation zu einer Verbesserung führt. Warum?
  • Um einen sinnvollen Zahlenbereich für jede Stelle im Gen zu gewährleisten wird "ranges" eingeführt. Vollziehen Sie nach, wie dieses Array eingesetzt wird.
  • Wie kann der evolutionäre Algorithmus in einem anderen Projekt wiederverwendet werden?
  • Anstatt die besten Gene in ein Hilfsarray zu kopieren, werden hier nur die Indices der Besten gemerkt. Wie wird vermieden, dass auch Gene aus der Menge der Besten mutieren?
  • Wie wird bei der Rekombination dafür gesorgt, dass nicht zweimal das gleiche Gen aus der Menge der Besten verwendet wird?
  • Wie kann die Qualität der Ergebnisse verbessert werden?
  • Wie kann die Geschwindigkeit der evolutionären Suche erhöht werden?
Übung: Verändern Sie NN009_Evoopt so, dass schneller bessere Ergebnisse erzielt werden.
In0:0.0 In1:0.0 SOLL OUT:0.0 IST OUT:0.39920786503269345
In0:1.0 In1:0.0 SOLL OUT:1.0 IST OUT:0.3728375622072977
In0:0.0 In1:1.0 SOLL OUT:1.0 IST OUT:0.37419182430913195
In0:1.0 In1:1.0 SOLL OUT:0.0 IST OUT:0.356020762557117
Aktueller Fehler:1.0349329925243131


In0:0.0 In1:0.0 SOLL OUT:0.0 IST OUT:0.002142635151660366
In0:1.0 In1:0.0 SOLL OUT:1.0 IST OUT:0.9841678524106813
In0:0.0 In1:1.0 SOLL OUT:1.0 IST OUT:0.9837736136111899
In0:1.0 In1:1.0 SOLL OUT:0.0 IST OUT:0.021913859467224718
Fehler nach Backpropagation:0.031603174439782764


ITERATION NUMMER 1 von 20 mit evoopt
Nach 0. Generation:
Kleinster Fehler: 0.013285600828299321
Bei folgendem bestem Gen:
5 8 796 942 

ITERATION NUMMER 2 von 20 mit evoopt
Nach 1. Generation:
Kleinster Fehler: 0.013239956475773968
Bei folgendem bestem Gen:
5 6 927 942 

ITERATION NUMMER 3 von 20 mit evoopt
Nach 2. Generation:
Kleinster Fehler: 0.01021815552715307
Bei folgendem bestem Gen:
5 8 796 942 

ITERATION NUMMER 4 von 20 mit evoopt
Nach 3. Generation:
Kleinster Fehler: 0.009720004753841799
Bei folgendem bestem Gen:
5 7 804 942 

ITERATION NUMMER 5 von 20 mit evoopt
Nach 4. Generation:
Kleinster Fehler: 0.009531237757722896
Bei folgendem bestem Gen:
5 7 804 942 

ITERATION NUMMER 6 von 20 mit evoopt
Nach 5. Generation:
Kleinster Fehler: 0.010585946269101292
Bei folgendem bestem Gen:
5 7 927 942 

ITERATION NUMMER 7 von 20 mit evoopt
Nach 6. Generation:
Kleinster Fehler: 0.009730812882161922
Bei folgendem bestem Gen:
5 6 927 942 

ITERATION NUMMER 8 von 20 mit evoopt
Nach 7. Generation:
Kleinster Fehler: 0.011733660827950637
Bei folgendem bestem Gen:
5 7 927 942 

ITERATION NUMMER 9 von 20 mit evoopt
Nach 8. Generation:
Kleinster Fehler: 0.010381104171369294
Bei folgendem bestem Gen:
5 8 796 942 

ITERATION NUMMER 10 von 20 mit evoopt
Nach 9. Generation:
Kleinster Fehler: 0.008452496338560066
Bei folgendem bestem Gen:
5 8 796 993 

ITERATION NUMMER 11 von 20 mit evoopt
Nach 10. Generation:
Kleinster Fehler: 0.009061167557766316
Bei folgendem bestem Gen:
5 8 744 993 

ITERATION NUMMER 12 von 20 mit evoopt
Nach 11. Generation:
Kleinster Fehler: 0.010720122828470123
Bei folgendem bestem Gen:
5 7 560 993 

ITERATION NUMMER 13 von 20 mit evoopt
Nach 12. Generation:
Kleinster Fehler: 0.009307253790545627
Bei folgendem bestem Gen:
5 8 796 993 

ITERATION NUMMER 14 von 20 mit evoopt
Nach 13. Generation:
Kleinster Fehler: 0.0103844810238656
Bei folgendem bestem Gen:
5 8 796 993 

ITERATION NUMMER 15 von 20 mit evoopt
Nach 14. Generation:
Kleinster Fehler: 0.010605470275184832
Bei folgendem bestem Gen:
5 8 796 993 

ITERATION NUMMER 16 von 20 mit evoopt
Nach 15. Generation:
Kleinster Fehler: 0.010881599258811643
Bei folgendem bestem Gen:
5 3 987 993 

ITERATION NUMMER 17 von 20 mit evoopt
Nach 16. Generation:
Kleinster Fehler: 0.009396354893348526
Bei folgendem bestem Gen:
6 8 987 993 

ITERATION NUMMER 18 von 20 mit evoopt
Nach 17. Generation:
Kleinster Fehler: 0.008631972427069078
Bei folgendem bestem Gen:
5 8 987 993 

ITERATION NUMMER 19 von 20 mit evoopt
Nach 18. Generation:
Kleinster Fehler: 0.009191181141937633
Bei folgendem bestem Gen:
5 8 931 993 

ITERATION NUMMER 20 von 20 mit evoopt
Nach 19. Generation:
Kleinster Fehler: 0.009696550864876606
Bei folgendem bestem Gen:
5 8 796 993 

Das beste gefundene Gen hat die Werte:
5 8 796 993
Bestes Ergebnis nochmal überprüfen:
Anzahl Neuronen in erster Schicht: 5
Anzahl Neuronen in zweiter Schicht: 8
d = 0.993
lernfaktor = 0.796


In0:0.0 In1:0.0 SOLL OUT:0.0 IST OUT:0.003898731367617084
In0:1.0 In1:0.0 SOLL OUT:1.0 IST OUT:0.996224648820531
In0:0.0 In1:1.0 SOLL OUT:1.0 IST OUT:0.9956996013234698
In0:1.0 In1:1.0 SOLL OUT:0.0 IST OUT:0.0040554230001477115
Fehler nach Test:0.008024541562755432

Code 0-2: Konsolenausgabe der genetischen Optimierung.