1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
Public Class Form1
Dim Neur_Netz(,) As Double
Dim Anfang(,) As Double
Dim Lerndat(499, 6) As Integer
Dim maxDelta As Double
Dim delta_w, delta_t As Double
Dim x1, x2, x3, x4 As Integer
Dim O1, O2, O3, O4 As String
Dim Art, Netz, pon As String
Dim Zufall As New Random
Function loadlerndat()
Dim laenge As Integer
Dim Pfad As String
If Netz = "Simpel" Then
laenge = 4
ElseIf Netz = "2_Eingaenge" Then
laenge = 2
ElseIf Netz = "2_Ausgaenge" Then
laenge = 5
ElseIf Netz = "2_Ausgaenge_Groß" Then
laenge = 5
ElseIf Netz = "3_Ausgaenge" Then
laenge = 6
ElseIf Netz = "3_Ausgaenge_Groß" Then
laenge = 6
End If
Pfad = "C:\Dokumente und Einstellungen\Chris\Desktop\Netze\Lerndateien\" + Netz + "_" + Art + ".txt"
Dim C() As Char = {" "}
Dim Inhalt() As String = System.IO.File.ReadAllLines(Pfad)
Dim Liste As New List(Of String)
For Each Zeile As String In Inhalt
Liste.AddRange(Zeile.Split(C, StringSplitOptions.RemoveEmptyEntries))
Next
Dim Array() As String = Liste.ToArray()
Dim z As Int32 = 0
For i As Int32 = 0 To 499
For k As Int16 = 0 To laenge
Lerndat(i, k) = Convert.ToInt16(Array(z))
z = z + 1
Next k
Next i
Return (0)
End Function
Function netzerstellen()
If Netz = "Simpel" Then
x1 = 12
x2 = 7
x3 = 0
x4 = 3
erstellen(x1, x2, x3, x4)
ElseIf Netz = "2_Eingaenge" Then
x1 = 10
x2 = 7
x3 = 0
x4 = 1
erstellen(x1, x2, x3, x4)
ElseIf Netz = "2_Ausgaenge" Then
x1 = 13
x2 = 7
x3 = 1
x4 = 3
erstellen(x1, x2, x3, x4)
ElseIf Netz = "2_Ausgaenge_Groß" Then
x1 = 21
x2 = 15
x3 = 1
x4 = 3
erstellen(x1, x2, x3, x4)
ElseIf Netz = "3_Ausgaenge" Then
x1 = 14
x2 = 7
x3 = 2
x4 = 3
erstellen(x1, x2, x3, x4)
ElseIf Netz = "3_Ausgaenge_Groß" Then
x1 = 22
x2 = 15
x3 = 2
x4 = 3
erstellen(x1, x2, x3, x4)
End If
Return (True)
End Function
Function erstellen(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer, ByVal d As Integer) As Boolean
'a=y Netz
'b=x Netz
'c=Anzahl Ausgänge - 1
'd=Anzahl Eingänge - 1
Neur_Netz = New Double(a, b) {}
Anfang = New Double(a, b) {}
Dim Neues_Netz(a, b) As Double
Dim tetah(b) As Double
Dim tetay(c) As Double
For i As Integer = 0 To a
For k As Integer = 0 To b
If pon = "positiv" Then
Randomize()
Neues_Netz(i, k) = (Rnd())
Neues_Netz(i, k) = Math.Round(Neues_Netz(i, k) * 1000) / 1000
Else
Neues_Netz(i, k) = Zufall.NextDouble * 2 - 1
Neues_Netz(i, k) = Math.Round(Neues_Netz(i, k) * 1000) / 1000
End If
Next k
Next i
For i As Integer = 0 To d
For k As Integer = 0 To b
tetah(k) = tetah(k) + Math.Round(Neues_Netz(i, k) / 1.5 * 1000) / 1000
Next
Next
For i As Integer = (d + 1) To (a - d)
For k As Integer = 0 To c
tetay(k) = tetay(k) + Math.Round(Neues_Netz(i, k) / 1.5 * 1000) / 1000
Next
Next
For i As Integer = 0 To a
For k As Integer = 0 To b
Select Case i
Case 0 To d
If k = b Then
RichTextBox1.Text &= Neues_Netz(i, k).ToString & vbCrLf
Else
RichTextBox1.Text &= Neues_Netz(i, k).ToString & " "
End If
Case (d + 1) To (a - (c + 1))
If k = b Then
RichTextBox1.Text &= "0" & vbCrLf
ElseIf k > d Then
RichTextBox1.Text &= "0" & " "
ElseIf k = d Then
RichTextBox1.Text &= tetah(i - (d + 1)).ToString & " "
Else
RichTextBox1.Text &= Neues_Netz(i, k).ToString & " "
End If
Case Else
If k = b Then
RichTextBox1.Text &= "0" & vbCrLf
ElseIf k = 0 Then
RichTextBox1.Text &= tetay(i - (a - c)).ToString & " "
Else
RichTextBox1.Text &= "0" & " "
End If
End Select
Next
Next
For i As Integer = 0 To a
For k As Integer = 0 To b
Neur_Netz(i, k) = Neues_Netz(i, k)
Next
Next
Dim Pfad As String
Pfad = O2 + "\Netz.txt"
My.Computer.FileSystem.WriteAllText(O4, Pfad + vbCrLf, True)
RichTextBox1.SaveFile(Pfad, RichTextBoxStreamType.PlainText)
RichTextBox1.Text = ""
Return (True)
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim schritte As Integer
schritte = t_schritte.Text
maxDelta = t_delta.Text
O1 = "C:\Dokumente und Einstellungen\Chris\Desktop\Netze\" + t_Ordnername.Text
O4 = O1 + "\Netze.txt"
Art = ComboBox2.SelectedItem
Netz = ComboBox1.SelectedItem
pon = ComboBox3.SelectedItem
My.Computer.FileSystem.CreateDirectory(O1)
My.Computer.FileSystem.WriteAllText(O4, "", True)
'loadlerndat()
'ex = New Double(schritte, 4) {}
For f As Integer = 0 To schritte
O2 = O1 + "\" + Netz + "_" + Art + "_" + f.ToString
O3 = O2 + "\Protokoll"
My.Computer.FileSystem.CreateDirectory(O2)
My.Computer.FileSystem.CreateDirectory(O3)
netzerstellen()
For k As Integer = 0 To (maxDelta * 10)
delta_t = 0.1 + 0.1 * k
For j As Integer = 0 To (maxDelta * 10)
delta_w = 0.1 + 0.1 * j
'lernschleife()
Next
Next
Next
'SpeichernEx()
End Sub
End Class
|