このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
オプションの変更
変更するオプションを決定する方法
グローバル ソルバーを実行した後、いくつかのグローバル オプションまたはローカル オプションを変更する必要がある場合があります。どのオプションを変更するかを決定するための指針は次のとおりです。
ローカル ソルバーに影響を与えるには、ローカル ソルバーのオプションを設定します。
開始点またはソリューション セットに影響を与えるには、
problem構造を変更するか、グローバル ソルバー オブジェクトのプロパティを設定します。
たとえば、次のものを取得するには:
より多くのローカル最小値 - グローバル ソルバー オブジェクトのプロパティを設定します。
ローカル ソルバーの反復処理の高速化 - ローカル ソルバーのオプションを設定します。
局所解を同一と見なすためのさまざまな許容値 (より多くの局所解またはより少ない局所解を取得するため) - グローバル ソルバー オブジェクトのプロパティを設定します。
コマンド ラインに表示されるさまざまな情報 - ローカル ソルバーからの反復表示 (ローカル ソルバーのオプションを設定) を行うか、グローバル情報 (グローバル ソルバー オブジェクトのプロパティを設定) を行うかを決定します。
異なる境界で異なる領域を調べる —
problem構造で境界を設定します。
問題の選択肢を選択する例
不等式制約のみを満たすポイントでローカル ソルバーを開始するには、グローバル ソルバー オブジェクトの
StartPointsToRunプロパティを'bounds-ineqs'に設定します。この設定により、ローカル ソルバーがこれらの制約を満たすポイントを探す必要がなくなるため、ソリューションの速度が向上します。ただし、グローバル ソルバーは多くの開始点を拒否できるため、この設定によりローカル ソルバーの実行回数が大幅に減少する可能性があります。例については、実行可能な開始点のみを使用して最適化するを参照してください。fminconinterior-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-06msの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-03GlobalSearchオブジェクトを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