最適化計算において、ある条件で最適化計算を中断することはできますか?
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 25 Ott 2013
Modificato: MathWorks Support Team
il 15 Mar 2021
fminsearch 関数などを用いた最適化計算において、目的関数の値がある一定以下の値になったら、最適化計算を終了させることはできますか?
Risposta accettata
MathWorks Support Team
il 15 Mar 2021
Modificato: MathWorks Support Team
il 15 Mar 2021
optimset関数で設定する "OutputFcn"パラメータを使用することで可能です。
OutputFcn パラメータには、Output Function と呼ばれるコールバック関数を設定します。
Output Function は、決められた関数書式(下記例を参照)に従って定義する必要があり、最適化計算の各繰り返し計算中に実行されます。
以下に実行手順を示します。
例: 目的関数の値が、2 よりも小さい値に収束した場合は最適化計算を終了させる
1) Output Function として、下記のような MATLAB関数(outfun.m)を作成します。
function stop = outfun(x,optimValues,state)
% OUTFUN: Output Functionとして定義
% 入力引数
% x: 目的変数
% optimValues: 現在の繰り返し計算での結果を含む構造体
% state: 現在の最適化計算の状態('init','interrupt','iter','done'のいずれか)
% 出力引数
% stop: 最適化計算の継続(false)/停止(true)を決定するフラグ
stop = false;
% 終了条件
if optimValues.fval < 2 % 目的関数の値が2より小さい場合
stop = true; % 計算を終了する
end
2) コマンドウィンドウで下記コマンドを実行します。
fun = @(x)x.^2; % 目的関数定義
optim = optimset('OutputFcn',@outfun); % OutputFcnの設定
[X,FVAL] = fminsearch(fun,10,optim) % 最適化計算
最適化はユーザによって中断されました。
X =
-1
FVAL =
1
参考情報が以下の URL よりご覧いただけます。
・MATLAB ユーザガイド:出力関数
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su オプションの設定 in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!