📄 form5.frm
字号:
VERSION 5.00
Begin VB.Form Form5
Caption = "泛化"
ClientHeight = 5430
ClientLeft = 60
ClientTop = 345
ClientWidth = 5490
ControlBox = 0 'False
BeginProperty Font
Name = "宋体"
Size = 9.75
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
LinkTopic = "Form5"
ScaleHeight = 5430
ScaleWidth = 5490
StartUpPosition = 2 'CenterScreen
Begin VB.CommandButton Command1
Caption = "确定"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 1080
TabIndex = 6
Top = 4560
Width = 975
End
Begin VB.CommandButton Command2
Caption = "返回"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 3360
TabIndex = 5
Top = 4560
Width = 855
End
Begin VB.Frame Frame1
Caption = "请填写输入和期望输出值"
BeginProperty Font
Name = "MS Sans Serif"
Size = 9.75
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 3735
Left = 600
TabIndex = 0
Top = 600
Width = 4095
Begin VB.TextBox txtErr
BackColor = &H80000004&
Enabled = 0 'False
Height = 495
Index = 0
Left = 1560
TabIndex = 10
Top = 2640
Width = 1815
End
Begin VB.TextBox TxtOther
BackColor = &H80000004&
Enabled = 0 'False
Height = 495
Index = 0
Left = 1560
TabIndex = 8
Top = 1800
Width = 1815
End
Begin VB.TextBox TxtOutput
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 0
Left = 1560
TabIndex = 2
Top = 1080
Width = 1815
End
Begin VB.TextBox txtInput
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 0
Left = 1560
TabIndex = 1
Top = 360
Width = 1815
End
Begin VB.Label Label4
Caption = "误差1(%):"
Height = 375
Index = 0
Left = 240
TabIndex = 9
Top = 2760
Width = 1455
End
Begin VB.Label Label3
Caption = "实际输出值1:"
Height = 375
Index = 0
Left = 240
TabIndex = 7
Top = 1920
Width = 1335
End
Begin VB.Label Label2
Caption = "期望输出值1:"
BeginProperty Font
Name = "MS Sans Serif"
Size = 9.75
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 0
Left = 240
TabIndex = 4
Top = 1200
Width = 1215
End
Begin VB.Label Label1
Caption = "输入值1:"
BeginProperty Font
Name = "MS Sans Serif"
Size = 9.75
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Index = 0
Left = 240
TabIndex = 3
Top = 480
Width = 855
End
End
End
Attribute VB_Name = "Form5"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
Dim i As Integer, j As Integer
For i = 0 To LayerNodes(1) - 1
If TxtInput(i).Text = "" Then
MsgBox "请输入第" & LTrim(Str(i + 1)) & "个输入值", vbExclamation, "!!!"
Exit Sub
End If
Next i
For i = 0 To LayerNodes(LayerNum) - 1
If TxtOutput(i).Text = "" Then
MsgBox "请输入第" & LTrim(Str(i + 1)) & "个输出值", vbExclamation, "!!!"
Exit Sub
End If
Next i
If TrainFlag = False Then
MsgBox "请先将样本进行训练!", vbExclamation, "!!!"
Exit Sub
End If
For i = 0 To LayerNodes(1) - 1
If Val(TxtInput(i)) > InMax(i + 1) Or Val(TxtInput(i)) < InMin(i + 1) Then
MsgBox "第" & LTrim(Str(i + 1)) & "输入值应在" & LTrim(Str(InMin(i + 1))) & "和" & LTrim(Str(InMax(i + 1))) & "之间", vbExclamation, "!!!"
Exit Sub
End If
Next i
For i = 0 To LayerNodes(LayerNum) - 1
If Val(TxtOutput(i)) > OutMax(i + 1) Or Val(TxtOutput(i)) < OutMin(i + 1) Then
MsgBox "第" & LTrim(Str(i + 1)) & "个期望输出有误!", vbExclamation, "!!!"
Exit Sub
End If
Next i
For i = 1 To LayerNodes(1)
Layers(1).cNerve(i).u = (Val(TxtInput(i - 1).Text) - InMin(i)) / (InMax(i) - InMin(i))
Layers(1).cNerve(i).v = Layers(1).cNerve(i).u
Next i
For i = 2 To LayerNum
For j = 1 To LayerNodes(i)
Layers(i).cNerve(j).u = 0
For k = 1 To LayerNodes(i - 1)
Layers(i).cNerve(j).u = Layers(i).cNerve(j).u _
+ Layers(i - 1).cNerve(k).v _
* WValue(i - 1).Value(k, j)
Next k
Layers(i).cNerve(j).v = Layers(i).cNerve(j).f
Next j
Next i
For i = 1 To LayerNodes(LayerNum)
TxtOther(i - 1).Text = Layers(LayerNum).cNerve(i).v * (OutMax(i) - OutMin(i)) + OutMin(i)
txtErr(i - 1).Text = (Val(TxtOther(i - 1).Text) - Val(TxtOutput(i - 1))) / Val(TxtOutput(i - 1)) * 100
Next i
End Sub
Private Sub Command2_Click()
Unload Me
Form1.Show
End Sub
Private Sub Form_Activate()
Dim i As Integer
For i = 1 To LayerNodes(1) - 1
Load TxtInput(i)
Load Label1(i)
TxtInput(i).Top = TxtInput(i - 1).Top + TxtInput(i - 1).Height + 150
TxtInput(i).Left = TxtInput(i - 1).Left
TxtInput(i).Visible = True
Label1(i).Top = TxtInput(i).Top + 120
Label1(i).Left = Label1(i - 1).Left
Label1(i).Visible = True
Label1(i).Caption = "输入值" & Str(i + 1) & ":"
Next i
TxtOutput(0).Top = TxtInput(LayerNodes(1) - 1).Top + TxtInput(LayerNodes(1) - 1).Height + 150
TxtOutput(0).Left = TxtInput(LayerNodes(1) - 1).Left
Label2(0).Top = TxtOutput(0).Top + 120
Label2(0).Left = Label1(LayerNodes(1) - 1).Left
TxtOther(0).Top = TxtOutput(0).Top + TxtOutput(0).Height + 150
TxtOther(0).Left = TxtOutput(0).Left
Label3(0).Top = TxtOther(0).Top + 120
Label3(0).Left = Label2(0).Left
txtErr(0).Top = TxtOther(0).Top + TxtOther(0).Height + 150
txtErr(0).Left = TxtOther(0).Left
Label4(0).Top = txtErr(0).Top + 120
Label4(0).Left = Label3(0).Left
For i = 1 To LayerNodes(LayerNum) - 1
Load TxtOutput(i)
Load Label2(i)
Load TxtOther(i)
Load Label3(i)
Load txtErr(i)
Load Label4(i)
TxtOutput(i).Top = txtErr(i - 1).Top + txtErr(i - 1).Height + 150
TxtOutput(i).Left = txtErr(i - 1).Left
TxtOutput(i).Visible = True
TxtOther(i).Top = TxtOutput(i).Top + TxtOutput(i).Height + 150
TxtOther(i).Left = TxtOutput(i).Left
TxtOther(i).Visible = True
txtErr(i).Top = TxtOther(i).Top + TxtOther(i).Height + 150
txtErr(i).Left = TxtOther(i).Left
txtErr(i).Visible = True
Label2(i).Top = TxtOutput(i).Top + 120
Label2(i).Left = Label1(i - 1).Left
Label2(i).Caption = "期望输出值" & Str(i + 1) & ":"
Label2(i).Visible = True
Label3(i).Top = TxtOther(i).Top + 120
Label3(i).Left = Label2(i - 1).Left
Label3(i).Caption = "实际输出值" & Str(i + 1) & ":"
Label3(i).Visible = True
Label4(i).Top = txtErr(i).Top + 120
Label4(i).Left = Label3(i - 1).Left
Label4(i).Caption = "误差" & Str(i + 1) & "(%):"
Label4(i).Visible = True
Next i
Frame1.Height = txtErr(LayerNodes(LayerNum) - 1).Top _
+ txtErr(LayerNodes(LayerNum) - 1).Height + 200
Command1.Left = Frame1.Left + 100
Command1.Top = Frame1.Top + Frame1.Height + 300
Command2.Left = Frame1.Left + Frame1.Width - 100 - Command2.Width
Command2.Top = Command1.Top
Form5.Height = Command2.Top + Command2.Height + 550
End Sub
Private Sub TxtInput_KeyPress(Index As Integer, KeyAscii As Integer)
Dim i As Integer, n As Integer
Dim TrainFX
Set TrainFX = New FunctionDLL.TrainF
n = TrainFX.GetNum(LayerNodes(1))
If Index = LayerNodes(1) - 1 And KeyAscii = 13 Then
For i = 0 To LayerNodes(LayerNum) - 1
If TFunctionNum(i + 1) <> -1 Then
Select Case LayerNodes(1)
Case 1
TxtOutput(i) = TrainFX.dbOne(TFunctionNum(i + 1), Val(TxtInput(0)))
Case 2
TxtOutput(i) = TrainFX.dbTwo(TFunctionNum(i + 1), Val(TxtInput(0)), Val(TxtInput(1)))
Case 3
TxtOutput(i) = TrainFX.dbThree(TFunctionNum(i + 1), Val(TxtInput(0)), Val(TxtInput(1)), Val(TxtInput(2)))
Case 4
TxtOutput(i) = TrainFX.dbFour(TFunctionNum(i + 1), Val(TxtInput(0)), Val(TxtInput(1)), Val(TxtInput(2)), Val(TxtInput(3)))
End Select
End If
Next i
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -