شیوه کار این الگوریتم به صورت زیر است:
فرض کنید میخواهیم مسئله فروشنده دوره گرد را حل کنیم:
مسئله : چند شهر داریم که با فاصله از هم قرار دارند، همه شهرها با هم ارتباط دارند. فروشنده دوره گرد چطور میتواند از تمام شهرها فقط یکبار بگذارد به گونهای که فاصله کلی پیموده شده کمینه باشد.
حل مسئله با استفاده الگوریتم aco: فاصله بین شهرها در ماتریسی به صورت زیر نشان میدهیم:
| 14 | 11 | 12 | 10 | 0 |
| 8 | 15 | 13 | 0 | 10 |
| 14 | 9 | 0 | 13 | 12 |
| 16 | 9 | 0 | 15 | 11 |
| 0 | 16 | 14 | 8 | 14 |
گام اول:
فرض کنید ۳ تا مورچه داریم. ماتریس میدان دید بین دو شهر را به دست میآوریم. این ماتریس با استفاده از معکوس کردن فاصله به دست میآید. مثلا ۱/10 یا 1/12
| 0.0714 | 0.0909 | 0.83 | 0.1 | 0 |
| 0.1250 | 0.0667 | 0.0769 | 0 | 0.1 |
| 0.0714 | 0.1111 | 0 | 0.0769 | 0.0833 |
| 0.0625 | 0 | 0.1111 | 0.0667 | 0.0909 |
| 0 | 0.0625 | 0.0714 | 0.1250 | 0.0714 |
فرض میکنیم مقدار فرومون اولیه که در قطعات بین این شهرها وجود دارد برابر ۱ اس
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
گام ۲: احتمال رفتن از یک شهر به شهر دیگر را باید محاسبه کنیم:
شهر ۱ به عنوان شهر شروع انتخاب میشود. پس ما از شهر آخر شروع میکنیم و به شهر ۱ میرسیم. چون شهر ۱ شهر شروع پس دوباره نباید انتخاب شود پس قابلیت دید برای شهر ۱ برابر 0 میشود:
| 0.0714 | 0.0909 | 0.83 | 0.1 | 0 |
| 0.1250 | 0.0667 | 0.0769 | 0 | 0 |
| 0.0714 | 0.1111 | 0 | 0.0769 | 0 |
| 0.0625 | 0 | 0.1111 | 0.0667 | 0 |
| 0 | 0.0625 | 0.0714 | 0.1250 | 0 |
باید احتمال رفتن مورچه ۱ از شهر ۱ به شهرهای دیگر محاسبه کنیم. برای این کار به میدان دید بین دو شهر (اینجا شهر۱ با شهر دیگر) r(r,s)، مجموعه شهرهایی که احتمال دارد توسط مورچه ۱ ملاقات شود (M) و فرومونهای بین دو شهر نیاز داریم FR(r,s) نیاز داریم. همچنین به a وزن برای کنترل فرومون و b وزن برای کنترل میدان دید نیاز داریم.
احتمال رفتن مورچه ۱ به شهر دیگر به صورت زیر محاسبه میشود: برای مثال شهر ۲
P(1,2)=(FR(1,2)^1 * rs(1,2)^2) /( sum FR(1,all cityes)^1 * r(1,all cityes)^2)
در اینجا sum یعنی مجموع یا همان سری و all cityes یعنی تمام شهرهایی که تا کنون ملاقات نشدند
یک عدد تصادفی r در بازه 0 و 1 تولید میکنیم این عدد را با مقادیر احتمالی به دست آمده مقایسه کرده و از شهرهایی که احتمال آن بزرگتر از این عدد تصادفی است یکی را به صورت تصادفی انتخاب میکنیم.
فرض کنید در این مرجله شهر ۴ انتخاب شد
حالا مجدد مشخص میکنیم مورچه ۱ از شهر ۴ به کدام شهر برود. به همین صورت کل مسیری که مورچه ۱ باید طی کند مشخص میشود برای مثال
1-4 - 3 - 5-2 -1 این مسیر برای مورچه ۱ باشد
برای مورچه ۲ و مورچه ۳ نیز مانند مورچه ۱ مسیرها را پیدا میکنیم