ショットガンヒルクライミングの詳細を実装して効果的にするにはどうすればよいですか?


7

私は現在、(少しの調査の後)ヒルクライミングの使用、より具体的にはショットガン(またはランダムリスタートヒルクライミングアルゴリズムのアイデアが最適であるように見える問題の解決策に取り組んでいます。最適な開始値を見つける方法を知る手がかりはありません。

しかし、このタイプのアルゴリズムについては、その背後にある基本的な考え方を除いて、多くの情報はありません。

[Shotgun]ヒルクライミングは、ヒルクライミングアルゴリズムの上に構築されたメタアルゴリズムです。ランダムな初期条件で、毎回山登りを繰り返します。最高のが維持されます。山登りの新しいランが保存された状態よりも優れた生成する場合、保存された状態を置き換えます。x0xmxm

私がこれを正しく理解している場合、これは次のようなものを意味します(最大化を想定):

x = -infinity;
for ( i = 1 .. N ) {
  x = max(x, hill_climbing(random_solution()));
}
return x;

しかし、これを本当に効果的にするにはどうすればよいですか?これは通常の山登りよりも優れていますか?ランダムな開始値を使用すると、特に巨大な検索スペースで多くの効果があるとは信じがたいです。より正確には、私は疑問に思います:

  • (つまりを実装)を選択するための、特に以前の反復の(中間)結果を知るための優れた戦略はありますか?x0random_solution
  • どのようにを選択するか、それは、完全な解が(かなり)見逃されないことを非常に確実にするために必要な反復回数です。N

回答:


8

複数の登りを行うことの背後にある一般的なアイデアは、局所的な最適値を回避しようとすることです。これが、ショットガンクライミングが単純なヒルクライミング法よりも優れている理由です。

通常、ランダムな値から始まります。一方、より良いものを推測できる場合は、それを初期値として使用することもできます。適切な開始値がわからない場合は、ランダムな値を使用するのが理にかなっています。

の適切な値はさまざまです。通常、停止基準を定義する必要があります。適切な基準は、特定のドメインによって異なる場合があります。たとえば、少数の移動でソリューションをまったく改善しない場合は、停止します。一般に、あなたはわかりません-ヒューリスティックを使用していて、保証はありません。実験的に適切な決定することもできます。NN

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.