蟻コロニー最適化のソースを表示
←
蟻コロニー最適化
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[ファイル:Knapsack ants.svg|thumb|right|蟻コロニー最適化の概念図]] '''蟻コロニー最適化'''(ありコロニーさいてきか、''Ant Colony Optimization''、'''ACO''')とは、Marco Dorigo が [[1992年]]の博士論文で提案した[[アルゴリズム]]であり、[[グラフ理論|グラフ]]を使ってよい経路を探すことで単純化できるような計算問題の[[確率]]的解法である。これは[[アリ]]がコロニー(=群れ)から食物までの経路を見つける際の挙動からヒントを得たものである。 == 概要 == 実世界では、アリは始め[[ランダム]]にうろつき、食物を見つけると[[フェロモン]]の跡を付けながらコロニーへ戻る。他のアリがその経路を見つけると、アリは[[ランダム]]な彷徨を止めてその跡を辿り始め、食物を見つけると経路を補強しながら戻る。<!-- ([[Ant#Communication_and_behaviour|Details on this behaviour]].) --> しかし、時間とともにフェロモンの痕跡は蒸発しはじめ、その吸引力がなくなっていく。その経路が長いほどフェロモンは蒸発しやすい。それに対して、経路が短ければ行進にも時間がかからず、フェロモンが蒸発するよりも早く補強されるため、フェロモン濃度は高いまま保たれる。 従って、あるアリがコロニーから食料源までの良い(すなわち短い)経路を見つけると、他のアリもその経路を辿る可能性が高くなり、正の[[フィードバック]]効果によって結局すべてのアリが1つの経路を辿ることになる。蟻コロニー最適化アルゴリズムの考え方は、解決すべき問題を表しているグラフを歩き回る「シミュレーションされたアリ」によってこの行動を真似ることである。 蟻コロニー最適化アルゴリズムは、[[巡回セールスマン問題]]に近似最適解を生み出すために用いられた。この手法はグラフが動的に変化する場合に[[焼きなまし法]]や[[遺伝的アルゴリズム]]よりも有効である。蟻コロニー最適化アルゴリズムは継続的に実行されるので、リアルタイムで変化に適応することができる。このことから、[[コンピュータネットワーク|ネットワーク]]の[[ルーティング]]や都市交通システムでの応用が考えられる。 == アルゴリズムの流れ == ACO の基本的なアルゴリズムは以下の通りである。 # エージェント(アリ)とフェロモンの初期化 # 終了条件を満たすまで以下の処理を繰り返す。 ## 各エージェントに対して、フェロモンと[[ヒューリスティック]]な情報に基づいて確率的な解の選択を行う。 ## 各エージェントが分泌するフェロモンを計算する。 ## フェロモン情報の更新 # 最も良い成績のエージェントの解を出力する。 解の選択は様々なものが考えられるが Marco Dorigo が巡回セールスマン問題に適用した論文では以下のような方法がとられている。 今、繰り返し回数 ''t'' 時点でのエージェント ''k'' が巡回路を作成することを考える。まずスタート地点となる都市を適当に選択する。 次にエージェント ''k'' はいくつかの都市を訪問し現在、都市 ''i'' にいるとする。このとき ''k'' がまだ訪問していない都市の集合を Ω で表し、Ωに属する都市 ''j'' と ''i'' に対して以下のような評価値を計算する。 {{Indent|<math> a_{ij}^{k}(t) = \frac{[\tau_{ij}(t)]^{\alpha}[\eta_{ij}]^{\beta}}{\sum_{l\in\Omega}[\tau_{il}(t)]^{\alpha}[\eta_{il}]^{\beta}}</math>}} ここで、''τ<sub>ij</sub>(t)'' は時点 ''t'' での都市 ''i'' から ''j'' への経路に蓄積されたフェロモンである。''η<sub>ij</sub>'' は都市 ''i'' から ''j'' へヒューリスティックな情報であり、 Dorigo は距離の[[逆数]]を使用している。α、β はフェロモンとヒューリスティック情報のどちらを優先させるかという[[定数]]である。Ωの全ての都市に対して上記の評価値を計算し都市を一つ選択する。例えば都市 ''m'' が選択される確率は以下のようになる。 {{Indent|<math> p_{im}^{k}(t) = \frac{a_{im}^{k}(t)}{\sum_{n\in\Omega}a_{in}(t)}</math>}} この選択をΩが空集合になるまで繰り返す。各エージェントに対して以上の操作を行い時点 ''t'' における各巡回路を作成する。 各巡回路が作成されたら、次にフェロモンの計算が行われる。これはエージェント ''k'' が作成した巡回路を ''T<sub>k</sub>(t)'' としその長さを ''L<sub>k</sub>(t)'' としたとき、エージェント k は各経路に対して以下のように分泌するフェロモンを決定する。 {{Indent|<math> \Delta\tau_{ij}^{k}(t) = \begin{cases} Q/L_k(t), & \mbox{if }(i,j) \in T_k(t) \\ 0, & else \end{cases}</math>}} ここで ''Q'' は正の定数である。この値により時点 ''t+1'' のフェロモン情報は以下の式で更新される。 {{Indent|<math>\tau_{ij}(t+1) = \rho\tau_{ij}(t) + \sum_{k=1}^{m}\Delta\tau_{ij}^{k}(t) </math>}} ここで ρ は 0 以上 1 以下の定数であり、フェロモンの蒸発率を表している。また ''m'' はエージェントの最大数である。以上の式を定められた時点まで繰り返すことによって解を得ることができる。 == 関連する手法 == [[焼きなまし法]](SA)は、現在の解の近傍解を生成することで探索空間を探し回る大域的最適化技術である。よりよい近傍解は常に選択される。よくない近傍解はその性質と温度パラメータに基づいて確率的に選択される。温度パラメータは探索の進行に伴って、変化する。 [[タブーサーチ]](TS)は、焼きなまし法に似ている。こちらも個別の解の変異をテストしながら探索を行う。焼きなまし法ではひとつの変異解を生成したが、タブーサーチではいくつもの変異解を生成して最もよい解を選択する。堂々巡りを避けて局所最適解に陥らないようにするため、既にテストした解をタブーリストとして保持する。タブーリストに含まれる要素を持つ解は禁じられており、タブーリストは解の探索を通じて更新される。 [[遺伝的アルゴリズム]](GA)は、複数の解のプールを管理する。よりよい解の探索は進化を真似た手法で行われ、解の「突然変異」や「交叉」によって解のプールを変化させ、よくない解を捨てていく。 == 参考文献 == * Dorigo, M. (1992). "Optimization, Learning and Natural Algorithms", Ph.D. Thesis, Politecnico di Milano, Italy. * Dorigo, M. and Gambardella, L. M. (1999). "Ant Algorithms for Discreate Optimization", Artificial Life Vol.5 No. 2, pp.137-172.[http://citeseer.comp.nus.edu.sg/cache/papers/cs/29622/http:zSzzSziridia.ulb.ac.bezSz~gdicarozSzPaperszSzalife.pdf/dorigo98ant.pdf PDF] * 伊庭斉志 『進化論的計算手法 (知の科学)』、[[人工知能学会]]編、[[オーム社]]、2005年、ISBN 4-274-20018-3 ==関連項目== *[[粒子群最適化]] <!-- 訳語不明 *[[Stigmergy]] --> == 外部リンク == 以下、英文。 *[http://www.aco-metaheuristic.org/ 蟻コロニー最適化 Home Page] *[http://www.ict.swin.edu.au/personal/dangus/dissertations.htm 蟻コロニー最適化に関連した学位論文のリスト] * {{Wayback|url=http://www.scholarpedia.org/article/Ant_Colony_Optimization |title=Ant Colony Optimization |date=20070107114415}} - [[スカラーペディア]]百科事典「蟻コロニー最適化」の項目。 *[https://midaco-solver.jp MIDACO-SOLVER] '''蟻コロニー最適化''' を用いた汎用最適化ソフトウェア(Matlab, C/C++, R, C#, Fortran, Python:日本語あり) {{DEFAULTSORT:ありころにいさいてきか}} [[Category:最適化アルゴリズムとメソッド]] [[Category:自然から着想したメタヒューリスティクス]]
このページで使用されているテンプレート:
テンプレート:Indent
(
ソースを閲覧
)
テンプレート:Wayback
(
ソースを閲覧
)
蟻コロニー最適化
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報