Aptech社国内正規販売代理店 インフォーマティック(株) [Home] [Bottom] 動作環境・価格 お問い合わせ・注文 Optimization - 最適化
Optimizationは、関数の最適化をはかるライブラリー関数、OPTNUMを提供します。
最適化に関わる各種の下降アルゴリズム(descent algorithm)、ステップ・レングス手法、を自由に選択することが
できます。また、実行過程でオンザフライで切り替えることができます。
また、デフォルト設定を使えば、最適化する関数と初期値さえ与えればあとは何も指定しなくてもOPTNUMが自動的に
処理を進めてくれます。機能的な特徴をあげると、
* 最適化を制御する25種を越える各種オプションを選択できる
* 下降アルゴリズム(descent algorithm)としては、BFGS, DFP, Newton, steepest descent,
および PRCG等のアルゴリズムを選択できる
* ステップ・レングス手法としては、STEPBT, BRENT, and a step-halving等の手法を選択できる
* アルゴリズムの切り替え手法についても反復の過程で、反復の回数による方法または
関数値の評価が許容値を越えたかどうかの判定による方法のいずれかを選択できる
OPTMUMは、下降アルゴリズム、BFGS, DFP, Newton法には数値的に優れたコレスキー法が使われている。
すなわち、ヘシアン逆行列ではなくヘシアン行列のコレスキー因子を使う。
例)
最適化する関数として次の二次関数を想定する。
f(x) = 0.5(b-x)'Q(b-x)
ここでbは既知の係数ベクトル、Qは既知の係数の対称ベクトル。
わかりやすくするために関数を次のように書き換える。
f(x) = 0:5x'Qx-x'b
Qおよびbを次のように仮定する
Q =
.78 -.02 -.12 -.14
-.02 .86 -.04 .06
-.12 -.04 .72 -.08
-.14 .06 -.08 .74
b' = .6 .08 1.12 .68
最初にライブラリーをセットアップする
library optmum;
optset;
関数を計算するプロシージャは次のようになる
proc qfct(x);
retp(.5*x'*Q*x-x'b);
endp;
開始値のベクトルを定義
x0 = { 1, 1, 1, 1 };
最終的にOPTMUMを呼ぶ
{ x,f,g,retcode } = optmum(&qfct,x0);
係数の推定値はxに返される。 最小化されたときの関数の値がf に返される。
勾配(gradient)がgに返される(これをチェックすることにより実際に最小化が達成されたかどうかを
検証することができる)
[Home] [Top] お問い合わせ・注文