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

📄 login.frm

📁 仿真1:首先把网络温度参数T固定在100
💻 FRM
📖 第 1 页 / 共 2 页
字号:
VERSION 5.00
Begin VB.Form login 
   Caption         =   "bm"
   ClientHeight    =   6285
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   8130
   LinkTopic       =   "Form1"
   ScaleHeight     =   6285
   ScaleWidth      =   8130
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Command4 
      Caption         =   "1"
      Height          =   375
      Index           =   3
      Left            =   3120
      TabIndex        =   24
      Top             =   600
      Width           =   615
   End
   Begin VB.CommandButton Command4 
      Caption         =   "-1"
      Height          =   375
      Index           =   2
      Left            =   2520
      TabIndex        =   23
      Top             =   600
      Width           =   615
   End
   Begin VB.CommandButton Command4 
      Caption         =   "1"
      Height          =   375
      Index           =   1
      Left            =   1920
      TabIndex        =   22
      Top             =   600
      Width           =   615
   End
   Begin VB.CommandButton Command4 
      Caption         =   "-1"
      Height          =   375
      Index           =   0
      Left            =   1320
      TabIndex        =   21
      Top             =   600
      Width           =   615
   End
   Begin VB.CommandButton Command2 
      Caption         =   "定温"
      Height          =   375
      Left            =   7080
      TabIndex        =   14
      Top             =   240
      Width           =   495
   End
   Begin VB.TextBox Text4 
      Height          =   270
      Left            =   5640
      TabIndex        =   13
      Text            =   "0.01"
      Top             =   240
      Width           =   735
   End
   Begin VB.TextBox Text3 
      Height          =   270
      Left            =   4080
      TabIndex        =   11
      Text            =   "1000"
      Top             =   240
      Width           =   615
   End
   Begin VB.CommandButton Command1 
      Caption         =   "快速降温"
      Height          =   375
      Left            =   6480
      TabIndex        =   9
      Top             =   240
      Width           =   615
   End
   Begin VB.TextBox Text2 
      Height          =   270
      Left            =   2400
      TabIndex        =   8
      Text            =   "1000"
      Top             =   240
      Width           =   735
   End
   Begin VB.Frame Frame1 
      Caption         =   "输出结果"
      Height          =   5055
      Left            =   120
      TabIndex        =   2
      Top             =   1080
      Width           =   7575
      Begin VB.Label Label13 
         Height          =   255
         Left            =   6840
         TabIndex        =   19
         Top             =   5040
         Width           =   615
      End
      Begin VB.Label Label12 
         Height          =   4455
         Left            =   5640
         TabIndex        =   18
         Top             =   720
         Width           =   1815
      End
      Begin VB.Label Label11 
         Height          =   4455
         Left            =   3120
         TabIndex        =   17
         Top             =   720
         Width           =   2055
      End
      Begin VB.Label Label10 
         Height          =   4455
         Left            =   1440
         TabIndex        =   16
         Top             =   720
         Width           =   1335
      End
      Begin VB.Label Label9 
         Height          =   4335
         Left            =   240
         TabIndex        =   15
         Top             =   720
         Width           =   855
      End
      Begin VB.Label Label5 
         Caption         =   "网络状态出现实际概率值"
         Height          =   375
         Left            =   5760
         TabIndex        =   6
         Top             =   240
         Width           =   1095
      End
      Begin VB.Label Label4 
         Caption         =   "网罗状态出现理论概率值"
         Height          =   375
         Left            =   3240
         TabIndex        =   5
         Top             =   240
         Width           =   1215
      End
      Begin VB.Label Label3 
         Caption         =   "对应能量"
         Height          =   375
         Left            =   1560
         TabIndex        =   4
         Top             =   360
         Width           =   975
      End
      Begin VB.Label Label2 
         Caption         =   "网络状态"
         Height          =   375
         Left            =   240
         TabIndex        =   3
         Top             =   360
         Width           =   975
      End
   End
   Begin VB.TextBox Text1 
      Height          =   270
      Left            =   1200
      TabIndex        =   1
      Text            =   "4"
      Top             =   240
      Width           =   495
   End
   Begin VB.Label Label16 
      Height          =   375
      Left            =   6720
      TabIndex        =   26
      Top             =   840
      Width           =   735
   End
   Begin VB.Label Label15 
      Height          =   375
      Left            =   5160
      TabIndex        =   25
      Top             =   840
      Width           =   735
   End
   Begin VB.Label Label14 
      Caption         =   "设置初始状态"
      Height          =   375
      Left            =   120
      TabIndex        =   20
      Top             =   720
      Width           =   1215
   End
   Begin VB.Label Label8 
      Caption         =   "结束温度"
      Height          =   255
      Left            =   4800
      TabIndex        =   12
      Top             =   240
      Width           =   735
   End
   Begin VB.Label Label7 
      Caption         =   "运行次数"
      Height          =   375
      Left            =   3240
      TabIndex        =   10
      Top             =   240
      Width           =   735
   End
   Begin VB.Label Label6 
      Caption         =   "温度"
      Height          =   375
      Left            =   1920
      TabIndex        =   7
      Top             =   240
      Width           =   735
   End
   Begin VB.Label Label1 
      Caption         =   "神经元数量"
      Height          =   375
      Left            =   120
      TabIndex        =   0
      Top             =   240
      Width           =   975
   End
End
Attribute VB_Name = "login"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'目的: 观察该网络工作规则进行状态转移的过程和结果
'4个神经元对应了网络的16个状态,各个状态分别对应不同的能量值

'仿真1:首先把网络温度参数T固定在100,按工作规则共进行1000次状态更新
'把这1000次状态转移中网络中的各个状态出现的次数Si(i=1,2,…,16)记录下来
'计算各个状态出现的实际频率:  Pi=Si/∑i=1,N Si =Si/M,N神经元个数;M网络状态转移次数
'同时按照Bo1tzmann分布计算网络各个状态出现概率的理论值:Q(Ei)=(1/Z)exp(-Ei/T)
'其中Ei = -0.5∑j=1,n,j≠iwijuiuj-θiuj
'   网络状态的实际出现概率与理论计算概率非常接近,且状态能量越小,出现的概率越大

'仿真2:实施降温方案,重新计算
'采用快速降温方案: t(t) = T0 / (1 + t)
'T从1000降到0.01,按工作规则更新网络状态
'当T=0.01时结束降温,再让T保持在0.01进行1000次状态转移,比较两种概率
'计算结果图 (M=1000, T0=100, Td=0.01)
'结论:实施降温方案后,网络的状态更新完全模拟了退火过程
'当T降到0.01以后,具有最小能量的状态4出现的概率为1,说明网络完全收敛于能量函数的最小值

'概率方式取代阶跃函数方式,来决定网络根据其神经元的内部状态而进行的状态更新


Private Sub Command1_Click()
'快速降温

Dim i, j, k, f As Integer
Dim tend, tmax, t As Double                '停止温度0.01,最高温度100
Dim runnumber As Integer                 '运行次数1000
Dim changenumber As Integer              '状态转移次数
Dim statenumber As Integer               '状态数16
Dim neuralnumber As Integer              '神经元数
Dim energyweight, energythreshold, energytotal As Double            '能量
Dim sumstotal As Integer                 '记录状态对应的状态编号时用
Dim s(16) As Integer                     '各状态出现的次数
Dim p(16) As Double                      '各状态出现的频率
Dim h(4) As Double                       '各各神经元此时状态的能量
Dim q(16) As Double                      '各状态出现的理论值
'Dim inistate(4) As Integer               '初始设值状态
Dim threshold(4) As Double               '域值
Dim weights(4, 4) As Double               '连接权重
Dim output(4) As Integer                 '此时的状态
Dim c(16, 4) As Integer                  '16种状态
c(0, 0) = -1
c(0, 1) = -1
c(0, 2) = -1
c(0, 3) = -1
c(1, 0) = -1
c(1, 1) = -1
c(1, 2) = -1
c(1, 3) = 1
c(2, 0) = -1
c(2, 1) = -1
c(2, 2) = 1
c(2, 3) = -1
c(3, 0) = -1
c(3, 1) = -1
c(3, 2) = 1
c(3, 3) = 1
c(4, 0) = -1
c(4, 1) = 1
c(4, 2) = -1
c(4, 3) = -1
c(5, 0) = -1
c(5, 1) = 1
c(5, 2) = -1
c(5, 3) = 1
c(6, 0) = -1
c(6, 1) = 1
c(6, 2) = 1
c(6, 3) = -1
c(7, 0) = -1
c(7, 1) = 1
c(7, 2) = 1
c(7, 3) = 1
c(8, 0) = 1
c(8, 1) = -1
c(8, 2) = -1
c(8, 3) = -1
c(9, 0) = 1
c(9, 1) = -1
c(9, 2) = -1
c(9, 3) = 1
c(10, 0) = 1
c(10, 1) = -1
c(10, 2) = 1
c(10, 3) = -1
c(11, 0) = 1
c(11, 1) = -1
c(11, 2) = 1
c(11, 3) = 1
c(12, 0) = 1
c(12, 1) = 1
c(12, 2) = -1
c(12, 3) = -1
c(13, 0) = 1
c(13, 1) = 1
c(13, 2) = -1
c(13, 3) = 1
c(14, 0) = 1
c(14, 1) = 1
c(14, 2) = 1
c(14, 3) = -1
c(15, 0) = 1
c(15, 1) = 1
c(15, 2) = 1
c(15, 3) = 1
changenumber = 0
neuralnumber = Text1.Text
runnumber = Text3.Text
tmax = Text2.Text
tend = Text4.Text
statenumber = Sqr(neuralnumber)
t = tmax
Randomize                                '初始化域值
For i = 0 To neuralnumber - 1
threshold(i) = Rnd
Next i

For i = 0 To neuralnumber - 2            '初始化连接权重
  For j = i + 1 To neuralnumber - 1
  weights(i, j) = Rnd
  weights(j, i) = weights(i, j)
  Next j
Next i
For i = 0 To neuralnumber - 1
 weights(i, i) = 0
Next i

If Command4(Index).Caption = 1 Then      '设置初始状态

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -