シェアする

  • このエントリーをはてなブックマークに追加

Simulated Annealingってどんな感じ???

シェアする

  • このエントリーをはてなブックマークに追加
エネルギー密度関数のイメージ

みなさん、こんにちは!わろたんです!!

今回は私が学部時代の研究で使っていたシミュレーテッドアニーリングというものについて、ふんわりと解説していきます。卒業してからかなり時間が経ってしまったので細かいところは怪しいですが、大体の感じは合っていると思います!また、実際に適用してみた例があるので良かったら参考にしてみて下さい!!→\(\phi^4\) kinkをアニールしてみた

原理

一般にアニーリングというと、金属などに熱処理を施して結晶の歪みをなくすことを言いますが、シミュレーテッドアニーリングというのは、それをシミュレーション上で行うものです。

Energy landscape. とりうるすべての場の配位に対してエネルギーが決まり、山あり谷ありの様相を呈す。
Enegy landscape. 全ての配位$\{\phi\}$に対してエネルギーが決まってくる

各場の配位に対応して値が決まるエネルギー\(E(\phi)\)を考えます。このとき全ての場の配位に対してエネルギーを模式的に描くと上の図のようになるでしょう。すなわち、場の配位によってエネルギー的に低い場所もあれば高い場所もあります。さらによく見ると、エネルギー低いといってもそれほど低くない場所もあれば黒部ダムのように深~い谷底になっている場所もあります。

物理の問題ではよくある、エネルギー的に安定な解を探そうという問題があったとします。いわゆる解ける問題では変分原理などを使って、微分方程式を導出して変数変換や全微分形を見つけて解くなどします。全微分形を見つけるのは個人的には楽しいです。しかしながら、どんなエネルギー汎関数を持ってきてもそのような方程式が導けるかどうかは定かではないし、場合によってはかなり大変か不可能でさえあることもあります。

そこで、方程式の導出は諦めてエネルギー汎関数そのものを弄ることを考えます。すなわち、物理空間内の各点\(\bf x\)において場の値\(\phi({\bf x})\)をちょっとずつ変えてみて、その都度エネルギー
を計算しエネルギーの下がるような配位を見出していくのです。これは相当な繰り返し回数を必要とするので、パソコン君の出番になります。

さて、それではパソコン君に頑張ってもらいましょう。まずは、とにかく適当に配位を決めてエネルギーを計算してもらわなくてはなりません。どこにしましょうかね・・・?

しかしそんなに簡単にはいかねぇんだよなぁ。。。

初期配置をEnergy landscape上のどこに置くのかによって、結果として出てくる解が違う
初期配置をどこにしましょうかねぇ・・・?

ちょっと待ってください。あなた自分が置いた配位がEnergy landscape上でどこにあるかわかりますか?

そうなんです。実はEnergy landscapeの様相は計算を動かしてみないとわからず、初期配位を決める段階ではどこにおかれるかはよくわからないのです。運良く緑丸のところの配位を当てられれば、後はエネルギーを下げていくだけで安定な解にたどり着くでしょう。しかし日ごろの行いが悪く、青丸のところに初期配置を置いてしまったら、さぁ大変!!やっとたどり着いた底は谷底ではなく浅瀬です。どこを探しても浅瀬しか見つかりません。困りましたね。

丘を登る努力をしよう

そこで、ある一定の確率をもってエネルギーの上がる配位も許してやります。具体的には、平衡状態においてある状態からある状態へ遷移するとき、その逆方向への遷移と順方向の遷移が等しい確率で起こるようにします。そうすると、仮に青丸のところに初期配置を置いてしまっても、ある確率で丘を越えて谷底に落ちることができるので、安定な解を見つけることができるようになります。

さて、丘が登れるようになったので、一応エネルギー的に安定な解を見つけることはできそうです。実際に適用する際は、Boltzmann分布の温度を適切に取らないと揺らぎが大きすぎてぐちゃぐちゃになってしまいます。Energy landscapeの丘を余裕で超える大きさの擾乱を与える温度でのシミュレーションになってしまうからです。このように、このシミュレーションにおいて温度は非常に重要なパラメータになっています

まとめ

いかがだったでしょうか。今回はシミュレーテッドアニーリングというものについてふんわりと解説しました。実は今回書いてみて色々と知識の抜けを感じたので、また勉強しようと思います!

具体的な数値計算方法については次回記事で解説します。
関連記事: φ^4 kinkをアニールしてみた

最後まで読んでくださりありがとうございました。

他にも色々とシミュレーションに関する記事を書いています。ぜひ読んでみて下さい!
「シミュレーション」一覧

もっと詳しく解説してほしいなどのご要望がありましたら、このページ上部のお問い合わせフォームまたは下部のコメント欄からご連絡いただくか、以下のメールアドレスでもお待ちしております。

tsunetthi(at)gmail.com

(at)の部分を@に変えてメールをお送りください。

または、twitter(@warotan3)もやってますのでそちらに連絡していただいても良きです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする