このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
MultiStart
複数の局所最小値を見つける
説明
MultiStart
オブジェクトには、run
がローカル ソルバーを繰り返し実行して GlobalOptimSolution
オブジェクトを生成する方法に影響するプロパティ (オプション) が含まれています。実行すると、ソルバーはさまざまなポイントから開始して、問題に対する複数のローカル ソリューションを見つけようとします。
作成
説明
プロパティ
Display
— コマンドウィンドウへの表示レベル
'final'
(既定値) | 'iter'
| 'off'
コマンド ウィンドウへの表示レベル。次の文字ベクトルまたは文字列のいずれかとして指定します。
'final'
–run
が終了した後に概要結果を報告します。'iter'
– 最終サマリーに加えて、最初のfmincon
実行後、ステージ 1 後、200 の開始ポイント後、およびfmincon
の実行後に結果を報告します。'off'
– 表示なし。
例: 'iter'
データ型: char
| string
FunctionTolerance
— 解が等しいとみなす関数値の許容範囲
1e-6
(既定値) | 非負のスカラー
ソリューションが等しいと見なす関数値の許容値。非負のスカラーとして指定します。ソルバーは、2 つのソリューションが互いに XTolerance
相対距離内にあり、目的関数値が互いに FunctionTolerance
相対差内にある場合、それらのソリューションを同一と見なします。両方の条件が満たされない場合、ソルバーはソリューションを別個のものとして報告します。すべてのローカル ソルバー実行の結果を取得するには、FunctionTolerance
を 0
に設定します。結果を少なくするには、FunctionTolerance
を大きい値に設定します。GlobalSearch
の詳細については、fmincon の実行時 の Update Solution Set を参照してください。MultiStart
の詳細については、 GlobalOptimSolution オブジェクトを作成する を参照してください。
例: 1e-4
データ型: double
OutputFcn
— ソルバーの進行状況を報告するか、ソルバーを停止する
[]
(既定値) | @savelocalsolutions
| 関数ハンドル | 関数ハンドルの cell 配列
関数ハンドルまたは関数ハンドルのセル配列として指定され、ソルバーの進行状況を報告したり、ソルバーを停止したりします。出力関数は、各ローカル ソルバー呼び出しの後に実行されます。これらは、グローバル ソルバーの開始時と終了時にも実行されます。出力関数 で説明されている構文を使用して出力関数を記述します。カスタム GlobalSearch 出力関数を参照してください。
組み込みの @savelocalsolutions
出力関数は、すべてのローカル ソリューションをベース ワークスペースの localSolTable
変数に保存します。この出力関数は、実行可能なローカル ソリューションだけでなく、実行不可能なローカル ソリューションも保存します。例については、すべてのローカルソリューションを収集を参照してください。
データ型: cell
| function_handle
PlotFcn
— プロットソルバーの進行状況
[]
(既定値) | 関数ハンドル | 関数ハンドルの cell 配列
関数ハンドルまたは関数ハンドルのセル配列として指定された、ソルバーの進行状況をプロットします。プロット関数は、各ローカル ソルバー呼び出しの後に実行されます。これらは、グローバル ソルバーの開始時と終了時にも実行されます。出力関数 で説明されている構文を使用してプロット関数を記述します。
組み込みのプロット関数が 2 つあります。
@gsplotbestf
は最適な目的関数値をプロットします。@gsplotfunccount
は関数評価の回数をプロットします。
MultiStart プロット関数を参照してください。
例: @gsplotbestf
データ型: cell
| function_handle
StartPointsToRun
— 実行開始地点
'all'
(既定値) | 'bounds'
| 'bounds-ineqs'
実行の開始ポイントは次のように指定します:
'all'
— すべてのスタートポイントを実行します。'bounds'
— 境界を満たす開始点のみを実行します。'bounds-ineqs'
— 境界と不等式制約を満たす開始点のみを実行します。
例: 'bounds'
は、すべての境界を満たすポイントのみを実行します。
データ型: char
| string
UseParallel
— ローカルソルバーの呼び出しを複数のプロセッサに分散する
false
(既定値) | true
ローカル ソルバーの呼び出しを、false
または true
として指定された複数のプロセッサに分散します。
false
— 並行して実行しないでください。true
— ローカル ソルバーの呼び出しを複数のプロセッサに分散します。
例: true
データ型: logical
XTolerance
— 解が等しいとみなす距離の許容範囲
1e-6
(既定値) | 非負のスカラー
ソリューションが等しいと見なすための距離の許容値。非負のスカラーとして指定します。ソルバーは、2 つのソリューションが互いに XTolerance
相対距離内にあり、目的関数値が互いに FunctionTolerance
相対差内にある場合、それらのソリューションを同一と見なします。両方の条件が満たされない場合、ソルバーはソリューションを別個のものとして報告します。すべてのローカル ソルバー実行の結果を取得するには、XTolerance
を 0
に設定します。結果を少なくするには、XTolerance
を大きい値に設定します。GlobalSearch
の詳細については、fmincon の実行時 の Update Solution Set を参照してください。MultiStart
の詳細については、 GlobalOptimSolution オブジェクトを作成する を参照してください。
例: 2e-4
データ型: double
オブジェクト関数
run | マルチスタートソルバーを実行する |
例
MultiStart
の実行
いくつかの局所最小値を持つ関数を考えてみましょう。
fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])
グローバル最小値を検索するには、fmincon
'sqp'
アルゴリズムを使用して、問題の 20 個のインスタンスに対して MultiStart
を実行します。
rng default % For reproducibility opts = optimoptions(@fmincon,'Algorithm','sqp'); problem = createOptimProblem('fmincon','objective',... fun,'x0',3,'lb',-5,'ub',5,'options',opts); ms = MultiStart; [x,f] = run(ms,problem,20)
MultiStart completed the runs from all start points. All 20 local solver runs converged with a positive local solver exitflag.
x = -0.3080
f = -3.9032
既定の MultiStart
オブジェクト
デフォルトのプロパティを持つ MultiStart
オブジェクトを作成します。
ms = MultiStart
ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-06 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06
デフォルト以外の MultiStart
オブジェクト
デフォルトよりも緩い許容値を持つ MultiStart
オブジェクトを作成します。これにより、ソルバーは互いに近いソリューションをより少なく返します。また、MultiStart
では、境界と不等式制約に関して実行可能な初期点のみを実行します。
ms = MultiStart('FunctionTolerance',2e-4,'XTolerance',5e-3,... 'StartPointsToRun','bounds-ineqs')
ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 2.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds-ineqs' XTolerance: 0.0050
MultiStart
GlobalSearch
の共通プロパティの使用
デフォルト以外の GlobalSearch
オブジェクトを作成します。
gs = GlobalSearch('FunctionTolerance',2e-4,'NumTrialPoints',2000)
gs = GlobalSearch with properties: NumTrialPoints: 2000 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
から利用可能なプロパティを使用する MultiStart
オブジェクトを作成します。
ms = MultiStart(gs)
ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 2.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06
ms
は gs
と同じ非デフォルトの値 FunctionTolerance
を持ちます。しかし、ms
は NumTrialPoints
プロパティを使用しません。
MultiStart
プロパティを更新
FunctionTolerance
が「1e-4
」の MultiStart
オブジェクトを作成します。
ms = MultiStart('FunctionTolerance',1e-4)
ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06
XTolerance
プロパティを 1e-3
に更新し、StartPointsToRun
プロパティを 'bounds'
に更新します。
ms = MultiStart(ms,'XTolerance',1e-3,'StartPointsToRun','bounds')
ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000e-03
ドット表記を使用して、プロパティを 1 つずつ更新することもできます。
ms.MaxTime = 1800
ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-04 MaxTime: 1800 OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000e-03
アルゴリズム
アルゴリズムの詳細な説明については、マルチスタートアルゴリズム を参照してください。
拡張機能
自動並列サポート
Parallel Computing Toolbox™ を使用して自動的に並列計算を実行することで、コードを高速化します。
並列実行するには、'UseParallel'
オプションを true
に設定します。
options = optimoptions('
solvername
','UseParallel',true)
詳細については、Global Optimization Toolbox で並列処理を使用する方法を参照してください。
バージョン履歴
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)