Main Content

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

検索と投票

検索の定義

patternsearch では、検索 はポーリングの前に実行されるアルゴリズムです。検索では、現在のポイントよりも優れたポイントを見つけようとします。(より良いというのは、目的関数の値が低いことを意味します。)検索でより良いポイントが見つかった場合、そのより良いポイントが現在のポイントになり、その反復ではポーリングは実行されません。検索でより良いポイントが見つからない場合、patternsearch は投票を実行します。

デフォルトでは、patternsearch は検索を使用しません。検索するには、検索方法の使い方 を参照してください。

パターン検索 検索メソッド には、検索方法の使用を含む直接検索のフローチャートが含まれています。

パターン検索 検索メソッド

反復制限は、ポーリングメソッドを除くすべての組み込み検索メソッドに適用されます。検索方法に反復制限を選択した場合、反復制限に達するまで検索が有効になります。その後、patternsearch は検索を停止し、ポーリングのみを実行します。

検索方法の使い方

patternsearch で検索を使用するには:

  • ライブ エディターの最適化 タスクで、Specify solver options > Algorithm settings > Search function の検索機能を選択します。

  • コマンドラインで、optimoptions を使用して検索方法のオプションを作成します。たとえば、ラテンハイパーキューブ検索を使用するには、次のようにします。

    opts = optimoptions("patternsearch","SearchFcn",@searchlhs);

    すべての組み込み検索方法のリストを含む詳細については、patternsearch 関数リファレンス ページ、およびオプション リファレンスの 検索オプション セクションを参照してください。

独自の検索メソッドを記述できます。検索機能の構造 で説明されている構文を使用します。パターン検索で検索方法を使用するには、その関数ハンドルを Custom Function (SearchFcn) オプションとして指定します。

組み込み検索タイプ

  • ポーリング方法 — "classic" アルゴリズムでは、任意のポーリング方法を検索アルゴリズムとして使用できます。patternsearch は、検索として 1 つのポーリング ステップを実行します。このタイプの検索が有益であるためには、検索タイプがアンケートタイプと異なる必要があります。(patternsearch は、選択された検索方法がアンケートタイプと同じ場合、検索を行いません。)したがって、MADS 検索を GSS または GPS ポーリングとともに使用するか、GSS または GPS 検索を MADS ポーリングとともに使用します。

    メモ

    Algorithm オプションが "classic" の場合にのみ、ポーリング方式を検索方式として使用できます。

  • fminsearch は Nelder-Mead とも呼ばれ、fminsearch は制約のない問題にのみ適用されます。fminsearch は自然な停止基準まで実行され、1 ステップだけ実行することはありません。したがって、fminsearch は 1 回の反復にのみ使用します。これは既定の設定です。設定を変更するには、検索オプション を参照してください。

  • gaga は自然な停止基準に従って実行されます。1 ステップだけ実行されるわけではありません。したがって、ga は 1 回の反復にのみ使用します。これは既定の設定です。設定を変更するには、検索オプション を参照してください。

  • ラテンハイパーキューブ検索 — 検索オプション で説明されています。デフォルトでは、15 個の n ポイントを検索します。ここで、n は変数の数であり、最初の反復中にのみ検索されます。設定を変更するには、検索オプション を参照してください。

  • "rbfsurrogate"検索オプション で説明されているように、surrogateopt サロゲート (代理最適化アルゴリズム を参照) に似たラジアル基底関数サロゲートを使用して検索します。この検索は関数評価の回数を減らすことができますが、比較的時間がかかるため、時間のかかる目的関数に最適です。

検索を使用する場合

検索方法を使用する主な理由は 2 つあります。

速度を上げるための検索方法

一般的に、検索方法が最適化を高速化するかどうかは事前にわかりません。そのため、次の場合には検索方法を試してください。

  • 類似の問題、または異なるパラメータを持つ同じ問題に対して繰り返し最適化を実行しています。

  • さまざまな検索方法を試して、より短い解決時間を見つけることができます。

検索によって必ずしも最適化が高速化されるわけではありません。それが当てはまる例については、検索と投票 を参照してください。

より良い解決策を探す方法

検索メソッドはポーリングメソッドの前に実行されるため、検索を使用することは、最適化のために別の開始点を選択することと同じになります。このコメントは、Nelder-Mead、ga、およびラテンハイパーキューブ検索メソッドに当てはまります。これらはすべて、デフォルトで最適化の開始時に 1 回実行されます。ga およびラテンハイパーキューブ検索は確率的であり、複数の 吸引域 を検索できます。

関連するトピック