Main Content

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

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 秒が経過すると停止します。時間はプロセッサ サイクルではなく、壁時計 を意味します。既定値は Inf です。

出力関数

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

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

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

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

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

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

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

メモ

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

実行開始ポイント

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

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

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

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

Xトレランス

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

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

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

トライアルポイント数

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

既定値: 1000

ステージワンポイント数

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

既定値: 200

最大待機サイクル

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

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

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

既定値: 20

流域半径係数

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

既定値: 0.2

距離閾値係数

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

ペナルティしきい値係数

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

既定値: 0.2

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

UseParallel

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

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

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

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