Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

オプションの変更

変更するオプションを決定する方法

グローバル ソルバーを実行した後、いくつかのグローバル オプションまたはローカル オプションを変更する必要がある場合があります。どのオプションを変更するかを決定するための指針は次のとおりです。

  • ローカル ソルバーに影響を与えるには、ローカル ソルバー オプションを設定します。

  • 開始点またはソリューション セットに影響を与えるには、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;
  • 問題の構造全体を再作成します。詳細については、問題構造を作成する を参照してください。

問題オプションの更新例

  1. 問題構造を作成します。

    problem = createOptimProblem('fmincon','x0',[-1 2], ...
        'objective',@rosenboth);
  2. fminconsqp アルゴリズムを使用するように問題を設定します。

    problem.options.Algorithm = 'sqp';
  3. 問題を更新して、目的関数で勾配を使用し、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

    msXTolerance の値が 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
  • 現在の設定からオブジェクトを再構築します。たとえば、msFunctionTolerance フィールドを 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 オブジェクトを使用して、XToleranceFunctionTolerance と同じ値を持つ 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

関連するトピック