form1.frm
来自「水库调度的遗传算法」· FRM 代码 · 共 533 行 · 第 1/2 页
FRM
533 行
VERSION 5.00
Begin VB.Form Form1
Caption = "遗传算法"
ClientHeight = 3495
ClientLeft = 60
ClientTop = 450
ClientWidth = 6390
LinkTopic = "Form1"
ScaleHeight = 3495
ScaleWidth = 6390
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command2
Caption = "结束"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 3480
TabIndex = 11
Top = 2760
Width = 1455
End
Begin VB.Data Data1
Caption = "Data1"
Connect = "Access 2000;"
DatabaseName = ""
DefaultCursorType= 0 '缺省游标
DefaultType = 2 '使用 ODBC
Exclusive = 0 'False
Height = 495
Left = 3120
Options = 0
ReadOnly = 0 'False
RecordsetType = 1 'Dynaset
RecordSource = ""
Top = 0
Width = 1695
End
Begin VB.TextBox Text5
Height = 495
Left = 4800
TabIndex = 10
Text = "0.01"
Top = 1680
Width = 1215
End
Begin VB.TextBox Text4
Height = 495
Left = 4800
TabIndex = 9
Text = "0.6"
Top = 720
Width = 1215
End
Begin VB.TextBox Text3
Height = 495
Left = 1800
TabIndex = 6
Text = "100"
Top = 1920
Width = 1215
End
Begin VB.TextBox Text2
Height = 495
Left = 1800
TabIndex = 5
Text = "30"
Top = 1200
Width = 1215
End
Begin VB.TextBox Text1
Height = 495
Left = 1800
TabIndex = 4
Text = "12"
Top = 480
Width = 1215
End
Begin VB.CommandButton Command1
Caption = "遗传算法"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 1080
TabIndex = 3
Top = 2760
Width = 1575
End
Begin VB.Label Label6
Caption = "变异概率"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3240
TabIndex = 8
Top = 1680
Width = 1095
End
Begin VB.Label Label5
Caption = "交叉概率"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3240
TabIndex = 7
Top = 840
Width = 1095
End
Begin VB.Label Label3
Caption = "进化代数"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 2
Top = 2040
Width = 1095
End
Begin VB.Label Label2
Caption = "种群数目"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 1
Top = 1200
Width = 1095
End
Begin VB.Label Label1
Caption = "个体大小"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 0
Top = 480
Width = 1095
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
Screen.MousePointer = 11
For j = 1 To 12
If j = 1 Or j = 2 Or j = 3 Or j = 4 Then '汛期
'5月末、6月末、7月末、8月末=6~8月份为汛期
max_water_level(j) = 695
min_water_level(j) = 685
Else '非汛期
max_water_level(j) = 704
min_water_level(j) = 685
End If
Next j
'读取已知参数
insize = Val(Text1.Text) '个体大小
popsize = Val(Text2.Text) '种群大小
Maxgen = Val(Text3.Text) '进化代数
pc = Val(Text4.Text) '交叉概率
pm = Val(Text5.Text) '变异概率
'***赋值语句
zd = 685 '死水位
capacity = 30 '装机容量
bzcl = 7.8 '保证出力
min_Q = 120 '最小下泄流量
Call generatepopulation
Call evaluatepopulation
Call outputreport
l = 1
Do While l < Maxgen '在最大的叠代次数下进行
Call generatenextpopulation '产生下一代群体
Call evaluatepopulation
Call outputreport
l = l + 1
Loop
Screen.MousePointer = 1
End Sub
Public Sub outputreport()
Data1.DatabaseName = App.Path + "\结果数据库.mdb"
Data1.RecordSource = "select * from 结果表"
Data1.Refresh
Data1.Recordset.AddNew
Data1.Recordset.Fields("序号") = l
Data1.Recordset.Fields("平均发电量") = averagefitness
Data1.Recordset.Fields("最好发电量") = bestfitness
Data1.Recordset.Fields("位置好") = bestindex
Data1.Recordset.Fields("最差发电量") = worstfitness
Data1.Recordset.Fields("位置差") = worstindex
'电量
Data1.Recordset.Fields("5电量") = E(bestindex, 1)
Data1.Recordset.Fields("6电量") = E(bestindex, 2)
Data1.Recordset.Fields("7电量") = E(bestindex, 3)
Data1.Recordset.Fields("8电量") = E(bestindex, 4)
Data1.Recordset.Fields("9电量") = E(bestindex, 5)
Data1.Recordset.Fields("10电量") = E(bestindex, 6)
Data1.Recordset.Fields("11电量") = E(bestindex, 7)
Data1.Recordset.Fields("12电量") = E(bestindex, 8)
Data1.Recordset.Fields("1电量") = E(bestindex, 9)
Data1.Recordset.Fields("2电量") = E(bestindex, 10)
Data1.Recordset.Fields("3电量") = E(bestindex, 11)
Data1.Recordset.Fields("4电量") = E(bestindex, 12)
'水位
Data1.Recordset.Fields("5水位初") = upwater_level(bestindex, 0)
Data1.Recordset.Fields("5水位末") = upwater_level(bestindex, 1)
Data1.Recordset.Fields("6水位末") = upwater_level(bestindex, 2)
Data1.Recordset.Fields("7水位末") = upwater_level(bestindex, 3)
Data1.Recordset.Fields("8水位末") = upwater_level(bestindex, 4)
Data1.Recordset.Fields("9水位末") = upwater_level(bestindex, 5)
Data1.Recordset.Fields("10水位末") = upwater_level(bestindex, 6)
Data1.Recordset.Fields("11水位末") = upwater_level(bestindex, 7)
Data1.Recordset.Fields("12水位末") = upwater_level(bestindex, 8)
Data1.Recordset.Fields("1水位末") = upwater_level(bestindex, 9)
Data1.Recordset.Fields("2水位末") = upwater_level(bestindex, 10)
Data1.Recordset.Fields("3水位末") = upwater_level(bestindex, 11)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?