LAQA
最終更新日:2026年10月16日
情報
CrySPYの基本的な使い方に関してははじめにTutorial > Random Search (RS)を見ること.
ここではCrySPY 1.1.0以上を想定している.
ここで利用しているファイルはCrySPY_utility/examples/qe_Si16_LAQAからダウンロードできる. このチュートリアルでは,50個だけ初期構造を生成しているが,本来LAQAでは,もっと多くの構造を生成しておいてそこから良い候補を選択することでシミュレーションを進める.
Input
cryspy.in
cryspy.inの例.
- LAQAでは
nstageは1にする必要がある. - v1.5.0以降は,[option]セクションの
backup_intervalで自動バックアップの間隔(選択回数)を指定できる.デフォルトは1,0で自動バックアップを無効化.詳細は機能 > バックアップを参照. - [LAQA]セクションの
nselect_laqaだけ新しく設定する必要がある.nselect_laqaは一回の選択で選ばれる候補の数.
下記のようにwfやwsを指定すれば,LAQAのスコアにおける重みも変えられる.
省略した場合,デフォルトでは0.1と10.0がそれぞれ使われる.
スコアの詳細についてはSearch algorithms > LAQAを見ること.
calc_in/pwscf.in_1
nstepで1回の選択で何ステップ構造最適化を進めるかをコントロールする.(VASPではNSW)
calc_in/job_cryspy
- ジョブスクリプトはいつも使っているものと同じ
Run
ヒント
自動化スクリプトも用意してある.このページの最下部参照.
cryspyと打って1回目の実行.
この入力ファイルではまず50構造生成されるのでlog_cryspyを見て確認する.
LAQAでは,はじめに全ての初期構造の最適化ジョブを実行する.
完全に最適化を終わらせるわけではなく,ここではnstep = 10にしているので,10ステップだけ実行される.
cryspyコマンドを繰り返して,初期構造全てについて10ステップの最適化を完了させる.
必要であれば,njobの値を上げておけば一度に多くのジョブがサブミットされる.
初めの最適化が全て終わると, log_cryspyの最後にLAQA is readyと表示される.
この状態でcryspy を実行すると,最初の選択が始まる.
nselect_laqaで設定された構造の数だけ選択される.
cryspyをもう一度実行するとそれらのジョブ(次の10ステップ)がサブミットされる.
あとはこれを何度も繰り返し行うことでスコアに応じて選択された構造の最適化が10ステップずつ進行する. ある程度の構造の最適化が完全に完了するまで進めて,止めたいタイミングでストップする.
Status
シミュレーションの途中でスコアの確認がしたければ次のファイルを見ると良い:
- ./data/LAQA_status
他にもLAQAに関数ファイルがいくつか出力される:
- ./data_LAQA_bias
- ./data_LAQA_energy
- ./data_LAQA_score
- ./data_LAQA_selected_id
- ./data_LAQA_step
Analysis and Visualization
ここではCrySPYのデータをローカルPCで解析する.
スパコンやワークステーションで計算を行ったら,ローカルPCにデータをダウンロードしておく.
今後必要なければ,ファイルサイズが大きいworkとbackupディレクトリは削除しておいて良い.
pklデータはgzipしておくとファイルサイズを減らすことができる.
Jupyter Notebook
ダウンロードした結果のdata/ディレクトリに移動して,cryspy_analyzer_LAQA.ipynbをCrySPY utilityからコピーする.
このjupyter notebookを順番に実行していけば下記のようなグラフとgif画像が作成できる. この例では,アニメーションのために全ての構造の最適化を完全に完了させた. (全て最適化を完了させるとランダムサーチと計算量が変わらないのでLAQAの優位性はない)
このグラフはエネルギーを最適化ステップの関数として示している. 赤い線は最終的にエネルギーが低かった3つの構造を表しており,中でも一番安定だった構造はダイアモンド構造に到達している. 安定になる構造はかなり早い段階で選択されて構造最適化が完了していることがわかる.
情報
algo = LAQAでは[option]セクションの下記の二つは自動的にTrueになる.
- force_step_flag = True
- stress_step_flag = True
原子に働く力とストレスのデータは1ステップごとに収集される. エネルギーと構造データは1ステップごとではなく,選択ごとに収集される. つまり,この場合は10ステップおきにエネルギーと構造データは保存される. もし1ステップごとのデータが欲しいのであれば,手動で下記の設定を追加すること.
Auto Script
何度も繰り返しcryspyを実行するのは面倒に感じたかもしれない. 下記のようなスクリプトを使えば自動化できる.
