このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
GlobalSearch
グローバル最小値を見つける
説明
GlobalSearch
オブジェクトには、run
がローカル ソルバーを繰り返し実行して GlobalOptimSolution
オブジェクトを生成する方法に影響するプロパティ (オプション) が含まれています。実行すると、ソルバーは目的関数の値が最小となるソリューションを見つけようとします。
作成
構文
説明
gs = GlobalSearch
は、プロパティがデフォルトに設定された GlobalSearch
ソルバーである gs
を作成します。
gs = GlobalSearch(Name,Value)
は、名前と値のペアを使用してプロパティを設定します。
gs = GlobalSearch(oldGS,Name,Value)
は oldGS
GlobalSearch
ソルバーのコピーを作成し、名前と値のペアを使用してプロパティを設定します。
gs = GlobalSearch(ms)
は、ms
MultiStart
ソルバーの共通プロパティ値を持つ GlobalSearch
ソルバーである gs
を作成します。
プロパティ
BasinRadiusFactor
— 流域半径減少係数
0.2
(既定値) | 0
から 1
までのスカラー
流域半径の減少係数。0
から 1
までのスカラーとして指定されます。連続する開始点が MaxWaitCycle
個盆地内に入ると、盆地の半径は減少します。盆地の半径は 1 - BasinRadiusFactor
倍に減少します。
流域半径の更新を無効にするには、BasinRadiusFactor
を 0
に設定します。
例: 0.5
データ型: double
Display
— コマンドウィンドウへの表示レベル
'final'
(既定値) | 'iter'
| 'off'
コマンド ウィンドウへの表示レベル。次の文字ベクトルまたは文字列のいずれかとして指定します。
'final'
–run
が終了した後に概要結果を報告します。'iter'
– 最終サマリーに加えて、最初のfmincon
実行後、ステージ 1 後、200 の開始ポイント後、およびfmincon
の実行後に結果を報告します。'off'
– 表示なし。
例: 'iter'
データ型: char
| string
DistanceThresholdFactor
— 試験地点が既存の流域内にあるかどうかを判断するための乗数
0.75
(既定値) | 非負のスカラー
試行ポイントが既存の吸引域内にあるかどうかを判断するための乗数。非負のスカラーとして指定されます。詳細については、ステージ2のトライアルポイントを調べてfminconが実行されるかどうかを確認します を参照してください。
例: 0.5
データ型: double
FunctionTolerance
— 解が等しいとみなす関数値の許容範囲
1e-6
(既定値) | 非負のスカラー
ソリューションが等しいと見なす関数値の許容値。非負のスカラーとして指定します。ソルバーは、2 つのソリューションが互いに XTolerance
相対距離内にあり、目的関数値が互いに FunctionTolerance
相対差内にある場合、それらのソリューションを同一と見なします。両方の条件が満たされない場合、ソルバーはソリューションを別個のものとして報告します。すべてのローカル ソルバー実行の結果を取得するには、FunctionTolerance
を 0
に設定します。結果を少なくするには、FunctionTolerance
を大きい値に設定します。GlobalSearch
の詳細については、fmincon の実行時 の Update Solution Set を参照してください。MultiStart
の詳細については、 GlobalOptimSolution オブジェクトを作成する を参照してください。
例: 1e-4
データ型: double
MaxWaitCycle
— アルゴリズム制御パラメータ
20
(既定値) | 正の整数
アルゴリズム制御パラメータ。正の整数として指定されます。
MaxWaitCycle
回の連続試行ポイントの観測されたペナルティ関数が少なくともペナルティしきい値である場合は、ペナルティしきい値を上げます (PenaltyThresholdFactor を参照)。MaxWaitCycle
連続する試行ポイントが盆地内にある場合は、その盆地の半径を更新します (BasinRadiusFactor を参照)。
例: 40
データ型: double
NumStageOnePoints
— ステージ1のポイント数
200
(既定値) | 正の整数
NumTrialPoints
— 潜在的な開始点の数
1000
(既定値) | 正の整数
潜在的な開始点の数。正の整数として指定されます。
例: 3e4
データ型: double
OutputFcn
— ソルバーの進行状況を報告するか、ソルバーを停止する
[]
(既定値) | @savelocalsolutions
| 関数ハンドル | 関数ハンドルの cell 配列
関数ハンドルまたは関数ハンドルのセル配列として指定され、ソルバーの進行状況を報告したり、ソルバーを停止したりします。出力関数は、各ローカル ソルバー呼び出しの後に実行されます。これらは、グローバル ソルバーの開始時と終了時にも実行されます。出力関数 で説明されている構文を使用して出力関数を記述します。カスタム GlobalSearch 出力関数を参照してください。
組み込みの @savelocalsolutions
出力関数は、すべてのローカル ソリューションをベース ワークスペースの localSolTable
変数に保存します。この出力関数は、実行可能なローカル ソリューションだけでなく、実行不可能なローカル ソリューションも保存します。例については、すべてのローカルソリューションを収集を参照してください。
データ型: cell
| function_handle
PenaltyThresholdFactor
— 罰金基準の引き上げ
0.2
(既定値) | 正のスカラー
PlotFcn
— プロットソルバーの進行状況
[]
(既定値) | 関数ハンドル | 関数ハンドルの cell 配列
関数ハンドルまたは関数ハンドルのセル配列として指定された、ソルバーの進行状況をプロットします。プロット関数は、各ローカル ソルバー呼び出しの後に実行されます。これらは、グローバル ソルバーの開始時と終了時にも実行されます。出力関数 で説明されている構文を使用してプロット関数を記述します。
組み込みのプロット関数が 2 つあります。
@gsplotbestf
は最適な目的関数値をプロットします。@gsplotfunccount
は関数評価の回数をプロットします。
MultiStart プロット関数を参照してください。
例: @gsplotbestf
データ型: cell
| function_handle
StartPointsToRun
— 実行開始地点
'all'
(既定値) | 'bounds'
| 'bounds-ineqs'
実行の開始ポイントは次のように指定します:
'all'
— すべてのスタートポイントを実行します。'bounds'
— 境界を満たす開始点のみを実行します。'bounds-ineqs'
— 境界と不等式制約を満たす開始点のみを実行します。
GlobalSearch
は、GlobalSearch
アルゴリズムのステージ 2 (メイン ループ) でのみ StartPointsToRun
プロパティをチェックします。詳細については、グローバルサーチアルゴリズムを参照してください。
例: 'bounds'
は、すべての境界を満たすポイントのみを実行します。
データ型: char
| string
XTolerance
— 解が等しいとみなす距離の許容範囲
1e-6
(既定値) | 非負のスカラー
ソリューションが等しいと見なすための距離の許容値。非負のスカラーとして指定します。ソルバーは、2 つのソリューションが互いに XTolerance
相対距離内にあり、目的関数値が互いに FunctionTolerance
相対差内にある場合、それらのソリューションを同一と見なします。両方の条件が満たされない場合、ソルバーはソリューションを別個のものとして報告します。すべてのローカル ソルバー実行の結果を取得するには、XTolerance
を 0
に設定します。結果を少なくするには、XTolerance
を大きい値に設定します。GlobalSearch
の詳細については、fmincon の実行時 の Update Solution Set を参照してください。MultiStart
の詳細については、 GlobalOptimSolution オブジェクトを作成する を参照してください。
例: 2e-4
データ型: double
オブジェクト関数
run | マルチスタートソルバーを実行する |
例
多次元問題でGlobalSearch
を実行する
複数の局所最小値を持つ最適化問題を作成し、GlobalSearch
を使用して大域最小値を見つけてみます。目的は、6 つのこぶを持つラクダの背中の問題です (ソルバーを実行する を参照)。
rng default % For reproducibility gs = GlobalSearch; sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ... + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4); problem = createOptimProblem('fmincon','x0',[-1,2],... 'objective',sixmin,'lb',[-3,-3],'ub',[3,3]); x = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points. All 8 local solver runs converged with a positive local solver exit flag.
x = 1×2
-0.0898 0.7127
次の構文を使用して、run
を呼び出すときに x
の目的関数値を要求できます。
[x,fval] = run(gs,problem)
ただし、fval
を要求しなかった場合、x
で目的関数の値を計算できます。
fval = sixmin(x)
fval = -1.0316
1次元問題でGlobalSearch
を実行する
いくつかの局所最小値を持つ関数を考えてみましょう。
fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])
グローバル最小値を検索するには、fmincon
'sqp'
アルゴリズムを使用して GlobalSearch
を実行します。
rng default % For reproducibility opts = optimoptions(@fmincon,'Algorithm','sqp'); problem = createOptimProblem('fmincon','objective',... fun,'x0',3,'lb',-5,'ub',5,'options',opts); gs = GlobalSearch; [x,f] = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points. All 23 local solver runs converged with a positive local solver exit flag.
x = -0.3080
f = -3.9032
GlobalSearch
MultiStart
の共通プロパティの使用
デフォルト以外の MultiStart
オブジェクトを作成します。
ms = MultiStart('FunctionTolerance',2e-4,'UseParallel',true)
ms = MultiStart with properties: UseParallel: 1 Display: 'final' FunctionTolerance: 2.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06
ms
から利用可能なプロパティを使用する GlobalSearch
オブジェクトを作成します。
gs = GlobalSearch(ms)
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 2.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06
gs
は ms
と同じ非デフォルトの値 FunctionTolerance
を持ちます。しかし、gs
は UseParallel
プロパティを使用しません。
GlobalSearch
プロパティを更新
FunctionTolerance
が「1e-4
」の GlobalSearch
オブジェクトを作成します。
gs = GlobalSearch('FunctionTolerance',1e-4)
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 1.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06
XTolerance
プロパティを 1e-3
に更新し、 StartPointsToRun
プロパティを 'bounds'
に更新します。
gs = GlobalSearch(gs,'XTolerance',1e-3,'StartPointsToRun','bounds')
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 1.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000e-03
ドット表記を使用して、プロパティを 1 つずつ更新することもできます。
gs.MaxTime = 1800
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 1.0000e-04 MaxTime: 1800 OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000e-03
アルゴリズム
アルゴリズムの詳細な説明については、グローバルサーチアルゴリズム を参照してください。Ugray ら [1] は、試行ポイントを生成するアルゴリズムと散布探索法の両方について説明しています。
参照
[1] Ugray, Zsolt, Leon Lasdon, John Plummer, Fred Glover, James Kelly, and Rafael Martí. Scatter Search and Local NLP Solvers: A Multistart Framework for Global Optimization. INFORMS Journal on Computing, Vol. 19, No. 3, 2007, pp. 328–340.
バージョン履歴
R2010a で導入R2024a: 出力機能:組み込み出力関数と更新されたoptimValues
構造
組み込みの @savelocalsolutions
出力関数は、すべてのローカル ソリューションをベース ワークスペースの localSolTable
変数に保存します。この出力関数は、実行可能なローカル ソリューションだけでなく、実行不可能なローカル ソリューションも保存します。
出力関数とプロット関数の optimValues 構造 に、最大の制約違反を持つ constrviolation
フィールドが含まれるようになりました。制約違反がない場合は、この値は 0
になります。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)