الگوریتم بهینه سازی کلونی مورچگان در جاوا – راهنمای کاربردی

۵۸۲ بازدید
آخرین به‌روزرسانی: ۶ شهریور ۱۴۰۲
زمان مطالعه: ۴ دقیقه
دانلود PDF مقاله
الگوریتم بهینه سازی کلونی مورچگان در جاوا – راهنمای کاربردیالگوریتم بهینه سازی کلونی مورچگان در جاوا – راهنمای کاربردی

در این مقاله به توضیح مفهوم «بهینه‌سازی کلونی مورچگان» (ant colony optimization) یا به اختصار ACO می‌پردازیم و کدهای نمونه آن را نیز ارائه می‌کنیم.

997696

طرز کار الگوریتم کلونی مورچگان چگونه است؟

ACO یک الگوریتم ژنتیک است که از رفتار طبیعی مورچه‌ها الهام گرفته است. برای درک کامل الگوریتم ACO باید با مفاهیم مقدماتی آن آشنا باشیم.

  • مورچه‌ها از «فرمیون» (pheromone) برای یافتن کوتاه‌ترین مسیر بین خانه و منبع غذایی استفاده می‌کنند.
  • فرمیون‌ها به سرعت تبخیر می‌شوند.
  • مورچه‌ها مسیرهای کوتاه‌تر با فرمیون‌های چگال‌تر را ترجیح می‌دهند.

در ادامه مثال ساده‌ای از الگوریتم کلونی مورچگان را که به صورت مسئله فروشنده دوره‌گرد مطرح شده، مورد بررسی قرار می‌دهیم. در مثال زیر باید کوتاه‌ترین مسیر بین همه گره‌های گراف را بیابیم.

الگوریتم کلونی مورچگان

مورچه‌ها با پیروی از رفتار طبیعی‌شان شروع به جستجوی مسیرهای جدید در مرحله کاوش می‌کنند. مسیرهای آبی پررنگ نشان‌دهنده مواردی هستند که نسبت به بقیه بیشتر استفاده شده‌اند؛ در حالی که مسیرهای سبزرنگ نماینده کوتاه‌ترین مسیر کنونی پیدا شده است:

کلونی مورچگان

در نتیجه به کوتاه‌ترین مسیر بین همه گره‌ها دست پیدا کرده‌ایم:

کلونی مورچگان

برای مشاهده یک ابزار زیبای مبتنی بر GUI برای آزمودن ACO می‌توانید به این آدرس (+) مراجعه کنید.

پیاده‌سازی جاوا

در این بخش به بررسی روش موردنیاز برای پیاده‌سازی بهینه‌سازی کلونی مورچگان در زبان برنامه‌نویسی جاوا می‌پردازیم.

پارامترهای ACO

ابتدا پارامترهای الگوریتم ACO را که در کلاس AntColonyOptimization اعلان شده‌اند، بررسی می‌کنیم:

پارامتر c نشان‌دهنده عدد اولیه «مسیرها» (trails) در ابتدای شبیه‌سازی است. به علاوه، alpha به کنترل اهمیت فرمیون می‌پردازد؛ در حالی که beta اولویت مسافت را کنترل می‌کند. به طور کلی در بهترین نتایج پارامتر بتا باید بزرگ‌تر از آلفا باشد.

سپس متغیر «تبخیر» (evaporation) نشان می‌دهد که چه درصدی از فرمیون در هر تکرار تبخیر می‌شود؛ در حالی که Q اطلاعاتی در مورد مقدار کلی فرمیون باقی‌مانده روی مسیر از سوی هر مورچه و antFactor نیز تعداد مورچه‌های هر شهر را نشان می‌دهد. در نهایت باید مقداری تصادفی بودن به شبیه‌سازی‌های خود اضافه کنیم که این وظیفه نیز به پارامتر ranfomFactor محول شده است.

ایجاد مورچه‌ها

هر مورچه امکان بازدید از یک شهر خاص را دارد، همه شهرهای بازدید شده را به خاطر می‌سپارد و رد طول مسیر را نگه می‌دارد:

تنظیم مورچه‌ها

در ابتدای کار، باید پیاده‌سازی کد ACO خود را از طریق ارائه ماتریس‌های مسیرها و مورچه‌ها، مقداردهی اولیه بکنیم:

سپس باید ماتریس مورچگان را با یک شهر تصادفی مقداردهی بکنیم:

در هر تکرار این حلقه، عملیات زیر اجرا می‌شوند:

جابجایی مورچه‌ها

کار خود را با متد ()moveAnts آغاز می‌کنیم. به این منظور باید شهر بعدی را برای همه مورچه‌ها تنظیم کنیم و مسیر هر مورچه را برای پیمودن از سوی مورچه‌های دیگر به خاطر بسپاریم:

مهم‌ترین بخش، انتخاب مناسب شهر بعدی برای بازدید است. ما باید شهر بعدی را بر مبنای منطق احتمال انتخاب کنیم. ابتدا بررسی می‌کنیم که آیا مورچه باید از یک شهر تصادفی بازدید کند یا نه:

اگر هیچ شهر تصادفی را انتخاب نکرده باشیم، باید احتمال‌های انتخاب شهر بعدی را نیز محاسبه کنیم و به خاطر داشته باشیم که مورچه ترجیح می‌دهد، مسیر قوی‌تر و کوتاه‌تر را بپیماید. این کار از طریق مرتب‌سازی احتمال رسیدن به هر شهر در آرایه ممکن است:

پس از آن که احتمال‌ها را محاسبه کردیم، می‌توانیم با کد زیر در مورد این که به کدام شهر باید برویم تصمیم‌گیری کنیم:

به‌روزرسانی مسیرها

در این مرحله، باید مسیرها و میزان فرمیون باقی‌مانده را به‌روزرسانی کنیم:

به‌روزرسانی بهترین انتخاب

این آخرین مرحله برای هر تکرار است. ما باید بهترین انتخاب را به‌روزرسانی کنیم تا ارجاع آن را حفظ کنیم:

پس از اجرای همه تکرارها، نتیجه نهایی بهترین مسیر مشخص شده از سوی ACO را نشان خواهد داد. توجه داشته باشید که با افزایش تعداد شهرها، احتمال یافتن کوتاه‌ترین مسیر کاهش می‌یابد.

نتیجه‌گیری

در این راهنما به معرفی الگوریتم بهینه‌سازی کلونی مورچگان پرداختیم. شما می‌توانید با مطالعه این مقاله بدون هیچ دانش قبلی و صرفاً به کمک مهارت‌های ابتدایی برنامه‌نویسی رایانه، با الگوریتم‌های ژنتیک آشنا شوید.

کد کامل این راهنما را می‌توانید در این ریپوی گیت‌هاب (+) ملاحظه کنید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
baeldung
دانلود PDF مقاله
۱ دیدگاه برای «الگوریتم بهینه سازی کلونی مورچگان در جاوا – راهنمای کاربردی»

با سلام

مشابه همین کاربرد مورچگان در زمانبندی وظایف در رایانش ابری را ندارید؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *