1

私はアリのコロニー最適化アルゴリズムをやっています。いくつか質問があります。throw を検索しようとしましたが、何も見つかりませんでした。

1 — アルゴリズムの結果は?

いくつかのグラフがあり、開始点から目標点までの最適なパスを見つける必要がありますよね? このアルゴリズムは、ダイクストラ アルゴリズム (1 つの最短パスを見つける) のようには機能しません。そこには確率要素があります。10 サイクル後、5000 匹のアリが最悪の経路を選択できますが、それにもかかわらず、より良い経路のフェロモンは 1000 倍になります。つまり、4999 匹のアリが選択した(99% の確率)1 -> 3 -> 5という事実にもかかわらず、 5000 番目のアリがパスを選択できることを意味します(平均確率は 1%)。1 -> 2 -> 5あくまでも一例です。したがって、問題は、最も最適化された (最適な、いくつかのパラメーターで最適な) パスを検出する方法です。それを検出する必要がありますか、または1 -> 2 -> 5私の例では正しい結果 (起こります...) であり、最後に選択したパスを出力する必要がありますか?

2 — 結果の出力方法

この答えはおそらく最初の答えに依存します。どうやって?各サイクルの動作アルゴリズムとプロトコルの総まとめを出力する必要があると思います。

要約データは次のようになります。

Path found: Yes/no
Path: path/message, that best path is not found
Iteration: N

プロトコルは次のとおりです。

Start data for iteration 3
    Pheromone level for this iteration
    Path found on this level or not (?)
    Path on this iteration (?)
End data for iteration 3

Start data for iteration 2
    Pheromone level for this iteration
    Path found on this level or not (?)
    Path on this iteration (?)
End data for iteration 2


Start data for iteration 1
    Pheromone level for this iteration
    Path found on this level or not (?)
    Path on this iteration (?)
End data for iteration 1

助言がありますか?各反復の出力データを手伝ってください。

3 — フェロモン レベルは、特定の値に達すると成長を停止します

なぜそうなのですか?例えば(500匹のアリ)、ベストパス上のフェロモンレベルは検索(サイクル)の最大10ステップまで成長し、その後安定します。それは良い動作ですか、それとも私のアルゴリズムにエラーがあることを意味しますか? エラーがない場合、なぜこの動作が表示されるのですか?

4 — 私のプログラムのアーキテクチャ

onclickアルゴリズムの NEXT STEP (次のサイクル) を呼び出すハンドラを作成するのが良い方法だと思います。しばらくループしていた例を見ました(リンクを覚えていない、お見せできません:'(今)。私の方法は受け入れられますか、それともまったく間違っていますか?

4

1 に答える 1

2

1)通常、すべての反復のこれまでの最善のパスを保存します(エリートAntシステムなどのように)。これは最終結果でもあります。

2)サイクルとは、反復を意味しますか?とにかく、「このレベルで見つかったパスかどうか」に関しては、最初に成功した (完全な) パスのみを許可するか、すべてのアリがパスを見つけてループを切断するまですべてのアリを実行させます。そうでなければ、フェロモンを配置してパスを記録しても、ここではあまり意味がないと思います。したがって、もちろん、各反復の最適なパスの長さ (および配置するフェロモン) とそのパスの頂点を記録することをお勧めします。

3) 通常、フェロモンが停滞し、特定の回数の反復でより良い解決策が見つからない場合、アルゴリズムを破ります。

4) 確かに間違っていません。私もどこかでオンライン実装を見たことがありますが、アリの様子を順を追って見ることができなかったことに少しがっかりしました...

于 2014-04-17T20:26:58.090 に答える