📄 新建 文本文档.txt
字号:
'--------------------------------------产生网络--------------------------------------------
Public Function GenerateNetwork(Net) _
As Integer
Dim Net(prepare.rownumber, prepare.linenumber) As Integer '存放状态(行*列)的数组
Dim weights(prepare.neuralnumber, prepare.neuralnumber) As Integer '存放权重(神经元数*神经元数)
Dim i As Isnteger '列
Dim j As Integer '行
Dim P As Integer '模式数
Dim state As Integer '暂时存放状态值
'wij=∑ap(i)ap(j), i = j时,wij=0
While (P < prepare.patternnumber) '最外层(模式)的循环,即上式计算wij变换p
i = 0
j = 0
P = 0
'构建net(patternnumber,neuralnumber)
'逐行逐列的将每一个学习模式的输入值装入net(p,n)的一行中,共patternnumber行,每行neuralnumber列,
While (j < prepare.rownumber) '次层(行)的循环,
While (i < prepare.linenumber) '列循环
If process.Command1(j * 5 + i).Caption = 0 Then state = -1 '若学习模式输入的是0则转换为-1
ElseIf process.Command1(j * 5 + i).Caption = 1 Then state = 1
End If
Net(P, j * prepare.linenumber + i) = state '
i = i + 1
Wend
j = j + 1
i = 0
Wend
P = P + 1
Wend
'分配权重空间weights(neuralnumber,neuralnumber)
i = 0
j = 0
While (j < prepare.neuralnumber)
While (i < prepare.neuralnumber)
weights(i, j) = 0
Wend
j = j + 1
i = 0
Wend
End Function
'----------------------------------------------计算权值-----------------------------------
Public Function CalculateWeights(Net) _
As Integer '
Dim i As Isnteger '列
Dim j As Integer '行
Dim k As Integer '模式
Dim weight As Integer '暂时存放算得权重
k = 0 '模式数
i = 0 '第i个神经元
j = 0 '第j个神经元
'求每一个元素与另一个元素间的权重
While i < prepare.neuralnumber
While j < prepare.neuralnumber
weight = 0
If i! = j Then
While k < prepare.patternnumber
weight = weight + Net(k, i) * Net(k, j) '任意两个元素ij间权重wij=∑ap(i)ap(j)
k = k + 1
Wend
End If
j = j + 1
Wend
weights(i, j) = weight '两元素间的权重
i = i + 1
Wend
End Function
'--------------------------传播单元(传入的第i单元经计算得出的输出)-------------------
Public Function PropagateUnit(i) _
As Integer '传入第i个神经元,算出其输出
Dim sum As Integer '计算和
Dim j As Integer '和另一个神经单元
Dim out As Integer '
Dim changed As Boolean '是否修改
changed = False
sum = 0
j = 0 '第j个神经元
'xi (t+1) = f (∑wijxj(t)-θi),j=1…n, j≠i,n神经元总数,f()--Sgn()
While j < prepare.neuralnumber '每个元素的输出值
sum = sum + weights(i, j) * output(j)
j = j + 1
Wend
If (sum <> 0) Then
If (sum < 0) Then out = -1
End If 'sum小于域值,输出值置-1
If (sum > 0) Then out = 1
End If 'sum大于域值,输出值置1
If (out <> output(i)) Then '新输出值和原来输出值不同则置changed
changed = True
output(i) = out '网络的输出值改为新的输出值
End If
End If
End Function
Public Function PropagateNet(i) _
As Boolean '传播网络
While j < prepare.learnnumber
PropagateUnit (InitializeRandoms())
Wend
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -