永发信息网

我用VB做遗传算法字符串学习,每个基因的适应度应该越来越大,可是却一直变小,不知道为什么

答案:2  悬赏:0  手机版
解决时间 2021-02-05 10:42
Public MM As Integer '染色体条数
Public NN As Integer '染色体位数
Public M1 As Integer '第M1条染色体

Public M2 As Integer '第M2条染色体
Public char()
Public N As Integer '在第N位交叉
Public A() As Integer '染色体
Public B() As Integer '适应度
Public MarkTemp As Integer '暂时标记最优
Public Mark As Integer '标记最优

Public Sub Exchange_A() '交叉
Dim i, j As Integer
Dim Temp() As Integer
ReDim Temp(NN)
For i = N To NN
Temp(i) = A(M1, i)
Next i
For i = N To NN
A(M1, i) = A(M2, i)
Next i
For i = N To NN
A(M2, i) = Temp(i)
Next i
End Sub

Public Sub Calculate_B() '计算适应度
Dim i, j As Integer

For i = 1 To MM '计算适应度
B(i) = 0
For j = 1 To NN
If A(i, j) = char(j) Then
B(i) = B(i) + 1
End If
If B(i) = NN Then
MarkTemp = i
MsgBox "适应度已达到最大值", vbOKCancel + vbDefaultButton2, "确认"
Exit For
End If
Next j
Next i

End Sub

Public Sub Find_Optimum()
Dim i As Integer
Dim Optimum As Integer
For i = 1 To MM
If Optimum < B(i) Then
Optimum = B(i)
MarkTemp = i
End If
Next i
End Sub

以上为MODULE里面的

Dim gene, cross, vary
Dim crossnumber, changenumber, ganumber

Private Sub Command1_Click() '--------------------------------初始化
Dim i, j As Integer
MM = Val(Text3.Text) '染色体个数
NN = Len(Text12.Text) '染色体位数
words = Text12.Text
Label13.Caption = NN
ReDim A(1 To MM, 1 To NN) '染色体种群
ReDim B(1 To MM) '适应度
ReDim char(1 To NN)
For i = 1 To NN
If Mid(words, i, 1) = " " Then
char(i) = 0
Else
char(i) = Asc(Mid(words, i, 1)) - 96
End If
Next i

Randomize
For i = 1 To MM
For j = 1 To NN
Randomize
A(i, j) = Int(Rnd * 27)
Next j
Next i
gene = 0 ''''''''''''''''''''进化的次数
cross = 0 '''''''''''''''''''交叉的次数
vary = 0 ''''''''''''''''''''变异的次数

Call Write_A
Call Calculate_B
Call Write_Calculate
End Sub
还有好多代码 放不下了 。。。我不知道怎么补充。。。
最佳答案
没有全部代码,无法测试,无法解析。所以,不知道在什么地方补充什么方面的代码
全部回答
'lpstring 是你要处理的字符串 '代码放在某一个过程或者函数中 '先解决双字,"不好"里面包含"好" public sub convertstring(lpstring as string)as string lpstring = replace(lpstring,"不好","!@#$") lpstring = replace(lpstring,"不错","!#%&") lpstring = replace(lpstring,"好","不错") lpstring = replace(lpstring,"坏","不好") lpstring = replace(lpstring,"!@#$","坏") lpstring = replace(lpstring,"!#%&","好") convertstring = lpstring end sub ';举例,你的文本在text1中 '一个按钮 command1 private sub command1_click() text1.text = convertstring(text1.text) end sub ------------------------------------------ '你这新手也太新了把 for ... ''' next ..
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
哪里可以买到 倪佩洲主编:《有机化学》(第五
20o1年1月23日阳历出生女孩运势
西装只要有防尘袋就可以了吗?定做西服给的那
贺朔的意思是什么啊?知道的请说下!
美国嘉吉控股集团有限公司在哪里啊,我有事要
王国之心-记忆之链买卡片在那个地图
读图回答下列问题。(9分)地震波的传播速度与
家家美窗帘灯饰地址在哪,我要去那里办事
八面玲珑在什么地方啊,我要过去处理事情
阳土的意思是什么啊?知道的请说下!
金博文化用品商行我想知道这个在什么地方
北京现代途胜1.6T排量夏天开空调;一般要多少
从56下载的视频为什么不能播放
离婚后没去户口本更改婚姻状况,可以办再婚登
怎么计算一条河道总水量,河道断面梯形
推荐资讯
中国移动光纤宽带受理中心(人民路与青龙大道
网上租房乱象仍存什么时候能整改啊
南精灵汽车服务中心地址好找么,我有些事要过
安邑中学怎么去啊,我要去那办事
汇达二手车(牡丹江东安区)地址好找么,我有些
无名串串香这个地址在什么地方,我要处理点事
土灶的意思是什么啊?知道的请说下!
永合钣金烤漆地址有知道的么?有点事想过去
囍店这个地址在什么地方,我要处理点事
小孩子把硬币吃到肚子里了,怎么办
华成国际发展大厦-地下停车库我想知道这个在
张鲁一的老婆是谁
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?