このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
MultiStart
複数の局所最小値を見つける
説明
MultiStart
オブジェクトには、run
がローカル ソルバーを繰り返し実行して GlobalOptimSolution
オブジェクトを生成する方法に影響するプロパティ (オプション) が含まれています。実行すると、ソルバーはさまざまなポイントから開始して、問題に対する複数の局所解を見つけようとします。
作成
説明
ms = MultiStart
は、プロパティがデフォルトに設定された MultiStart
ソルバーである ms
を作成します。
ms = MultiStart(Name,Value)
は、名前と値のペアを使用してプロパティを設定します。
ms = MultiStart(oldMS,Name,Value)
は oldMS
MultiStart
ソルバーのコピーを作成し、名前と値のペアを使用してプロパティを設定します。
ms = MultiStart(gs)
は、gs
GlobalSearch
ソルバーの共通パラメーター値を使用して、MultiStart
ソルバーである ms
を作成します。
プロパティ
コマンド ウィンドウへの表示レベル。次の文字ベクトルまたは文字列のいずれかとして指定します。
'final'
–run
が終了した後に概要結果を報告します。'iter'
– 最終サマリーに加えて、最初のfmincon
実行後、ステージ 1 後、200 の開始ポイント後、およびfmincon
の実行後に結果を報告します。'off'
– 何も表示されない。
例: 'iter'
データ型: char
| string
ソリューションが等しいと見なす関数値の許容範囲。非負のスカラーとして指定します。ソルバーは、2 つの解が互いに XTolerance
相対距離以内であり、目的関数値が互いに FunctionTolerance
相対差以内である場合に、それらを同一と見なします。両方の条件が満たされない場合、ソルバーはソリューションを別個のものとして報告します。すべてのローカル ソルバー実行の結果を取得するには、FunctionTolerance
を 0
に設定します。結果を少なくするには、FunctionTolerance
を大きい値に設定します。GlobalSearch
の詳細については、fminconの実行時 の Update Solution Set を参照してください。MultiStart
の詳細については、GlobalOptimSolutionオブジェクトを作成する を参照してください。
例: 1e-4
データ型: double
関数ハンドルまたは関数ハンドルのセル配列として指定され、ソルバーの進行状況を報告したり、ソルバーを停止したりします。出力関数は、各ローカル ソルバーの呼び出し後に実行されます。これらは、グローバル ソルバーの開始時と終了時にも実行されます。OutputFcn で説明されている構文を使用して出力関数を記述します。カスタム GlobalSearch 出力関数を参照してください。
組み込みの @savelocalsolutions
出力関数は、すべての局所解をベース ワークスペースの localSolTable
変数に保存します。この出力関数は、実行可能な局所解だけでなく、実行不可能な局所解も保存します。例については、すべての局所解を収集するを参照してください。
データ型: cell
| function_handle
関数ハンドルまたは関数ハンドルのセル配列として指定された、ソルバーの進行状況をプロットします。プロット関数は、各ローカル ソルバーの呼び出し後に実行されます。これらは、グローバル ソルバーの開始時と終了時にも実行されます。OutputFcn で説明されている構文を使用してプロット関数を記述します。
組み込みのプロット関数が 2 つあります。
@gsplotbestf
は最適な目的関数の値をプロットします。@gsplotfunccount
は関数評価の回数をプロットします。
MultiStart プロット関数を参照してください。
例: @gsplotbestf
データ型: cell
| function_handle
実行の開始ポイント。次のように指定します:
'all'
— すべての開始ポイントを実行します。'bounds'
— 境界を満たす開始点のみを実行します。'bounds-ineqs'
— 境界と不等式制約を満たす開始点のみを実行します。
例: 'bounds'
はすべての境界を満たすポイントのみを実行します。
データ型: char
| string
ローカル ソルバーの呼び出しを、false
または true
として指定された複数のプロセッサに分散します。
false
— 並行して実行しません。true
— ローカル ソルバーの呼び出しを複数のプロセッサに分散します。
例: true
データ型: logical
ソリューションが等しいと見なす距離の許容値。非負のスカラーとして指定します。ソルバーは、2 つの解が互いに XTolerance
相対距離以内であり、目的関数値が互いに FunctionTolerance
相対差以内である場合に、それらを同一と見なします。両方の条件が満たされない場合、ソルバーはソリューションを別個のものとして報告します。すべてのローカル ソルバー実行の結果を取得するには、XTolerance
を 0
に設定します。結果を少なくするには、XTolerance
を大きい値に設定します。GlobalSearch
の詳細については、fminconの実行時 の Update Solution Set を参照してください。MultiStart
の詳細については、GlobalOptimSolutionオブジェクトを作成する を参照してください。
例: 2e-4
データ型: double
オブジェクト関数
run | マルチスタートソルバーを実行する |
例
いくつかの局所最小値を持つ関数を考えてみましょう。
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
オブジェクトを作成します。
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
に実行させます。
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
デフォルト以外の 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
プロパティを使用しません。
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
アルゴリズム
アルゴリズムの詳細な説明については、マルチスタートアルゴリズム を参照してください。
拡張機能
並列実行するには、'UseParallel'
オプションを true
に設定します。
options = optimoptions('
solvername
','UseParallel',true)
詳細については、Global Optimization Toolbox で並列処理を使用する方法を参照してください。
バージョン履歴
R2010a で導入組み込みの @savelocalsolutions
出力関数は、すべての局所解をベース ワークスペースの localSolTable
変数に保存します。この出力関数は、実行可能な局所解だけでなく、実行不可能な局所解も保存します。
出力関数とプロット関数の optimValues 構造体 に、最大の制約違反を持つ constrviolation
フィールドが含まれるようになりました。制約違反がない場合は、この値は 0
になります。
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)