resume
ベイズ最適化の再開
説明
は、1 つ以上の名前と値の引数で指定された追加オプションを使用して、newresults
= resume(results
,Name,Value
)results
を生成した最適化を再開します。
例
この例では、ベイズ最適化を再開する方法を示します。この最適化は、非線形最適化のテスト ケースとして有名な Rosenbrock の関数と呼ばれる確定的関数に関するものです。この関数には、点 [1,1]
にグローバル最小値 0
があります。
-5
および 5
という境界がある 2 つの実数変数を作成します。
x1 = optimizableVariable("x1",[-5,5]); x2 = optimizableVariable("x2",[-5,5]); vars = [x1,x2];
Rosenbrock の関数に対応する rosenbrocks
という名前の目的関数を定義します。
type rosenbrocks.m % Display contents of rosenbrocks.m file
function f = rosenbrocks(x) f = 100*(x.x2 - x.x1^2)^2 + (1 - x.x1)^2;
メモ: このページの右上にあるボタンをクリックしてこの例を MATLAB® で開くと、MATLAB で例のフォルダーが開きます。このフォルダーには、目的関数のファイルが含まれています。
目的関数の関数ハンドルを作成します。
fun = @rosenbrocks;
再現性を得るため、乱数シードを設定し、最適化の獲得関数を "expected-improvement-plus"
に設定します。
rng("default") results = bayesopt(fun,vars,"Verbose",0, ... "AcquisitionFunctionName","expected-improvement-plus");
求められた最適点と、モデル化された最適な目的関数を表示します。
results.XAtMinObjective
ans=1×2 table
x1 x2
______ ______
1.7902 3.2287
results.MinEstimatedObjective
ans = -9.1194
最適点が最適な点にあまり近くなく、この関数モデルは不正確です。30 個の点を追加して (合計 60 個の点で) 最適化を再開します。今回は、目的関数が確定的であることをオプティマイザーに指定します。
newresults = resume(results,"IsObjectiveDeterministic",true, ... "MaxObjectiveEvaluations",30);
newresults.XAtMinObjective
ans=1×2 table
x1 x2
_______ _______
0.95093 0.90364
newresults.MinEstimatedObjective
ans = -0.0106
今回は最適点が真の最適な点に近く、目的関数モデルが真の関数に近づいています。
入力引数
ベイズ最適化の結果。BayesianOptimization
オブジェクトを指定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: resume(results,'MaxObjectiveEvaluations',60)
Initial
で始まるものを除き、bayesopt
が受け入れる名前と値の引数をすべて使用できます。bayesopt
の入力引数を参照してください。
メモ
名前と値の引数 MaxObjectiveEvaluations
および MaxTime
は、results
に格納されている数値に対する "追加の" 時間または評価回数を意味します。したがって、たとえば、評価回数の既定値を使用すると、元の指定に 30
を加算することになります。
さらに、次の名前と値の引数を使用できます。
変数の変更。OptimizableVariable
オブジェクトを指定します。
最適化の変数について、以下のプロパティのみを変更できます。
実数または整数の変数の
Range
。以下に例を示します。xvar = optimizableVariable('x',[-10,10]); % Modify the range: xvar.Range = [1,5];
'integer'
と'real'
のType
。以下に例を示します。xvar.Type = 'integer';
実数または整数の変数の、
'log'
と'none'
の間でのTransform
。以下に例を示します。xvar.Transform = 'log';
出力引数
最適化の結果。BayesianOptimization
オブジェクトとして返されます。
バージョン履歴
R2016b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)