⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 Hopfield 网——擅长于联想记忆与解迷路 实现H网联想记忆的关键
💻 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 + -