最適化計算において、ある条件で最適化計算を中断することはできますか?
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 25 Oct 2013
Modifié(e) : MathWorks Support Team
le 15 Mar 2021
fminsearch 関数などを用いた最適化計算において、目的関数の値がある一定以下の値になったら、最適化計算を終了させることはできますか?
Réponse acceptée
MathWorks Support Team
le 15 Mar 2021
Modifié(e) : MathWorks Support Team
le 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur オプションの設定 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!