XLPack ソルバー 多変数非線形最適化

多変数の非線形最適化問題の解を求めます.
\[
f(x_1, x_2) = 100(x_2 – x_1^2)^2 + (1 – x_1)^2 \space (ローゼンブロック関数)
\] の最小点を求める例を示します.

変数セル範囲 (この場合 B8 ~ B9) にはプログラムが \(x_1\) および \(x_2\) の値を書き込みます. 関数値セル (この場合 C8) には \(x_1\) および \(x_2\) から \(f(x_1, x_2)\) を求める計算式を入力しておきます. この場合, C8 は =100*(B9-B8^2)^2+(1-B8)^2 とします.

微分係数セル範囲には \(df/dx_i\) の計算式が入ったセルを指定します. これは, 解法として Mng を選択した場合にのみ必要となります.

変数の初期値セル範囲には \(x_1\) および \(x_2\) の初期値が入ったセルを指定します. これを省略 (ブランクのまま) した場合には変数セルに初期値が入力されているものとみなします.

出力セル範囲には結果を出力するセルを指定します. これを省略 (ブランクのまま) した場合には変数セル範囲に出力します.

使用するプログラムは Optif0, Mnf, Mng および Subplex から選ぶことができます.

計算精度の標準値は \(10^{-8}\) です. Optif0 では自動設定されるのでこの値は無効です. Mnf および Mng では Xctol に, Subplex では Tol にこれを設定します.

Subplex は Nelder-Mead のシンプレックス法として動作します.

「計算開始」をクリックすると解を求め出力します. なお, それぞれのセル範囲は必要な範囲よりも大きく指定することができ, その場合には左上より必要なだけの大きさの範囲を使います.

非線形最適化では局所的には複数の最小点が存在する場合があり, 一般的には初期値に最も近い最小点に収束します. また, 同じ初期値でも解法により異なる最小点が求められる場合があります. できるだけ求めたい最小点の近くの初期値を与えるようにしてください.

解が求められない場合には#NUM!エラーになります. その場合の主な原因は, 初期値が悪いため収束しない, 与えられた方程式に最小点が存在しないなどが考えられます.

「保存/読込」についてはこちらを参照ください.

「ヘルプ」をクリックするとネット接続中であればこのページを表示します.

右上の「?」は正しく動作しません. 「ヘルプ」ボタンを使用してください.