SGAプログラムの並列化3
2001年 10月1日
片浦哲平
1.先週からの課題
先週からの課題として,2.研究報告
今週行ったこと
SGAプログラムの並列化
先週に書いたプログラムがどうも簡単に0に収束してしまうことからバグが無いかをチェックした.
その結果突然変異の際に個体が死んでしまっている点,選択がうまく行えていないというバグを
発見した.バグを修正した後通信関数が機能しているかの確認を行ったがこれも正しく行えていなかった.
そのため,隣の島と通信を行う通信関数は完全に放棄して,ランダムリンクで,選択する個体もランダム
であるプログラムを作成した.(ソース)
通信が行えたかどうかは先週に行った並列ゼミで作成した資料の通り,Mpeによって確認できた.
実際にどのように通信が行われていたのかを載せたかったが,クラスタがほとんどCambriaのベンチマークの
ために利用できない状態で,forteではコンパイルが通らなかったので断念した.
どのような移住方法をとったかを簡単に説明する.
今回はこのような方法で実装をしたが,乱数の種を全ノードで同じにして,同じ乱数を発生させることで,
通信を行わなくても簡単に実装することもできるようである.今回の方法ではBCASTの通信時間と,
同期をとっているので,sendの配列が到着するまでの待ち時間が無駄になってしまうことが,Mpeによって
確認できた.これもMpeが再度利用できる環境になり次第報告したい.
また,解交換は以下のように行った.
実際に実行してみた結果を示す.
表1 SGA,DGA初期値
SGA1 | DGA1 | SGA2 | DGA2 | |
世代数 | 1000 | 1000 | 1000 | 1000 |
個体数 | 1000 | 125×8 =1000 | 1000 |
125×8=1000 |
交叉率 | 1.0 | 1.0 | 1.0 | 1.0 |
遺伝子長 | 40 | 40 | 200 | 200 |
突然変異率 | 0.025 | 0.025 | 0.005 | 0.005 |
設計変数 | 2 | 2 | 10 | 10 |
エリート保存 | 32 |
4×8=32 |
32 | 4×8=32 |
移住個体数 | - | 10 | - | 10 |
移住間隔 | - | 5 | - | 5 |
島数 | - | 8 | - | 8 |
図1 設計変数2におけるSGAとDGAの性能比較
図2 設計変数10におけるSGAとDGAの性能比較
設計変数が2の場合はどちらも0になったが,設計変数を10にした場合にはSGAでは解けなかった.
また,何度か実行してみたが,早い世代ではSGAがDGAに比べて良好な解が求められるが,早いうちに局所解におちいりやすかった.
DGAでは最終的にはかなり精度のよい解が求められており,多様性があるという点においても十分な結果となった.
この結果から並列化の効果は大きいように思われる.また,実行速度のかなり速く感じることができた.
isightの学習
実際にパラメータを入力して実行させている.
ParallelGAゼミ
ゼミの資料を作成する段階となっているが,細かい部分で理解できていない部分が多く難航している.火曜日の五限までには何とか
間に合わせる予定である.
3.今後の課題
ParallelGAゼミの開催
isightでのデータ取り
DGAの改良
実験マシンの管理
など