このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
ソルバーの実行中に進捗状況のさまざまな測定をプロットできます。PlotFcn
の名前/値のペアをoptimoptions
で設定し,各反復でソルバーが呼び出すプロット関数を1つまたは複数指定します。関数ハンドルか,関数ハンドルの细胞配列を渡します。
さまざまな定義済みプロット関数を使用できます。ソルバー関数のリファレンスページでPlotFcn
オプションの説明を参照してください。
また,カスタムのプロット関数を使用することもできます。出力関数と同じ構造を使用して関数ファイルを記述します。この構造については,出力関数とプロット関数の構文を参照してください。
この例では,プロット関数を使用して,fmincon
“内点”
アルゴリズムの進行状況を表示する方法を示します。問題は,制約付き非線形問題の解法,ソルバーベースから取得されます。
勾配を含めて,非線形の目的関数と制約関数を記述します。目的関数は。関数です。
类型rosenbrockwithgrad
计算目标f f = 100*(x(2) -x(1) ^2)^2 + (1-x(1))^2;如果nargout > 1%梯度需要g = (-400 * (x (2) - x (1) ^ 2) * x (1) 2 * (1 - x (1));200 * (x (2) - x (1) ^ 2)];结束
このファイルをrosenbrockwithgrad.m
として保存します。
制約関数は,解が规范(x) ^ 2 < = 1
を満たすものになります。
类型unitdisk2
函数[c,ceq,gc,gceq] = unitdisk2(x) c = x(1)^2 + x(2)^2 - 1;[];If nargout > 2 gc = [2*x(1)]; / /gceq = [];结束
このファイルをunitdisk2.m
として保存します。
3つのプロット関数の呼び出しを含むオプション構造体を作成します。
选择= optimoptions (@fmincon,“算法”,“内点”,...“SpecifyObjectiveGradient”,真的,“SpecifyConstraintGradient”,真的,...“PlotFcn”, {@optimplotx、@optimplotfval @optimplotfirstorderopt});
初期点x0 = (0,0)
を作成し,残りの入力を空([]
)に設定します。
x0 = (0,0);一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];
オプションを含む,fmincon
を呼び出します。
有趣= @rosenbrockwithgrad;nonlcon = @unitdisk2;x = fmincon (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
x =1×20.7864 - 0.6177