このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
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)