ネルダー–ミード法
ナビゲーションに移動
検索に移動
ネルダー–ミード法(ネルダー–ミードほう、テンプレート:Lang-en-short)や滑降シンプレックス法(テンプレート:Lang-en-short)やアメーバ法(テンプレート:Lang-en-short)は、最適化問題のアルゴリズム。導関数は不要。1965年に John A. Nelder と Roger Mead が発表した[1]。
概要
n + 1 個の頂点からなる n 次元の単体(シンプレックス)をアメーバのように動かしながら関数の最小値を探索する。反射、膨張、収縮の3種類を使い分けながら探索する。
Rの汎用的最適化の optim() のデフォルトのアルゴリズムとしても使われている。
線形計画法の1つであるシンプレックス法と名前はまぎらわしいが、基本的に無関係である。
擬似コード
の最小化を行う。 は n 次元のベクトル。関数の引数は探索開始点。定数は一般的には を使用する。 は単位ベクトル。
function nelderMead() {
while (所定のループ回数 や 値の改善が小さくなった) {
となるようにソートする。
// 重心(は除外)
if {
// 反射
} else if {
// 膨張
if {
} else {
}
} else {
// 収縮
if {
} else {
}
}
}
}