メインコンテンツ

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

GlobalSearch と MultiStart プロパティ (オプション)

プロパティの設定方法

デフォルト以外のプロパティを持つ GlobalSearch または MultiStart オブジェクトを作成するには、名前と値のペアを使用します。例えば、反復表示を持ち、境界と不等式に関して実行可能点からのみ実行されるGlobalSearchオブジェクトを作成するには、次のように入力します。

gs = GlobalSearch("Display","iter", ...
    "StartPointsToRun","bounds-ineqs");

既存の GlobalSearch または MultiStart オブジェクトのプロパティを設定するには、ドット表記を使用します。例えば、msMultiStartオブジェクトで、Displayプロパティを"iter"に設定する場合は、次のように入力します。

ms.Display = "iter";

既存のオブジェクトの複数のプロパティを同時に設定するには、名前と値の引数を持つコンストラクター (GlobalSearch または MultiStart) を使用します。たとえば、Displayプロパティを"iter"に設定し、MaxTimeプロパティを100に設定するには、次のように入力します。

ms = MultiStart(ms,Display="iter",MaxTime=100);

プロパティの設定の詳細については、グローバルオプションの変更 を参照してください。

両方のオブジェクトのプロパティ

GlobalSearch オブジェクトから MultiStart オブジェクトを作成でき、その逆も可能です。

既存のオブジェクトから新しいオブジェクトを作成するための構文は次のとおりです。

ms = MultiStart(gs);
or
gs = GlobalSearch(ms);

新しいオブジェクトには、古いオブジェクトに適用されるプロパティが含まれます。このセクションでは、これらの共有プロパティについて説明します。

表示

Display プロパティの値は次のとおりです。

  • "final" (デフォルト) — 最後のソルバー実行後の要約結果をコマンドラインに出力します。

  • "off" — コマンドラインに出力がありません。

  • "iter" — 各ローカル ソルバーの実行後にコマンド ラインに結果の概要を表示します。

FunctionTolerance

FunctionTolerance プロパティは、局所解のベクトルを作成するためにソルバーが 2 つの目的関数の値を同一と見なすために、それらの値がどれだけ近い必要があるかを表します。すべてのローカル ソルバー実行の結果を取得するには、FunctionTolerance0 に設定します。結果を少なくするには、FunctionTolerance を大きい値に設定します。

ソルバーは、2 つのソリューションが互いに XTolerance 距離内にあり、目的関数の値が互いに FunctionTolerance 以内である場合に、それらを同一と見なします。両方の条件が満たされない場合、ソルバーはソリューションを別個のものとして報告します。許容範囲は絶対的なものではなく、相対的なものです。詳細については、GlobalSearch の場合は fminconの実行時MultiStart の場合は GlobalOptimSolutionオブジェクトを作成する を参照してください。

MaxTime

MaxTime プロパティは、ソルバーの実行開始からの秒数の許容範囲を表します。ソルバーは、実行開始から MaxTime 秒が経過すると停止します。時間はプロセッサ サイクルではなく、壁時計 を意味します。既定値は Inf です。

OutputFcn

OutputFcn プロパティは、各ローカル ソルバーの実行が完了した後に、グローバル ソルバーに 1 つ以上の出力関数を実行するように指示します。出力関数は、グローバル ソルバーの開始時と終了時にも実行されます。適切な構文で記述された出力関数へのハンドルを含めるか、そのようなハンドルのセル配列を含めます。デフォルトは空のエントリ ([]) です。見つかったすべての局所解を収集する組み込み出力関数が 1 つあります。これを使用するには、ソルバーパラメーターOutputFcn=@savelocalsolutions を設定します。GlobalSearchとMultiStartの出力関数を参照してください。

出力関数の構文は次のとおりです。

stop = outFcn(optimValues,state)
  • stop はブール値です。true の場合、アルゴリズムは停止します。false の場合、アルゴリズムは続行されます。

    メモ

    ローカル ソルバーには出力関数を設定できます。ローカル ソルバーの出力関数によってローカル ソルバーの実行が停止しても、グローバル ソルバーは必ずしも停止するわけではありません。この場合にグローバル ソルバーを停止したい場合は、optimValues.localsolution.exitflag=-1 のときにグローバル ソルバーの出力関数を停止します。

  • optimValues は、optimValues 構造体 で説明される構造体です。

  • state はグローバル アルゴリズムの現在の状態です。

    • "init" — グローバル ソルバーがローカル ソルバーを呼び出していません。optimValues 構造のフィールドは空です。ただし、localrunindex (0) と、目的関数と制約関数評価回数を含む funccount は除きます。

    • "iter" — グローバル ソルバーは、ローカル ソルバーの実行ごとに出力関数を呼び出します。

    • "done" — グローバル ソルバーがローカル ソルバーの呼び出しを終了しました。optimValues 内のフィールドは通常、state="iter" を使用した最終出力関数呼び出しの値と同じになります。ただし、GlobalSearch アルゴリズムがローカル ソルバーの一部ではない関数評価を実行した可能性があるため、GlobalSearchoptimValues.funccount の値は、"iter" を使用した最後の関数呼び出しの値よりも大きくなる可能性があります。詳細については、グローバルサーチアルゴリズムを参照してください。

出力関数の使用例については、カスタム GlobalSearch 出力関数 を参照してください。

メモ

MultiStartUseParallel オプションが true に設定され、開いている parpool がある場合、出力関数とプロット関数は実行されません。

optimValues 構造体.  optimValues 構造には次のフィールドが含まれています。

  • bestx — 現在のベストポイント

  • bestfvalbestx における目的関数の値

  • constrviolation — 最大制約違反。制約違反がない場合はゼロ。

  • funccount — 関数評価の総数

  • localrunindex — ローカルソルバー実行のインデックス

  • localsolution — ローカルソルバー呼び出しの出力の一部を含む構造体: XFvalExitflag

PlotFcn

PlotFcn プロパティは、各ローカル ソルバーの実行が完了した後に、グローバル ソルバーに 1 つ以上のプロット関数を実行するように指示します。適切な構文で記述されたプロット関数へのハンドルを含めるか、そのようなハンドルのセル配列を含めます。デフォルトは空のエントリ ([]) です。

プロット関数の構文は出力関数の構文と同じです。詳細は、OutputFcnを参照してください。

グローバル ソルバーには、次の 2 つの定義済みプロット関数があります。

  • @gsplotbestf は最適な目的関数の値をプロットします。

  • @gsplotfunccount は関数評価の回数をプロットします。

プロット関数の使用例については、MultiStart プロット関数 を参照してください。

複数のプロット関数を指定すると、すべてのプロットが同じウィンドウにサブプロットとして表示されます。任意のサブプロットを右クリックすると、別の図ウィンドウに大きなバージョンが表示されます。

メモ

MultiStartUseParallel オプションが true に設定され、開いている parpool がある場合、出力関数とプロット関数は実行されません。

メモ

プロット関数のフレームワークで座標軸が管理されるため、プロット関数は subplot ステートメントをサポートしていません。複数のサブプロットを指定するには、個別のプロット関数を記述し、cell 配列としてソルバーに渡します。

options = optimoptions("solvername",PlotFcn={@plot1,@plot2,@plot3});

出力関数は subplot をサポートするため、プロット関数ではなく出力関数を使用すると、1 つの関数に複数のプロットを含めることができます。

StartPointsToRun

StartPointsToRun プロパティは、特定の開始ポイントを実行から除外するようにソルバーに指示します。

  • all — すべての開始点を受け入れます。

  • bounds — 境界を満たさない開始点を拒否します。

  • bounds-ineqs — 境界または不等式制約を満たさない開始点を拒否します。

XTolerance

XTolerance プロパティは、局所解のベクトルを作成するためにソルバーが 2 つのポイントを同一と見なすために、それらのポイントがどれだけ近い必要があるかを表します。すべてのローカル ソルバー実行の結果を取得するには、XTolerance0 に設定します。結果を少なくするには、XTolerance を大きい値に設定します。ソルバーは、ユークリッド距離である norm を使用して 2 つのポイント間の距離を計算します。

ソルバーは、2 つのソリューションが互いに XTolerance 距離内にあり、目的関数の値が互いに FunctionTolerance 以内である場合に、それらを同一と見なします。両方の条件が満たされない場合、ソルバーはソリューションを別個のものとして報告します。許容範囲は絶対的なものではなく、相対的なものです。詳細については、GlobalSearch の場合は fminconの実行時MultiStart の場合は GlobalOptimSolutionオブジェクトを作成する を参照してください。

グローバルサーチプロパティ

NumTrialPoints

problem 構造の x0 に加えて検査する潜在的な開始ポイントの数。GlobalSearch は、複数のテストに合格した潜在的な開始ポイントのみを実行します。詳細については、グローバルサーチアルゴリズムを参照してください。

既定の設定: 1000

NumStageOnePoints

ステージ 1 のスタート ポイントの数。詳細は、ステージ1のスタートポイントを取得して実行を参照してください。

既定の設定: 200

MaxWaitCycle

アルゴリズム内のいくつかのポイントに現れる正の整数許容値。

  • MaxWaitCycle 回の連続試行ポイントの観測されたペナルティ関数が少なくともペナルティしきい値である場合は、ペナルティしきい値を上げます (PenaltyThresholdFactor を参照)。

  • MaxWaitCycle 連続する試行ポイントが盆地内にある場合は、その盆地の半径を更新します (BasinRadiusFactor を参照)。

既定の設定: 20

BasinRadiusFactor

連続する開始点が MaxWaitCycle 個盆地内に入ると、盆地の半径は減少します。流域の半径は 1-BasinRadiusFactor 分の 1 に減少します。

既定の設定: 0.2

DistanceThresholdFactor

試行ポイントが既存の引き込み領域内にあるかどうかを判断するための乗数。詳細は、ステージ2のトライアルポイントを調べてfminconが実行されるかどうかを確認しますを参照してください。既定の設定: 0.75

PenaltyThresholdFactor

ペナルティしきい値の増加を決定します。詳細については、「大きなカウンター値への対応」を参照してください。

既定の設定: 0.2

マルチスタートプロパティ

s

UseParallel プロパティは、ソルバーが開始点を複数のプロセッサに分散するかどうかを決定します。

  • false (デフォルト) — 並列実行しません。

  • true — 並列で実行します。

ソルバーを並列実行するには、parpool を使用して並列環境を設定する必要があります。詳細は、Global Optimization Toolbox で並列処理を使用する方法を参照してください。