このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
surrogateoptplot
を解釈する
surrogateoptplot
プロット関数は、代理最適化手順に関する多くの情報を提供します。
有界関数の最小化
たとえば、この例を実行すると利用できるテスト関数 rastriginsfcn
に対して surrogateopt
が実行するステップのプロットを考えてみましょう。この関数は、[0,0]の点でグローバル最小値0を持ちます。
rastriginsfcn
の表面プロットを作成します。
ezsurf(@(x,y)rastriginsfcn([x(:),y(:)]));
プロット最小化プロセス
非対称の境界を与えることで、surrogateopt
がグローバル最小値から離れて探索するように促します。[-3,-3]
と [9,10]
の非対称境界を設定します。surrogateoptplot
プロット関数を使用するようにオプションを設定し、 surrogateopt
を呼び出します。
lb = [-3,-3]; ub = [9,10]; options = optimoptions('surrogateopt','PlotFcn','surrogateoptplot'); rng(100) [x,fval] = surrogateopt(@rastriginsfcn,lb,ub,options);
surrogateopt stopped because it exceeded the function evaluation limit set by 'options.MaxFunctionEvaluations'.
プロットを解釈する
プロットの左側から解釈を始めます。アルゴリズムの手順の詳細については、代理最適化アルゴリズム を参照してください。
最初の点は色付きの三角形で、問題の範囲内での関数の準ランダム サンプルを示します。凡例で「ランダム サンプル」と表示されているこれらのポイントは、サロゲートの構築フェーズから取得されます。
次の点は、最小値の検索フェーズで作成された適応ポイントを示します。これらのポイントは凡例で「適応サンプル」というラベルが付けられます。
円(太い線のように重なり合っている)は、見つかった最良(最低)の目的関数値を表します。これらのポイントは凡例で「ベスト」と表示されます。評価番号 30 の直後、
surrogateopt
は目的関数値が 8 付近の局所最小値に陥ります。この動作をより明確に確認するには、ズームインしてください。
xlim([20 100]) ylim([0 15])
評価番号 120 より前では、垂直線が代理リセットを示します。この時点で、アルゴリズムはサロゲート構築フェーズに戻ります。
色付きの x ポイントは現職者を表し、前回の代理リセット以降に見つかった最良のポイントです。
評価番号 150 付近では、現職者は約 4 の値を達成して、以前の最高点よりも向上しています。この動作をより明確に確認するには、ズームインしてください。
xlim([140 200]) ylim([0 6])
ソルバーは評価 190 の後に別のサロゲート リセットを実行します。
2D 問題に対するデフォルトの関数評価制限であるため、最適化は評価数 200 で停止します。
非線形および整数制約の問題
非線形制約がある場合、surrogateoptplot
の表示が変わります。x(1)
が整数値であるという制約と、 が非線形であるという制約を課します。この制約を実装する関数については、この例の最後にある rasfcn
を参照してください。
fun = @rasfcn;
intcon
= 1 に設定して整数制約を設定し、最小化を実行します。
intcon = 1; [x,fval] = surrogateopt(fun,lb,ub,intcon,options);
surrogateopt stopped because it exceeded the function evaluation limit set by 'options.MaxFunctionEvaluations'.
プロットには、surrogateopt
が実行不可能なポイントを評価する場所に色付きのマーカーが表示されるようになりました。最終点は[0,0]の真の最小点に近くなります。
disp(x)
1.0e-04 * 0 0.6798
整数制約は、検索空間を縮小することで、surrogateopt
が真の最小値を見つけるのに役立つ可能性があります。
function F = rasfcn(x) F.Fval = rastriginsfcn(x); F.Ineq = x(1)^2 - 2 - x(2); end