このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
結果を再現する
擬似乱数による同一の回答
GlobalSearch
と MultiStart
は、開始点の選択に疑似乱数を使用します。同じ疑似乱数ストリームを再度使用して、次の操作を行います。
さまざまなアルゴリズム設定を比較します。
例を繰り返し実行します。
前回の実行の既知の初期セグメントを使用して実行を拡張します。
GlobalSearch
と MultiStart
はどちらもデフォルトの乱数ストリームを使用します。
結果を再現するための手順
問題を実行する前に、デフォルトの乱数ストリームの現在の状態を保存します。
stream = rng;
GlobalSearch
またはMultiStart
の問題を実行します。乱数ストリームの状態を復元します。
rng(stream)
問題を再度実行すると、同じ結果が得られます。
例: GlobalSearch または MultiStart の結果を再現する
この例では、全体的または複数の局所的最小値を見つける の再現可能な結果を取得する方法を示します。この例は、結果を再現するための手順 の手順に従います。
デフォルトの乱数ストリームの現在の状態を保存します。
stream = rng;
sawtoothxy
関数ファイルを作成します。function f = sawtoothxy(x,y) [t r] = cart2pol(x,y); % change to polar coordinates h = cos(2*t - 1/2)/2 + cos(t) + 2; g = (sin(r) - sin(2*r)/2 + sin(3*r)/3 - sin(4*r)/4 + 4) ... .*r.^2./(r+1); f = g.*h; end
problem
構造体とGlobalSearch
オブジェクトを作成します。problem = createOptimProblem('fmincon',... 'objective',@(x)sawtoothxy(x(1),x(2)),... 'x0',[100,-50],'options',... optimoptions(@fmincon,'Algorithm','sqp')); gs = GlobalSearch('Display','iter');
問題を実行します:
[x,fval] = run(gs,problem)
Num Pts Best Current Threshold Local Local Analyzed F-count f(x) Penalty Penalty f(x) exitflag Procedure 0 465 422.9 422.9 2 Initial Point 200 1730 1.547e-015 1.547e-015 1 Stage 1 Local 300 1830 1.547e-015 6.01e+004 1.074 Stage 2 Search 400 1930 1.547e-015 1.47e+005 4.16 Stage 2 Search 500 2030 1.547e-015 2.63e+004 11.84 Stage 2 Search 600 2130 1.547e-015 1.341e+004 30.95 Stage 2 Search 700 2230 1.547e-015 2.562e+004 65.25 Stage 2 Search 800 2330 1.547e-015 5.217e+004 163.8 Stage 2 Search 900 2430 1.547e-015 7.704e+004 409.2 Stage 2 Search 981 2587 1.547e-015 42.24 516.6 7.573 1 Stage 2 Local 1000 2606 1.547e-015 3.299e+004 42.24 Stage 2 Search GlobalSearch stopped because it analyzed all the trial points. All 3 local solver runs converged with a positive local solver exit flag. x = 1.0e-007 * 0.0414 0.1298 fval = 1.5467e-015
実行開始時にランダム ストリームの状態が不明であったため、この問題を実行すると異なる結果が得られる可能性があります。
乱数ストリームの状態を復元します。
rng(stream)
問題を再度実行します。同じ出力が得られます。
[x,fval] = run(gs,problem)
Num Pts Best Current Threshold Local Local Analyzed F-count f(x) Penalty Penalty f(x) exitflag Procedure 0 465 422.9 422.9 2 Initial Point 200 1730 1.547e-015 1.547e-015 1 Stage 1 Local ... Output deleted to save space ... x = 1.0e-007 * 0.0414 0.1298 fval = 1.5467e-015
並列処理と乱数ストリーム
逐次計算の場合と同じようにアルゴリズムを並列実行すると、MultiStart
から再現可能な結果が得られます。MultiStart
は疑似ランダムな開始点をローカルで生成し、その開始点を並列プロセッサに配布するため、実行は再現可能です。したがって、並列プロセッサは乱数を使用しません。
並列 MultiStart
実行を再現するには、結果を再現するための手順 で説明されている手順を使用します。MultiStart
を並列で実行する方法の説明については、 Global Optimization Toolbox で並列処理を使用する方法 を参照してください。