このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
オプションの変更
変更するオプションを決定する方法
グローバル ソルバーを実行した後、いくつかのグローバル オプションまたはローカル オプションを変更する必要がある場合があります。どのオプションを変更するかを決定するための指針は次のとおりです。
ローカル ソルバーに影響を与えるには、ローカル ソルバー オプションを設定します。
開始点またはソリューション セットに影響を与えるには、
problem
構造を変更するか、グローバル ソルバー オブジェクトのプロパティを設定します。
たとえば、次のものを取得します。
より多くのローカル最小値 - グローバル ソルバー オブジェクトのプロパティを設定します。
ローカル ソルバーの反復処理の高速化 - ローカル ソルバーのオプションを設定します。
ローカル ソリューションを同一と見なすためのさまざまな許容値 (より多くのローカル ソリューションまたはより少ないローカル ソリューションを取得するため) - グローバル ソルバー オブジェクトのプロパティを設定します。
コマンド ラインに表示されるさまざまな情報 - ローカル ソルバーからの反復表示 (ローカル ソルバー オプションの設定) またはグローバル情報 (グローバル ソルバー オブジェクトのプロパティの設定) のどちらを行うかを決定します。
異なる境界で異なる領域を調べる —
problem
構造で境界を設定します。
問題オプションの選択例
不等式制約を満たすポイントのみでローカル ソルバーを開始するには、グローバル ソルバー オブジェクトの
StartPointsToRun
プロパティを'bounds-ineqs'
に設定します。この設定により、ローカル ソルバーがこれらの制約を満たすポイントを探す必要がなくなるため、ソリューションの速度が向上します。ただし、この設定により、グローバル ソルバーが多くの開始点を拒否できるため、ローカル ソルバーの実行回数が大幅に減少する可能性があります。例については、実行可能な開始点のみを使用して最適化するを参照してください。fmincon
interior-point
アルゴリズムを使用するには、ローカル ソルバーAlgorithm
オプションを'interior-point'
に設定します。これを行う方法の例については、問題オプションの更新例 を参照してください。ローカル ソルバーに異なる境界を設定するには、
problem
構造体で境界を設定します。境界を設定してさまざまな領域を調べます。正のローカル終了フラグを持つすべてのソリューションを表示するには、グローバル ソルバー オブジェクトの
XTolerance
プロパティを0
に設定します。これを行う方法の例については、グローバルオプションの変更 を参照してください。
ローカルソルバーオプションの変更
ローカル オプションの値を変更する方法はいくつかあります。
ドット表記と
optimoptions
を使用して値を更新します。その構文は次のとおりです。problem.options = optimoptions(problem.options,'Parameter',value,...);
ローカル オプションを完全に置き換えることもできます。
problem.options = optimoptions(@solvername,'Parameter',value,...);
1 つのローカル オプションにドット表記を使用します。その構文は次のとおりです。
problem.options.Parameter = newvalue;
問題の構造全体を再作成します。詳細については、問題構造を作成する を参照してください。
問題オプションの更新例
問題構造を作成します。
problem = createOptimProblem('fmincon','x0',[-1 2], ... 'objective',@rosenboth);
fmincon
でsqp
アルゴリズムを使用するように問題を設定します。problem.options.Algorithm = 'sqp';
問題を更新して、目的関数で勾配を使用し、
FunctionTolerance
の値を1e-8
に、XTolerance
の値を1e-7
にします。problem.options = optimoptions(problem.options,'GradObj','on', ... 'FunctionTolerance',1e-8,'XTolerance',1e-7);
グローバルオプションの変更
GlobalSearch
または 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
ms
のXTolerance
の値が1e-3
と同じになるように変更するには、XTolerance
フィールドを更新します。ms.XTolerance = 1e-3
ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-06 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-03
現在の設定からオブジェクトを再構築します。たとえば、
ms
のFunctionTolerance
フィールドを1e-3
に設定し、XTolerance
の非デフォルト値を保持するには、次のようにします。ms = MultiStart(ms,'FunctionTolerance',1e-3)
ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-03 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-03
GlobalSearch
オブジェクトをMultiStart
オブジェクトに変換します (またはその逆)。たとえば、前の例のms
オブジェクトを使用して、XTolerance
とFunctionTolerance
と同じ値を持つ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: 1.0000e-03 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-03