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 に変更することを提案します。long 整数は 32 ビットの符号付きの値であり、それに対応してより広い範囲の可能な値を提供します。

于 2012-09-25T18:15:01.887 に答える