私はコースプロジェクトのためにアリコロニーシミュレーターに取り組んでいる学生です。そのアルゴリズムは(明らかに)蟻コロニーアルゴリズムです。アルゴリズムにはさまざまな形式がありますが、それらはすべて数学的に詳細すぎるため、次のようなアプローチを採用しました。
- アリはコロニーで生まれ、コロニーを維持するために源から食物を集めなければなりません。
- すべてのアリは似ています。
- アリが移動する領域は1000x1000グリッドであるため、すべてのグリッドポイントはアリが占有する有効なポイントとして機能します。今、私が遭遇したすべてのアルゴリズムは、頂点とエッジを別々に処理することを伴いますが、アリの動きを4方向(上下左右)に制限しているので、フェロモンをどこに置くかは関係ないと思います。
- 上記のグリッドポイントはフェロモンを保存します。
- アリは、食物を運んでいる場合にのみフェロモンを落とします。
- 位置(i、j)のアリの場合、4つの隣接ノードのフェロモン量を単純な確率式で考慮することにより、次のステップでどこに移動するかを決定します。つまり、ノードに移動する確率は(特定の隣接ノードのフェロモン量)/(4つの隣接ノードのフェロモン量の合計)。
- アリは、元の位置に戻ることはできません。それができるのは、食物がある場所にいるか、そのコロニーにいる場合だけです。
今、私の懸念は(そしてプログラムで実際に何が起こっているのか)アリFIRSTが食物のある位置に到達し、それを拾うと、アルゴリズムが機能する方法で、どこにでも移動できることです!これは、フェロモントレイルを離れるのは、餌を食べる前ではなく、最初のアリであるため、既存のトレイルがないためです。
アリがどこにでも移動できる場合、食物源に到達したアリは、ほとんどそれに従う傾向があります。コロニーに向かって戻っていない場合でも。これは、アルゴリズム全体の目的に反します。
だから私の質問は
- 上記の懸念は有効ですか?いいえの場合、なぜですか?はいの場合、どのように対処しますか?
- 実際に機能させるために、アルゴリズムの基本的な理解を変更する必要がありますか?
- 私のような初心者がこの場合見逃すかもしれない他の微妙でありながら重要なことは何ですか?