ヘテロ環境におけるDGAの性能調査
2001年 11月30日
片浦哲平

1.先週からの課題

  先週からの課題として,
 ・GAのベンチマークプログラムがPGIで遅い理由を検証する
 ・ヘテロ環境への適合の第一歩として非同期型のGAを作成する

2.研究報告
 計算速度の異なる島でのDGAの性能調査
 先週作成したプログラムを様々なパラメータの元で実行した.
 出力は時間単位で行うように考えていたが,今回の報告に間に合わなかったため,今回はすべての島で同期が取れ,移住が行えるタイミングの時にできるように改良した.

まず,実行したパラメータを表1にしめす.

表1

個体数
400
終了世代
2000
設計変数
20
遺伝子長
400
交叉率
1.0
交叉方法
一点交叉
突然変異率
1/L
島数
1, 2, 4, 8, 16
移住率
0.4
移住間隔
5
エリート保存
1島につき1
対象問題
Rastrigin, Griewank
試行回数
5

また,移住までの計算世代数は島ごとに表2のようになる

表2 移住までの計算世代数

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
条件1 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
条件2 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80
条件3 5 15 25 35 45 55 65 75 85 95 105 115 125 135 145 155

 条件1の場合であると,島1は5世代分の計算を行うと,すべての島の計算(この場合であると)16島目の20世代の計算が終わるまで待つようにプログラムを組んでいる.このようにして,擬似的に島1は遅い処理速度のパソコンにしている.

実行結果を以下に示す.
Rastrigin DGA 条件1 条件2 条件3
Griewank DGA 条件1 条件2 条件3

 rand関数によるコンパイラの処理速度の違い
 GAのベンチマークプログラムがPGIでコンパイルすると遅い理由としてrand関数の最適化が図られていないではないかという疑問があったため,rand関数を大量に呼び出す簡単なプログラムを作成してgccとPGIで処理時間をそれぞれ測定してみた.表3に実行結果を示す.

rand関数呼び出し回数 gcc PGI
1億 0:07.45 0:07.06
4億

0:29.80

0:28.28
9億 1:07.07 1:03.64

3.今後の課題

 ・環境分散GAの作成