6

Java で確率的ヒル クライミングを実装しようとしています。このアルゴリズムがランダムに選択された新しいソリューションを作成し、それがどれほど悪い/良いかに基づいてソリューションを受け入れることを理解しています. たとえば、非常に悪い場合はわずかな可能性があり、わずかに悪い場合は選択される可能性が高くなりますが、この確率を Java で実装する方法がわかりません。

Googleでブラウジングしているときに、この方程式に出くわしました。

  • f は古いフィットネスを表します
  • f' は新しい適応度を表す
  • T はパラメーターです

ここに画像の説明を入力

この等式をどのように解釈すればよいか、私にはよくわかりません。

Javaでこれを実装する方法について誰か助けてもらえますか?

4

2 に答える 2

5

式の左辺pは、0 から 1 までの double になります。oldFitnessnewFitnessおよびTdouble にすることもできます。

コードには次のようなものがあります。

double p = 1 / (1 + Math.exp((oldFitness - newFitness) / T));
if (Math.random() < p) {
    // accept the new solution
于 2015-03-03T20:41:31.567 に答える
0

ヒル クライミング アルゴリズムについては、この本「 Artificial Intelligence a Modern Approach」でよく理解できます。この本にはコード リポジトリもあります。ここで見つけることができます。

そして、これは Java でのHillClimbing (HillclimbingSearch.java) の実装です。ただし、この Java ファイルには、他のソース ファイルをインポートする必要があります。コード リポジトリを参照してください。このクラスには、パブリック メソッド search() があります -

public List<Action> search(Problem p){}  

Problemメソッド シグネチャから、このメソッドにはp が必要であり、 が返さListれることがわかりますAction。これらを取得するには、 aimaフレームワークを使用する必要がありますProblemAction

確率的山登りについての詳しい説明はこちら

それが役立つことを願っています。
どうもありがとう。

于 2015-03-03T20:19:29.253 に答える