Antコロニーアルゴリズム


13

私はコースプロジェクトのためにアリコロニーシミュレーターに取り組んでいる学生です。そのアルゴリズムは(明らかに)蟻コロニーアルゴリズムです。アルゴリズムにはさまざまな形式がありますが、それらはすべて数学的に詳細すぎるため、次のようなアプローチを採用しました。

  • アリはコロニーで生まれ、コロニーを維持するために源から食物を集めなければなりません。
  • すべてのアリは似ています。
  • アリが移動する領域は1000x1000グリッドであるため、すべてのグリッドポイントはアリが占有する有効なポイントとして機能します。今、私が遭遇したすべてのアルゴリズムは、頂点とエッジを別々に処理することを伴いますが、アリの動きを4方向(上下左右)に制限しているので、フェロモンをどこに置くかは関係ないと思います。
  • 上記のグリッドポイントはフェロモンを保存します。
  • アリは、食物を運んでいる場合にのみフェロモンを落とします。
  • 位置(i、j)のアリの場合、4つの隣接ノードのフェロモン量を単純な確率式で考慮することにより、次のステップでどこに移動するかを決定します。つまり、ノードに移動する確率は(特定の隣接ノードのフェロモン量)/(4つの隣接ノードのフェロモン量の合計)。
  • アリは、元の位置に戻ることはできません。それができるのは、食物がある場所にいるか、そのコロニーにいる場合だけです。

今、私の懸念は(そしてプログラムで実際に何が起こっているのか)アリFIRSTが食物のある位置に到達し、それを拾うと、アルゴリズムが機能する方法で、どこにでも移動できることです!これは、フェロモントレイルを離れるのは、餌を食べる前ではなく、最初のアリであるため、既存のトレイルがないためです。

アリがどこにでも移動できる場合、食物源に到達したアリは、ほとんどそれに従う傾向があります。コロニーに向かって戻っていない場合でも。これは、アルゴリズム全体の目的に反します。

だから私の質問は

  • 上記の懸念は有効ですか?いいえの場合、なぜですか?はいの場合、どのように対処しますか?
  • 実際に機能させるために、アルゴリズムの基本的な理解を変更する必要がありますか?
  • 私のような初心者がこの場合見逃すかもしれない他の微妙でありながら重要なことは何ですか?

1
アリのコロニーを構築する場合、2種類のフェロモンマークがあります。「通常」は常にアリが移動する場所に残され、「食べ物」はアリが食物を運ぶだけが残します。アリは、食物を運んでいる場合は「通常の」フェロモンの集中度が高くなり、そうでない場合は「食物」マークに向かって移動します。また、私はアリを「空腹」と「満腹」にします。空腹のアリは、新しい食料源を探すために、「食料」のマークに向かって移動しますが、「通常の」マークからは離れます。(グリッドも六角形にしますが、それはポイントではありません。)
9000

多くのバリエーションがありますが、アリのコロニーアルゴリズムのほとんどは、アリが家に帰る道を覚えていると想定しています。IOW、それはすでに訪れたノードを知っています。フェロモンは、ランダムに移動するアリのために作用します。
ダンク

シミュレーションをプレイしたことがありますか?

「私はそこアルゴリズムのさまざまな形態があるが、我々は我々が持っているのアプローチを取ったので、あまりにも数学的に私たちのために詳細に説明されたそれらのすべてが...知っている」「あなたがcouldn場合は、あなたが実際にあなたが与えられた割り当てをやっていますアルゴリズムを理解していますか?
ドーバル

@ Doval:選択したプロジェクトを実行するだけです。私たちはいかなる方法でもフィールドに制約されませんでした。このコースは、C ++の入門コースです。インストラクターは、ソフトウェア開発の経験が欲しいだけです。
トランジスタ

回答:


6

これはACOの仕組みではありません。ACOは、アリがグリッド内のすべてのポイントを移動した後にのみフェロモンをドロップします。次に、何か(おそらく合計移動時間)を評価してから、善良なアリのフェロモンをドロップし、繰り返します。

通常、同じ頂点に2回移動することはありませんが、実装の特殊性のためにこれをカスタマイズできます。

フェロモンは毎回落とされるのではなく、どこにでも移動した後に落とされ、何かが評価されて、どのアリが優れているかが判断れます。より良いアリは、フェロモン(おそらく最高の25%のパフォーマンスのアリ)を落とします。


ACO -私は同意することができます目標は、問題解決のためのアリコロニー(ACOアルゴリズムをシミュレートする場合は特に、各ステップpheremoneをドロップすることによって動作し、他のアルゴリズムをより効率的にするための措置をとる「これはアリのコロニーがないものです」以外に、しかし、必ずしも本物のアリのようではありません)。
ローガンピックアップ

1

私が他の人から見た実装、そして私が自分で書いた実装は、食物に到達した後、食物に到達するために移動した経路に沿って常にアリにフェロモンを放出させました。つまり、アリはランダムウォークの後、コロニーから食物に向かって行進します。アリが食物に到達することに成功したのみ、コロニーから食物へのアリがたどる経路はフェロモンを使用してマークされます。往復は明示的にシミュレートされていません。一般に、現在の反復でフェロモンが堆積される前に、複数のアリがコースを実行します。その後、フェロモンは成功したパスに展開され、新しいラウンドが始まります。

通常、特定のノードに足を踏み入れるアリのオッズは、フェロモンの量×「良さ」の尺度で重み付けされます。たとえば、善良性の尺度は、アリと食物の間の距離の逆数のようなものになる可能性があります。これにより、以前のフェロモンの堆積に関係なく、アリは食物に向かって移動しようとし続けます。他の要因を考慮するために、その良さをさらに重み付けすることができます。たとえば、一部のノードは他のノードよりも移動しやすい場合があります。そして、エンダーランドが指摘するように、通常、すべてのアリがコースを正常に実行すると、「最良の」パスの一部のみがフェロモンの堆積に選択されると、何らかの形式のパス「選択」があります。ただし、選択しなくても妥当なパスを取得する必要があります。

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