ノート
訪問数 1622  最終更新 2008-02-04 (月) 10:41:19

EPMRを読んでみる 〜 流れの見直し

流れの簡単な解説図(http://www.doe-mbi.ucla.edu/~sawaya/tutorials/Molrep/epmr.htmlより)は
http://www.doe-mbi.ucla.edu/~sawaya/tutorials/Molrep/epmr_flowchart.gif
となっている。

これは1回のattemptの図(1回モデルを生成して最適化するプロセスの図)であるが、 同じページの上段の図(http://www.doe-mbi.ucla.edu/~sawaya/tutorials/Molrep/epmr.htmlより)
http://www.doe-mbi.ucla.edu/~sawaya/tutorials/Molrep/epmr_corrlite.gif
では、何回もランダムなモデル生成を繰り返して(つまりattemptを増やしつつ ループする。図上では横軸方向に増えてゆくことに当たる)の結果を比較しようとしている。

このattemptを増やして繰り返すようなループ実行は、サンプル実行

epmr LDH.mtz LDH.pdb

では実現できていない(attemptが1回だけループを回って脱出)。

この点について実行の軌跡を追いかけると、次のことが分かる

並列化の簡単な方向

ループを並列化しようとする際、前のループ本体実行の結果を次のループ本体実行が利用・参照する場合、うまく行かない。なぜなら、前の結果が出ないと、次の計算が出来ないからである。

EPMRの内側のループ(EvolutionaryOptimizerのwhileループ)は、前のループ本体での実行結果をランダムに並べ替えて(これが進化のステップに当たる)次のループ本体で再度計算するので、そのままでは並列化に向かない。

その点、外側のループの意味は、同じ計算を別のランダムに生成した初期値と別のランダム系列による組み換えによって進化計算させ、より最適な解が出るかを試すことにあるので、前回の計算の結果に依存するのは最後の結果比較だけである。ここは、並列化がしやすい。

加えて、出発点データの生成もランダム計算であるから、独立に計算できる。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-02-04 (月) 10:41:19 (3577d)