遗传算法的VB程序【精品毕业设计】(完整版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
遗传算法的VB程序
最近看了下遗传算法,刚看了一点,就觉得手痒,非要把程序编制出来看看效果(我现在总认为那些理论再高深,无法用计算机实现就是空话,呵呵)。下面是我调试了好久的代码,无赖没有学过数据结构&算法,程序写的很差,单效果还是出来了,高兴,和大家共同分享下成果吧。
还是一样,不想说原理,因为这里想搞个公式上去N麻烦。直接给点实际的东西。具体步骤是参考《MATLAB遗传算法工具箱及应用》(西安电子科技大学出版社)16~22页的相关说明编制的,有兴趣的同学可以去看看这本书。
在程序调试成功的同时,郁闷的是工作的事情,现在好多企业久是指名不要研究生,而我又是一个四不象,本专业是热能工程,可我本专业基本上还是本科水平,大部分时间都去自学一些杂七杂八的东西去了,比如人工智能,PLC,自动控制方面,图像处理啊,可又只是懂个皮毛,现在找工作也不知道怎么给自己定位了。有相关经历的同学可要指点我一二哦。
Option Explicit
'程序实现功能:用遗传算法求函数的最大值
'作者: laviewpbt
'联系方式:
'QQ:33184777
'版本:Version 1.4.0
'说明:复制请保留源作者信息,转载请说明,欢迎大家提出意见和建议
Dim N2(30) As Long '用来保存2的N次方的数据
Dim Script As Object '调用其Eval函数
Public Enum CrossOver
OnePointCrossOver '单点交叉
TwoPointCrossOver '两点交叉
UniformCrossOver '平均交叉
End Enum
Public Enum Selection
RouletteWheelSelection '轮盘赌选择
StochasticTourament '随机竞争选择
RandomLeagueMatches '随机联赛选择
StochasticUniversalSampleing '随机遍历取样
End Enum
Public Enum EnCoding
Binary '标准二进制编码
Gray '格雷码
End Enum
Private Type GAinfo
Max As Double
Cordinate() As Double
End Type
'*********************************** 二进制码转格雷码
***********************************
'
'函数名: BinaryToGray
'参数: Value - 要转换的二进制数的实值
'说明:如3对应的二进制表示为0011,而用格雷码表示为0010,这个函数的value为0011代表的实数
' 而返回的是0010所代表的实数(2)
'返回值:返回格雷码对应的二进制数的实值
'源作者:黄毅
'开发语言: C语言
'修改者: laviewpbt
'时间: 2006-11-4
'
'*********************************** 二进制码转格雷码
***********************************
Public Function BinaryToGray(Value As Long) As Long
Dim V As Long, Max As Long
Dim start As Long, mEnd As Long, Temp As Long, Counter As Long Dim Flag As Boolean
V = Value: Max = 1
While V > 0
V = V / 2
Max = Max * 2
Wend
If Max = 0 Then Exit Function
Flag = True
mEnd = Max - 1
While start < mEnd
Temp = (mEnd + start - 1) / 2
If Value <= Temp Then
If Not Flag Then
Counter = Counter + (mEnd - start + 1) / 2
End If
mEnd = Temp
Flag = True
Else
If Flag Then
Counter = Counter + (mEnd - start + 1) / 2
End If
Temp = Temp + 1
start = Temp
Flag = False
End If
Wend
BinaryToGray = Counter
End Function
'*********************************** 格雷码转二进制码
***********************************
'
'函数名: BinaryToGray
'参数: Value - 要转换的二进制数的实值
'说明:如3对应的二进制表示为0011,而用格雷码表示为0010,这个函数的value为0010代表的实数
' 而返回的是0010所代表的实数(2)
'返回值:返回格雷码对应的二进制数的实值
'源作者:黄毅,感谢viena(维也纳nn)
'开发语言: C语言
'修改者: laviewpbt
'时间: 2006-11-4
'
'*********************************** 格雷码转二进制码
***********************************
Public Function GrayToBinary(Value As Long) As Long
Dim V As Long, Max As Long
Dim start As Long, mEnd As Long, Temp As Long, Counter As Long Dim Flag As Boolean
V = Value: Max = 1
While V > 0
V = V / 2
Max = Max * 2
Wend
Flag = True
mEnd = Max - 1
While start < mEnd