4

GA の母集団を生成しようとすると、エラーが発生します。母集団を生成するために 2 次元配列を使用しました。最初にユーザーは人口サイズを入力し、次に染色体の長さをユーザーフォームに入力します。

私の変数:

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初心者です。このエラーに関するヘルプをいただければ幸いです。

4

1 に答える 1

5

コードに基づいて、配列の次元を割り当てることはありません。これを行うには、PopSizeとの値を設定した後、 for ループの前にこの行を挿入しますChromoLength

Redim Poparr(1 to PopSize, 1 to ChromoLength)

不要な詳細:実行することはできますが、モジュールの先頭に追加しない限りRedim Poparr(PopSize, ChromoLength)、配列などになります。配列のデフォルトの基数は 0 です。文脈によってデフォルトが 0 または 1 になる可能性があるため、配列の下限と上限を明示的に示す方がよいと思います。0 to PopsizeOption Base 1

于 2012-09-25T15:15:51.800 に答える