Location : Home > Languages > Perl > Package Title : Algorithm::SpiralSearch |
![]() |
Algorithm::SpiralSearch - 2パラメータの関数最適化
use Algorithm::SpiralSearch; my $LBx = 0; my $UBx = 1000; my $LBy = 0; my $UBy = 1000; my $iters = 50; my ($x, $y) = spiral_search($LBx, $UBx, $LBy, $UBy, $iters, \&f, 'MAX'); sub f { my ($p1, $p2) = @_; my $ret = simulator($p1, $p2, ...); return $ret; }
スパイラル探索(spiral search)とは2パラメータの、比較的振る舞いのよい関数の最適化に用いる手法である。境界条件・繰り返し回数の上限・関数への参照・関数を最大化または最小化するための指標が spiral_search 関数に渡される。
spiral_search() は渡された関数の最適点を返す。
これはエレガントな最適化アルゴリズムであるが、ほとんどのアプリケーションには適していない。SETI は強い電波信号の探索にスパイラル探索を用いている。スパイラル探索は、関数の値を求めるのが大変な場合や探索空間の中に小さなランダムノイズが乗っている場合に大きな効果を発揮する。アルゴリズムは O(n) のオーダーである。
Search Methods
spiral_search($LowerBound_x, $UpperBound_x, $LowerBound_y, $UpperBound_y, $iterations, \&function, $MAX_or_MIN)
スパイラル探索を初期化する。最初の4つのパラメータは探索平面を定義する。スパイラル探索は O(n) オーダーであるので、繰り返しの回数が計算の回数を決定する。繰り返しの回数が多いほど発見の正確性は向上する。
6番目の引数はパラメータを含んだ関数への参照でなければならない。この関数はただ1つの値−入力の正確性を示すスカラーを返す。最後の引数は所与の関数をどのように最適化するかを指定する文字列 'MAX' または 'MIN' のいずれかでなければならない。spiral_search は所与の関数を最適化するパラメータの組を返す。
Sean Mostafavi, <seanm@undersea.net>
Copyright (C) 2006 by Sean Mostafavi
本ライブラリはフリーソフトウェアであり、 Perl 本体と同等の条件で修正/再配布することができる。Perl は バージョン 5.8.5 またはユーザの選択でそれ以降のバージョンで利用可能である。
![]() |
Updated : 2006/08/22 |