9

遇到此错误的问题。我正在创建一个 GA,循环是将我的适应度值分配给一个数组。

一些变量

Dim Chromolength as integer
Chromolength = varchromolength * aVariables 
Dim i as integer, j as integer, counter as integer
Dim Poparr() As Integer
Dim FitValarr() As Integer

编码:

ReDim Poparr(1 To PopSize, 1 To Chromolength)

For i = 1 To PopSize                
  For j = 1 To Chromolength       
    If Rnd < 0.5 Then           
        Poparr(i, j) = 0
    Else
        Poparr(i, j) = 1        
    End If
  Next j
Next i

For i = 1 To PopSize                   
 j = 1                           
 counter = Chromolength              
 Do While counter > 0  
   FitValarr(i) = FitValarr(i) + Poparr(i, counter) * 2 ^ (j - 1)          
  j = j + 1                   
  counter = counter - 1       
 Loop
Next i      

我遇到以下问题:

FitValarr(i) = FitValarr(i) + Poparr(i, counter) * 2 ^ (j - 1) 

抱歉,我对 VBA 还很陌生。

4

3 回答 3

24

当您创建的整数表达式的计算结果大于可以用 16 位有符号整数表示的值时,就会出现溢出情况。给定表达式,FitValarr(i) 的内容或表达式 2^(j-1) 可能会溢出。建议将当前声明为 Int 的所有变量更改为 Long。长整数是 32 位有符号值,并提供相应更大范围的可能值。

于 2012-09-25T18:15:01.887 回答
0

我有同样的运行时错误 6。经过大量调查后,我发现我的错误是一个简单的“除以零”错误。

于 2019-08-23T14:47:06.590 回答
0

我设置了一个整数值来保存邮政编码,错误 6 事件困扰着我——直到我意识到 85338 的邮政编码超出了 int 的容量......虽然我不认为邮政编码是一个“值” “尽管如此,它肯定被解释为一个。我怀疑地址以及其他“非数字”数值也会发生同样的情况。将变量更改为字符串解决了该问题。我只是没有想到邮政编码是“数值”。学过的知识。

于 2019-09-04T15:39:07.773 回答