0

私は遺伝的アルゴリズムを使用してナップサック問題に取り組んできました。しかし、私はいくつかの困難に遭遇しました...

まず、ユーザーはテキストドキュメントに保存されるデータセットを生成します。そこからデータをプログラムに読み込みます。

私は、フィットネス値を計算し、親を選択し、子供を産み、そして子供を突然変異させるプログラムをうまく取得しています。しかし、何らかの理由で、人口が少ない場合にのみ機能します。私のプログラムは、人口が少ない場合は一貫して進化しますが、人口が多い場合は非常に一貫性がありません。

例:人口が約10〜200人の場合、遺伝的アルゴリズムは問題なく実行されます。しかし、人口が増えると(約300人以上)、[実行]をクリックしても何も起こりません。次に、プログラムを再起動し、まったく同じデータセットを使用すると、プログラムは正常に実行されます。

コードのどの部分が問題を引き起こしているのかわからないので、サンプルコードが必要な場合は、コードのどの部分(親の選択、データセットの読み込みなど)を教えてください。

どうもありがとう!

4

2 に答える 2

2

それには3つの理由が考えられると思います。

1) コードのバグ

これは比較的簡単に除去できます。プログラムの特定の部分が正しく動作するかどうかをチェックするテストを書いてみてください (例: 親の選択など)。自分で紙に書いた小さな例と照らし合わせてテストしてみてください。

2) メモリ不足の問題 - btreat が言及

3) いくつかのアルゴリズムの癖

これは戦うのがより難しくなります。私は推測しているだけなので、間違っているかもしれませんが、問題のサイズがしきい値を超えると動作が大幅に変わるアルゴリズムを見てきました。可能性は低いですが、不可能でもありません。ここで、母集団のサイズをゆっくりと増やしていくと、実行時間が突然変化することがわかります。

于 2010-07-05T20:23:26.023 に答える
1

おそらく、人口が多いほどプログラムメモリが制約を受けるのでしょうか?

于 2010-07-05T20:12:00.720 に答える