9
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

PythonでNelder-Mead法

PythonでNelder-Mead法

名前の通り。だが実際は

  • Qiitaを使ってみたかった
  • GitHubを使ってみたかった
  • 他人のコードを見て勉強したかった

などの背景があるので結構雑。

  • Nelder-Mead法について

最初は改訂シンプレックス法だとか滑降シンプレックス法だとか呼ばれていた(原著論文にも書いてあるし…)が、wikiにも書かれているとおり、基本的にはシンプレックスとは無関係。
論文: Nelder, John A.; R. Mead (1965). “A simplex method for function minimization”. Computer Journal 7: 308–313

詳しいことは(英語だが)こちらに分かりやすくまとめてある。
ざっくり言うと、n次元の最適化したい関数にn+1次元の点の単体(simplex)をコロコロと変形させて最小値を探し出す。というもの。

例えば二次元空間を探索するならば、三角形を形成して探索をする。
参考サイトでは分かりやすく動画でその例を説明しているのでそこだけ見ても何となく分かる。

実はScipyに標準機能としてあったりもする
https://docs.scipy.org/doc/scipy/reference/optimize.minimize-neldermead.html
が、検索をしていてPythonで実際に書いている人を見つけたので、ついでに他人のコードを見てPythonの勉強をする。

探索する様子を可視化出来たら面白いなと思ってちょっとだけコードを改変させてもらった。
Jupyter notebookで書いたものを貼り付けた程度なので動かなかったらごめんなさい。

https://github.com/ftamon/nelder_mead_method.git
nelder_mead_method_animation.gif

以上。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
9
Help us understand the problem. What are the problem?