当我尝试为GA生成一个总体时,我遇到了一个错误。我使用了一个二维数组来帮助生成一个种群。首先,用户将在用户表单中输入种群大小,然后输入染色体长度。
我的变量:
Dim Generation As Integer
Dim Chromolength As Integer
Dim varchromolength As Integer
Dim Poparr() As Integer然后我从用户表单中获取这些值:
PopSize = PopulationSize.value
aVariables = AOV.value 'assign userform value entered to this variable
varchromolength = Chromolengthentered.value 'assign userform value entered to this variable
Chromolength = varchromolength * aVariables 'Chromosome length equals the length of each varaible chromosome combined然后出现错误的代码如下:
For i = 1 To PopSize
For j = 1 To Chromolength
If Rnd < 0.5 Then
Poparr(i, j) = 0 'assign o to gene
Else
Poparr(i, j) = 1 'assign 1 to gene
End If
Next j
Next i我很抱歉,我是VBA的新手。对此错误的任何帮助都将不胜感激。
发布于 2012-09-25 23:15:52
根据您的代码,您永远不会分配数组的维数。要执行此操作,请在设置PopSize和ChromoLength的值之后,在for循环之前插入此行。
Redim Poparr(1 to PopSize, 1 to ChromoLength)不必要的细节:你可以只运行Redim Poparr(PopSize, ChromoLength),但这会导致数组被0 to Popsize,等等。除非您将Option Base 1添加到模块的顶部。数组的默认基数是0。我觉得显式地指出数组的下界和上界是更好的,因为默认值可以是0或1,这取决于上下文。
https://stackoverflow.com/questions/12585914
复制相似问题